DB-GPT多模型部署框架设计与思考

释放双眼,带上耳机,听听看~!
本文讨论了针对AIGC应用的大模型推理部署的设计思路,介绍了DB-GPT多模型部署框架的设计目标、架构和未来规划。

全文总共分了五个部分:

  1. 背景介绍
  2. 背景
  3. 设计目标
  4. 多模型架构设计
    1. 架构解读
    2. 特性说明
  5. 多模型部署
    1. 单机部署
    2. 集群部署
  6. 运维与可观测性
    1. 总体介绍
    2. 可观测工具使用
  7. 未来规划
    1. 当前不足
    2. 未来规划

背景

在 AIGC 应用探索和生产落地中,难以避免直接与模型服务对接,但是目前大模型的推理部署还没有一个事实标准,不断有新的模型发布,也不断有新的训练和推理方法被提出,我们就不得不花费相当一部分时间来适配多变的底层模型环境,而这在一定程度上制约了 AIGC 应用的探索和落地。

下面是 DB-GPT 社区从 AIGC 应用开发的角度出发,得出的关于大模型推理部署的一点思考。

All problems in computer science can be solved by another level of indirection.

DB-GPT多模型部署框架设计与思考

我们将大模型推理部署分为两层:模型推理层、模型部署层。模型推理层,对应模型推理框架 vLLM、TGI 和 TensorRT 等。模型部署层向下对接推理层,向上提供模型服务能力,这一层的框架我们称为模型部署框架,模型部署框架在推理框架之上,提供了多模型实例、多推理框架、多服务协议、多云、自动扩缩容和可观测性等能力。

下面我们将探讨一下模型部署框架的一些设计思路和 DB-GPT 的设计。
设计目标

  1. 支持多模型和多推理框架
  2. 良好的扩展性和稳定性
  3. 框架性能 “不拖后腿”
  4. 管理与可观测性能力
  5. 轻量化

DB-GPT 模型部署框架设计

下图为 DB-GPT 多模型部署架构示意图:
DB-GPT多模型部署框架设计与思考
上图中,最上层是主要是 AIGC 应用层(DB-GPT Web Server 和一些其它的 Agents 系统等)。下一层是模型部署框架层,这层包含了对应用层提供模型服务的 API Server 和 Model Handle、整个部署框架的元数据管理和控制中心 Model Controller和与推理框架和底层环境直接对接的 Model Worker。再下一层是推理框架层,这层包含了 vLLM、llama.cpp 和 FastChat(由于 DB-GPT 直接使用了 FastChat 的推理接口,这里我们将 FastChat 也归为推理框架),大语言模型(Vicuna-13B、Llama-2-13B和baichuan-2-13B等)便部署在推理框架中。最下面一层则是实际的部署环境,包括 Kubernetes、Ray、AWS Cloud、阿里云和私有云等。

下面我们将具体阐述 DB-GPT 多模型部署框架的设计。

支持多模型和多推理框架

当前大模型领域发展可谓日新月异,不断有新的模型发布,在模型训练和推理方面,也不断有新的方法被提出。我们判断,这样情况还会持续一段时间。
大于大部分 AIGC 应用场景探索和落地的用户来说,这种情况有利也有弊,利无需多言,而弊端之一就在于被“牵着鼻子走”,需要不断去尝试和探索新的模型、新的推理框架。

在 DB-GPT 中,直接提供了对 FastChat、vLLM 和 llama.cpp 的无缝支持,理论上它们支持模型 DB-GPT 都支持,如果您对推理速度和并发能力有需求,可以直接使用 vLLM,如果您希望 CPU 或者 mac 的 m1/m2 芯片也可以获得不错的推理性能,可以使用 llama.cpp,此外,DB-GPT 还支持了很多代理模型(openai、azure openai、google bard、文心一言、通义千问和智谱AI等)。

扩展性和稳定性要足够好

