GLM模型部署

ChatGLM-6B模型部署、微调实践记录

一、部署到服务器

  1. 另外准备
  2. 开始部署

    参考帖子:ChatGLM2-6B清华最新开源语言模型免费安装部署下载教程-openAI维基百科

    THUDM/ChatGLM2-6B: ChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型 (github.com)

    ChatGLM2-6b 避坑指南 - 知乎 (zhihu.com)

    Anaconda+Pytorch+CUDA toolkit

  3. 部署后的运行
  • Xshell连接服务器
  • 虚拟环境激活conda activate py31013(虚拟环境名称)
  • 采用 streamlit run web_demo2.py --server.port 8090运行网页版,不使用及时Ctrl+c关闭streamlit应用。
  1. 常用指令

    cd … 返回上一级 pwd目录地址 netstat -an netstat -tunlp查看tcp端口

    watch -n 1 nvidia-smi 显卡情况

    history | grep XX 查找指令记录

二、微调实践介绍

实操案例:

1.ChatGLM-6B/ptuning/README.md at main · THUDM/ChatGLM-6B (github.com)广告词生成任务,官方教程

2.ChatGLM2微调保姆级教程~ - 知乎 (zhihu.com) 文本分类任务,lora微调

3.transformers_tasks/LLM/chatglm_finetune at main · HarderThenHarder/transformers_tasks (github.com) 文本分类+信息抽取(阅读理解、抽取三元组、输出json格式)

  1. 微调前的准备

    库的准备:

    运行微调需要4.27.1版本的transformers。一般高于4.23的都可以。

    除 ChatGLM-6B 的依赖之外,还需要安装以下依赖:pip install rouge_chinese nltk jieba datasets

三、官方案例1的实操

ChatGLM-6B/ptuning/README.md at main · THUDM/ChatGLM-6B (github.com)

训练

运行以下指令进行训练:

bash train.sh

train.sh 中的 PRE_SEQ_LENLR 分别是 soft prompt 长度和训练的学习率,可以进行调节以取得最佳的效果。P-Tuning-v2 方法会冻结全部的模型参数,可通过调整 quantization_bit 来被原始模型的量化等级,不加此选项则为 FP16 精度加载。

在默认配置 quantization_bit=4per_device_train_batch_size=1gradient_accumulation_steps=16 下,INT4 的模型参数被冻结,一次训练迭代会以 1 的批处理大小进行 16 次累加的前后向传播,等效为 16 的总批处理大小,此时最低只需 6.7G 显存。若想在同等批处理大小下提升训练效率,可在二者乘积不变的情况下,加大 per_device_train_batch_size 的值,但也会带来更多的显存消耗,请根据实际情况酌情调整。

如果你想要从本地加载模型,可以将 train.sh 中的 THUDM/chatglm-6b 改为你本地的模型路径。

推理

在 P-tuning v2 训练时模型只保存 PrefixEncoder 部分的参数,所以在推理时需要同时加载原 ChatGLM-6B 模型以及 PrefixEncoder 的权重,因此需要指定 evaluate.sh 中的参数:

--model_name_or_path THUDM/chatglm-6b
--ptuning_checkpoint $CHECKPOINT_PATH

仍然兼容旧版全参保存的 Checkpoint,只需要跟之前一样设定 model_name_or_path

--model_name_or_path $CHECKPOINT_PATH

评测指标为中文 Rouge score 和 BLEU-4。生成的结果保存在 ./output/adgen-chatglm-6b-pt-8-1e-2/generated_predictions.txt

2023.11.17自己遇到的问题:

运行脚本文件 bash train.sh进行微调,报错两个:
1.“RuntimeError: Library cudart is not initialized”
2.torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
如图所示。在这里插入图片描述

其中,第一个报错,网上查询说是因为由于缺少或损坏的 CUDA 库文件引起,需要下载 CUDA Toolkit 。参考帖子:ChatGLM-6B:构建本地离线知识库的绝佳选择! - 知乎 (zhihu.com)

但是下载CUDA Toolkit需要权限。
在这里插入图片描述

需要服务器主人的ROOT密码或者他本人操作

第二个报错待解决。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值