DB-GPT SMMF 多模型管理框架:统一配置、多提供商接入与集群部署实践
2026/9/13 2:33:11 网站建设 项目流程

DB-GPT SMMF 多模型管理框架:统一配置、多提供商接入与集群部署实践

【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT

本篇围绕 DB-GPT 的 SMMF(Service-oriented Multi-Model Management Framework,面向服务的多模型管理框架)展开,它是整个项目中负责 LLM 与 Embedding 模型统一纳管的模型管理层。读完本文,你将理解 SMMF 的设计动机、支持哪些 API 代理与本地推理提供商、如何用 TOML 配置在同一份文件中混用多个模型,以及如何通过单机与集群两种部署模式运行这些模型,并能顺藤摸瓜定位到仓库中对应的适配器、控制器与 Worker 源码。

一、SMMF 是什么

SMMF 是 DB-GPT 的模型管理层,为管理、切换和部署多种 LLM 与 Embedding 模型提供统一接口——无论这些模型是 API 代理(proxy)还是本地托管。这一定位可以在 SMMF 概念文档 的第一段直接找到,而 SMMF 模块文档 则从系统设计的角度给出了更完整的分层描述:

  • 最上层:服务与应用层(DB-GPT WebServer、Agent 系统、各类应用);
  • 模型部署框架层:API Server 与 Model Handle(向应用层提供模型服务)、元数据管理与控制中心(Model Controller)、直接对接推理框架的 Model Worker;
  • 推理框架层:vLLM、llama.cpp、FastChat 等,其上部署 Llama、Qwen、Baichuan、ChatGLM 等大模型;
  • 底层部署环境:Kubernetes、Ray、AWS、阿里云、私有云等。

从源码结构看,这一分层在仓库中有着清晰的对应物:packages/dbgpt-core/src/dbgpt/model/ 目录下的adapter/(各推理框架与代理的适配层)、cluster/(apiserver、controller、worker、registry 等部署框架组件)、llm/(HF/vLLM/llama.cpp/MLX 的具体推理实现)、proxy/llms/(各 API 提供商实现)与utils/(token、指标等工具),正是上述各层的具体代码落点。

为什么需要 SMMF

不同任务适合不同模型。SMMF 让开发者可以:

  • 同时运行多个模型(例如一个模型负责对话,一个模型负责向量嵌入);
  • 无需改代码即可切换模型——只需更新配置;
  • 独立扩展——在集群模式下把模型部署到不同机器上;
  • 混用提供商——例如对话用 OpenAI,嵌入用本地模型。

模块文档进一步解释了背景:大模型推理服务没有事实标准的部署方式,新模型与新训练方法不断出现,如果应用层直接对接底层推理环境,就要反复适配。SMMF 通过“模型推理层 + 模型部署层”的划分,把这种适配成本收敛到框架内部,并提供多模型实例、多推理框架、多云、可管理可监控等能力。

二、支持的提供商:API 代理与本地推理

概念文档将提供商分为两大类,以下表格完整继承自原文档:

API 代理(API Proxy)

Provider配置前缀示例模型
OpenAIproxy/openaiGPT-4o, GPT-4o-mini
DeepSeekproxy/deepseekDeepSeek-V3, DeepSeek-R1
Qwen(通义)proxy/tongyiQwen-Max, Qwen-Plus
SiliconFlowproxy/siliconflow各类托管模型
Ollamaproxy/ollama任意 Ollama 服务模型
Azure OpenAIproxy/openaiAzure 托管的 OpenAI 模型

各提供商的 Python 实现集中在 packages/dbgpt-core/src/dbgpt/model/proxy/llms/,可以逐一对照:chatgpt.pydeepseek.pytongyi.pysiliconflow.pyollama.py,此外该目录还包含claude.pygemini.pyzhipu.pywenxin.pymoonshot.pyminimax.py等更多实现,实际接入面比表格列出的更广。

本地推理(Local Inference)

Provider配置前缀环境要求
HuggingFacehf建议 GPU
vLLMvllmNVIDIA GPU + CUDA
llama.cppllama.cppCPU 或 GPU
MLXmlxApple Silicon Mac

这些配置前缀并非只是文档约定,而是直接对应源码中的模型类型常量。packages/dbgpt-core/src/dbgpt/model/base.py#L12-L21 中定义了ModelType

class ModelType: """Type of model.""" HF = "hf" LLAMA_CPP = "llama.cpp" LLAMA_CPP_SERVER = "llama.cpp.server" PROXY = "proxy" VLLM = "vllm" MLX = "mlx" # TODO, support more model type

可以看到文档表格中的hfllama.cppvllmmlxproxy前缀与枚举值一一对应;llama.cpp.server还额外支持以独立服务方式运行的 llama.cpp。每种框架对应的适配实现位于 packages/dbgpt-core/src/dbgpt/model/adapter/,例如hf_adapter.pyvllm_adapter.pyllama_cpp_adapter.pyllama_cpp_py_adapter.pymlx_adapter.pyproxy_adapter.py,其中auto_client.pyloader.py负责按配置自动选择客户端/加载器——这正是“换模型只改配置”能够成立的机制基础。

三、模型配置:在 TOML 中声明 LLM 与 Embedding

模型统一在configs/目录下的 TOML 文件中声明,概念文档给出的基础示例如下(完整保留):

[models] # LLM 配置 [[models.llms]] name = "chatgpt_proxyllm" provider = "proxy/openai" api_key = "sk-..." # Embedding 模型配置 [[models.embeddings]] name = "text-embedding-3-small" provider = "proxy/openai" api_key = "sk-..."

