如何在DB-GPT社区使用InternLM?手把手教程来啦!
The following article is from EosphorosAI Author DB-GPT
InternLM(书生·浦语)大模型与 DB-GPT 社区(eosphoros-ai)达成开源合作,本文将带大家了解如何在 DB-GPT 社区使用 InternLM。
多模型管理与应用
DB-GPT 是围绕大模型与数据库最通用,最流行的框架。在技术生态上从产品、框架、底层模型效果实现了全方位覆盖。在框架本身构建上提供了 Serverless 的多模型管理能力,支持多模型的生命周期管理以及场景切换。同时 DB-GPT 多模型管控的能力,可以按集群模式进行部署。
实际业务落地过程中,在 BaseModel 之上针对垂直领域的任务,会衍生出很多的小模型,同样数据库这个领域也是如此,会有 Text2SQL 的模型、Text2API 的模型、Text2Tool 的模型等等。在使用时,则可以通过场景配置进行多模型切换。
DB-GPT在多模型的管理方面主要提供命令行与界面白屏化管理两种方式。下面主要介绍下如何通过命令行进行多模型管理。
命令行多模型部署
DB-GPT 多模型管理是 Controller 与 Worker 的管理机制。
1. 运行 Controller
# 在运行之前需要首先安装命令
pip install -e .
# 运行controller服务
dbgpt start controller
2. 运行模型服务,并注册到 Contoller 当中
dbgpt start worker --model_name internlm-chat-7b-v1_1 \
--model_path /app/models/internlm-chat-7b-v1_1 \
--port 8001 \
--controller_addr http://127.0.0.1:8000
同时支持其他版本的 InternLM 模型,只需通过命令注册到模型服务,即可在后续的场景中进行使用。比如继续运行 8k 上下文的模型,并注册到模型服务。
dbgpt start worker --model_name internlm-chat-7b-8k \
--model_path /app/models/internlm-chat-7b-8k \
--port 8001 \
--controller_addr http://127.0.0.1:8000
dbgpt model list
更多操作命令可以通过运行 dbgpt --help
查看
dbgpt --help
Usage: dbgpt [OPTIONS] COMMAND [ARGS]...
Options:
--log-level TEXT Log level
--version Show the version and exit.
--help Show this message and exit.
Commands:
install Install dependencies, plugins, etc.
knowledge Knowledge command line tool
model Clients that manage model serving
start Start specific server.
stop Start specific server.
InternLM 使用
部署好模型后,即可通过 DB-GPT 提供的知识库、插件、数据分析等能力使用 InternLM 模型。
DB-GPT 是通过 ICL 的方式进行设计与开发,为了能够让知识库能力更加强大,同时具备可拓展的能力,设计了一套 Embedding 的引擎。如下图所示,各类知识经过 DB-GPT Embedding Engine 之后,通过 Embedding Engine 提供的 Loader -> Reader -> Process -> Embedding 整个数据管道的能力,可以轻松实现各类数据的 Embedding,并且整个引擎也提供了可拓展的能力,可以按需进行自定义与拓展。
此种模式在知识库问答里面属于端对端模式,是对传统的两阶段方法知识问题的升级。传统两阶段方法主要分为召回阶段和阅读理解阶段。召回阶段中,使用传统的 TF-IDF 的方式返回评分最高的 top-k 个文章片段。阅读理解阶段中,采用神经网络模型 RNN 将问题转化为序列标注问题,即对于给定文档中出现的每个词,判断是否出现在答案中。
大模型时代外挂本地知识库的流程可以描述为如下所示,整个过程可以分为九个步骤:
文档/知识切分成 Text chunk
加载 Embedding 模型
通过 Embedding 模型将 text chunk 转换为向量
将向量数据写入到向量数据库中
用户通过 ChatUI 发起一次查询
查询内容通过 Embedding 转换为向量
通过相似度匹配,在向量数据库中检索相似的内容
根据查询到的内容以及 Query 组装对应的 Prompt
将 Prompt 给到大模型进行整理总结,给出最后的回答
目前 DB-GPT 私域知识问答能力已支持了 txt、pdf、markdown、html、doc、ppt、csv 等多种文档类型,并在知识库管理上提供了知识空间 ( Knowledge Space ) ,只需要在使用时将文档、数据上传到知识空间做向量化,即可以愉快地使用啦。
可以通过使用 DB-GPT 当中提供的 Multi-Agents 的功能,来使用 InternLM 的复杂推理能力以及结构化输出结果的能力,来完成一些具体的数据分析类任务。关于这方面的能力提升,还需要基础模型持续迭代,在后续的工作中,会持续提升模型的效果,让数据分析的准确率更高,更早地完成业务落地。
DB-GPT 支持基于 InternLM 的 Text2SQL 微调。DB-GPT-Hub 项目提供了从数据处理、模型微调、模型预测、模型部署一整套的能力,可以丝滑进行 InternLM 的模型效果微调。
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--model_name_or_path internlm-chat-7b-v1_1\
--do_train \
--dataset example_text2sql \
--max_source_length 1024 \
--max_target_length 512 \
--template default \
--finetuning_type lora \
--lora_rank 32 \
--lora_alpha 64 \
--lora_target W_pack \
--output_dir path_to_sft_checkpoint \
--overwrite_cache \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 1000 \
--learning_rate 5e-5 \
--num_train_epochs 6.0 \
--plot_loss \
--fp16
更多详细信息,请参照微调项目,同时也非常欢迎参与贡献。