1- # 🚣♂️ 使用PaddleNLP在海光DCU上运行llama2-13b模型 🚣
2- Paddle框架与PaddleNLP套件在海光的DCU产品上进行了深度的适配和优化,实现了大模型在训练和推理上与GPU高度统一 ,在精度和性能上拥有先进水平。
1+ # 🚣♂️ 使用 PaddleNLP 在海光 DCU 上运行 llama2-13b 模型 🚣
2+ Paddle 框架与 PaddleNLP 套件在海光的 DCU 产品上进行了深度的适配和优化,实现了大模型在训练和推理上与 GPU 高度统一 ,在精度和性能上拥有先进水平。
33
4- 海光DCU产品在PaddleNLP组合套件上拥有多种技术优点 :
4+ 海光 DCU 产品在 PaddleNLP 组合套件上拥有多种技术优点 :
55
6- - ** 完全支持4D混合并行分布式训练 ,灵活适应各种训练策略。**
6+ - ** 完全支持4D 混合并行分布式训练 ,灵活适应各种训练策略。**
77- ** 各类高性能的融合算子,提升训推性能。**
88- ** 优化的通讯库,掩盖分布式训推延迟。**
99
@@ -14,11 +14,11 @@ Paddle框架与PaddleNLP套件在海光的DCU产品上进行了深度的适配
1414### 1.硬件平台
1515
1616
17- | 芯片类型 | DTK版本 |
17+ | 芯片类型 | DTK 版本 |
1818 | --- | --- |
1919 | K100_AI | 24.04.1 |
2020
21- ** 本示例使用8卡机器,并通过微调训练+推理的流程演示运行方法,使用hy-smi命令查看运行环境中的DCU信息 ,如下所示:**
21+ ** 本示例使用8卡机器,并通过微调训练+推理的流程演示运行方法,使用 hy-smi 命令查看运行环境中的 DCU 信息 ,如下所示:**
2222```
2323$ hy-smi
2424
@@ -34,7 +34,7 @@ DCU Temp AvgPwr Perf PwrCap VRAM% DCU% Mode
3434```
3535
3636### 2.环境准备:
37- 推荐使用docker方式运行,提供拉取的docker镜像 ,关于本项目所需新版本 DTK 等均可从[ 光合] ( https://developer.hpccube.com/tool/ ) 开发者社区下载安装,docker中默认使用dtk -24.04.1。
37+ 推荐使用 docker 方式运行,提供拉取的 docker 镜像 ,关于本项目所需新版本 DTK 等均可从[ 光合] ( https://developer.hpccube.com/tool/ ) 开发者社区下载安装,docker 中默认使用 dtk -24.04.1。
3838
3939(1). 拉取镜像
4040```
@@ -62,13 +62,13 @@ docker run -it \
6262 registry.baidubce.com/device/paddle-dcu:dtk24.04.1-kylinv10-gcc82 \
6363 /bin/bash
6464```
65- (3). 安装paddle
65+ (3). 安装 paddle
6666```
6767# paddlepaddle『飞桨』深度学习框架,提供运算基础能力
6868python -m pip install paddlepaddle-dcu==3.0.0b2 -i https://www.paddlepaddle.org.cn/packages/stable/dcu/
6969```
7070
71- (4). 克隆PaddleNLP仓库代码 ,并安装依赖
71+ (4). 克隆 PaddleNLP 仓库代码 ,并安装依赖
7272```
7373# 用paddlenlp develop分支
7474git clone https://github.com/PaddlePaddle/PaddleNLP.git
@@ -78,19 +78,19 @@ pip install -r ../requirements.txt
7878(5). 安装 paddlenlp_ops
7979```
8080# PaddleNLP仓库内置了rms相关的专用算子
81- cd legacy /model_zoo/gpt-3/external_ops
81+ cd slm /model_zoo/gpt-3/external_ops
8282python setup.py install
8383```
8484
8585## 3.微调:
86- - ** 注:** 进入llm路径进行以下操作 。
86+ - ** 注:** 进入 llm 路径进行以下操作 。
8787### 数据集准备
88- 我们提供了数据集demo便于您调试使用
88+ 我们提供了数据集 demo 便于您调试使用
8989```
9090wget https://bj.bcebos.com/paddlenlp/datasets/examples/alpaca_demo.gz
9191tar -xvf alpaca_demo.gz
9292```
93- 我们支持的精调数据格式是每行包含一个字典的json文件 ,每个字典包含以下字段:
93+ 我们支持的精调数据格式是每行包含一个字典的 json 文件 ,每个字典包含以下字段:
9494- ` src ` : ` str, List(str) ` ,指模型的输入指令(instruction)、提示(prompt),模型应该执行的任务。
9595- ` tgt ` : ` str, List(str) ` ,指模型的输出。
9696样例数据:
@@ -99,39 +99,39 @@ tar -xvf alpaca_demo.gz
9999...
100100#您可以根据此格式自行制作精调数据。
101101```
102- ### Lora微调
102+ ### Lora 微调
103103
104- 可参考以下脚本启动Lora微调训练 :
104+ 可参考以下脚本启动 Lora 微调训练 :
105105```
106106PYTHONPATH=.. python run_finetune.py dcu/llama/lora_argument.json
107107```
108- ### sft微调
109- 可参考以下超参启动Lsft微调训练 :
108+ ### sft 微调
109+ 可参考以下超参启动 Lsft 微调训练 :
110110```
111111PYTHONPATH=.. python run_finetune.py dcu/llama/sft_argument.json
112112```
113113## 3.预训练:
114114### 数据准备
115115数据详细制作流程可参考[ 此处] ( https://github.com/PaddlePaddle/PaddleNLP/tree/develop/llm/tools/preprocess/README.md ) ,例:OpenWebText2预训练数据制作参考[ 此处] ( https://paddlenlp.readthedocs.io/zh/latest/llm/pretraining/data/OpenWebText2.html )
116116
117- 为了方便用户运行测试本模型,本项目提供了处理好的100k条doc的训练样本 :
117+ 为了方便用户运行测试本模型,本项目提供了处理好的100k 条 doc 的训练样本 :
118118
119119```
120120cd PaddleNLP/llm/
121121mkdir data && cd data
122122wget https://bj.bcebos.com/paddlenlp/models/transformers/llama/data/llama_openwebtext_100k.bin
123123wget https://bj.bcebos.com/paddlenlp/models/transformers/llama/data/llama_openwebtext_100k.idx
124- cd .. && tree data
124+ cd .. && tree data
125125data
126126├── llama_openwebtext_100k.bin
127127└── llama_openwebtext_100k.idx
128128```
129129- ** 注:** 与微调数据集区分路径
130130### 运行脚本
131131
132- 该训练脚本可以单节点也可多节点运行,每节点8张DCU -K100AI-64G。
132+ 该训练脚本可以单节点也可多节点运行,每节点8张 DCU -K100AI-64G。
133133
134- 并行配置采用TP 1,PP 8,使用fp16精度预训练 。
134+ 并行配置采用 TP 1,PP 8,使用 fp16精度预训练 。
135135
136136可参考以下脚本启动预训练:
137137
@@ -142,20 +142,20 @@ python -m paddle.distributed.launch \
142142```
143143
144144## 4.高性能推理
145- 高性能推理内置动态插入和全环节算子融合策略,隐藏了底层实现的细节,实现了开箱即用高性能并行推理能力。在保持高性能推理和动态插入的基础上可以动态地为cachekv分配存储空间 ,极大地节省显存,从而在同一时刻处理更多的query以获得吞吐的提升 。
145+ 高性能推理内置动态插入和全环节算子融合策略,隐藏了底层实现的细节,实现了开箱即用高性能并行推理能力。在保持高性能推理和动态插入的基础上可以动态地为 cachekv 分配存储空间 ,极大地节省显存,从而在同一时刻处理更多的 query 以获得吞吐的提升 。
146146
147147(1). 环境准备
148148
149- PaddleNLP 针对于Transformer 系列编写了高性能自定义算子,提升模型在推理和解码过程中的性能,使用之前需要预先安装自定义算子库:
149+ PaddleNLP 针对于 Transformer 系列编写了高性能自定义算子,提升模型在推理和解码过程中的性能,使用之前需要预先安装自定义算子库:
150150```
151151# DCU设备安装自定义算子
152152cd PaddleNLP/csrc && python3 setup_hip.py install
153153```
154154(2). 高性能推理
155155
156- 下面分别给出关闭BlockAttention和打开BlockAttention进行高性能推理的命令参考 :
156+ 下面分别给出关闭 BlockAttention 和打开 BlockAttention 进行高性能推理的命令参考 :
157157
158- a.关闭BlockAttention的高性能推理
158+ a.关闭 BlockAttention 的高性能推理
159159
160160** 动态图:**
161161
@@ -178,7 +178,7 @@ python3 ./predict/export_model.py --model_name_or_path checkpoints/llama_ptq_ckp
178178python3 ./predict/predictor.py --model_name_or_path ./inference --inference_model --dtype float16 --mode static (测性能可选:--batch_size 1 --src_length 3072 --max_length 1024 --benchmark)
179179```
180180
181- b. 打开BlockAttebtion的高性能推理
181+ b. 打开 BlockAttebtion 的高性能推理
182182
183183** 动态图:**
184184
@@ -227,4 +227,4 @@ python3 ./predict/predictor.py --model_name_or_path ./inference --inference_mod
227227
228228## 7.参考
229229
230- * [ https://github.com/PaddlePaddle/PaddleNLP ] ( https://github.com/PaddlePaddle/PaddleNLP )
230+ * [ https://github.com/PaddlePaddle/PaddleNLP ] ( https://github.com/PaddlePaddle/PaddleNLP )
0 commit comments