如何实现AI大模型应用服务的多模型管理?

AI大模型框架-多模型管理

一、为什么要做多模型管理?

在LLMs百花齐放的时代,大量的模型涌现出来,不仅仅是大语言模型,还有很多图像生成模型,视频生成模型,甚至是多模态模型,项目中使用的模型也不可能只有一种,更不可能只有一个。很可能是x个LLM_A, y个LLM_B, z个LLM_C这样的复杂组合,在实际业务场景中将会面临大量要解决的问题。

  • 如何实现多个模型调度?
  • 如何实现负载均衡?
  • 如何做推理服务健康管理?
  • 如何快速接入三方模型?
  • 如何实现模型免适配的快速共享?
  • 如何...

大量的应用场景和技术诉求驱使了多模型管理的诞生。

二、架构

2.1 多模型现状

  • 目前较好的私有化大语言模型有Llama系列,ChatGLM系列,Baichuan系列。而对于商用大模型如ChatGPT, Bard, Claude这样的模型,推理成本低于私有化部署的模型并且远优于私有化部署的模型,用户也会通过Proxy的形式轻量级接入。

  • 图像模型目前表现不错的有商用模型Midjourney, 以及开源模型StableDiffusion, 最新的StableDiffusion模型参数近50GB,支持在8GB显卡上推理,CPU推理较慢。

  • 视频模型目前表现较好的有商用模型Gen-2, 其他开源视频模型目前效果都比较差,伴随着多模态模型的高度关注下,也在快速推进,效果在不断变好。

2.2 AI大模型特点

私有化推理服务部署成本高昂,动就需要几十GB的内存和GPU显存,多模型部署基本上都是通过服务API管理,而商用大模型也会通过API的形式接入,所以完全可以基于推理服务API构建多模型管理系统

2.3 多模型管理架构

三、多模型管理API

代码地址:OperateGPT多模型管理/llms目录

bash 复制代码
# 启动模型管理服务(也可以将API绑定到自己的应用服务中)
python operategpt/llms/worker_manager.py

# 【如果你已经有模型服务则可选】启动模型服务,需要配置一些相关参数,参考model_config.py文件
python operategpt/llms/llmserver.py

3.1 模型注册:

  • 模型注册需要将API注册到LLM框架服务中进行管理, 其中注册的关键参数需要选择性替换, 一般只需要替换{USER_PROMPT}
ini 复制代码
response_extract: 采用a.b[].c的形式表示提取 `response["a"]["b"][0]["c"]`
owner是模型的拥有者
req_url_template 是推理了服务的url模板
model_name是模型名,多个同名的模型将会被负载均衡的调用
body是请求体
注册模型时,需要将模型请求的部分参数修改成以下枚举类的对应值,{USER_PROMPT}是必须映射的,其他可选:
    USER_PROMPT = "{USER_PROMPT}"
    MODEL_TEMPERATURE = "{MODEL_TEMPERATURE}"
    MODEL_NAME = "{MODEL_NAME}"

示例:将一个大模型推理服务注册到模型管理器:

vbnet 复制代码
# 注册请求
curl -X POST -H "Content-Type: application/json" -d '{
    "model_name": "proxyllm",
    "body": {
        "input": "{USER_PROMPT}",
        "model_name": "{MODEL_NAME}"
    },
    "req_url_template": "http://127.0.0.1/api/generate",
    "owner": "OperateGPT",
    "response_extract": "data.items[].attributes.answer"
}' http://127.0.0.1:8007/api/server/register


# 返回结果
{
    "success": true,
    "msg": "register LLM proxyllm succeed!"
}

3.2 模型查询

ruby 复制代码
# 查询请求
curl http://127.0.0.1:8007/api/server/workers

# 返回结果

{
    "success": true,
    "data": [
        {"model_name": "chatglm2-6b", "req_url_template": "https://xxx/openapi/xxx/inference/query"}, 
        {"model_name": "proxyllm", "req_url_template": "http://localhost:8008/generate"}
    ]
}

3.3 模型下线

vbnet 复制代码
# 发起下线请求
curl -X POST -H "Content-Type: application/json" -d '{
    "model_name": "chatglm2-6b",
    "req_url_template": "https://xxx/openapi/xxx/inference/query"
}' http://127.0.0.1:8007/api/server/offline


# 返回结果
{
    "success": true,
    "msg": "remove llm worker(model_name=chatglm2-6b, url=https://xxx/openapi/xxx/inference/query) succeed!"
}

3.4 模型推理

vbnet 复制代码
# 模型请求1
curl -X POST -H "Content-Type: application/json" -d '{
    "input": "who are you?",
    "model_name": "chatglm2-6b"
}' http://127.0.0.1:8007/api/v1/chat/completions

# 返回数据1
{
    "success": true,
    "msg": "execute succeed",
    "result": "Hey there! My name is Noxix, and I am an AI chatbot designed to have conversations with users like you. How can I assist you today?"
}



# 模型请求2
curl -X POST -H "Content-Type: application/json" -d '{
    "input": "who are you?",
    "model_name": "proxyllm"
}' http://127.0.0.1:8007/api/v1/chat/completions

# 返回数据2
{
    "success": true,
    "msg": "execute succeed",
    "result": "I am an AI language model developed by OpenAI. I am programmed to provide information and assist with various tasks. How can I help you today?"
}

四、代码详细地址

OperateGPT多模型管理/llms目录

相关推荐
墨风如雪18 分钟前
混元生图2.1震撼开源:AI作画进入“高定”时代,还能完美写字!
aigc
AiTop1003 小时前
腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商
ide·人工智能·ai·aigc·ai编程
老马啊老马4 小时前
NestJS 构建 AI 流式聊天服务:从 0 到 1 实现实时对话功能
aigc
安思派Anspire5 小时前
你不需要 GraphRAG!构建一个多策略图谱思维(Multi-Strategy Graph Thinking)AI Agent
aigc·openai·agent
阑梦清川6 小时前
mulerun上线了一个重磅级的智能体--educard generator(知识可视化)
aigc
Zhikes6 小时前
MOSS-TTSD: 文本对话式语音克隆
aigc
饼干哥哥6 小时前
Vibe Marketing|用Claude code+kimi k2爬取了120个 b站视频做内容选题数据分析
数据分析·aigc
用户5191495848457 小时前
揭秘LedgerCTF的AES白盒挑战:逆向工程与密码学分析
人工智能·aigc
用户5191495848457 小时前
SonicWall防火墙安全态势深度分析:固件解密与漏洞洞察
人工智能·aigc
沧海一粟青草喂马8 小时前
对口型视频怎么制作?从脚本到成片的全流程解析
aigc