LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+

这篇具有很好参考价值的文章主要介绍了LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

2、支持的训练方法

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

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

  • 用于预训练:
    • Wiki Demo (en)
    • RefinedWeb (en)
    • StarCoder (en)
    • Wikipedia (en)
    • Wikipedia (zh)
  • 用于指令监督微调:
    • 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 训练:
    • HH-RLHF (en)
    • Open Assistant (multilingual)
    • GPT-4 Generated Data (en&zh)

使用方法请参考 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

LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+,NLP/LLMs,自然语言处理,基础大模型,LLaMA2

# 定位到数据集文件目录(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 Accelerate

accelerate 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、使用 DeepSpeed

deepspeed --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的使用方法

更新中……文章来源地址https://www.toymoban.com/news/detail-696788.html

到了这里,关于LLMs:LLaMA Efficient Tuning(一款可高效微调【全参数/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【预训练+指令监督微调+的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包