llama factory学习笔记

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

模型

模型名 模型大小 默认模块 Template
Baichuan2 7B/13B W_pack baichuan2
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 -
ChatGLM3 6B query_key_value chatglm3
DeepSeek (MoE) 7B/16B/67B q_proj,v_proj deepseek
Falcon 7B/40B/180B query_key_value falcon
Gemma 2B/7B q_proj,v_proj gemma
InternLM2 7B/20B wqkv intern2
LLaMA 7B/13B/33B/65B q_proj,v_proj -
LLaMA-2 7B/13B/70B q_proj,v_proj llama2
Mistral 7B q_proj,v_proj mistral
Mixtral 8x7B q_proj,v_proj mistral
Phi-1.5/2 1.3B/2.7B q_proj,v_proj -
Qwen 1.8B/7B/14B/72B c_attn qwen
Qwen1.5 0.5B/1.8B/4B/7B/14B/72B q_proj,v_proj qwen
XVERSE 7B/13B/65B q_proj,v_proj xverse
Yi 6B/34B q_proj,v_proj yi
Yuan 2B/51B/102B q_proj,v_proj yuan

单 GPU 训练

[!IMPORTANT]
如果您使用多张 GPU 训练模型,请移步多 GPU 分布式训练部分。

预训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage pt \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --dataset wiki_demo \
    --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 \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --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 \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_sft_checkpoint \
    --create_new_adapter \
    --dataset comparison_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --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 训练
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
    --stage ppo \
    --do_train \
    --model_name_or_path path_to_llama_model \
    --adapter_name_or_path path_to_sft_checkpoint \
    --create_new_adapter \
    --dataset alpaca_gpt4_zh \
    --template default \
    --finetuning_type lora \
    --lora_target q_proj,v_proj \
    --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 \
    --top_k 0 \
    --top_p 0.9 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate 1e-5 \
    --num_train_epochs 1.0 \
    --plot_loss \
    --fp16

这些命令行参数用于在单GPU上进行不同类型的模型训练,包括预训练、指令监督微调、奖励模型训练和PPO训练。下面是对每个参数的详细解释:

  1. CUDA_VISIBLE_DEVICES:指定使用哪张GPU进行训练。在这里,它被设置为0,意味着将使用第一张GPU。
  2. python src/train_bash.py:这是训练脚本的路径,它包含执行训练的代码。
  3. –stage pt/sft/rm/ppo:指定训练的阶段。pt代表预训练,sft代表指令监督微调,rm代表奖励模型训练,ppo代表PPO训练。
  4. –do_train:指示脚本执行训练步骤。
  5. –model_name_or_path:指定要训练的模型的名称或路径。
  6. –dataset:指定用于训练的数据集。
  7. –finetuning_type lora:指定微调类型为LoRA,这是一种用于放大模型容量的技术。
  8. –lora_target:指定LoRA适配器的目标模块,这里是指定模型的特定层。
  9. –output_dir:指定训练输出的目录,用于保存检查点和其他相关文件。
  10. –overwrite_cache:如果缓存已存在,此选项将覆盖它。
  11. –per_device_train_batch_size:指定每个设备的训练批次大小。
  12. –gradient_accumulation_steps:指定梯度累积的步数,这可以增加批次大小而不增加内存消耗。
  13. –lr_scheduler_type cosine:指定学习率调度器的类型,这里使用余弦调度器。
  14. –logging_steps:指定记录日志的步数。
  15. –save_steps:指定保存检查点的步数。
  16. –learning_rate:指定学习率。
  17. –num_train_epochs:指定训练的epoch数量。
  18. –plot_loss:在训练过程中绘制损失图。
  19. –fp16:指示使用16位浮点数进行训练,这可以提高训练效率。
  20. –adapter_name_or_path:如果需要,指定适配器的名称或路径,用于迁移学习。
  21. –create_new_adapter:如果需要,创建一个新的适配器。
  22. –reward_model:如果正在进行PPO训练,指定奖励模型的路径。
  23. –top_k和**–top_p**:这些参数用于控制随机抽样的方式,用于生成文本。
    这些参数可以根据不同的模型和任务进行调整。在实际使用中,可能还需要根据具体情况添加或修改其他参数。
    以qwen 14B 举例子
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py     
	--stage pt     
	--do_train     
	--model_name_or_path qwen/Qwen-14B     
	--dataset wiki_demo     
	--finetuning_type lora     
	--lora_target c_attn     
	--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

