文章目录
- 一、问答数据集生成器使用
- 设置问题
- 启动使用
- 产出效果
- 二、进行微调
- 第一步:下载模型
- 第二步:项目准备
- 2.1 下载项目
- 2.2 然后使用 pip 安装依赖
- 2.3 开始
- 第三步进行微调
- 3.1安装相关依赖
- 3.2准备数据集,并且上传
- 3.3对数据集进行预处理
- 3.4 进行微调
- 第四步:进行测试
- 四、微调2
- 4.1下载LAMA
- 4.2搭建环境
- 4.3修改数据集
- 4.4 开始训练
- 4.4.1页面训练
- 4.4.2直接脚本微调
- 4.5模型合并
- 命令行
- 页面
- 4.6 进行测试
- 1、API 服务测试
- 2、命令行测试
- 3、浏览器测试
- 4、web端进行测试
一、问答数据集生成器使用
感谢开源
项目地址:https://github.com/huang1332/finetune_dataset_maker.git
备用地址
https://gitee.com/yang_hu_cheng/finetune_dataset_maker.git
设置问题
启动使用
pip install streamlit
pip install openaistreamlit run dataset.py --server.port 2323
产出效果
二、进行微调
第一步:下载模型
- local_dir_root :保存位置
- ZhipuAI/chatglm3-6b:需要下载的模型
from modelscope.hub.snapshot_download import snapshot_downloadlocal_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_multiturn.sh # 全量微调
./scripts/finetune_pt_multiturn.sh # P-Tuning v2 微调
- 全量微调:
./scripts/finetune_ds_multiturn.sh 中的配置(MAX_SEQ_LEN=2048, DEV_BATCH_SIZE=16, GRAD_ACCUMULARION_STEPS=1)恰好用满 4 * 80GB 显存。
这里就是用P-Tuning v2 微调
./scripts/finetune_pt_multiturn.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
LLaMA
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
加载模型
结果产出