云原生技术解决了海量计算资源的管控、调度、利用等核心痛点问题,让计算的价值被充分释放,使得的大规模计算成为了普世技术。
在大模型领域,我们也关注到在模型推理过程中,对于计算资源的爆炸式需求。 所以具备调度超算能力的多模型管理层是我们在生产落地中所重点关注的。
鉴于过去几年 Kubernetes、istio 等计算调度层取得的卓越成绩,因此我们在多模型管控方面充分借鉴了相关的设计理念。

一个比较完善模型部署框架需要多个部分组成,与底层推理框架直接对接的 Model Worker,管理和维护多个模型组件的 Model Controller 以及对外提供模型服务能力的 Model API。

其中 Model Worker 必须要可以扩展,可以是专门部署大语言模型的 Model Worker,也可以是用来部署 Embedding 模型的 Model Worker,当然也可以根据部署的环境,如普通物理机环境、kubernetes 环境以及一些特定云服务商提供的云环境等来选择不同 Model Worker。

用来管理模型元数据的 Model Controller 也需要可扩展,不同的部署环境以及不同的模型管控要求来选择不同的 Model Controller。

另外,在我看来,模型服务与传统的微服务有很多共通之处,在微服务中,微服务中某个服务可以有多个服务实例,所有的服务实例都统一注册到注册中心,服务调用方根据服务名称从注册中心拉取该服务名对应的服务列表,然后根据一定的负载均衡策略选择某个具体的服务实例去调用。

而在模型部署中,也可以考虑这样的架构,某一个模型可以有多个模型实例,所有的模型实例都统一注册到模型注册中心,然后模型服务调用方根据模型名称到注册中心去拉取模型实例列表,然后根据模型的负载均衡策略去调用某个具体的的模型实例。

这里我们引入模型注册中心,它负责存储 Model Controller 中的模型实例元数据,它可以直接使用现有微服务中的注册中心作为实现(如 nacos、eureka、etcd 和 consul 等),这样整个部署系统便可以做到高可用。

框架性能“不拖后腿”

框架层不应该成为模型推理性能的瓶颈,大部分情况下,硬件及推理框架决定了模型服务的服务能力,模型的推理部署和优化是一项复杂的工程,而不恰当的框架设计却可能增加这种复杂度,在我们看来,部署框架为了在性能上“不拖后腿”,有两个主要关注点:

  1. 避免过多的封装:封装越多、链路越长,性能问题越难以排查。
  2. 高性能的通信设计:高性能通信涉及的点很多,这里不做过多阐述。由于目前 AIGC 应用中,Python 占据领导地位,在 Python 中,异步接口对于服务的性能至关重要,因此,模型服务层只提供异步接口,与模型推理框架对接的层做兼容,如果模型推理框架提供了异步接口则直接对接,否则使用同步转异步任务的方式支持。

具备一定的管理和监控能力

在 AIGC 应用探索中或者 AIGC 应用生产落地中,我们需要模型部署系统能具备一定管理能力:通过 API 或者命令行等对部署的模型实例进行一定管控(如上线、下线、重启和 debug 等)。

可观测性是生产系统的一项重要能力,个人认为在 AIGC 应用中,可观测性同样重要,甚至更加重要,因为用户的体验、用户与系统的交互行为更复杂,除了传统的观测指标外,我们还更加关心用户的输入信息及其对应的场景上下文信息、调用了哪个模型实例和模型参数、模型输出的内容和响应时间、用户反馈等等。
我们可以从这些信息中发现一部分模型服务的性能瓶颈,以及一部分用户体验数据(响应延迟如何?是否解决了用户的问题以及用户内容中提取出用户满意度等等),这些都是整个应用进一步优化的重要依据。

轻量化

