LLama factory 单机多卡-简易版-教程

   日期:2024-12-27    作者:ywyouhe 移动:http://oml01z.riyuangf.com/mobile/quote/58900.html

老规矩先贴官网代码

https://github.com/hiyouga/LLaMA-Factory/blob/main/examples/README_zh.md

LLama factory 单机多卡-简易版-教程

但是我还是没有根据这个命令跑出来,所以还是上其他方法把,有简单的就用

背景知识补充

LLama factory 多卡 ZeRO-3 、ZeRO-2、 ZeRO-0什么意思?以及为什么没有ZeRO1

【深度学习】多卡训练__单机多GPU方法详解(torch.nn.DataParallel、torch.distributed


Step1:先把webUI服务起起来

 

Step2:在webUI上配置好你的模型、数据集、输出文件夹、(可选wandb见之前的帖子

offload操作同理

此时预览训练命令行不在这里运行,网页端无法实现单机多卡

 

Step3:打开bash,启动虚拟环境,粘贴以下命令

 

就像这样

 
 

用deepspeed的情况下报错处理

  1. 可能会提示没有deepspeed这个库,pip install 一下即可

  2. –deepspeed cache/ds_z3_config.json 这句话很可能会引起报错

  • 不是所有的模型都支持deepspeed3
    报错
 

这个错误表明你当前的配置存在冲突:
你正在使用 DeepSpeed ZeRO stage 3 优化
同时代码尝试使用 no_sync context manager 进行梯度累积
这两个功能是不兼容的,因为:
ZeRO stage 3 会对梯度进行分区处理
而 no_sync 管理器试图阻止梯度同步,这与 ZeRO stage 3 的工作方式冲突
解决方案:
1.修改 DeepSpeed 配置,使用较低的 ZeRO stage (比如 stage 2 或 1)
2.或者调整训练参数,避免使用梯度累积(gradient accumulation):

  • examples/deepspeed/ds_z3_config.json这个文件的配置坑很多,有时候需要把auto替换成整数值
 

错误日志

 

要随便改成整数

 

补充offload是干嘛的

DeepSpeed Offload 是一种技术,用于在训练大规模深度学习模型时,将部分计算任务或数据从 GPU 卸载到 CPU 或 NVMe 存储设备,从而缓解显存压力,优化资源利用。它主要包含两种类型Optimizer OffloadParameters Offload

以下是详细说明


1. 为什么需要 Offload

训练大型模型(如 GPT-3 或其他数十亿参数的模型)时,显存可能成为瓶颈。即使使用分布式策略,显存需求仍可能超出硬件的限制。

Offload 技术通过将部分模型的状态或计算从显存转移到更大的主机内存(CPU RAM)或高速存储设备(NVMe,有效降低 GPU 显存占用,同时兼顾性能。


2. DeepSpeed Offload 的两种类型

(1) Optimizer Offload
  • 功能:将优化器的状态(如动量、二阶动量等)和梯度计算任务从 GPU 卸载到 CPU。
  • 优点
    • 显著减少 GPU 显存占用。
    • 适用于需要训练超大模型但 GPU 显存不足的情况。
  • 缺点
    • 由于 CPU 的内存带宽和计算能力低于 GPU,性能可能受到影响,尤其是在高算力需求的任务中。
  • 适用场景:显存有限但有足够的 CPU 计算能力和内存。
(2) Parameters Offload
  • 功能:将模型的参数从 GPU 显存卸载到 CPU 或 NVMe。
  • 优点
    • 大幅减少显存占用,使得更大的模型可以被加载和训练。
    • 在 NVMe 的支持下,理论上可以训练任意大小的模型。
  • 缺点
    • 依赖 CPU 内存或 NVMe 的访问速度,可能会增加训练的延迟。
    • 需要高性能 NVMe 和 I/O 设计,才能确保不会显著降低训练效率。
  • 适用场景:极大模型(如 100B+ 参数模型)训练,GPU 显存远远不足。

3. DeepSpeed Offload 的实际工作原理

数据转移
  • 优化器状态或参数被拆分后,根据配置,在 GPU 和 CPU 或 NVMe 之间进行动态转移。
  • I/O 操作和计算任务通过异步方式进行,以减少训练过程中的等待时间。
性能优化
  • DeepSpeed 使用高效的通信技术和内存管理策略(如 pipelining 和分块处理)来最小化数据传输的开销。

4. 配置示例

以下是典型的 DeepSpeed Offload 配置文件

Optimizer Offload 示例
 
Parameters Offload 示例
 

5. 优缺点总结

功能优点缺点Optimizer Offload减少显存占用,适合较大的模型训练增加 CPU 计算负载,I/O 速度可能成为瓶颈Parameters Offload能训练超大模型,突破显存限制NVMe 的访问速度较 GPU 慢,可能增加训练延迟

6. 典型应用场景

  • 研究机构或公司:需要训练超大规模模型,但硬件预算有限。
  • 超大模型训练:例如 GPT-3、BLOOM 等需要数十或上百亿参数的模型。
  • 多用户环境:在资源共享场景下优化显存使用效率。


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号