微調? chatglm-6b型號使用? peft。
加入我們的微信。
[英語| 中文]]
如果您有任何疑問,請參考我們的Wiki?
將來將無法維持此存儲庫。請關注Llama-Factory進行微調語言模型(包括ChatGLM2-6B)。
[23/07/15]現在,我們開發了一個全in-In-In-In-in-In-Web UI用於培訓,評估和推理。嘗試使用train_web.py在網絡瀏覽器中微調chatglm-6b型號。感謝@kanadesiina和@codemayq在開發方面所做的努力。
[23/07/09]現在,我們發布了一個易於使用的包裝,用於有效地編輯大型語言模型的事實知識。如果您有興趣,請關注Fastedit。
[23/06/25]現在,我們將演示API與OpenAI的格式保持一致,您可以在基於任意ChatGPT的應用程序中插入微型模型。
[23/06/25]現在,我們使用我們的框架來支持chatglm2-6b型號的微調!
[23/06/05]現在,我們支持4位LORA培訓(又名Qlora)。嘗試--quantization_bit 4參數與4位量化模型一起使用。 (實驗特徵)
[23/06/01]我們實施了一個框架,以支持Llama和Bloom模型的有效調整。如果您有興趣,請關注駱駝效率調節。
[23/05/19]現在,我們支持使用開發集在訓練時評估模型。嘗試--dev_ratio參數指定開發集的大小。
[23/04/29]現在,我們通過人為反饋(RLHF)支持培訓ChatGlm!我們提供了幾個進行RLHF培訓的示例,請參閱examples文件夾以獲取詳細信息。
[23/04/20]我們的回購在12天內達到了100顆星!恭喜!
[23/04/19]現在,我們支持合併由洛拉(Lora)訓練的微型模型的權重!嘗試--checkpoint_dir checkpoint1,checkpoint2參數以不斷調整模型。
[23/04/18]現在,我們支持使用三種微調方法訓練量化模型!嘗試使用4/8位訓練模型的quantization_bit參數。
[23/04/12]現在我們支持檢查點的培訓!使用--checkpoint_dir參數指定要從中微調的檢查點模型。
[23/04/11]現在我們支持組合數據集的培訓!嘗試--dataset dataset1,dataset2參數。
有關詳細信息,請參閱數據/readme.md。
一些數據集在使用之前需要確認,因此我們建議使用這些命令使用擁抱面帳戶登錄。
pip install --upgrade huggingface_hub
huggingface-cli login我們的腳本現在支持以下微調方法:
和強大的GPU !
請參閱data/example_dataset ,以檢查有關數據集文件格式的詳細信息。您可以使用一個.json文件或帶有多個文件的數據集加載腳本來創建自定義數據集。
注意:請更新data/dataset_info.json以使用您的自定義數據集。關於此文件的格式,請參閱data/README.md 。
git lfs install
git clone https://github.com/hiyouga/ChatGLM-Efficient-Tuning.git
conda create -n chatglm_etuning python=3.10
conda activate chatglm_etuning
cd ChatGLM-Efficient-Tuning
pip install -r requirements.txt如果要在Windows平台上啟用量化的Lora(Qlora),則需要安裝支持CUDA 11.1至12.1的bitsandbytes庫的預構建版本。
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whlCUDA_VISIBLE_DEVICES=0 python src/train_web.py當前,Web UI僅支持單個GPU的培訓。
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage sft
--model_name_or_path path_to_your_chatglm_model
--do_train
--dataset alpaca_gpt4_en
--finetuning_type lora
--output_dir path_to_sft_checkpoint
--per_device_train_batch_size 4
--gradient_accumulation_steps 4
--lr_scheduler_type cosine
--logging_steps 10
--save_steps 1000
--learning_rate 5e-5
--num_train_epochs 3.0
--plot_loss
--fp16請參考我們的Wiki有關論點的詳細信息。
accelerate config # configure the environment
accelerate launch src/train_bash.py # arguments (same as above)CUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage rm
--model_name_or_path path_to_your_chatglm_model
--do_train
--dataset comparison_gpt4_en
--finetuning_type lora
--resume_lora_training False
--checkpoint_dir path_to_sft_checkpoint
--output_dir path_to_rm_checkpoint
--per_device_train_batch_size 4
--gradient_accumulation_steps 4
--lr_scheduler_type cosine
--logging_steps 10
--save_steps 1000
--learning_rate 1e-5
--num_train_epochs 1.0
--plot_loss
--fp16CUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage ppo
--model_name_or_path path_to_your_chatglm_model
--do_train
--dataset alpaca_gpt4_en
--finetuning_type lora
--resume_lora_training False
--checkpoint_dir path_to_sft_checkpoint
--reward_model path_to_rm_checkpoint
--output_dir path_to_ppo_checkpoint
--per_device_train_batch_size 2
--gradient_accumulation_steps 4
--lr_scheduler_type cosine
--logging_steps 10
--save_steps 1000
--learning_rate 1e-5
--num_train_epochs 1.0
--plot_lossCUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage sft
--model_name_or_path path_to_your_chatglm_model
--do_eval
--dataset alpaca_gpt4_en
--finetuning_type lora
--checkpoint_dir path_to_checkpoint
--output_dir path_to_eval_result
--per_device_eval_batch_size 8
--max_samples 50
--predict_with_generateCUDA_VISIBLE_DEVICES=0 python src/train_bash.py
--stage sft
--model_name_or_path path_to_your_chatglm_model
--do_predict
--dataset alpaca_gpt4_en
--finetuning_type lora
--checkpoint_dir path_to_checkpoint
--output_dir path_to_predict_result
--per_device_eval_batch_size 8
--max_samples 100
--predict_with_generate如果您想預測具有空響應的樣本,請用虛擬令牌填充response列,以確保在整個預處理階段不會丟棄樣本。
python src/api_demo.py
--model_name_or_path path_to_your_chatglm_model
--finetuning_type lora
--checkpoint_dir path_to_checkpoint訪問http://localhost:8000/docs用於API文檔。
python src/cli_demo.py
--model_name_or_path path_to_your_chatglm_model
--finetuning_type lora
--checkpoint_dir path_to_checkpointpython src/web_demo.py
--model_name_or_path path_to_your_chatglm_model
--finetuning_type lora
--checkpoint_dir path_to_checkpointpython src/export_model.py
--model_name_or_path path_to_your_chatglm_model
--finetuning_type lora
--checkpoint_dir path_to_checkpoint
--output_dir path_to_export| 微調方法 | 批量大小 | 模式 | 克 | 速度 |
|---|---|---|---|---|
| 洛拉(r = 8) | 16 | FP16 | 28GB | 8Ex/s |
| 洛拉(r = 8) | 8 | FP16 | 24GB | 8Ex/s |
| 洛拉(r = 8) | 4 | FP16 | 20GB | 8Ex/s |
| 洛拉(r = 8) | 4 | INT8 | 10GB | 8Ex/s |
| 洛拉(r = 8) | 4 | INT4 | 8GB | 8Ex/s |
| p-tuning(p = 16) | 4 | FP16 | 20GB | 8Ex/s |
| p-tuning(p = 16) | 4 | INT8 | 16 GB | 8Ex/s |
| p-tuning(p = 16) | 4 | INT4 | 12GB | 8Ex/s |
| 凍結(L = 3) | 4 | FP16 | 24GB | 8Ex/s |
| RM方法 | 批量大小 | 模式 | 克 | 速度 |
|---|---|---|---|---|
| 洛拉(r = 8) + rm | 4 | FP16 | 22GB | - |
| 洛拉(r = 8) + rm | 1 | INT8 | 11GB | - |
| RLHF方法 | 批量大小 | 模式 | 克 | 速度 |
|---|---|---|---|---|
| 洛拉(r = 8) + ppo | 4 | FP16 | 23GB | - |
| 洛拉(r = 8) + ppo | 1 | INT8 | 12GB | - |
注意:
r是洛拉等級,p是前綴令牌的數量,l是可訓練的層的數量,ex/s是訓練中每秒的示例。gradient_accumulation_steps設置為1。所有這些都在單個Tesla V100(32G)GPU上進行評估,它們是近似值,並且可能在不同的GPU中有所不同。
我們使用默認的超參數使用整個alpaca_gpt4_zh數據集用lora(r = 8)對Chatglm模型進行微調。下面介紹了訓練期間的損失曲線。