考虑到支持的模型和推理框架众多,我们需要努力避免不必要的依赖,确保用户可以做到按需安装。
在 DB-GPT 中,用户可以按需安装自己的依赖,一些主要可选依赖如下:

  • 安装最基础的依赖 pip install -e .或者 pip install -e ".[core]"
  • 安装基础框架的依赖 pip install -e ".[framework]"
  • 安装 openai 代理模型的依赖 pip install -e ".[openai]"
  • 安装默认的依赖 pip install -e ".[default]"
  • 安装 vLLM 推理框架的依赖 pip install -e ".[vllm]"
  • 安装模型量化部署的依赖 pip install -e ".[quantization]"
  • 安装知识库相关依赖 pip install -e ".[knowledge]"
  • 安装 pytorch 的依赖 pip install -e ".[torch]"
  • 安装 llama.cpp 的依赖 pip install -e ".[llama_cpp]"
  • 安装向量化数据库的依赖 pip install -e ".[vstore]"
  • 安装数据源的依赖 pip install -e ".[datasource]"

DB-GPT 多模型部署

单机部署

安装准备

  1. 克隆 DB-GPT 源码
# 使用 git clone DB-GPT 项目源码
git clone https://github.com/eosphoros-ai/DB-GPT.git

# 进入项目目录
cd DB-GPT
  1. 创建 conda 环境
# 创建 conda 环境,指定python版本为 3.10
conda create -n dbgpt_env python=3.10

# 切换到新创建的环境
conda activate dbgpt_env
  1. 安装项目
# 安装项目基础依赖
pip install -e ".[default]"
  1. 将需要部署的 LLM 和 embedding 模型下载到项目目录下的 models目录中
# 创建 models 目录,并进入 models 中
mkdir models && pushd models

# 下载 LLM,这里我们使用 vicuna-13b-v1.5 
git clone https://huggingface.co/lmsys/vicuna-13b-v1.5

# 下载 embedding 模型,这里我们使用 text2vec-large-chinese
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese

# 返回项目目录
popd

注意:这里的安装准备只涉及核心模型部署功能,知识库依赖、项目样例数据导入等可以根据 DB-GPT 文档进行操作。

一个命令启动所有服务

LLM_MODEL=vicuna-13b-v1.5 dbgpt start webserver --port 6006

默认情况下 dbgpt start webserver命令将会在一个 python 进程中启动 Webserver、Model Controller 和 Model Worker,这里我们指定服务的启动端口为 6006。

在命令行中查看和验证模型服务

  1. 列出启动的模型服务和部署的 Model Worker
dbgpt model list

命令行输出如下:

+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+
|    Model Name   | Model Type |    Host    | Port | Healthy | Enabled | Prompt Template |       Last Heartbeat       |
+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+
| vicuna-13b-v1.5 |    llm     | 172.17.0.9 | 6006 |   True  |   True  |                 | 2023-10-16T19:49:59.201313 |
|  WorkerManager  |  service   | 172.17.0.9 | 6006 |   True  |   True  |                 | 2023-10-16T19:49:59.246756 |
+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+

这里的 WorkerManagerModel Worker的管理进程。

  1. 在命令行中验证部署的模型
dbgpt model chat --model_name vicuna-13b-v1.5

然后便会启动一个交互页面,你可以在终端中与部署的 LLM 对话

Chatbot started with model vicuna-13b-v1.5. Type 'exit' to leave the chat.


You: Hello
Bot: Hello! How can I assist you today?

You: 

在 Web 页面查看和验证模型服务

  1. 打开 Web 页面,点击左侧 Models 链接,便能看到部署的模型,如下图:

DB-GPT多模型部署框架设计与思考

  1. 在对话页面验证部署的模型,打开主页,在输入框输入任意内容即可,如下图:

DB-GPT多模型部署框架设计与思考

集群部署

安装准备

安装准备参考上一节“DB-GPT 模型部署-单机部署-安装准备” 的内容进行准备。

启动 Model Controller

dbgpt start controller

默认情况下,Model Controller 启动在 8000 端口。

启动 LLM Model Worker

dbgpt start worker --model_name vicuna-13b-v1.5 
--model_path /app/models/vicuna-13b-v1.5 
--port 8001 
--load_8bit 
--controller_addr http://127.0.0.1:8000

启动 Embedding Model Worker

dbgpt start worker --model_name text2vec 
--model_path /app/models/text2vec-large-chinese 
--worker_type text2vec 
--port 8002 
--controller_addr http://127.0.0.1:8000

