网站建设wang1314,广元建设公司网站,wordpress判断用户权限,百度网页怎么设置青少年模式ChatGLM2-6B在Windows下的微调
零、重要参考资料
1、ChatGLM2-6B! 我跑通啦#xff01;本地部署微调#xff08;windows系统#xff09;#xff1a;这是最关键的一篇文章#xff0c;提供了Windows下的脚本 2、LangChain ChatGLM2-6B 搭建个人专属知识库#xff1a;提供…ChatGLM2-6B在Windows下的微调
零、重要参考资料
1、ChatGLM2-6B! 我跑通啦本地部署微调windows系统这是最关键的一篇文章提供了Windows下的脚本 2、LangChain ChatGLM2-6B 搭建个人专属知识库提供了基本的训练思路。
一、前提
1、已完成ChatGLM2-6B的部署假设部署位置为D:_ChatGPT\langchain-chatglm_test\ChatGLM2-6B 2、部署环境 Windows 10 专业版、已安装CUDA11.3、Anaconda3有显卡NVIDIA GeForce RTX 3060 Laptop GPU。
二、总体思路
由于官方文档和一般博客中都是在Linux环境下完成所以在Windows下主要注意两点 1、huggingface下载的chatglm2-6b模型的目录不能有减号存在否则报错。 2、使用bat文件替代官方文档中的sh文件。
三、安装依赖及环境准备
1、进入Anaconda Powershell Prompt
2、进入虚拟环境
conda activate langchain-chatglm_test3、安装依赖
pip install rouge_chinese nltk jieba datasets4、禁用WB如果不禁用可能会中断微调训练以防万一
setx WANDB_DISABLED true四、准备数据集
1、在ChatGLM2-6B的ptuning目录下创建train.json 和 dev.json这两个文件文件中的数据如下
{content: 你好你是谁, summary: 你好我是树先生的助手小6。}
{content: 你是谁, summary: 你好我是树先生的助手小6。}
{content: 树先生是谁, summary: 树先生是一个程序员热衷于用技术探索商业价值持续努力为粉丝带来价值输出运营公众号《程序员树先生》。}
{content: 介绍下树先生, summary: 树先生是一个程序员热衷于用技术探索商业价值持续努力为粉丝带来价值输出运营公众号《程序员树先生》。}
{content: 树先生, summary: 树先生是一个程序员热衷于用技术探索商业价值持续努力为粉丝带来价值输出运营公众号《程序员树先生》。}2、这里为了简化只准备了5条测试数据实际使用的时候肯定需要大量的训练数据。如下为train.json和dev.json的
五、创建训练和推理脚本
1、ChatGLM2-6B默认只提供了Linux下训练和推理使用的train.sh和evaluate.sh脚本没有提供WIndows下的脚本因此需要自己创建脚本。 2、在ptuning目录下创建train.bat脚本文件内容如下
set PRE_SEQ_LEN128
set LR2e-2
set NUM_GPUS1python main.py ^--do_train ^--train_file train.json ^--validation_file dev.json ^--preprocessing_num_workers 10 ^--prompt_column content ^--response_column summary ^--overwrite_cache ^--model_name_or_path D:\_ChatGPT\_common\chatglm2_6b ^--output_dir output/adgen-chatglm2-6b-pt-%PRE_SEQ_LEN%-%LR% ^--overwrite_output_dir ^--max_source_length 128 ^--max_target_length 128 ^--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注意model_name_or_path后跟的是实际的从huggingface下载的chatglm2-6b模型文件的位置这个路径里不能有减号存在。 train.json、dev.json这里放的是两个文件的实际位置可以根据需要修改。
3、在ptuning目录下创建evaluate.bat脚本文件内容如下
set PRE_SEQ_LEN128
set CHECKPOINTadgen-chatglm2-6b-pt-128-2e-2
set STEP3000
set NUM_GPUS1python main.py ^--do_predict ^--validation_file dev.json ^--test_file dev.json ^--overwrite_cache ^--prompt_column content ^--response_column summary ^--model_name_or_path D:\_ChatGPT\_common\chatglm2_6b ^--ptuning_checkpoint ./output/%CHECKPOINT%/checkpoint-%STEP% ^--output_dir ./output/%CHECKPOINT% ^--overwrite_output_dir ^--max_source_length 128 ^--max_target_length 128 ^--per_device_eval_batch_size 1 ^--predict_with_generate ^--pre_seq_len %PRE_SEQ_LEN% ^--quantization_bit 4六、训练和推理
1、进入Anaconda Powershell Prompt
2、进入虚拟环境
conda activate langchain-chatglm_test3、进入ptuning目录
cd D:\_ChatGPT\langchain-chatglm_test\ChatGLM2-6B\ptuning4、训练训练需要比较长的时间大概几个小时。
.\train.bat5、推理由于数量小所以推理比较快
.\evaluate.bat执行完成后会生成评测文件评测指标为中文 Rouge score 和 BLEU-4。生成的结果保存在 ./output/adgen-chatglm2-6b-pt-32-2e-2/generated_predictions.txt。我们准备了 5 条推理数据所以相应的在文件中会有 5 条评测数据labels 是 dev.json 中的预测输出predict 是 ChatGLM2-6B 生成的结果对比预测输出和生成结果评测模型训练的好坏。如果不满意调整训练的参数再次进行训练。
七、创建脚本部署微调后的模型
1、本来在Linux下可以修改ptuning目录下的web_demo.sh脚本即可实现部署在Windows下需要在ptuning目录下自行创建web_demo.bat脚本内容如下
python web_demo.py ^--model_name_or_path D:\_ChatGPT\_common\chatglm2_6b ^--ptuning_checkpoint output\adgen-chatglm2-6b-pt-128-2e-2\checkpoint-3000 ^--pre_seq_len 1282、修改ptuning目录下的web_demo.py脚本使模型能被本地访问
demo.queue().launch(shareFalse, inbrowserTrue, server_name0.0.0.0, server_port7860)八、启动应用
1、进入Anaconda Powershell Prompt
2、进入虚拟环境
conda activate langchain-chatglm_test3、进入ptuning目录
cd D:\_ChatGPT\langchain-chatglm_test\ChatGLM2-6B\ptuning4、启动微调后的模型注意启动前关闭fanqiang软件cd
.\web_demo.bat5、这时问他你训练过的问题发觉已经使用的是微调后的模型了。