赞
踩
https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/built-in/foundation/ChatGLM-6B
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。本仓支持P-Tuning v2 和全参数fintune。
参考实现:
url=https://github.com/THUDM/ChatGLM-6B
commit_id=27b04bce90b34e719375576cc67ff5374bb2f38a
url=https://huggingface.co/THUDM/chatglm-6b/tree/v0.1.0
commit_id=f83182484538e663a03d3f73647f10f89878f438
适配昇腾 AI 处理器的实现:
url=https://gitee.com/ascend/ModelZoo-PyTorch.git
code_path=PyTorch/built-in/foundation
默认配置需要每张卡有60G以上空闲内存。
当前模型支持的 PyTorch 版本和已知三方库依赖如下表所示。
表 1 版本支持表
Torch_Version | 三方库依赖版本 |
---|---|
PyTorch 1.11 | deepspeed 0.6.0 |
环境准备指导。
请参考《Pytorch框架训练环境准备》。
安装依赖。
在模型源码包根目录下执行命令,安装模型对应PyTorch版本需要的依赖。
pip install -r requirements.txt # PyTorch1.11版本
# adaptor分支
git clone https://gitee.com/ascend/DeepSpeed.git
cd Deepspeed
pip3 install ./
获取数据集。
ADGEN 数据集任务为根据输入(content)生成一段广告词(summary)。
从 Google Drive 或者 Tsinghua Cloud 下载处理好的 ADGEN 数据集,将解压后的 AdvertiseGen
目录放到ptuning目录下。
数据集参考目录如下
├── AdvertiseGen
├──train.json
├──dev.json
获取语言识别模型和预训练权重
用户从链接自行获取模型文件(除了modeling_chatglm.py)和8份权重文件(pytorch_model-0000*-of-00008.bin
),并放于model目录下,微调依赖该模型权重。
model参考目录如下
├── model
├──config.json
├──configuration_chatglm.py
├──ice_text.model
├──pytorch_model-00001-of-00008.bin
├──pytorch_model-00002-of-00008.bin
├──pytorch_model-00003-of-00008.bin
├──pytorch_model-00004-of-00008.bin
├──pytorch_model-00005-of-00008.bin
├──pytorch_model-00006-of-00008.bin
├──pytorch_model-00007-of-00008.bin
├──pytorch_model-00008-of-00008.bin
├──pytorch_model.bin.index.json
├──quantization.py
├──test_modeling_chatglm.py
├──tokenization_chatglm.py
├──tokenizer_config.json
进入解压后的源码包根目录。
cd /${模型文件夹名称}
修改ptuning目录下的env_npu.sh,修改引用的环境变量位置。
运行训练脚本。
该模型P-Tuning v2支持单机单卡,全参数fintune支持单机8卡。
P-Tuning v2
启动P-Tuning v2。
bash ptuning/train.sh
全参数finetune
启动8卡微调。
可以用deepspeed.json配置deepspeed参数,目前默认使用zero1
bash ptuning/ds_train_fintune.sh
模型训练参数说明如下。
公共参数:
--max_source_length //处理后句子长度
--max_target_length //目标数据长度
--per_device_train_batch_size //每卡训练批次大小
--gradient_accumulation_steps //梯度更新步数
--max_steps //最大训练步数
--logging_steps //打印信息步数
--save_steps //保存参数步数
--learning_rate //学习率
训练完成后,权重文件保存在当前路径下,并输出模型训练相关信息。
表 1 训练结果展示表
NAME | SamplesPerSec | Iterations | DataType | Torch_Version | Card |
---|---|---|---|---|---|
Finetune -NPU | 1804 | 5000 | fp16 | 1.11 | A100 |
Finetune -GPU | 2027 | 5000 | fp16 | 1.11 | 910B |
说明:P-Tuning v2性能待补充
2023.6.25:首次发布。
报错提示deepspeed.py需要版本大于等于0.6.5
# 关闭版本检测。
# 若遇到该报错
pip show transformers
# 复制Location路径
# 使用fix文件夹下的deepspeed.py替换路径下transformers/deepspeed.py
报错提示tranining_args.py没有cuda
# 自动替换无法替换三方库中的文件。
# 若遇到该报错
pip show transformers
# 复制Location路径
# 使用fix文件夹下的tranining_args.py替换路径下transformers/tranining_args.py
报错checkpoint.py
# 1.11版本适配问题,新版本已修复。
# 若遇到该报错
pip show torch_npu
# 复制Location路径
# 使用fix文件夹下的checkpoint.py替换路径下torch_npu/utils/checkpoint.py
加载参数阶段有卡死现象
删除root下的cache目录,重新运行
单卡阶段报embedding_dense_grad算子错误
enbedding当前版本,不支持动静合一,静态有部分shape不支持
# 若遇到该报错
修改main.py文件
torch.npu.set_compile_mode(jit_compile=False)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。