llama factory学习笔记

模型

模型名模型大小默认模块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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#LT8711V适用于Type-C/DP1.2/EDP转VGA应用方案,分辨率高达1080P。

1. 概述 LT8711V是一款高性能 Type-C/DP1.2 转 VGA 转换器,设计用于将 USB Type-C 源或 DP1.2 源连接到 VGA 接收器。 该LT8711V集成了一个符合DP1.2标准的接收器和一个高速三通道视频DAC。此外,还包括两个用于 CC 通信的 CC 控制器,以实现 …

文件服务器

文件服务器 # 构建NFS远程共享存储## 一、NFS介绍shell 文件系统级别共享(是NAS存储) --------- 已经做好了格式化,可以直接用。 速度慢比如:nfs,sambaNFS NFS:Network File System 网络文件系统&#xf…

C++面向对象..

1.面向对象的常见知识点 类、 对象、 成员变量(属性)、成员函数(方法)、 封装、继承、多态 2.类 在C中可以通过struct、class定义一个类 struct和class的区别: struct的默认权限是public(在C语言中struct内部是不可以定义函数的) 而class的默认权限是private(该权…

Windows虚拟机的安装

Windows系统 总结知识点记忆级别: 1级:熟练记忆讲过的所有知识点(按照授课顺序,笔记顺序来提问)2级:灵活应用所学知识点(不按照顺序提问,面临陷阱提问)3级:应用所学知识解决实际问题4级:扩展应…

24 深度卷积神经网络 AlexNet【李沐动手学深度学习v2课程笔记】(备注:含AlexNet和LeNet对比)

目录 1. 深度学习机器学习的发展 1.1 核方法 1.2 几何学 1.3 特征工程 opencv 1.4 Hardware 2. AlexNet 3. 代码 1. 深度学习机器学习的发展 1.1 核方法 2001 Learning with Kernels 核方法 (机器学习) 特征提取、选择核函数来计算相似性、凸优…

陈景东:集中与分布式拾音与声信号处理 | 演讲嘉宾公布

一、声音与音乐技术专题论坛 声音与音乐技术专题论坛将于3月28日同期举办! 声音的应用领域广泛而深远,从场所识别到乐器音响质量评估,从机械故障检测到心肺疾病诊断,声音都发挥着重要作用。在互联网、大数据、人工智能的时代浪潮中…

【python】random库函数使用简要整理

前言 简要快速清晰整理random库 函数 函数作用random()返回0-1间的浮点小数randint(1,10)返回1到10间的整数uniform(1,10)返回1-10间的小数randrange(1,10,2)从1每隔2取一个数到10,在这些数中返回一个choice(列表)从列表中随机返回一个 shuffle(列表) 对列表内容…

高等数学常用公式

高等数学常用公式 文章目录 内容大纲 内容 大纲 感谢观看 期待关注 有问题的小伙伴请在下方留言,喜欢就点个赞吧

群晖NAS使用Docker安装WPS Office并结合内网穿透实现公网远程办公

文章目录 推荐1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&#xff…

C语言中的UTF-8编码转换处理

C语言UTF-8编码的转换 1.C语言简介2.什么是UTF-8编码?2.1 UTF-8编码特点: 3.C语言中的UTF-8编码转换处理步骤1:获取UTF-8编码的字节流步骤2:解析UTF-8编码步骤3:Unicode码点转换为汉字 4.总结 1.C语言简介 C语言是一门…

怎么做加密文件二维码?分享文件更安全

怎么做一个加密文件二维码?在日常的工作和生活中,通过扫描二维码来查看或者下载文件的方式,被越来越多的人所使用,一方面是二维码的成本低,另一方面有利于提升便捷性和用户体验。 为了保证内容的隐私性和安全性&#…

数据库期末速成100分训练,附练手数据库原件及教程

本文提供下面数据库代码的数据库原件,下载后可使用 教程如下: 1.打开sql sever 2.找到数据库 3.右键数据库点击“附加”,然后点击“添加” 4.导入数据库原件,点击确定 ps:如果没有sqlsever 或者页面编辑器&#x…

uniapp引入jQuery

安装 npm install jquery --saveoryarn add jquery引入 import Vue from vue import jquery from "jquery"; Vue.prototype.$ jquery;<template><view>abc</view> </template><script>export default {data() {return {}}} </scr…

tcp服务器客户端通信(socket编程)

目录 1.编程流程 2.代码演示 2.1 服务器代码 2.2 客户端代码 3.注意 3.1 ping命令 3.2 netstat命令 3.3 为什么memset? 3.4 哪个会阻塞? 3.5 显示连接信息 1.概念 1.1 编程流程 1.2 connect与listen connect方法执行后&#xff0c;会进行三次握手&#xff0c;建立连…

【python 】----Pytest基础知识与进阶知识

定义 用于编写和执行Python测试全功能测试框架(工具),是一个第三方库 安装 pip insatll pytest 安装pytest --version 校验 pytest的组成构成 不写调用语句也可以执行函数内容 在用例运行语句里面: -s:指的是开启与终端的交互,如果没有-s(程序不会输入与打印),一条用…

Java高级编程—注解

文章目录 1.注解的概述2.常见的Annotation示例2.1 生成文档相关的注解2.2 在编译时进行格式检查的注解2.3 跟踪代码依赖性&#xff0c;实现替代配置文件功能的注解 3.自定义Annotation4.JDK中的元注解4.1 Retention4.2 Target4.3 Documented & Inherited 5. JDK8中注解的新…

Vue2里,利用原生js input的 type=“file“时,获取上传成功后的文件名及文件内容。下载文件到本地

功能场景:现在有个上传下载文件的功能,不需要调后端接口,因为需求是不需要将文件存到数据库里。如下图,是上传成功的场景: 这里限制上传accept类型为pem, 这里主要用到了input的change事件,如果没上传文件则提醒上传文件后再下载,下载功能主要是运用创建a元素,传入blo…

数据结构小记【Python/C++版】——散列表篇

一&#xff0c;基础概念 散列表&#xff0c;英文名是hash table&#xff0c;又叫哈希表。 散列表通常使用顺序表来存储集合元素&#xff0c;集合元素以一种很分散的分布方式存储在顺序表中。 散列表是一个键值对(key-item)的组合&#xff0c;由键(key)和元素值(item)组成。键…

【2023最全kafka面试和答案】

2023最全kafka面试和答案 ​ 1.Kafka中的ISR(InSyncReplicate)、OSR(OutSyncReplicate)、AR(AllReplicate)代表什么&#xff1f; ISR : 速率和leader相差低于10秒的follower的集合OSR : 速率和leader相差大于10秒的followerAR : 所有分区的followerARISROSR 2.Kafka中的HW、L…

防爆气象传感器的技术原理

TH-WFB5在科技日新月异的今天&#xff0c;防爆气象传感器以其独特的魅力和广泛的应用前景&#xff0c;正逐渐走进人们的视野。这种高科技产品不仅为工业安全、环境保护等领域提供了有力保障&#xff0c;更在预测未来气象变化、防范自然灾害等方面发挥着不可替代的作用。 一、防…