手撸AI-4: Accelerate库分布式训练详解

这篇具有很好参考价值的文章主要介绍了手撸AI-4: Accelerate库分布式训练详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 引言

        Accelerate 是 Hugging Face 公司开发的一个 Python 库,旨在简化并优化在各种环境中进行深度学习训练的过程,包括单机、多 GPU、TPU 和各种分布式训练环境。这个库提供了一种通用的 API,可以方便地将原来只能在单个设备上运行的代码扩展到多设备和分布式环境。在平常我们阅读源码或者编写训练流程的时候acceletate尤为重要.
官方文档和教程https://huggingface.co/docs/accelerate/basic_tutorials

 二. Accelerate库安装及使用

 2.1 安装 

        这里要注意pytorch的版本兼容问题,不指定版本(accelerate 0.27.2)的话需要torch>=1.10.0,而作者的torch版本是torch 1.9.1和cuda111版本对应,因此选择安装 accelerate 的 0.5.0 版本.但是该版本无法使用accelerate env命令查看环境状态.

pip install accelerate -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 创建实例

       导入Accelerator主类并在accelerator对象中实例化一个。

from accelerate import Accelerator

accelerator = Accelerator()

        将其添加到训练脚本的开头,因为它将初始化分布式训练所需的所有内容。无需指明您所处的环境类型(具有 GPU 的单台机器、具有多个 GPU 的机器或具有多个 GPU 或 TPU 的多台机器),库会自动检测到这一点。

2.3 删除模型和输入数据.to(device)和.cuda()

Accelerator对象将负责将这些对象放置在适合的设备上。

2.3 使用Accelerator.prepare 方法

创建这些对象后,在开始实际的训练循环之前,将所有与训练相关的 PyTorch 对象优化器、模型、数据加载器、验证加载器, 学习率调度程序)传递给prepare方法

model, optimizer, train_dataloader, val_loader, lr_scheduler = accelerator.prepare(
    model, optimizer, train_dataloader,val_loader, lr_scheduler
)

2.4 将loss.backward()行替换为accelerator.backward(loss)

2.5 每一epoch下模型的评测和保存

if acc > best_acc:
    # 更新 best_acc
    best_acc = acc
    
    if args.save:
        # 如果 save 参数为真,保存模型权重
        if not os.path.exists('save'):
            os.mkdir('save')
        
        # 等待所有进程完成
        accelerator.wait_for_everyone()
        
        # 获取未包装的模型
        unwrapped_model = accelerator.unwrap_model(model)
        
        # 保存权重
        accelerator.save(unwrapped_model.state_dict(), os.path.join(
            'save', f'ep{epoch}_acc{acc * 1000:.0f}.pth'))

三. 分布式脚本使用

3.3 快速配置(默认)

通过指定--config_file 标志,您可以指定配置文件的替代位置

accelerate config

设置结束时,default_config.yaml文件将保存在您的缓存文件夹中以用于 🤗 Accelerate。该缓存文件夹是(按优先级降序排列):

  • 环境变量的内容以加速HF_HOME为后缀。
  • 如果不存在,则环境变量的内容XDG_CACHE_HOME以 Huggingface/accelerate为后缀。
  • 如果也不存在,则文件夹~/.cache/huggingface/accelerate

3.4 测试配置

默认配置测试:

accelerate test

也可通过指定--config_file 标志指定配置测试.文章来源地址https://www.toymoban.com/news/detail-858478.html

3.5 运行主函数

accelerate launch --config_file config.yaml main.py --args

