llama factory学习笔记

news2024/11/20 2:37:32

模型

模型名模型大小默认模块Template
Baichuan27B/13BW_packbaichuan2
BLOOM560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-
BLOOMZ560M/1.1B/1.7B/3B/7.1B/176Bquery_key_value-
ChatGLM36Bquery_key_valuechatglm3
DeepSeek (MoE)7B/16B/67Bq_proj,v_projdeepseek
Falcon7B/40B/180Bquery_key_valuefalcon
Gemma2B/7Bq_proj,v_projgemma
InternLM27B/20Bwqkvintern2
LLaMA7B/13B/33B/65Bq_proj,v_proj-
LLaMA-27B/13B/70Bq_proj,v_projllama2
Mistral7Bq_proj,v_projmistral
Mixtral8x7Bq_proj,v_projmistral
Phi-1.5/21.3B/2.7Bq_proj,v_proj-
Qwen1.8B/7B/14B/72Bc_attnqwen
Qwen1.50.5B/1.8B/4B/7B/14B/72Bq_proj,v_projqwen
XVERSE7B/13B/65Bq_proj,v_projxverse
Yi6B/34Bq_proj,v_projyi
Yuan2B/51B/102Bq_proj,v_projyuan

单 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

在这里插入图片描述
成功训练

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1500583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

寻找数组的中心索引

给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点…

跨网络传输的大致过程+图解(软件虚拟层),ip地址介绍,ip地址和mac地址对比

目录 跨网络传输 引入​​​​​​​ 举例 -- 唐僧西天取经 结论 介绍 ip地址 引入 介绍 类型 公有ip 私有ip 版本 ipv4 ipv6 ip地址和mac地址的唯一性问题 数据包转发的过程 引入 思考 -- 如何跨子网 过程 图解 封装和解包 去掉差异 ip地址/协议的重要…

Nginx正向代理域名的配置

目录 前言 1.打开文件 2. 启用代理 3. 指定代理服务器 4. 保存配置文件并重新加载Nginx。 5. 添加域名解析。 6. 配置客户端。 总结 前言 Nginx是一个高性能、开源的Web服务器软件,不仅可以作为反向代理服务器使用,还可以作为正向代理服务器使用…

IDEA启动项目读取nacos乱码导致启动失败

新安装的2023社区版IDEA,启动项目报错。 forest: interceptors: - com.gdsz.b2b.frontend.api.Interceptors.ApiInterceptor org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 at org.yaml.snakeyaml.reader.S…

Zabbix(四)

Zabbix Proxy zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据,然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替zabbix server收集监控数据,然后…

VBA中类的解读及应用第十讲:限制文本框的输入,使其只能输入数值(上)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

React-父传子

1.概念 说明:父组件传递数据子组件标签身上绑定属性;子组件接受数据props的参数。props是一个对象,包含父组件传递的所有数据。例如数字、字符串、布尔值、数组、对象、函数、JSX。不允许直接修改父组件传递的数据。 2.例子 // 父传子 // …

YOLO建筑物损伤评估数据集

YOLO建筑物损伤评估数据集,重度损伤,轻微损伤,中度损伤,未损伤4类,近五千张图像,yolo标注完整,应用数据增强。 适用于CV项目,毕设,科研,实验等 需要此数据集…

抖店月销过万的爆单技巧,新手轻松月入1w+,附抖店学习资料!

我是电商珠珠 抖店开通之后,怎么才能快速出单是很多新手小伙伴困扰的问题。其实想要运营好抖店一点都不难,我做抖店也有三年多时间了,接下来我说的每一步,不管是有货源还是无货源的都适用。 1、铺货低价福利款 店铺开好之后&am…

【C++第三课 - 类和对象中】构造函数、析构函数、拷贝构造函数、赋值重载、取地址重载、Date类的完善、const成员

目录 类的6个默认成员函数构造函数自己写的构造函数默认生成的构造函数 析构函数概念特征 拷贝构造函数特征 运算符重载 、 >、 <赋值重载Date类的完善构造函数的完善、-的完善用复用-、-以及-和-的相互复用 前置、--后置、--流插入、流提取 取地址重载 const成员 类的6个…

安康杯安全知识竞赛上的讲话稿

各位领导、同志们&#xff1a; 经过近半个月时间的准备&#xff0c;南五十家子镇平泉首届安康杯安全生产知识竞赛初赛在今天圆满落下帏幕&#xff0c;经过紧张激烈的角逐&#xff0c; 代表队、 代表队和 代表队分别获得本次竞赛的第一、二、三名让我们以热烈的掌声表示祝…

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理&#xff08;inference&#xff09;引擎。它专为生产环境中的部署而设计&#xff0c;用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍&#xff1a; TensorRT 是 NVIDIA 推出的…

容器: string

引言: 为什么要有string类型, 就使用字符数组表示字符串不行吗? 原因: 使用字符数组描述文本信息, 无法确定开多大空间, 开多了浪费,开少了不够用使用string封装: 扩容机制:减少了空间的浪费各种接口:方便修改等操作 string的使用 容量相关 size:获取字符个数,不包含\0 (C语言…

IOS苹果通话记录在线生成网站源代码,直接上传就可使用

一键生成&#xff0c;PHP的上传到网站根目录打开域名访问即可 源码免费下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)

Mocha and Railgun(几何规律)

链接&#xff1a;https://ac.nowcoder.com/acm/contest/33186/D 来源&#xff1a;牛客网 题目描述 There is a candy store near Mochas school. Its said that the storekeeper, Dagashiya, can cast the railgun spell. To be the most powerful Mahou Shoujo, Mocha ask…

118.龙芯2k1000-pmon(17)-制作ramdisk

目前手上这个设备装系统不容易&#xff0c;总是需要借助虚拟机才能实现。 对生产就不太那么友好&#xff0c;能否不用虚拟机就能装Linux系统呢&#xff1f; 主要是文件系统的问题需要解决&#xff0c;平时我们一般是用nfs挂载后&#xff0c;然后对硬盘格式化&#xff0c;之后…

社区服务类创业项目推荐:抓住社区商业新机遇

大家好&#xff0c;我是一名90后鲜奶吧创业者&#xff0c;目前在社区经营5年时间&#xff0c;今天我想和大家分享一些关于社区服务类创业项目的推荐&#xff0c;都是这么多年我见证过生意最好的店面。 1、社区便利店&#xff1a; 随着人们生活节奏的加快&#xff0c;对便利购…

【Linux实践室】Linux常用命令:文件操作|文件夹操作

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux文件操作2.1.1 &#x1f47b;创建文件2…

数组连续和 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个含有N个正整数的数组&#xff0c;求出有多少连续区间&#xff08;包括单个正整数&#xff09;&#xff0c;它们的和大于等于 x。 输入描述 第一行为两个…

Linux——进程信号(一)

目录 1、信号入门 1.1、技术应用角度的信号 1.2、注意 1.3、信号概念 1.4、用kill -l命令可以查看系统定义的信号列表 1.5、信号处理常见方式概览 2、产生信号 2.1通过终端按键产生信号 Core Dump 2.2、调用系统函数向进程发信号 2.3、由软条件产生信号 3、总结思考…