我們在alpaca_gpt4_zh數據集中選擇100個實例來評估微型ChatGLM型號併計算BLEU和Rouge分數。結果如下所示。
| 分數 | 原來的 | fz(L = 2) | pt(p = 16) | 洛拉(r = 8) |
|---|---|---|---|---|
| bleu-4 | 15.75 | 16.85 | 16.06 | 17.01( +1.26 ) |
| Rouge-1 | 34.51 | 36.62 | 34.80 | 36.77( +2.26 ) |
| Rouge-2 | 15.11 | 17.04 | 15.32 | 16.83( +1.72 ) |
| 胭脂-l | 26.18 | 28.17 | 26.35 | 28.86( +2.68 ) |
| 參數(%) | / | 4.35% | 0.06% | 0.06% |
FZ:凍結,PT:P-Tuning V2(我們使用
pre_seq_len=16進行與Lora的公平比較),參數:可訓練參數的百分比。
該存儲庫是根據Apache-2.0許可證獲得許可的。請遵循模型許可使用ChatGLM-6B型號。
如果這項工作有幫助,請引用為:
@Misc { chatglm-efficient-tuning ,
title = { ChatGLM Efficient Tuning } ,
author = { hiyouga } ,
howpublished = { url{https://github.com/hiyouga/ChatGLM-Efficient-Tuning} } ,
year = { 2023 }
}此存儲庫受益於ChatGLM-6B,ChatGlm-Tuning和Yuanzhoulvpi2017/Zero_NLP。感謝他們的精彩作品。