这里我们看到llama factory的预训练也是基于lora进行预训练的。
显存占用38GB

那么 接下来我们尝试多卡进行 qwen/Qwen-14B lora 预训练

首先配置accelerate,输入只有accelerate config,剩下的内容都是选项。

accelerate config
In which compute environment are you running?
This machine                                                                                                                                                                                                                         
Which type of machine are you using?                                                                                                                                                                                                 
multi-GPU                                                                                                                                                                                                                            
How many different machines will you use (use more than 1 for multi-node training)? [1]: 1                                                                                                                                           
Should distributed operations be checked while running for errors? This can avoid timeout issues but will be slower. [yes/NO]: yes                                                                                                   
Do you wish to optimize your script with torch dynamo?[yes/NO]:yes                                                                                                                                                                   
Which dynamo backend would you like to use?                                                                                                                                                                                          
tensorrt                                                                                                                                                                                                                             
Do you want to customize the defaults sent to torch.compile? [yes/NO]:                                                                                                                                                               
Do you want to use DeepSpeed? [yes/NO]: NO                                                                                                                                                                                           
Do you want to use FullyShardedDataParallel? [yes/NO]: M^HNPO^H^H                                                                                                                                                                    
Please enter yes or no.                                                                                                                                                                                                              
Do you want to use FullyShardedDataParallel? [yes/NO]: NO                                                                                                                                                                            
Do you want to use Megatron-LM ? [yes/NO]: yes                                                                                                                                                                                       
What is the Tensor Parallelism degree/size? [1]:1                                                                                                                                                                                    
What is the Pipeline Parallelism degree/size? [1]:1                                                                                                                                                                                  
Do you want to enable selective activation recomputation? [YES/no]: 1                                                                                                                                                                
Please enter yes or no.                                                                                                                                                                                                              
Do you want to enable selective activation recomputation? [YES/no]: YES                                                                                                                                                              
Do you want to use distributed optimizer which shards optimizer state and gradients across data parallel ranks? [YES/no]: YES                                                                                                        
What is the gradient clipping value based on global L2 Norm (0 to disable)? [1.0]: 1

How many GPU(s) should be used for distributed training? [1]:3
Do you wish to use FP16 or BF16 (mixed precision)?
bf16                                                                                                                                                                                                                                 
accelerate configuration saved at /home/ca2/.cache/huggingface/accelerate/default_config.yaml 

您已经成功地为多GPU训练环境配置了accelerate。以下是您提供的配置的简要概述以及每个选项的含义:

  1. 计算环境:您正在使用本地机器,这可能意味着您将在单台物理服务器或工作站上使用多个GPU。
  2. 机器类型:您正在使用多GPU机器。
  3. 多机器训练:您只计划使用一台机器进行训练,这意味着您将在单节点上进行训练。
  4. 分布式操作检查:您希望在运行时检查分布式操作是否有错误,这样可以避免超时问题,但可能会使训练变慢。
  5. 使用torch dynamo优化:您希望使用torch dynamo来优化您的PyTorch代码,这可以提高性能。
  6. dynamo后端:您选择使用tensorrt作为后端,这通常用于生产环境,可以提供优化的代码。
  7. DeepSpeed:您不打算使用DeepSpeed,这是一个用于深度学习训练的优化库。
  8. FullyShardedDataParallel:您不打算使用FullyShardedDataParallel,这是一个用于数据并行的PyTorch分布式训练的库。
  9. Megatron-LM:您打算使用Megatron-LM,这是一个用于大规模语言模型训练的PyTorch扩展。
  10. Tensor并行度:您设置为1,这意味着您不会使用Tensor并行。
  11. 流水线并行度:您设置为1,这意味着您不会使用流水线并行。
  12. 选择性激活重计算:您启用了选择性激活重计算,这可以提高效率。
  13. 分布式优化器:您启用了分布式优化器,这意味着优化器状态和梯度将在数据并行等级上分片。
  14. 梯度裁剪:您设置了一个基于全局L2范数的梯度裁剪值。
  15. 用于分布式训练的GPU数量:您指定了使用3个GPU进行分布式训练。
  16. FP16或BF16(混合精度):您选择了BF16,这是英伟达的混合精度之一,可以提高训练性能。
    这些配置为您的训练环境提供了一个良好的起点,但您可能需要根据您的具体需求和硬件配置进行调整。在开始训练之前,请确保您的环境变量(如CUDA_VISIBLE_DEVICES)设置正确,以便accelerate可以识别和使用您指定的GPU。
    如果您遇到任何问题或需要进一步的帮助,请随时提问。祝您训练顺利!
