Hugging Face开源库accelerate详解

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

官网:https://huggingface.co/docs/accelerate/package_reference/accelerator

Accelerate使用步骤

  1. 初始化accelerate对象accelerator = Accelerator()
  2. 调用prepare方法对model、dataloader、optimizer、lr_schedluer进行预处理
  3. 删除掉代码中关于gpu的操作,比如.cuda()、.to(device)等,让accelerate自行判断硬件设备的分配
  4. 将loss.backbard()替换为accelerate.backward(loss)
  5. 当使用超过1片GPU进行分布式训练时,在主进程中使用gather方法收集其他几个进程的数据,然后在计算准确率等指标

Accelerator对象初始化参数

  1. device_placement (bool, optional, defaults to True) — 是否让accelerate来确定tensor应该放在哪个device
  2. split_batches (bool, optional, defaults to False) — 分布式训练时是否对dataloader产生的batch进行split,如果True,那么每个进程使用的batch size = batch size / GPU数量,如果是False,那么每个进程使用就是batch size,总的batch size = batch size * GPU数量
  3. mixed_precision (str, optional) — 是否使用混合精度训练
  4. gradient_accumulation_steps (int, optional, default to 1) — 梯度累加的步数,也可以使用GradientAccumulationPlugin插件进行详细配置
  5. cpu (bool, optional) — 是否强制使用CPU执行
  6. deepspeed_plugin (DeepSpeedPlugin, optional) — 使用此参数调整与DeepSpeed相关的参数,也可以使用accelerate config直接配置
  7. fsdp_plugin (FullyShardedDataParallelPlugin, optional) — 使用此参数调整FSDP(Fully Sharded Data Parallel)相关参数,也可以使用accelerate config直接配置
  8. megatron_lm_plugin (MegatronLMPlugin, optional) — 使用此参数调整与MegatronLM相关的参数,可以使用accelerate config直接配置
  9. step_scheduler_with_optimizer (bool, *optional, defaults to True) – lr_scheduler是否和optimizer同步更新
  10. gradient_accumulation_plugin (GradientAccumulationPlugin, optional) — 梯度累积插件

Accelerate常用高阶用法

  1. accelerator.print()
    当使用多片GPU训练时,打印每个进程的信息,替换python的print函数,这样在每个server上只打印一次,其实就是先使用is_local_main_process判断的print。
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  2. accelerator.is_local_main_process
    可以当做装饰器使用,在一个具有多片GPU的server上只执行一次,local表示每台机器。与is_local_main_process对应的是is_main_process,is_local_main_process每个server上的主进程,is_main_process是所有server的主进程。
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  3. wait_for_everyone()
    同步控制,确保在后续操作之前所有前提操作已完成
  4. accelerator.save_model() / load_state_dict /
    load_checkpoint_in_model
    模型保存,自动去除掉由于分布式训练在模型上做的包装(调用unwrap_model),保存state_dict,并且可以对大模型文件进行分块存储。并加载保存的模型
  5. Accelerate与Transformers库搭配使用进行模型保存
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  6. 使用accelerator做梯度裁剪:
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  7. 梯度累加gradient accumulation
    尤其对于超大规模的模型,模型参数本来就已经很大了,如果再用很大的batch size进行训练,硬件资源吃不消,但是如果用很小的batch size训练的话模型稳定性很差,所以梯度累加gradient accumulation是一个这种的解决方案,其实就是连续执行多次forward前向过程,在多次执行期间不进行反向传播,每次都是很小的batch size,多次就累积成了比较大的batch size,然后在累积的结果上做反向传播。Accelerate在梯度累加期间暂停在不同GPU之间的梯度同步,进一步减少了通信数据量。
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
    GradientAccumulationPlugin提供了更灵活梯度累加操作,除了能指定累加的步数,还能指定在累计过程中是否更新lr_scheduler调节器。
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  8. autocast混合精度训练
    对处于with上下文管理中的模块使用混合精度训练
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  9. gather、gather_for_metrics
    分布式训练时,在不同进程之间回收结果数据
  10. Prepare
    为分布式训练和混合精度做准备,然后以相同的顺序返回它们。
  11. reduce:跨进程做tensor的reduce操作
  12. save_state / load_state:保存、加载模型的状态数据
  13. unscale_gradients:混合训练过程中不对梯度进行缩放
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练
  14. unwrap_model
    去掉模型上由prepare加上的用于做分布式训练的包装层,在保存模型的时候比较有用
    Hugging Face开源库accelerate详解,accelerate,hugging face,DDP,分布式训练

