LLaMA Efficient Tuning

这篇具有很好参考价值的文章主要介绍了LLaMA Efficient Tuning。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


LLaMA Efficient Tuning

https://github.com/rancheng/LLaMA-Efficient-Tuning/blob/main/README_zh.md


支持模型:
LLaMA、LLaMA-2、BLOOM、BLOOMZ、Falcon、Baichuan、Baichuan2、InternLM、Qwen、XVERSE、ChatGLM2


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

安装

软件依赖

  • Python 3.8+ 和 PyTorch 1.13.1+
  • 🤗Transformers, Datasets, Accelerate, PEFT 和 TRL
  • sentencepiece 和 tiktoken
  • jieba, rouge-chinese 和 nltk (用于评估)
  • gradio 和 matplotlib (用于网页端交互)
  • uvicorn, fastapi 和 sse-starlette (用于 API)
  • 以及 强而有力的 GPU

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 平台上开启量化 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

数据准备

关于数据集文件的格式,请参考 data/example_dataset 文件夹的内容。
https://github.com/rancheng/LLaMA-Efficient-Tuning/tree/main/data/example_dataset

构建自定义数据集时,既可以使用单个 .json 文件,也可以使用一个数据加载脚本和多个文件。

注意:使用自定义数据集时,请更新 data/dataset_info.json 文件,该文件的格式请参考 data/README.md
https://github.com/rancheng/LLaMA-Efficient-Tuning/blob/main/data/dataset_info.json
https://github.com/rancheng/LLaMA-Efficient-Tuning/blob/main/data/README.md


浏览器一体化界面

CUDA_VISIBLE_DEVICES=0 python src/train_web.py

我们极力推荐新手使用浏览器一体化界面,因为它还可以自动生成运行所需的命令行脚本。

目前网页 UI 仅支持单卡训练。


单 GPU 训练 train_bash


1、预训练 pt

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

2、指令监督微调 sft

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

3、奖励模型训练 rm

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

4、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

5、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

多 GPU 分布式训练


1、使用 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

2、使用 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
  }
}

导出微调后的模型 export_model.py

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

API 服务 api_demo.py

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


命令行测试 cli_demo.py

python src/cli_demo.py \
    --model_name_or_path path_to_llama_model \
    --template default \
    --finetuning_type lora \
    --checkpoint_dir path_to_checkpoint

浏览器测试 web_demo.py

python src/web_demo.py \
    --model_name_or_path path_to_llama_model \
    --template default \
    --finetuning_type lora \
    --checkpoint_dir path_to_checkpoint

指标评估(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文章来源地址https://www.toymoban.com/news/detail-798484.html


模型预测

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

到了这里,关于LLaMA Efficient Tuning的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一文读懂大型语言模型参数高效微调:Prefix Tuning与LLaMA-Adapter

    芝士AI吃鱼 在快速发展的人工智能领域中,高效、有效地使用大型语言模型变得日益重要,参数高效微调是这一追求的前沿技术,它允许研究人员和实践者在最小化计算和资源占用的同时,重复使用预训练模型。这还使我们能够在更广泛的硬件范围内训练AI模型,包括计算能

    2024年01月17日
    浏览(38)
  • 【LLM】LLaMA简介:一个650亿参数的基础大型语言模型

    作为 Meta 对开放科学承诺的一部分,今天我们将公开发布 LLaMA (大型语言模型 Meta AI) ,这是一个最先进的大型语言基础模型,旨在帮助研究人员推进他们在人工智能这一子领域的工作。更小,更高性能的模型,例如 LLaMA,使得研究社区中没有大量基础设施的其他人能够研究这

    2024年02月10日
    浏览(33)
  • LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention

    Paper name LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention Paper Reading Note Paper URL: https://arxiv.org/pdf/2303.16199.pdf Code URL: https://github.com/ZrrSkywalker/LLaMA-Adapter 2023 上海人工智能实验室和 CUHK MMLab 出的文章。提出 LLaMA-Adapter,一种高效的微调方法,将 LLaMA 调整为指令跟随模

    2024年02月09日
    浏览(30)
  • 图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

    LLM 如火如荼地发展了大半年,各类大模型和相关框架也逐步成型,可被大家应用到业务实际中。在这个过程中,我们可能会遇到一类问题是:现有的哪些数据,如何更好地与 LLM 对接上。像是大家都在用的知识图谱,现在的图谱该如何借助大模型,发挥更大的价值呢? 在本文

    2024年02月15日
    浏览(37)
  • LLaMA模型论文《LLaMA: Open and Efficient Foundation Language Models》阅读笔记

    LLaMA是meta在2023年2月开源的大模型,在这之后,很多开源模型都是基于LLaMA的,比如斯坦福大学的羊驼模型。 LLaMA的重点是比通常情况下使用更多的语料,来训练一系列可在各种推理预算下实现可能的最佳性能的语言模型。 摘要翻译:我们在此介绍LLaMA,这是一个参数范围从

    2024年02月15日
    浏览(31)
  • 【LLM】大语言模型学习之LLAMA 2:Open Foundation and Fine-Tuned Chat Model

    自从开源以来,LLAMA可以说是 AI 社区内最强大的开源大模型。但因为开源协议问题,一直不可免费商用。近日,Meta发布了期待已久的免费可商用版本LLAMA 2。 在这项工作中,我们开发并发布了LLAMA 2,这是一系列预训练和微调的大型语言模型(LLMs),规模从70亿到700亿个参数不

    2024年02月15日
    浏览(43)
  • llama.cpp LLM模型 windows cpu安装部署;运行LLaMA-7B模型测试

    参考: https://www.listera.top/ji-xu-zhe-teng-xia-chinese-llama-alpaca/ https://blog.csdn.net/qq_38238956/article/details/130113599 cmake windows安装参考:https://blog.csdn.net/weixin_42357472/article/details/131314105 1、下载: 2、编译 3、测试运行 参考: https://zhuanlan.zhihu.com/p/638427280 模型下载: https://huggingface.co/nya

    2024年02月15日
    浏览(42)
  • llama.cpp LLM模型 windows cpu安装部署;运行LLaMA2模型测试

    参考: https://www.listera.top/ji-xu-zhe-teng-xia-chinese-llama-alpaca/ https://blog.csdn.net/qq_38238956/article/details/130113599 cmake windows安装参考:https://blog.csdn.net/weixin_42357472/article/details/131314105 1、下载: 2、编译 3、测试运行 参考: https://zhuanlan.zhihu.com/p/638427280 模型下载: https://huggingface.co/nya

    2024年02月16日
    浏览(34)
  • LLM:LLaMA模型和微调的Alpaca模型

    简单了解[LeCun狂赞:600刀GPT-3.5平替! 斯坦福70亿参数「羊驼」爆火,LLaMA杀疯了] 论文原文:https://arxiv.org/abs/2302.13971v1 模型就是用的transformer的decoder,模型设计的不同点在于: 1 Position Embedding :RoPE旋转位置编码rotary-embedding 删除了绝对位置嵌入,而是在网络的每一层添加了

    2024年02月10日
    浏览(36)
  • LLM__llama-7B模型试验

    llama模型已经开源很久了,所以拿做小的模型做了个简单尝试 因为做简单尝试并不打算长期持有,所以以便宜、够用、好退货为主要参考依据购买阿里云服务器、 我看7B的模型权重大小就13GB,所以先购入一个 32GB内存的虚拟机 CPU内存: 4核(vCPU) 32 GiB ~ 操作系统: Alibaba Cloud Lin

    2024年02月09日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包