LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM-2/LLaMA-2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+獎勵模型訓(xùn)練+PPO 訓(xùn)練+DPO 訓(xùn)練】)的簡介、安裝、使用方法之詳細攻略
目錄
相關(guān)文章
LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微調(diào)ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tuning V2/Freeze Tuning/全量微調(diào)】)的簡介、安裝、使用方法之詳細攻略
LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+獎勵模型訓(xùn)練+PPO 訓(xùn)練+DPO 訓(xùn)練】)的簡介、安裝、使用方法之詳細攻略
LLaMA Efficient Tuning的簡介
1、支持的模型
2、支持的訓(xùn)練方法
3、可使用的數(shù)據(jù)集:用于預(yù)訓(xùn)練、用于指令監(jiān)督微調(diào)、用于獎勵模型或 DPO訓(xùn)練
LLaMA Efficient Tuning的的安裝
1、配置環(huán)境依賴
(1)、Python依賴
2、環(huán)境搭建
3、數(shù)據(jù)準備:構(gòu)建自定義數(shù)據(jù)集
4、微調(diào)/測試
(1)、瀏覽器一鍵微調(diào)/測試
(2)、單 GPU 訓(xùn)練:預(yù)訓(xùn)練、指令監(jiān)督微調(diào)、獎勵模型訓(xùn)練、PPO 訓(xùn)練、DPO 訓(xùn)練
(3)、多 GPU 分布式訓(xùn)練:T1、使用 Huggingface Accelerate、T2、使用 DeepSpeed
5、多種推理方式:API、CLI、GUI
6、指標評估、模型預(yù)測
7、導(dǎo)出微調(diào)模型
LLaMA Efficient Tuning的使用方法
相關(guān)文章
LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微調(diào)ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tuning V2/Freeze Tuning/全量微調(diào)】)的簡介、安裝、使用方法之詳細攻略
https://yunyaniu.blog.csdn.net/article/details/131427931
LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+獎勵模型訓(xùn)練+PPO 訓(xùn)練+DPO 訓(xùn)練】)的簡介、安裝、使用方法之詳細攻略
https://yunyaniu.blog.csdn.net/article/details/132012771
LLaMA Efficient Tuning的簡介
? ? ? 2023年6月發(fā)布的LLaMA Efficient Tuning,它是一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具,包括預(yù)訓(xùn)練、指令監(jiān)督微調(diào)、獎勵模型訓(xùn)練、PPO 訓(xùn)練、DPO 訓(xùn)練等功能。目前該項目仍在持續(xù)更新。
官方地址:
GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)
1、支持的模型
模型名 | 模型大小 | 默認模塊 | Template |
---|---|---|---|
LLaMA | 7B/13B/33B/65B | q_proj,v_proj | - |
LLaMA-2 | 7B/13B/70B | q_proj,v_proj | llama2 |
BLOOM | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - |
BLOOMZ | 560M/1.1B/1.7B/3B/7.1B/176B | query_key_value | - |
Falcon | 7B/40B | query_key_value | - |
Baichuan | 7B/13B | W_pack | baichuan |
InternLM | 7B | q_proj,v_proj | intern |
Qwen | 7B | c_attn | chatml |
XVERSE | 13B | q_proj,v_proj | xverse |
ChatGLM2 | 6B | query_key_value | chatglm2 |
-
默認模塊是?
--lora_target
?參數(shù)的部分可選項。請使用?python src/train_bash.py -h
?查看全部可選項。 - 對于所有“基座”(Base)模型,
--template
?參數(shù)可以是?default
,?alpaca
,?vicuna
?等任意值。但“對話”(Chat)模型請務(wù)必使用對應(yīng)的模板。
2、支持的訓(xùn)練方法
方法 | 全參數(shù)訓(xùn)練 | 部分參數(shù)訓(xùn)練 | LoRA | QLoRA |
---|---|---|---|---|
預(yù)訓(xùn)練 | ? | ? | ? | ? |
指令監(jiān)督微調(diào) | ? | ? | ? | ? |
獎勵模型訓(xùn)練 | ? | ? | ||
PPO 訓(xùn)練 | ? | ? | ||
DPO 訓(xùn)練 | ? | ? | ? |
- 使用?
--quantization_bit 4/8
?參數(shù)來啟用 QLoRA 訓(xùn)練。
3、可使用的數(shù)據(jù)集:用于預(yù)訓(xùn)練、用于指令監(jiān)督微調(diào)、用于獎勵模型或 DPO訓(xùn)練
- 用于預(yù)訓(xùn)練:
- Wiki Demo (en)
- RefinedWeb (en)
- StarCoder (en)
- Wikipedia (en)
- Wikipedia (zh)
- 用于指令監(jiān)督微調(diào):
- Stanford Alpaca (en)
- Stanford Alpaca (zh)
- GPT-4 Generated Data (en&zh)
- Open Assistant (multilingual)
- Self-cognition (zh)
- ShareGPT (zh)
- Guanaco Dataset (multilingual)
- BELLE 2M (zh)
- BELLE 1M (zh)
- BELLE 0.5M (zh)
- BELLE Dialogue 0.4M (zh)
- BELLE School Math 0.25M (zh)
- BELLE Multiturn Chat 0.8M (zh)
- Firefly 1.1M (zh)
- LIMA (en)
- CodeAlpaca 20k (en)
- Alpaca CoT (multilingual)
- Web QA (zh)
- UltraChat (en)
- WebNovel (zh)
- 用于獎勵模型或 DPO 訓(xùn)練:
- HH-RLHF (en)
- Open Assistant (multilingual)
- GPT-4 Generated Data (en&zh)
使用方法請參考?data/README.md?文件。
部分數(shù)據(jù)集的使用需要確認,我們推薦使用下述命令登錄您的 Hugging Face 賬戶。
pip install --upgrade huggingface_hub
huggingface-cli login
LLaMA Efficient Tuning的的安裝
1、配置環(huán)境依賴
(1)、Python依賴
Python依賴 |
Python 3.8+, PyTorch 1.13.1 Transformers, Datasets, Accelerate, PEFT, TRL protobuf, cpm-kernels, sentencepiece jieba, rouge-chinese, nltk(用于評估) gradio, matplotlib(用于網(wǎng)頁端交互) uvicorn, fastapi, sse-starlette(用于 API) |
2、環(huán)境搭建
通用 |
git clone https://github.com/hiyouga/LLaMA-Efficient-Tuning.git conda create -n llama_etuning python=3.10 conda activate llama_etuning cd LLaMA-Efficient-Tuning pip install -r requirements.txt |
Windows平臺+QLoRA |
如果要在 Windows 平臺上開啟量化 LoRA(QLoRA),需要安裝預(yù)編譯的 bitsandbytes 庫, 支持 CUDA 11.1 到 12.1. pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.39.1-py3-none-win_amd64.whl |
3、數(shù)據(jù)準備:構(gòu)建自定義數(shù)據(jù)集
關(guān)于數(shù)據(jù)集文件的格式,請參考 data/example_dataset 文件夾的內(nèi)容。構(gòu)建自定義數(shù)據(jù)集時,既可以使用單個 .json 文件,也可以使用一個數(shù)據(jù)加載腳本和多個文件。
注意:使用自定義數(shù)據(jù)集時,請更新 data/dataset_info.json 文件,該文件的格式請參考 data/README.md。
源代碼地址:
https://github.com/hiyouga/LLaMA-Efficient-Tuning/blob/main/data/dataset_info.json
# 定位到數(shù)據(jù)集文件目錄(data/dataset_info.json )修改對應(yīng)的配置信息
{
"dataset_DIY": {
"file_name": "dataset_DIY.json",
# "file_sha1": "607f94a7f581341e59685aef32f531095232cf23"
},
4、微調(diào)/測試
(1)、瀏覽器一鍵微調(diào)/測試
瀏覽器一鍵微調(diào)/測試 |
CUDA_VISIBLE_DEVICES=0 python src/train_web.py 我們極力推薦新手使用瀏覽器一體化界面,因為它還可以自動生成運行所需的命令行腳本。 目前網(wǎng)頁 UI 僅支持單卡訓(xùn)練。 |
(2)、單 GPU 訓(xùn)練:預(yù)訓(xùn)練、指令監(jiān)督微調(diào)、獎勵模型訓(xùn)練、PPO 訓(xùn)練、DPO 訓(xùn)練
預(yù)訓(xùn)練 | 預(yù)訓(xùn)練 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage pt \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_train \ ? ? --dataset wiki_demo \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --lora_target q_proj,v_proj \ ? ? --output_dir path_to_pt_checkpoint \ ? ? --overwrite_cache \ ? ? --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 |
指令監(jiān)督微調(diào) |
指令監(jiān)督微調(diào) CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage sft \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_train \ ? ? --dataset alpaca_gpt4_zh \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --lora_target q_proj,v_proj \ ? ? --output_dir path_to_sft_checkpoint \ ? ? --overwrite_cache \ ? ? --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 ? |
獎勵模型訓(xùn)練 |
獎勵模型訓(xùn)練 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage rm \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_train \ ? ? --dataset comparison_gpt4_zh \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --lora_target q_proj,v_proj \ ? ? --resume_lora_training False \ ? ? --checkpoint_dir path_to_sft_checkpoint \ ? ? --output_dir path_to_rm_checkpoint \ ? ? --per_device_train_batch_size 2 \ ? ? --gradient_accumulation_steps 4 \ ? ? --lr_scheduler_type cosine \ ? ? --logging_steps 10 \ ? ? --save_steps 1000 \ ? ? --learning_rate 1e-6 \ ? ? --num_train_epochs 1.0 \ ? ? --plot_loss \ ? ? --fp16 |
PPO 訓(xùn)練 |
PPO 訓(xùn)練 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage ppo \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_train \ ? ? --dataset alpaca_gpt4_zh \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --lora_target q_proj,v_proj \ ? ? --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_loss |
DPO 訓(xùn)練 | DPO 訓(xùn)練 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage dpo \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_train \ ? ? --dataset comparison_gpt4_zh \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --lora_target q_proj,v_proj \ ? ? --resume_lora_training False \ ? ? --checkpoint_dir path_to_sft_checkpoint \ ? ? --output_dir path_to_dpo_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_loss \ ? ? --fp16 |
(3)、多 GPU 分布式訓(xùn)練:T1、使用 Huggingface Accelerate、T2、使用 DeepSpeed
T1、使用 Huggingface Accelerate |
accelerate config # 首先配置分布式環(huán)境 accelerate launch src/train_bash.py # 參數(shù)同上 使用 DeepSpeed ZeRO-2 進行全參數(shù)微調(diào)的 Accelerate 配置示例 compute_environment: LOCAL_MACHINE deepspeed_config: ??gradient_accumulation_steps: 4 ??gradient_clipping: 0.5 ??offload_optimizer_device: none ??offload_param_device: none ??zero3_init_flag: false ??zero_stage: 2 distributed_type: DEEPSPEED downcast_bf16: 'no' machine_rank: 0 main_training_function: main mixed_precision: fp16 num_machines: 1 num_processes: 4 rdzv_backend: static same_network: true tpu_env: [] tpu_use_cluster: false tpu_use_sudo: false use_cpu: false |
T2、使用 DeepSpeed | deepspeed --num_gpus 8 --master_port=9901 src/train_bash.py \ ????--deepspeed ds_config.json \ ????... # 參數(shù)同上 使用 DeepSpeed ZeRO-2 進行全參數(shù)微調(diào)的 DeepSpeed 配置示例 { ??"train_micro_batch_size_per_gpu": "auto", ??"gradient_accumulation_steps": "auto", ??"gradient_clipping": "auto", ??"zero_allow_untested_optimizer": true, ??"fp16": { ????"enabled": "auto", ????"loss_scale": 0, ????"initial_scale_power": 16, ????"loss_scale_window": 1000, ????"hysteresis": 2, ????"min_loss_scale": 1 ??}, ? ??"zero_optimization": { ????"stage": 2, ????"allgather_partitions": true, ????"allgather_bucket_size": 5e8, ????"reduce_scatter": true, ????"reduce_bucket_size": 5e8, ????"overlap_comm": false, ????"contiguous_gradients": true ??} } |
5、多種推理方式:API、CLI、GUI
API 服務(wù) |
API 服務(wù) |
命令行測試 |
命令行測試 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/web_demo.py \ ? ? --model_name_or_path path_to_llama_model \ ? ? --template default \ ? ? --finetuning_type lora \ ? ? --checkpoint_dir path_to_checkpoint |
6、指標評估、模型預(yù)測
指標評估 | 指標評估(BLEU 分數(shù)和漢語 ROUGE 分數(shù)) |
模型預(yù)測 | 模型預(yù)測 CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ ? ? --stage sft \ ? ? --model_name_or_path path_to_llama_model \ ? ? --do_predict \ ? ? --dataset alpaca_gpt4_zh \ ? ? --template default \ ? ? --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 |
7、導(dǎo)出微調(diào)模型
導(dǎo)出微調(diào)模型 |
導(dǎo)出微調(diào)后的模型 |
LLaMA Efficient Tuning的使用方法
更新中……文章來源地址http://www.zghlxwxcb.cn/news/detail-696788.html
到了這里,關(guān)于LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!