文章目錄
- 一、問答數據集生成器使用
- 設置問題
- 啟動使用
- 產出效果
- 二、進行微調
- 第一步:下載模型
- 第二步:項目準備
- 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
加載模型
結果產出