[[models.llms]][[models.embeddings]]是 TOML 的数组表语法,因此同一份配置文件中可以定义多个 LLM 和多个 Embedding 模型,这直接支撑了 SMMF“同时运行多模型、混用提供商”的能力。

真实配置示例:混合 DeepSeek 代理 + HuggingFace 嵌入

仓库中的 configs/dbgpt-proxy-deepseek.toml 是一个很好的实际范例,它展示了 LLM 走proxy/deepseek、Embedding 走本地hf的混用写法:

# Model Configurations [models] [[models.llms]] name = "deepseek-v4-pro" # name = "deepseek-reasoner" # name = "deepseek-chat" provider = "proxy/deepseek" # Disable V4-Pro thinking mode so ReAct responses stay parseable. thinking_enabled = false api_key = "your_deepseek_api_key" [[models.embeddings]] name = "BAAI/bge-large-zh-v1.5" provider = "hf" # If not provided, the model will be downloaded from the Hugging Face model hub # uncomment the following line to specify the model path in the local file system # path = "the-model-path-in-the-local-file-system" path = "models/bge-large-zh-v1.5"

几个值得注意的细节:

  • [[models.llms]]中被注释的name行展示了同一 provider 下多模型的切换方式——改一行name/provider即可换模型,无需动业务代码;
  • thinking_enabled = false这类字段说明[[models.llms]]条目支持 provider 特有的扩展参数,配置注释里也解释了原因(保持 ReAct 响应可解析);
  • [[models.embeddings]]provider = "hf"且未给path时会自动从 Hugging Face 模型库下载,给path则使用本地文件系统路径。

configs/目录中还提供了按提供商/运行方式组织的完整配置样例,可按需对照:API 代理类如 dbgpt-proxy-openai.toml、dbgpt-proxy-ollama.toml、dbgpt-proxy-siliconflow.toml、dbgpt-proxy-tongyi.toml;本地推理类如 dbgpt-local-vllm.toml、dbgpt-local-llama-cpp.toml、dbgpt-local-llama-cpp-server.toml、dbgpt-local-mlx.toml、dbgpt-local-qwen.toml、dbgpt-local-glm.toml。

四、部署模式:Standalone 与 Cluster

单机模式(Standalone)

所有模型与 DB-GPT Server 运行在同一进程中,简单直接,适合开发或单机部署:

uv run dbgpt start webserver --config configs/dbgpt-proxy-openai.toml

--config指定上面介绍的 TOML 文件,Server 启动时据此加载并实例化配置中声明的 LLM 与 Embedding 模型。

集群模式(Cluster)

在集群模式下,模型运行在独立的 worker 节点上,由 controller 统一管理,适合多 GPU 或多机器的生产部署:

这一架构与模块文档中的设计描述一致:Model Worker 直接对接底层推理框架并负责弹性扩展(可以是专门部署 LLM 的 Worker,也可以是部署 Embedding 模型的 Worker);Model Controller 管理元数据并维护多个模型组件;类似微服务中的注册中心,模型实例统一注册、调用方按模型名拉取实例列表再按负载均衡策略选择具体实例。

集群模式的各组件在源码中都有对应实现,位于 packages/dbgpt-core/src/dbgpt/model/cluster/:

  • apiserver/api.py:对外提供模型服务的 API Server;
  • controller/controller.py:管理、维护多个模型组件的控制器(另有ray_controller.py面向 Ray 环境);
  • worker/manager.pyworker/default_worker.pyworker/embedding_worker.pyworker/remote_worker.py:LLM 与 Embedding 等不同职责的 Worker 及管理器;
  • registry_impl/db_storage.pyregistry.pystorage.py:模型注册中心,存储模型实例元数据。

模型实例元数据与管理动作

注册中心中存储的每个模型实例由 packages/dbgpt-core/src/dbgpt/model/base.py#L24-L51 的ModelInstance数据类描述:

@dataclass class ModelInstance: """Model instance info""" model_name: str host: str port: int weight: Optional[float] = 1.0 check_healthy: Optional[bool] = True healthy: Optional[bool] = False enabled: Optional[bool] = True prompt_template: Optional[str] = None last_heartbeat: Optional[datetime] = None # Remove from the registry remove_from_registry: Optional[bool] = False

其中weight对应负载均衡权重,check_healthy/healthy/last_heartbeat支持健康检查与心跳上报,enabledremove_from_registry支持实例的启停与注销——这正是模块文档所述“对模型实例进行上线、下线、重启、调试等管理控制”的数据基础。与之配套的是 base.py#L54-L58 中定义的 Worker 管理动作类型:

class WorkerApplyType(str, Enum): START = "start" STOP = "stop" RESTART = "restart" UPDATE_PARAMS = "update_params"

此外,base.py中的SupportedModel(含worker_type字段,取值包括 llm、tex2vec、reranker)与WorkerSupportedModelFlatSupportedModel(面向 Web 展示,附带 host/port)共同构成了“某个 Worker 支持哪些模型、以何种参数运行”的元数据描述,供 API Server 与前端查询使用。

五、延伸阅读

  • 各 Provider 的详细接入配置,见 Model Providers 目录下的分提供商文档;
  • 多模型管理的设计纵深(系统架构图、特性与实现说明),见 SMMF 模块文档;
  • 集群部署与多 Worker 扩展,见 模型服务文档;
  • 需要动手时,可直接从 packages/dbgpt-core/src/dbgpt/model/ 目录入手,对照adapter/proxy/的实现理解各提供商的接入链路。

适用前提说明:本文的命令、配置与源码结构均以当前仓库状态为准;uv run dbgpt start webserver要求已完成项目安装并配置好对应 provider 的 API Key 或本地模型路径,集群模式的具体 Worker 拉起方式请参考上述集群部署文档。

【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI + Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询