accelerate launch src/train_bash.py --stage pt     --do_train     --model_name_or_path qwen/Qwen-14B     --dataset wiki_demo     --finetuning_type lora     --lora_target c_attn     --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

create_new_adapter llama-factory,llama,学习,笔记
成功训练文章来源地址https://www.toymoban.com/news/detail-853684.html

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

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

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

相关文章

  • LLama Factory 实操记录(一)

    1. api端口参数说明: src/api

    2024年02月03日
    浏览(31)
  • LLaMA-Adapter源码解析

    2024年02月06日
    浏览(30)
  • LLaMA-Factory参数的解答

    打开LLaMA-Factory的web页面会有一堆参数 ,但不知道怎么选,选哪个,这个文章详细解读一下,每个参数到底是什么含义 这是个人写的参数解读,我并非该领域的人如果那个大佬看到有参数不对请反馈一下,或者有补充的也可以!谢谢(后续该文章可能会持续更新) LLaMA-Facto

    2024年04月11日
    浏览(30)
  • LLaMA-Factory添加adalora

    感谢https://github.com/tsingcoo/LLaMA-Efficient-Tuning/commit/f3a532f56b4aa7d4200f24d93fade4b2c9042736和https://github.com/huggingface/peft/issues/432的帮助。 1. 修改src/llmtuner/hparams/finetuning_args.py代码 在FinetuningArguments中修改finetuning_type,添加target_r和init_r 修改__post_init__函数 2. 修改src/llmtuner/tuner/core/adapter

    2024年01月17日
    浏览(40)
  • LLaMA Factory单机微调的实战教程

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年04月26日
    浏览(24)
  • LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory

    原文:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md  👋 加入我们的微信群。 [ English | 中文 ] 通过  🤗 Spaces  或  ModelScope  预览 LLaMA Board。 使用  CUDA_VISIBLE_DEVICES=0 python src/train_web.py  启动 LLaMA Board。(该模式目前仅支持单卡训练) 下面是使用单张 GPU 在 10 分钟内更

    2024年02月02日
    浏览(30)
  • LLaMA Factory多卡微调的实战教程

      大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的

    2024年04月28日
    浏览(25)
  • 【李宏毅机器学习·学习笔记】Tips for Training: Adaptive Learning Rate

    本节课主要介绍了Adaptive Learning Rate的基本思想和方法。通过使用Adaptive Learning Rate的策略,在训练深度神经网络时程序能实现在不同参数、不同iteration中,学习率不同。 本节课涉及到的 算法或策略 有:Adgrad、RMSProp、Adam、Learning Rate Decay、Warm Up。 本节课 参考的资料 有: MI

    2024年02月14日
    浏览(35)
  • LLama Factory 安装部署实操记录(二)

    1. 项目地址 GitHub - hiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) - GitHub - hiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) https://github.co

    2024年02月04日
    浏览(30)
  • 使用LLaMA-Factory微调ChatGLM3

    略 (1)下载LLaMA-Factory https://github.com/hiyouga/LLaMA-Factory (2)安装依赖 (3)启动LLaMA-Factory的web页面 得到如下页面: 设置如下参数,点击开始即可: 点击“预览命令”,可以看到要执行的python脚本,如下所示:

    2024年02月03日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包