启动 Webserver (dbgpt_server) 并连接到模型服务

LLM_MODEL=vicuna-13b-v1.5 dbgpt start webserver 
--light 
--remote_embedding 
--port 6006

这里使用 --light参数表示以轻量化的方式启动 Webserver ,不启动 LLM 和 embedding 模型,--remote_embedding参数表示启用远程部署的 Embedding 模型服务。

在命令行中查看和验证模型服务

  1. 列出启动的模型服务和部署的 Model Worker
dbgpt model list

命令行输出如下:

+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+
|    Model Name   | Model Type |    Host    | Port | Healthy | Enabled | Prompt Template |       Last Heartbeat       |
+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+
|  WorkerManager  |  service   | 172.17.0.9 | 8001 |   True  |   True  |                 | 2023-10-16T20:17:17.442081 |
|  WorkerManager  |  service   | 172.17.0.9 | 8002 |   True  |   True  |                 | 2023-10-16T20:17:18.759033 |
| vicuna-13b-v1.5 |    llm     | 172.17.0.9 | 8001 |   True  |   True  |                 | 2023-10-16T20:17:17.440899 |
|     text2vec    |  text2vec  | 172.17.0.9 | 8002 |   True  |   True  |                 | 2023-10-16T20:17:18.729818 |
+-----------------+------------+------------+------+---------+---------+-----------------+----------------------------+
  1. 在命令行中验证部署的模型
dbgpt model chat --model_name vicuna-13b-v1.5

然后便会启动一个交互页面,你可以在终端中与部署的 LLM 对话

Chatbot started with model vicuna-13b-v1.5. Type 'exit' to leave the chat.


You: How are you 
Bot: As an artificial intelligence language model, I don't have emotions, feelings, or physical sensations like humans do. However, I'm functioning optimally and ready to assist you with any questions or tasks you may have! How can I assist you today?

You: 

在 Web 页面查看和验证模型服务

  1. 打开 Web 页面,点击左侧 Models 链接,便能看到部署的模型,如下图:

DB-GPT多模型部署框架设计与思考

  1. 在对话页面验证部署的模型,打开主页,在输入框输入任意内容即可,如下图:

DB-GPT多模型部署框架设计与思考

在 Web 页面停止 LLM

打开 Web 页面,点击左侧 Models 链接,进入模型列表页面,选择你想停止的模型,点左右下角的关闭按钮,如图:
DB-GPT多模型部署框架设计与思考

模型停止后的页面如图:
DB-GPT多模型部署框架设计与思考

在 Web 页面部署新的 LLM

  1. 打开 Web 页面,点击左侧 Models 链接,进入模型列表页面,点左上角的 “Create Model”,然后在弹出的对话框中选择你要部署的模型名称,这里我们选择 “vicuna-7b-v1.5”,如图:

DB-GPT多模型部署框架设计与思考

  1. 根据实际部署的模型的情况选择适当的参数(不确定默认即可),然后点击对话框左下方的 “Submit” 按钮,等等模型部署成功即可
  2. 新模型部署完成后在模型页面即可看到新部署的模型,如图:DB-GPT多模型部署框架设计与思考
  3. 刷新页面,在对话页面,便能看到我们部署的新模型,这里选择它进行对话,如图:DB-GPT多模型部署框架设计与思考

对话页面如下:
DB-GPT多模型部署框架设计与思考

运维与可观测性

运维和可观测性是一个生产系统中的重要组成部分。在运维能力方面,DB-GPT 除了能在 Web 页面中对系统进行一些常用管理,还提供了一个命令行工具dbgpt来进行运维和管理,该命令行工具主要包括以下方面:

  • 启停各类服务
  • 知识库的管理(批量导入、自定义导入、查看知识库文档和删除知识库文档等)
  • 模型管理(查看和启停模型以及在命令行进行对话调试等)
  • 可观测性工具(查看和分析可观测性日志)