到了这里,关于手撸AI-4: Accelerate库分布式训练详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • rwkv模型lora微调之accelerate和deepspeed训练加速

            目录 一、rwkv模型简介 二、lora原理简介 三、rwkv-lora微调 1、数据整理 2、环境搭建 a、Dockerfile编写 b、制造镜像 c、容器启动 3、训练代码修改 四、模型推理 1、模型推理 2、lora权重合并 3、推理web服务 五、总结         由于业务采用的ChatGLM模型推理成本太大了,

    2024年02月06日
    浏览(42)
  • 阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践

    作者:霍智鑫 众所周知,随着时间的推移,算力成为了 AI 行业演进一个不可或缺的因素。在数据量日益庞大、模型体量不断增加的今天,企业对分布式算力和模型训练效率的需求成为了首要的任务。如何更好的、更高效率的以及更具性价比的利用算力,使用更低的成本来训

    2024年01月25日
    浏览(33)
  • pytorch基于ray和accelerate实现多GPU数据并行的模型加速训练

    在pytorch的DDP原生代码使用的基础上,ray和accelerate两个库对于pytorch并行训练的代码使用做了更加友好的封装。 以下为极简的代码示例。 ray.py acc.py

    2024年02月11日
    浏览(32)
  • Hugging Face开源库accelerate详解

    官网:https://huggingface.co/docs/accelerate/package_reference/accelerator Accelerate使用步骤 初始化accelerate对象accelerator = Accelerator() 调用prepare方法对model、dataloader、optimizer、lr_schedluer进行预处理 删除掉代码中关于gpu的操作,比如.cuda()、.to(device)等,让accelerate自行判断硬件设备的分配 将l

    2024年02月16日
    浏览(24)
  • 【金猿案例展】智谱AI——基于全闪分布式并行文件存储打造高速大模型训练平台...

    ‍ 焱融科技案例 本项目案例由焱融科技投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 · 改变商业 自 ChatGPT 爆火以来,中国的 AI 产业已经进入名副其实的“百模大战”。《中国人工智能

    2024年02月02日
    浏览(42)
  • 【分布式·大数据】大模型赛道如何实现华丽的弯道超车 —— AI/ML训练赋能解决方案

    导读 :Alluxio作为一款强大的分布式统一大数据虚拟文件系统,已经在众多领域展现出了其卓越的应用价值,并且为AI/ML训练赋能提供了一个全新的解决方案。 在人工智能(AI)和机器学习(ML)领域,数据驱动的决策和模型训练已成为现代应用和研究的核心。伴随大模型技术

    2024年02月08日
    浏览(29)
  • 【分布式训练】基于Pytorch的分布式数据并行训练

    简介: 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练 加速神经网络训练的最简单方法是使用GPU,它在神经网络中常见的计算类型(矩阵乘法和加法)上提供了比CPU更大的加速。随着模型或数据集变得越来越大,一个GPU很快就会变得不足。例如,像BERT和GPT-2这样的

    2024年02月17日
    浏览(38)
  • 【分布式训练】基于PyTorch进行多GPU分布式模型训练(补充)

    简介: 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练。 原文链接:https://towardsdatascience.com/distributed-model-training-in-pytorch-using-distributeddataparallel-d3d3864dc2a7 随着以ChatGPT为代表的大模型的不断涌现,如何在合理的时间内训练大模型逐渐成为一个重要的研究课题。为了解

    2024年02月16日
    浏览(37)
  • 【分布式】大模型分布式训练入门与实践 - 04

    【分布式】NCCL部署与测试 - 01 【分布式】入门级NCCL多机并行实践 - 02 【分布式】小白看Ring算法 - 03 【分布式】大模型分布式训练入门与实践 - 04 数据并行(Distributed Data Parallel)是一种用于加快深度学习模型训练速度的技术。在过去,训练大型模型往往受限于单卡训练的瓶颈

    2024年02月08日
    浏览(31)
  • pytorch 分布式训练

    分布式训练分为这几类: 按照并行方式来分:模型并行 vs 数据并行 按照更新方式来分:同步更新 vs 异步更新 按照算法来分:Parameter Server算法 vs AllReduce算法 这个函数主要有三个参数: module:即模型,此处注意,虽然输入数据被均分到不同gpu上,但每个gpu上都要拷贝一份模

    2024年02月12日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包