高效微调神器:LLaMA工具,一键优化ChatGLM-2、LLaMA-2等大模型

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM-2/LLaMA-2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

目录

相关文章

LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tuning V2/Freeze Tuning/全量微调】)的简介、安装、使用方法之详细攻略

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

LLaMA Efficient Tuning的简介

1、支持的模型

2、支持的训练方法

3、可使用的数据集:用于预训练、用于指令监督微调、用于奖励模型或 DPO训练

LLaMA Efficient Tuning的的安装

1、配置环境依赖

(1)、Python依赖

2、环境搭建

3、数据准备:构建自定义数据集

4、微调/测试

(1)、浏览器一键微调/测试

(2)、单 GPU 训练:预训练、指令监督微调、奖励模型训练、PPO 训练、DPO 训练

(3)、多 GPU 分布式训练:T1、使用 Huggingface Accelerate、T2、使用 DeepSpeed

5、多种推理方式:API、CLI、GUI

6、指标评估、模型预测

7、导出微调模型

LLaMA Efficient Tuning的使用方法


相关文章

LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微调ChatGLM-6B/ChatGLM2-6B的工具【LoRA/P-Tuning V2/Freeze Tuning/全量微调】)的简介、安装、使用方法之详细攻略

https://yunyaniu.blog.csdn.net/article/details/131427931

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+奖励模型训练+PPO 训练+DPO 训练】)的简介、安装、使用方法之详细攻略

https://yunyaniu.blog.csdn.net/article/details/132012771

LLaMA Efficient Tuning的简介

2023年6月发布的LLaMA Efficient Tuning,它是一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具,包括预训练、指令监督微调、奖励模型训练、PPO 训练、DPO 训练等功能。目前该项目仍在持续更新。

官方地址

GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)

1、支持的模型

模型名模型大小默认模块Template
LLaMA7B/13B/33B/65Bq_proj,v_proj-
LLaMA-27B/13B/70Bq_proj,v_projllama2
BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-
BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-
Falcon7B/40Bquery_key_value-
Baichuan7B/13BW_packbaichuan
InternLM7Bq_proj,v_projintern
Qwen7Bc_attnchatml
XVERSE13Bq_proj,v_projxverse
ChatGLM26Bquery_key_valuechatglm2
  • 默认模块

    --lora_target
    参数的部分可选项。请使用
    python src/train_bash.py -h
    查看全部可选项。
  • 对于所有“基座”(Base)模型,
    --template
    参数可以是
    default
    ,
    alpaca
    ,
    vicuna
    等任意值。但“对话”(Chat)模型请务必使用对应的模板。

2、支持的训练方法

方法全参数训练部分参数训练LoRAQLoRA
预训练
指令监督微调
奖励模型训练
PPO 训练
DPO 训练
  • 使用
    --quantization_bit 4/8
    参数来启用 QLoRA 训练。

3、可使用的数据集:用于预训练、用于指令监督微调、用于奖励模型或 DPO训练

使用方法请参考
data/README.md
文件。

部分数据集的使用需要确认,我们推荐使用下述命令登录您的 Hugging Face 账户。

pip install --upgrade huggingface_hub

huggingface-cli login

LLaMA Efficient Tuning的的安装

1、配置环境依赖

(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(用于网页端交互) uvicorn, fastapi, sse-starlette(用于 API)

2、环境搭建

通用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),需要安装预编译的 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、

数据准备
:构建自定义数据集

关于数据集文件的格式,请参考 data/example_dataset 文件夹的内容。构建自定义数据集时,既可以使用单个 .json 文件,也可以使用一个
数据加载脚本
和多个文件。

注意:使用自定义数据集时,请更新 data/dataset_info.json 文件,该文件的格式请参考 data/README.md。

源代码地址

https://github.com/hiyouga/LLaMA-Efficient-Tuning/blob/main/data/dataset_info.json

# 定位到数据集文件目录(data/dataset_info.json )修改对应的配置信息
{
  "dataset_DIY": {
    "file_name": "dataset_DIY.json",
    # "file_sha1": "607f94a7f581341e59685aef32f531095232cf23"
  },

4、

微调/测试

(1)、浏览器一键微调/测试
浏览器一键微调/测试CUDA_VISIBLE_DEVICES=0 python src/train_web.py 我们极力推荐新手使用浏览器一体化界面,因为它还可以 自动 生成运行所需的命令行脚本。 目前网页 UI 仅支持 单卡训练
(2)、

单 GPU 训练:预训练、指令监督微调、奖励模型训练、PPO 训练、DPO 训练

预训练预训练 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
指令监督微调指令监督微调 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
奖励模型训练奖励模型训练 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 训练PPO 训练 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 训练DPO 训练 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 分布式训练:T1、使用 Huggingface Accelerate、T2、使用 DeepSpeed

T1、使用 Huggingface Accelerateaccelerate config # 首先配置分布式环境 accelerate launch src/ train_bash.py # 参数同上 使用 DeepSpeed ZeRO-2 进行全参数微调的 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、使用 DeepSpeeddeepspeed --num_gpus 8 --master_port=9901 src/train_bash.py \ --deepspeed ds_config.json \ … # 参数同上 使用 DeepSpeed ZeRO-2 进行全参数微调的 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 服务API 服务 python src/api_demo.py \ --model_name_or_path path_to_llama_model \ --template default \ --finetuning_type lora \ --checkpoint_dir path_to_checkpoint 关于 API 文档请见 http://localhost:8000/docs。
命令行测试命令行测试 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、指标评估、模型预测

指标评估指标评估(BLEU 分数和汉语 ROUGE 分数) CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \ --stage sft \ --model_name_or_path path_to_llama_model \ --do_eval \ --dataset alpaca_gpt4_zh \ --template default \ --finetuning_type lora \ --checkpoint_dir path_to_checkpoint \ --output_dir path_to_eval_result \ --per_device_eval_batch_size 8 \ --max_samples 100 \ --predict_with_generate 我们建议在量化模型的评估中使用 --per_device_eval_batch_size=1 和 --max_target_length 128。
模型预测模型预测 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、导出微调模型

导出微调模型导出微调后的模型 python src/export_model.py \ --model_name_or_path path_to_llama_model \ --template default \ --finetuning_type lora \ --checkpoint_dir path_to_checkpoint \ --output_dir path_to_export

LLaMA Efficient Tuning
的使用方法

更新中……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值