这里我们不展开介绍命令行工具的使用,您可以根据 dbgpt --help命令来获取具体的使用文档,另外,也可以查看子命令的使用文档,例如通过 dbgpt start --help 来查看启动服务的文档。

DB-GPT 设计了一套轻量简洁的插件化分布式追踪组件,该组件记录了系统中的一些关键运行信息。DB-GPT 也提供了一套命令行接口来分析可观测性日志。
这里我们介绍该命令行工具的一些常见用法。

用户会话追踪分析

很多时候我们希望能分析某个用户对话的详情,我们可以通过通过命令行工具分析和排查。

  1. 查看最新一次对话的调用链路和详情
dbgpt trace chat --hide_run_params --tree

命令行输出如下:


Invoke Trace Tree:

Operation: DB-GPT-Web-Entry (Start: 2023-10-16 21:47:49.029, End: None)
  Operation: get_chat_instance (Start: 2023-10-16 21:47:49.031, End: None)
  Operation: get_chat_instance (Start: 2023-10-16 21:47:49.031, End: 2023-10-16 21:47:49.139)
  Operation: stream_generator (Start: 2023-10-16 21:47:49.140, End: None)
    Operation: BaseChat.stream_call (Start: 2023-10-16 21:47:49.140, End: None)
      Operation: WorkerManager.generate_stream (Start: 2023-10-16 21:47:49.141, End: None)
        Operation: DefaultModelWorker.generate_stream (Start: 2023-10-16 21:47:49.150, End: None)
        Operation: DefaultModelWorker.generate_stream (Start: 2023-10-16 21:47:49.150, End: 2023-10-16 21:47:52.283)
        Operation: DefaultModelWorker_call.generate_stream_func (Start: 2023-10-16 21:47:49.155, End: None)
        Operation: DefaultModelWorker_call.generate_stream_func (Start: 2023-10-16 21:47:49.155, End: 2023-10-16 21:47:52.283)
      Operation: WorkerManager.generate_stream (Start: 2023-10-16 21:47:49.141, End: 2023-10-16 21:47:52.283)
    Operation: BaseChat.stream_call (Start: 2023-10-16 21:47:49.140, End: 2023-10-16 21:47:52.283)
  Operation: stream_generator (Start: 2023-10-16 21:47:49.140, End: 2023-10-16 21:47:52.284)
Operation: DB-GPT-Web-Entry (Start: 2023-10-16 21:47:49.029, End: 2023-10-16 21:47:49.150)
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                         Chat Trace Details                                                                                        |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|      Key       |                                                                                   Value Value                                                                                    |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|    trace_id    |                                                                       00fc6e55-7531-477c-8413-cab4f8c9d635                                                                       |
|    span_id     |                                                    00fc6e55-7531-477c-8413-cab4f8c9d635:547bfb6a-657a-4773-bce8-18e207611325                                                     |
|    conv_uid    |                                                                       97cbf75a-6c2a-11ee-ba42-0242ac110009                                                                       |
|   user_input   |                                                                                       你好                                                                                       |
|   chat_mode    |                                                                                   chat_normal                                                                                    |
|  select_param  |                                                                                       None                                                                                       |
|   model_name   |                                                                                 vicuna-13b-v1.5                                                                                  |
|  temperature   |                                                                                       0.6                                                                                        |
| max_new_tokens |                                                                                       1024                                                                                       |
|      echo      |                                                                                      False                                                                                       |
|  llm_adapter   |                                                    FastChatLLMModelAdaperWrapper(fastchat.model.model_adapter.VicunaAdapter)                                                     |
|  User prompt   | A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: 你好 ASSISTANT: |
|  Model output  |                                                                          你好,有什么我可以帮助你的吗?                                                                          |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  1. 根据 trace_id 查看对应的对话信息
dbgpt trace chat --hide_run_params --tree 
--trace_id 00fc6e55-7531-477c-8413-cab4f8c9d635

命令行输出如下:


Invoke Trace Tree:

Operation: DB-GPT-Web-Entry (Start: 2023-10-16 21:47:49.029, End: None)
  Operation: get_chat_instance (Start: 2023-10-16 21:47:49.031, End: None)
  Operation: get_chat_instance (Start: 2023-10-16 21:47:49.031, End: 2023-10-16 21:47:49.139)
  Operation: stream_generator (Start: 2023-10-16 21:47:49.140, End: None)
    Operation: BaseChat.stream_call (Start: 2023-10-16 21:47:49.140, End: None)
      Operation: WorkerManager.generate_stream (Start: 2023-10-16 21:47:49.141, End: None)
        Operation: DefaultModelWorker.generate_stream (Start: 2023-10-16 21:47:49.150, End: None)
        Operation: DefaultModelWorker.generate_stream (Start: 2023-10-16 21:47:49.150, End: 2023-10-16 21:47:52.283)
        Operation: DefaultModelWorker_call.generate_stream_func (Start: 2023-10-16 21:47:49.155, End: None)
        Operation: DefaultModelWorker_call.generate_stream_func (Start: 2023-10-16 21:47:49.155, End: 2023-10-16 21:47:52.283)
      Operation: WorkerManager.generate_stream (Start: 2023-10-16 21:47:49.141, End: 2023-10-16 21:47:52.283)
    Operation: BaseChat.stream_call (Start: 2023-10-16 21:47:49.140, End: 2023-10-16 21:47:52.283)
  Operation: stream_generator (Start: 2023-10-16 21:47:49.140, End: 2023-10-16 21:47:52.284)
Operation: DB-GPT-Web-Entry (Start: 2023-10-16 21:47:49.029, End: 2023-10-16 21:47:49.150)
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                         Chat Trace Details                                                                                        |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|      Key       |                                                                                   Value Value                                                                                    |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|    trace_id    |                                                                       00fc6e55-7531-477c-8413-cab4f8c9d635                                                                       |
|    span_id     |                                                    00fc6e55-7531-477c-8413-cab4f8c9d635:547bfb6a-657a-4773-bce8-18e207611325                                                     |
|    conv_uid    |                                                                       97cbf75a-6c2a-11ee-ba42-0242ac110009                                                                       |
|   user_input   |                                                                                       你好                                                                                       |
|   chat_mode    |                                                                                   chat_normal                                                                                    |
|  select_param  |                                                                                       None                                                                                       |
|   model_name   |                                                                                 vicuna-13b-v1.5                                                                                  |
|  temperature   |                                                                                       0.6                                                                                        |
| max_new_tokens |                                                                                       1024                                                                                       |
|      echo      |                                                                                      False                                                                                       |
|  llm_adapter   |                                                    FastChatLLMModelAdaperWrapper(fastchat.model.model_adapter.VicunaAdapter)                                                     |
|  User prompt   | A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: 你好 ASSISTANT: |
|  Model output  |                                                                          你好,有什么我可以帮助你的吗?                                                                          |
+----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

查看运行服务的环境信息

dbgpt trace chat --hide_conv

命令行输出如下:

