查看原文
其他

如何在DB-GPT社区使用InternLM?手把手教程来啦!

InternLM 2024-04-23

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 模型。

01构建知识库
DB-GPT 是通过 ICL 的方式进行设计与开发,为了能够让知识库能力更加强大,同时具备可拓展的能力,设计了一套 Embedding 的引擎。如下图所示,各类知识经过 DB-GPT Embedding Engine 之后,通过 Embedding Engine 提供的 Loader -> Reader -> Process -> Embedding 整个数据管道的能力,可以轻松实现各类数据的 Embedding,并且整个引擎也提供了可拓展的能力,可以按需进行自定义与拓展。

此种模式在知识库问答里面属于端对端模式,是对传统的两阶段方法知识问题的升级。传统两阶段方法主要分为召回阶段和阅读理解阶段。召回阶段中,使用传统的 TF-IDF 的方式返回评分最高的 top-k 个文章片段。阅读理解阶段中,采用神经网络模型 RNN 将问题转化为序列标注问题,即对于给定文档中出现的每个词,判断是否出现在答案中。

大模型时代外挂本地知识库的流程可以描述为如下所示,整个过程可以分为九个步骤:

  1. 文档/知识切分成 Text chunk

  2. 加载 Embedding 模型

  3. 通过 Embedding 模型将 text chunk 转换为向量

  4. 将向量数据写入到向量数据库中

  5. 用户通过 ChatUI 发起一次查询

  6. 查询内容通过 Embedding 转换为向量

  7. 通过相似度匹配,在向量数据库中检索相似的内容

  8. 根据查询到的内容以及 Query 组装对应的 Prompt

  9. 将 Prompt 给到大模型进行整理总结,给出最后的回答

目前 DB-GPT 私域知识问答能力已支持了 txt、pdf、markdown、html、doc、ppt、csv 等多种文档类型,并在知识库管理上提供了知识空间 ( Knowledge Space ) ,只需要在使用时将文档、数据上传到知识空间做向量化,即可以愉快地使用啦。 


02插件使用
可以通过使用 DB-GPT 当中提供的 Multi-Agents 的功能,来使用 InternLM 的复杂推理能力以及结构化输出结果的能力,来完成一些具体的数据分析类任务。关于这方面的能力提升,还需要基础模型持续迭代,在后续的工作中,会持续提升模型的效果,让数据分析的准确率更高,更早地完成业务落地。


03Text2SQL 微调

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

更多详细信息,请参照微调项目,同时也非常欢迎参与贡献。 

附录

InternLM 社区: https://github.com/InternLM
DB-GPT 社区: https://github.com/eosphoros-ai
Text2SQL 微调:https://github.com/eosphoros-ai/DB-GPT-Hub
Text2SQL 发展调研:https://github.com/eosphoros-ai/Awesome-Text2SQL

(欢迎扫码加入 InternLM 交流群)
继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存