一、问答数据集生成器使用

感谢开源
项目地址: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 微调
  1. 全量微调:

./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

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模型合并

命令行

  1. model_name_or_path 原始模型路径
  2. template 模板
  3. finetuning_type 微调类型
  4. checkpoint_dir 训练模型结果
  5. 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

在这里插入图片描述

加载模型

在这里插入图片描述
结果产出
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