+------------------------+--------------------------+-----------------------------+-------------------------------------------------------+
| Config Key (Webserver) | Config Value (Webserver) | Config Key (EmbeddingModel) |             Config Value (EmbeddingModel)             |
+------------------------+--------------------------+-----------------------------+-------------------------------------------------------+
|          host          |         0.0.0.0          |          model_name         |                        text2vec                       |
|          port          |           6006           |          model_path         | /root/autodl-tmp/DB-GPT/models/text2vec-large-chinese |
|         daemon         |          False           |            device           |                          cuda                         |
|         share          |          False           |     normalize_embeddings    |                          None                         |
|    remote_embedding    |          False           |                             |                                                       |
|       log_level        |           None           |                             |                                                       |
|         light          |          False           |                             |                                                       |
+------------------------+--------------------------+-----------------------------+-------------------------------------------------------+
+--------------------------+------------------------------------------------+----------------------------+------------------------------------------------+
| Config Key (ModelWorker) |           Config Value (ModelWorker)           | Config Key (WorkerManager) |          Config Value (WorkerManager)          |
+--------------------------+------------------------------------------------+----------------------------+------------------------------------------------+
|        model_name        |                vicuna-13b-v1.5                 |         model_name         |                vicuna-13b-v1.5                 |
|        model_path        | /root/autodl-tmp/DB-GPT/models/vicuna-13b-v1.5 |         model_path         | /root/autodl-tmp/DB-GPT/models/vicuna-13b-v1.5 |
|          device          |                      cuda                      |        worker_type         |                      None                      |
|        model_type        |                  huggingface                   |        worker_class        |                      None                      |
|     prompt_template      |                      None                      |         model_type         |                  huggingface                   |
|     max_context_size     |                      4096                      |            host            |                    0.0.0.0                     |
|         num_gpus         |                      None                      |            port            |                      6006                      |
|      max_gpu_memory      |                      None                      |           daemon           |                     False                      |
|      cpu_offloading      |                     False                      |  limit_model_concurrency   |                       5                        |
|        load_8bit         |                      True                      |         standalone         |                      True                      |
|        load_4bit         |                     False                      |          register          |                      True                      |
|        quant_type        |                      nf4                       |    worker_register_host    |                      None                      |
|     use_double_quant     |                      True                      |      controller_addr       |             http://127.0.0.1:6006              |
|      compute_dtype       |                      None                      |       send_heartbeat       |                      True                      |
|    trust_remote_code     |                      True                      |     heartbeat_interval     |                       20                       |
|         verbose          |                     False                      |         log_level          |                      None                      |
+--------------------------+------------------------------------------------+----------------------------+------------------------------------------------+
+----------------------------------------------------------------------------------------------------+
|                                   ModelWorker System information                                   |
+-------------------+--------------------------------------------------------------------------------+
| System Config Key |                              System Config Value                               |
+-------------------+--------------------------------------------------------------------------------+
|      platform     |                                     linux                                      |
|    distribution   |                                  Ubuntu 22.04                                  |
|   python_version  |                                     3.10.8                                     |
|        cpu        |                 Intel(R) Xeon(R) Platinum 8352V CPU @ 2.10GHz                  |
|      cpu_avx      |                                     AVX512                                     |
|       memory      |                                 1056461720 kB                                  |
|   torch_version   |                                  2.0.1+cu117                                   |
|       device      |                                      cuda                                      |
|   device_version  |                                      11.7                                      |
|    device_count   |                                       1                                        |
|    device_other   | name, driver_version, memory.total [MiB], memory.free [MiB], memory.used [MiB] |
|                   |        NVIDIA GeForce RTX 4090, 535.86.05, 24564 MiB, 24211 MiB, 5 MiB         |
|                   |                                                                                |
+-------------------+--------------------------------------------------------------------------------+

可观测性的更多详情可以查看我们的文档:db-gpt.readthedocs.io/projects/db…

当前不足与未来规划

当前不足

  • 当前 DB-GPT 模型部署框架中,Model Controller 暂时使用内存版的 EmbeddedModelRegistry来存储模型元数据,存在单点问题
  • 支持的推理框架比较有限
  • 部署环境比较单一
  • 缺乏对不同模型、不同推理框架性能评估体系

未来规划

未来的工作重点主要是围绕当前的不足点进行开展,具体如下:

  • 多推理框架支持,推理效果与稳定性持续提升
  • 云原生环境与 Ray 环境支持
  • 对接微服务中的注册中心,解决 Model Controller 单点问题
  • 提供兼容 OpenAI 接口格式的模型服务接口
  • Embedding 模型扩充和优化

附录

DB-GPT 框架 : github.com/eosphoros-a…

Text2SQL 微调 :github.com/eosphoros-a…

DB-GPT-Web :  github.com/eosphoros-a…

Huggingface :huggingface.co/eosphoros

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

深入探讨AdaBoost算法及Python实战应用

2023-11-20 11:13:55

AI教程

ChatGPT低级错误解析及优化方法

2023-11-20 11:20:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索