README.md 5.07 KB
Newer Older
chenzk's avatar
v1.0  
chenzk committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# DB-GPT
用自然语言直接查数据库,DB-GPT具备生成高精度和复杂SQL的能力,简化大模型在数据库应用中的开发,支持数据处理、问答、RAG等功能,适用于数据3.0时代的高效应用构建。

## 论文
`无`

## 模型结构
DB-GPT架构:
<div align=center>
    <img src="./doc/dbgpt.png"/>
</div>

本步骤以目前最新模型QwQ32B为例,其它模型读者可以此类推进行研究,QwQ-32B采用transformer通用的Decoder-only结构。
<div align=center>
    <img src="./doc/qwen.png"/>
</div>

## 算法原理
强大的基础模型+大规模强化学习=强大的推理能力,这是当前大语言模型训练的有效新方向。除了基础推理能力外,QwQ-32B还集成了与Agent相关的能力,使其能够在使用工具的同时进行批判性思考,并根据环境反馈调整推理过程。

作者暂未公布具体采用的何种强化学习算法,若为GRPO,原理如下:

算法核心点:通过反向KL散度约束,GRPO实现了更稳定的策略更新。与TRPO的硬约束不同,采用软约束形式,既能保证训练稳定性,又避免了复杂的二阶优化计算,β负责动态调节探索与利用的平衡系数。
<div align=center>
    <img src="./doc/algorithm.png"/>
</div>

<div align=center>
    <img src="./doc/GRPO.png"/>
</div>

GRPO算法工作流程:
<div align=center>
    <img src="./doc/GRPO_flow.png"/>
</div>


## 环境配置
```
mv DB-GPT_pytorch DB-GPT # 去框架名后缀
```

### Docker(方法一)
```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.4.1-ubuntu22.04-dtk25.04-py3.10-fixpy
# <your IMAGE ID>为以上拉取的docker的镜像ID替换,本镜像为:e77c15729879
docker run -it -p 5670:5670 --shm-size=64G -v $PWD/DB-GPT:/home/DB-GPT -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name dbgpt <your IMAGE ID> bash
cd /home/DB-GPT
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
```
### Dockerfile(方法二)
```
cd /home/DB-GPT/docker
docker build --no-cache -t dbgpt:latest .
docker run -p 5670:5670 --shm-size=64G --name dbgpt -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video -v $PWD/../../DB-GPT:/home/DB-GPT -it dbgpt bash
# 若遇到Dockerfile启动的方式安装环境需要长时间等待,可注释掉里面的pip安装,启动容器后再安装python库:pip install -r requirements.txt。
cd /home/DB-GPT
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple # 根据项目DB-GPT中的文件安装需要的库。
```
### Anaconda(方法三)
1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装:
chenzk's avatar
chenzk committed
62
- https://developer.sourcefind.cn/tool/
chenzk's avatar
v1.0  
chenzk committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
```
DTK驱动:dtk2504
python:python3.10
torch:2.4.1
torchvision:0.19.1
triton:3.0.0
vllm:0.6.2
flash-attn:2.6.1
deepspeed:0.14.2
apex:1.4.0
transformers:4.49.0
```

`Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应。`

2、其它非特殊库参照requirements.txt安装
```
cd /home/DB-GPT
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
```

由于本项目功能特别多,此步骤仅供部分功能示例,若需更多功能体验,其环境配置可参考源项目中的[`README_origin`](./README_origin.md)借鉴本文档的步骤说明自行研究使用。 

体验其它功能需要的python库可通过以下两种方法补充:
```
# 方法一:
pip install xxx
# 方法二:
uv pip install xxx --default-index=https://mirrors.aliyun.com/pypi/simple --system
```

## 数据集
`无`

## 训练


## 推理
预训练权重目录结构:
```
/home/DB-GPT
    ├── BAAI/bge-large-zh-v1.5
    └── Qwen/QwQ-32B
``` 

### 单机多卡
```
dbgpt start webserver --config configs/dbgpt-local-qwq32b.toml # 本步骤以QwQ-32B为例,其它模型的使用方法依次类推,可参考其github源项目的issue解决项目bug。
```

## result
本地浏览器打开地址访问在线操作页面:http://localhost:5670/
<div align=center>
    <img src="./doc/page1.png"/>
</div>

`输入: `
```
美国多少人口
```
<div align=center>
    <img src="./doc/page2.png"/>
</div>

`输出:`
```
截至2023年12月,美国人口的最新估算约为 3.36亿(336,000,000)。这一数据基于美国人口普查局(U.S. Census Bureau)的实时人口钟(Population Clock)动态估算,会随出生、死亡、移民等因素持续更新。
```
<div align=center>
    <img src="./doc/page3.png"/>
</div>

### 精度
DCU与GPU精度一致,推理框架:pytorch。

## 应用场景
### 算法类别
`对话问答`
### 热点应用行业
`制造,广媒,金融,能源,医疗,家居,教育`
## 预训练权重

HF/魔搭社区下载地址为:[bge-large-zh-v1.5](https://huggingface.co/BAAI/bge-large-zh-v1.5)[QwQ-32B](https://www.modelscope.cn/models/Qwen/QwQ-32B)
## 源码仓库及问题反馈
- http://developer.sourcefind.cn/codes/modelzoo/DB-GPT_pytorch.git
## 参考资料
- https://github.com/eosphoros-ai/DB-GPT.git
- http://docs.dbgpt.cn/docs/quickstart