全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2021-04-21_Hugging Face发布PyTorch新库「Accelerate」:适用于多GPU、TPU、混合精度训练

您的位置:首页 >> 新闻 >> 行业资讯

Hugging Face发布PyTorch新库「Accelerate」:适用于多GPU、TPU、混合精度训练 机器之心报道 作者:力元多数 PyTorch 高级库都支持分布式训练和混合精度训练,但是它们引入的抽象化往往需要用户学习新的 API 来定制训练循环。许多 PyTorch 用户希望完全控制自己的训练循环,但不想编写和维护训练所需的样板代码。Hugging Face 最近发布的新库 Accelerate 解决了这个问题。 「Accelerate」提供了一个简单的 API,将与多 GPU 、 TPU 、 fp16 相关的样板代码抽离了出来,保持其余代码不变。PyTorch 用户无须使用不便控制和调整的抽象类或编写、维护样板代码,就可以直接上手多 GPU 或 TPU。 项目地址:https://github.com/huggingface/accelerate 通过将如下 5 行代码添加到原始的 PyTorch 训练循环中,脚本即可在本地以及任何分布式设置上运行。import torch import torch.nn.functional as F from datasets import load_dataset+ from accelerate import Accelerator + accelerator = Accelerator()- device = 'cpu'+ device = accelerator.device model = torch.nn.Transformer().to(device) optim = torch.optim.Adam(model.parameters()) dataset = load_dataset('my_dataset') data = torch.utils.data.DataLoader(dataset, shuffle=True) + model, optim, data = accelerator.prepare(model, optim, data) model.train() for epoch in range(10): for source, targets in data: source = source.to(device)targets=targets.to(device) optimizer.zero_grad() output = model(source) loss = F.cross_entropy(output, targets) + accelerator.backward(loss)- loss.backward() optimizer.step() Accelerate 甚至可以通过处理设备的放置(需要对代码进行一些更改,但通常更安全)进一步简化训练循环,代码如下所示: import torch import torch.nn.functional as F from datasets import load_dataset+fromaccelerateimportAccelerator + accelerator = Accelerator()-device='cpu' + model = torch.nn.Transformer()- model = torch.nn.Transformer().to(device)optim=torch.optim.Adam(model.parameters()) dataset = load_dataset('my_dataset') data = torch.utils.data.DataLoader(dataset, shuffle=True) + model, optim, data = accelerator.prepare(model, optim, data) model.train() for epoch in range(10): for source, targets in data:- source = source.to(device)- targets = targets.to(device) optimizer.zero_grad() output = model(source) loss = F.cross_entropy(output, targets) + accelerator.backward(loss)- loss.backward() optimizer.step() 除了 API,Accelerate 还提供了一个 CLI 工具,方便启动脚本之前快速配置和测试训练环境,然后启动脚本。指令如下所示: accelerate config accelerate launch my_script.py --args_to_my_script 如果不想自己编写训练循环, PyTorch 之上有许多可以替代 Accelerate 的高级库。 Accelerate 的运作原理 accelerator = Accelerator() 除了提供要使用的主要对象之外,此行还将从环境中分析分布式训练运行的类型并执行必要的初始化。用户可以通过将 cpu = True 或 fp16 = True 传递给此 init 来强制进行 CPU 训练或混合精度训练。这两个选项都可以使用脚本的启动器进行设置。 model, optim, data = accelerator.prepare(model, optim, data) 这是 API 的主体,将准备三种主要类型的对象:models (torch.nn.Module)、optimizers (torch.optim.Optimizer)、dataloaders (torch.data.dataloader.DataLoader)。 模型 模型的准备包括将其包装在适当的容器(例如 DistributedDataParallel)中,然后将其放置在适当的设备上。与普通分布式训练一样,进行保存或访问其特定的方法时,需要先通过 accelerator.unwrap_model(model)解开模型。优化器 优化器也包装于一个为使混合精度训练运转执行必要操作的特殊容器里。如果状态 dict 是非空的或从检查点加载的,它会准确地处理状态 dict 的设备放置。 数据加载器 此库并不依赖于 DistributedSampler,它实际上可以与传递到数据加载器的采样器一起使用。数据加载器包装于仅在采样器中获取与当前进程相关的索引并将批次放入设备的容器中。为此,Accelerate 提供了一种实用程序功能来同步更多 RNGs。该功能将在分布式训练期间运行的每个进程上同步随机数生成器。默认情况下,它仅同步采样器的生成器,因此在每个进程中数据扩充都将不同,但是随机改组将是相同的。 accelerator.backward(loss) 此行代码为向后传递添加了必要的步骤来提高混合精度,但对于其他集成则需要进行一些自定义。 Accelerate 支持的集成包括: CPU 单 GPU 单一节点多 GPU 多节点多 GPU TPU 带有本地 AMP 的 FP16(路线图上的顶点) 建新·见智 —— 2021亚马逊云科技 AI 在线大会 4月22日 14:00 - 18:00 为什么有那么多的机器学习负载选择亚马逊云科技?大规模机器学习、企业数字化转型如何实现? 《建新 · 见智——2021 亚马逊云科技 AI 在线大会》由亚马逊云科技全球人工智能技术副总裁及杰出科学家 Alex Smola、亚马逊云科技大中华区产品部总经理顾凡领衔,40多位重磅嘉宾将在主题演讲及6大分会场上为你深度剖析亚马逊云科技创新文化,揭秘 AI/ML 如何帮助企业加速创新。 分会场一:亚马逊机器学习实践揭秘 分会场二:人工智能赋能企业数字化转型 分会场三:大规模机器学习实现之道 分会场四:AI 服务助力互联网快速创新 分会场五:开源开放与前沿趋 分会场六:合作共赢的智能生态 6大分会场,你对哪个主题更感兴趣? 识别二维码或点击阅读原文,免费报名看直播。 ?THE END 转载请联系本公众号获得授权 投稿或寻求报道:content@jiqizhixin.com 阅读原文

上一篇:2021-02-05_不出所料,百度EasyDL市场份额还是第一 下一篇:2019-09-24_听说你嫌飞机太吵,新加坡航空用一架A350给你做了一首歌

TAG标签:

19
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价