4、使用accelerate执行分布式训练

  • 执行accelerate config根据提问和实际硬件情况设置配置文件
  • 执行accelerate test --config_file path_to_config.yaml验证环境配置是否正常
  • 执行进行命令进行分布式训练,accelerate launch --config_file path_to_config.yaml path_to_script.py --args_for_the_script

5、使用Accelerate在低资源环境下加载大的模型

  • 参考:https://huggingface.co/docs/accelerate/usage_guides/big_modeling

文章来源地址https://www.toymoban.com/news/detail-592691.html

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

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

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

相关文章

  • hugging face开源的transformers模型可快速搭建图片分类任务

    2017年,谷歌团队在论文「Attention Is All You Need」提出了创新模型,其应用于NLP领域架构Transformer模型。从模型发布至今,transformer模型风靡微软、谷歌、Meta等大型科技公司。且目前有模型大一统的趋势,现在transformer 模型不仅风靡整个NLP领域,且随着VIT SWIN等变体模型,成功把

    2024年02月06日
    浏览(46)
  • 复旦MOSS大模型开源了「中国版ChatGPT」,Github和Hugging Face同时上线

    最近,ChatGPT非常火,从ChatGPT3到ChatGPT4,都非常火。无论是否为互联网行业的,多少都听到过关于ChatGPT的消息。虽然百度、阿里等互联网巨头都已经宣布将会推出相关的类ChatGPT产品。但目前还未有成型的产品上线。 而昨日,复旦团队发布国内首个类ChatGPT模型MOSS引发广泛关注

    2023年04月25日
    浏览(58)
  • 180B参数的Falcon登顶Hugging Face,vs chatGPT 最好开源大模型使用体验

    使用地址 https://huggingface.co/spaces/tiiuae/falcon-180b-demo 使用体验

    2024年02月09日
    浏览(42)
  • 官宣 | Hugging Face 中文博客正式发布!

    作者:Tiezhen、Adina、Luke Hugging Face 的中国社区成立已经有五个月之久,我们也非常高兴的看到 Hugging Face 相关的中文内容在各个平台广受好评,我们也注意到,Hugging Face Hub 上有众多国内开发者们的创新和贡献。因此,我们非常高兴的宣布: 我们非常高兴地向你介绍一个新的

    2023年04月21日
    浏览(41)
  • Hugging Face 介绍 & 快速搭建模型服务

    你可以在这个网站找到各种类型的模型 Tasks - Hugging Face 以Image To Text这个类别为例,其主要由以下几个部分构成: 类别介绍 模型尝试 模型列表 [huggingface-cli](https://huggingface.co/docs/huggingface_hub/guides/download#download-from-the-cli) 隶属于 huggingface_hub 库,不仅可以下载模型、数据,还可

    2024年01月19日
    浏览(49)
  • 微调Hugging Face中图像分类模型

    本文主要针对 Hugging Face 平台中的图像分类模型,在自己数据集上进行微调,预训练模型为 Google 的 vit-base-patch16-224 模型,模型简介页面。 代码运行于kaggle平台上,使用平台免费GPU,型号P100,笔记本地址,欢迎大家 copy edit 。 Github项目地址, Hugging Face 模型微调文档 如果是在

    2024年02月09日
    浏览(41)
  • 第3章 开源大模型框架概览3.2 PyTorch与Hugging Face3.2.3 PyTorch在大模型中的应用

    在过去的几年里,人工智能技术的发展取得了显著的进展,尤其是自然语言处理(NLP)和计算机视觉等领域。这些技术的核心驱动力是大型神经网络模型,如Transformer、GPT、BERT等。这些模型的训练和部署需要一些高效的深度学习框架来支持。PyTorch是一种流行的深度学习框架,

    2024年01月18日
    浏览(35)
  • Hugging Face Transformers 萌新完全指南

    欢迎阅读《Hugging Face Transformers 萌新完全指南》,本指南面向那些意欲了解有关如何使用开源 ML 的基本知识的人群。我们的目标是揭开 Hugging Face Transformers 的神秘面纱及其工作原理,这么做不是为了把读者变成机器学习从业者,而是让为了让读者更好地理解 transformers 从而能

    2024年04月22日
    浏览(36)
  • 手把手教你玩Hugging Face

    Hugging Face起初是一家总部位于纽约的聊天机器人初创服务商,他们本来打算创业做聊天机器人,然后在github上开源了一个Transformers库,虽然聊天机器人业务没搞起来,但是他们的这个库在机器学习社区迅速大火起来。目前已经共享了超100,000个预训练模型,10,000个数据集,变成

    2024年02月06日
    浏览(53)
  • kaggle、GitHub、gitee和hugging face

    四种网站比较

    2024年02月11日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包