chatGLM3微调
·
文章目录
一、问答数据集生成器使用
感谢开源
项目地址:https://github.com/huang1332/finetune_dataset_maker.git
备用地址
https://gitee.com/yang_hu_cheng/finetune_dataset_maker.git
设置问题
启动使用
pip install streamlit
pip install openai
streamlit run dataset.py --server.port 2323
产出效果
二、进行微调
第一步:下载模型
- local_dir_root :保存位置
- ZhipuAI/chatglm3-6b:需要下载的模型
from modelscope.hub.snapshot_download import snapshot_download
local_dir_root = "/root/autodl-tmp/models_from_modelscope"
snapshot_download('ZhipuAI/chatglm3-6b', cache_dir=local_dir_root)
第二步:项目准备
2.1 下载项目
git clone https://github.com/THUDM/ChatGLM3.git
cd ChatGLM3
2.2 然后使用 pip 安装依赖
可以创建一个环境(可省)
conda create --name chatchat python=3.10
conda activate chatchat
安装依赖
pip install -r requirements.txt
调整一下就可以用了
2.3 开始
启动第二个;好看一些
nohup streamlit run web_demo2.py > output.log &
也可以启动第一个
nohup python web_demo.py > output.log &
第三步进行微调
3.1安装相关依赖
pip install transformers==4.30.2 accelerate sentencepiece astunparse deepspeed
3.2准备数据集,并且上传
两个文件夹里面的内容都是一样的
{"content": "类型#裤*版型#宽松*风格#性感*图案#线条*裤型#阔腿裤", "summary": "宽松的阔腿裤这两年真的吸粉不少,明星时尚达人的心头爱。毕竟好穿时尚,谁都能穿出腿长2米的效果宽松的裤腿,当然是遮肉小能手啊。上身随性自然不拘束,面料亲肤舒适贴身体验感棒棒哒。系带部分增加设计看点,还让单品的设计感更强。腿部线条若隐若现的,性感撩人。颜色敲温柔的,与裤子本身所呈现的风格有点反差萌。"}
3.3对数据集进行预处理
./scripts/format_advertise_gen.py --path "AdvertiseGen/train.json"
出现这个说明处理好了
预处理结束后其实就是对格式进行改造
3.4 进行微调
-
MAX_STEP(就是让大模型重复多少遍死记硬背)
-
BASE_MODEL_PATH:模型路径(最后有个\)
./scripts/finetune_ds.sh # 全量微调
./scripts/finetune_pt.sh # P-Tuning v2 微调
- 全量微调:
./scripts/finetune_ds.sh 中的配置(MAX_SEQ_LEN=2048, DEV_BATCH_SIZE=16, GRAD_ACCUMULARION_STEPS=1)恰好用满 4 * 80GB 显存。
这里就是用P-Tuning v2 微调
./scripts/finetune_pt.sh
第四步:进行测试
python inference.py \
--pt-checkpoint "/root/autodl-tmp/ChatGLM3-New/finetune_demo/output/advertise_gen_pt-20231121-175741-128-2e-2/" \
--model /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/
微调成功。撒花
四、微调2
4.1下载LAMA
git clone https://github.com/hiyouga/LLaMA-Factory.git
4.2搭建环境
conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -r requirements.txt
4.3修改数据集
编辑|新建数据集,可以选择这个,也可以自建
里面是json格式
查看数据集
4.4 开始训练
4.4.1页面训练
使用 启动 LLaMA Board。(该模式目前仅支持单卡训练)
默认端口号是7860
cd /root/autodl-tmp/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 python src/train_web.py
4.4.2直接脚本微调
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--stage sft \
--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b \
--do_train True \
--finetuning_type lora \
--template chatglm3 \
--flash_attn False \
--shift_attn False \
--dataset_dir data \
--dataset self_cognition \
--cutoff_len 1024 \
--learning_rate 5e-05 \
--num_train_epochs 3.0 \
--max_samples 100000 \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--max_grad_norm 1.0 \
--logging_steps 5 \
--save_steps 100 \
--warmup_steps 336 \
--neft_alpha 0 \
--train_on_prompt True \
--upcast_layernorm False \
--lora_rank 8 \
--lora_dropout 0.1 \
--lora_target query_key_value \
--resume_lora_training True \
--output_dir saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17 \
--fp16 True \
--val_size 0.247 \
--evaluation_strategy steps \
--eval_steps 100 \
--load_best_model_at_end True \
--plot_loss True
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
--stage sft \
--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \
--do_train \
--overwrite_output_dir \
--template chatglm3 \
4.5模型合并
命令行
- model_name_or_path 原始模型路径
- template 模板
- finetuning_type 微调类型
- checkpoint_dir 训练模型结果
- export_dir 导出文件夹
python src/export_model.py \
--model_name_or_path path_to_llama_model \
--template default \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint \
--export_dir path_to_export
举例
python src/export_model.py \
--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \
--template chatglm3 \
--finetuning_type lora \
--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/export_chatglm3 \
--export_dir lora_merge_chatglm3
页面
4.6 进行测试
直接使用合并的模型
就不要用checkpoint_dir参数
1、API 服务测试
python src/api_demo.py \
--model_name_or_path path_to_llama_model \
--template default \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint
2、命令行测试
python src/cli_demo.py \
--model_name_or_path path_to_llama_model \
--template default \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint
举例
python src/cli_demo.py \
--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \
--template chatglm3 \
--finetuning_type lora \
--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17
3、浏览器测试
python src/web_demo.py \
--model_name_or_path path_to_llama_model \
--template default \
--finetuning_type lora \
--checkpoint_dir path_to_checkpoint
4、web端进行测试
刷新模型断点,选择训练好的模型
选择chat
加载模型
结果产出
更多推荐
已为社区贡献4条内容
所有评论(0)