赞
踩
ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性:更强大的基础模型,更完整的功能支持,更全面的开源序列
运行mindformers/tools/hccl_tools.py生成RANK_TABLE_FILE的json文件
# 运行如下命令,生成当前机器的RANK_TABLE_FILE的json文件
python ./mindformers/tools/hccl_tools.py --device_num "[4,8)"
RANK_TABLE_FILE 单机8卡参考样例:
{ "version": "1.0", "server_count": "1", "server_list": [ { "server_id": "192.168.0.225", "device": [ { "device_id": "4", "device_ip": "29.147.146.80", "rank_id": "0" }, { "device_id": "5", "device_ip": "29.147.10.62", "rank_id": "1" }, { "device_id": "6", "device_ip": "29.147.158.139", "rank_id": "2" }, { "device_id": "7", "device_ip": "29.147.47.244", "rank_id": "3" } ], "host_nic_ip": "reserve" } ], "status": "completed" }
本仓库提供已经转换完成的预训练权重用于微调/推理,用户可自行从下方链接拉取后直接使用。
下载链接:
权重:https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/MindFormers/glm32k/glm32k.ckpt
词表:https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/MindFormers/glm32k/tokenizer.model
linux可用如下命令下载:
#!/bin/bash
mkdir -p ckpt/rank_0
cd ./ckpt/rank_0
wget https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/MindFormers/glm32k/glm32k.ckpt
wget https://huggingface.co/THUDM/chatglm3-6b-32k/tree/main/tokenizer.model
cd ../..
将LongBench数据集格式转换为AdGen数据集格式,以便复用mindformers的ADGenDataLoader来转换为微调使用的数据样式。启动命令:
cd research/glm32k
python glm32k_preprocess.py \
--data_path INPUT_DATA_PATH \
--output_path OUTPUT_PATH \
--prompt_config_file PROMPT_PATH
根据我们的文件路径,执行下面的转换命令
python glm32k_preprocess.py --data_path /data/datasets/Longbench/data --output_path /data/datasets/Longbench/new_data --prompt_config_file /data/datasets/Longbench/dataset2prompt.json
# 参数说明
INPUT_DATA_PATH: 原始longbench数据所处的文件夹路径
OUTPUT_PATH:转换格式后的数据存储路径
PROMPT_PATH:longbench中不同数据对应的prompt
注意:
全参微调需要多卡启动,以LongBench
数据集为例,给出了默认配置文件research/glm32k/run_glm32k.yaml
。
当前模型已支持使用Flash Attention算法进行全参微调,请参考 Flash Attention使用文档
research/glm32k/run_glm32k.yaml
中相关配置output_dir: './output' # path to save checkpoint/strategy load_checkpoint: './output/transformed_checkpoint/' # 添加预训练权重路径 auto_trans_ckpt: False only_save_strategy: False resume_training: False use_parallel: True run_mode: 'finetune' # dataset train_dataset: &train_dataset data_loader: type: ADGenDataLoader dataset_dir: "/path/to/AdvertiseGen/train.json" shuffle: True phase: "train" version: 3 origin_columns: ["content", "summary"] tokenizer: type: ChatGLM3Tokenizer vocab_file: "/path/to/tokenizer.model" # 添加字典文件 max_source_length: 30720 # 长序列源数据长度 max_target_length: 2047 # 长序列目标数据长度
注意:长序列模型的训练,max_source_length和max_target_length数值较大,需要根据实际业务数据设置对应数值
-[x] 1: 根据服务器节点数等信息,修改相应的配置。
# 以glm-6b-32k模型为例,默认配置单机8卡,如果节点数有变,需要修改相应的配置。
# 配置文件路径:./research/glm32k/run_glm32k.yaml
parallel_config:
data_parallel: 2
model_parallel: 1
pipeline_stage: 4
micro_batch_num: 8
vocab_emb_dp: True
gradient_aggregation_group: 4
-[x] 2: 执行运行脚本。
cd research
bash run_singlenode.sh \
"python glm32k/run_glm32k.py \
--config glm32k/run_glm32k.yaml \
--run_mode finetune \
--train_dataset /path/to/train.json \
--use_parallel True" \
path/to/rank_table_file [0,8] 8
内存占用稳定在250G左右, 下面是运行微调和微调后的内存对比:
微调中,占用294G左右:
微调后, 系统及其他内存占用40G左右:
我们进行了一轮微调,耗时10个小时左右。
注意:
seq_length
参数以降低推理时延(如设置seq_length=4096
,最高到4096), 需要修改默认参数值,改为4096, 默认为32768。在启动前,请先行在配置文件run_glm32k.yaml中将processor.tokenizer.vocab_file的路径配置为实际路径;如果使用增量推理,需要在配置文件中将model.model_config.use_past值设置为True。例如:
processor:
return_tensors: ms
tokenizer:
...
vocab_file: '/path/tokenizer.model' # 修改为实际路径
...
model:
model_config:
...
use_past: True
...
注意:目前长序列的增量推理所需的IFA算子还未适配,等待海思算子版本上新后再适配使用,所以use_past
目前需设置为False
research/glm32k/infer_generate.py
python infer_generate.py --checkpoint_path CKPT_PATH --device_id DEVICE_ID --user_query "晚上睡不着应该怎么办" # 参数说明 checkpoint_path: 权重文件夹路径 device_id: NPU卡号 user_query: 用户输入问题 输出结果: output: [gMASK]sop<|user|> 晚上睡不着应该怎么办<|assistant|> 晚上睡不着,可以参考下述建议: 1. 建立规律的睡眠时间表:每天在相同的时间上床和起床,有助于身体建立规律的睡眠时间表,更容易入睡。 2. 创造舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗,凉爽,有助于入睡。 3. 避免刺激性物质:避免饮用咖啡因和酒精等刺激性物质,这些物质会影响睡眠。 4. 放松身心:在睡前放松身心,例如泡个热水澡,听些轻柔的音乐,读本书等,有助于入睡。 5. 避免使用电子设备:在睡前避免使用电子设备,例如手机,平板电脑等,这些设备发出的蓝光会抑制睡眠激素的分泌,影响睡眠。 6. 锻炼身体:适度的锻炼身体有助于睡眠,但避免在睡前进行剧烈运动。 如果以上方法都无法解决问题,建议咨询医生或专业睡眠专家,获得更具体的建议和治疗方案。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。