使用Chatglm-6b微调催收问答对的尝试

1.工作目录,如:mnt/d/work,下载源代码,并安装依赖

git clone https://github.com/THUDM/ChatGLM-6B
cd ChatGLM-6B
pip install -r requirement.txt

2. 从拥抱脸下载chatglm-6b-int4-qe到本地(GPU环境搭建参考浪潮服务器 Tesla T4 16G GPU 环境配置_wxl781227的博客-CSDN博客

3. 安装docker及nvidia-docker2环境(自行百度知乎)

4. docker下载nvidia容器(强烈推荐使用nvidia容器,省去很多麻烦)

sudo docker pull nvcr.io/nvidia/pytorch:23.01-py3

5. 在工作目录下,启动nvidia容器,多开放几个端口,方便映射。

sudo docker run --name gpt --gpus=all --ipc=host --ulimit memlock=-1 --rm -it -p 6006:6006 -p 8500:8500 -p 8501:8501 -p 8502:8502 -v $PWD:/gpt -v /etc/localtime:/etc/localtime:ro  -d nvcr.io/nvidia/pytorch:23.01-py3

6. 整理催收问答对训练train.json及验证文件val.json

7. 在gpt容器中启动jupyter lab,方便修改代码

jupyter lab --port=6006 --allow-root

8. 打开localhost:6006/lab,输入token,这样就可以方便的上传文件,修改代码了。

 9. 进入ptuning修改训练脚本train.sh

PRE_SEQ_LEN=128
LR=2e-2

CUDA_VISIBLE_DEVICES=0 python3 main.py \
    --do_train \
    --train_file /gpt/ChatGLM-6B/train.json \
    --validation_file /gpt/ChatGLM-6B/val.json \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /gpt/chatglm-6b-int4-qe \
    --output_dir check_point/chatglm-6b-int4-qe-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 3000 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4

per_device_train_batch_size根据GPU大小进行调整,如:1,2,4,8,16等。

max_source_length及max_target_length 可以根据实际情况调整,对应的是输出和输出的长度。

10.在gpt容器中启动微调训练,根据数据量不同及GPU大小,有所不同,tesla T4 16 G 30个问答对大概要24小时。

sh train.sh

11. 评估训练的效果(修改evaluate.sh,并执行)

PRE_SEQ_LEN=128
CHECKPOINT=adgen-chatglm-6b-pt-128-2e-2
STEP=3000

CUDA_VISIBLE_DEVICES=0 python3 main.py \
    --do_predict \
    --validation_file /gpt/val.json \
    --test_file /gpt/val.json \
    --overwrite_cache \
    --prompt_column content \
    --response_column summary \
    --model_name_or_path /gpt/chatglm-6b-int4-qe \
    --ptuning_checkpoint check_point/$CHECKPOINT/checkpoint-$STEP \
    --output_dir output/$CHECKPOINT \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_eval_batch_size 1 \
    --predict_with_generate \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4
sh evaluate.sh

12. 启动微调后的模型(修改web_demo.sh,并运行,默认端口7860,web_demo.py中修改为server_port=8500)

# web_demo.py
# demo.queue().launch(share=False, inbrowser=True)
demo.queue().launch(share=False, inbrowser=True, server_port=8500)
PRE_SEQ_LEN=128

CUDA_VISIBLE_DEVICES=0 python3 web_demo.py \
    --model_name_or_path /gpt/chatglm-6b-int4-qe \
    --ptuning_checkpoint check_point/chatglm-6b-int4-qe-pt-128-2e-2/checkpoint-3000 \
    --pre_seq_len $PRE_SEQ_LEN
sh web_demo.sh

13. 打开界面实际测试

 

14.结论

微调后的效果与预期一致,能够有效控制输出结果,即输出完全按照问答对训练预料来输出的。

15.多轮对话训练结果

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值