0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何显著提升Vision Transformer的训练效率

深度学习自然语言处理 来源:GiantPandaCV 作者:GiantPandaCV 2022-05-24 10:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近期MetaAI发布了一篇博客,关于如何显著提升Vision Transformer的训练效率。

原文:[Significantly faster Vision Transformer training]

链接:https://ai.facebook.com/blog/significantly-faster-vision-transformer-training

What the research is

Vision Transformer模型几乎火遍计算机视觉各个领域,其性能随着参数增加和更久的训练过程而得到提升。随着模型越来越大,超过了万亿次浮点运算的规模,该领域达到了瓶颈:训练一个模型往往要一个月,需要几百上千个GPU,导致大部分人无法接触到大规模ViT模型,并进而增加了对加速器的需求。

为了降低门槛,让更多人能够应用ViT,我们开发一系列方法来加速整个训练。我们基于MetaAI的图像分类模型库PyCls实现了一系列优化,这些优化极大的提升了模型训练过程的吞吐量:

d3d58a30-da96-11ec-ba43-dac502259ad0.png

How it works ?

我们首先对代码库进行分析,以定位训练效率低下的原因,最后关注点落在计算类型上:大部分模型都是用FP32进行训练,如果使用FP16训练的话,可以降低显存占用,并提高模型训练速度,但这一做法经常会导致准确率下降

所以我们选了一个折中的方法:自动混合精度。在该方法下,我们用half类型进行计算,以加快训练,减少显存使用。并以fp32类型存储参数,以保证模型准确率。其中我们没有手动将网络各部分转换成half类型,而是应用AMP各种模式(如O1, O2, O3),以寻找一个既能提升速度又不影响精度的平衡点。

FSDP

为了让训练更加高效,我们应用了FSDP训练策略,他能够将参数,梯度,优化器状态分片到各GPU上。在FSDP的帮助下,我们可以用更少的GPU资源构建更大的模型。

FSDP策略可以参考 [数据并行Deep-dive: 从DP 到 Fully Sharded Data Parallel (FSDP)完全分片数据并行] 链接:https://zhuanlan.zhihu.com/p/485208899

MTA Optimizer

前向计算完毕后,优化器需要对各个参数进行修改。而当参数比较多的情况下,对应启动的Optimizer Kernel就会变得很多,通常这些Kernel都比较小,计算负担不大,启动Kernel的开销反而占了大头。

ContiguousParams中,它将模型参数放置到一块连续的显存中进行计算,这样就能减少优化器这部分的时间。下图是Resnet50+SGD是否应用ContiguousParams的比较,可以看到OptimizerStep这部分时间显著减少了。

d4089a74-da96-11ec-ba43-dac502259ad0.png

而NVIDIA的Apex库的做法则是在底层重新实现了一系列MultiTensorOptimizer,如Adam, Adagrad等等。

Apex这种方法比较硬核,普通用户如果想要自己自定义优化器并应用Multi Tensor的优化,就必须改动底层CUDA代码。而最近PyTorch也在计划提供了一系列foreach接口[Replace optimizers in torch.optim with the ones from torch.optim._multi_tensor] 链接:https://github.com/pytorch/pytorch/pull/49039,让用户只需要在Python层即可享受到优化,对应的MultiTensor版Momentum优化器代码如下所示:

torch._foreach_mul_(bufs,momentum)
torch._foreach_add_(bufs,grads,alpha=1-dampening)

Pooled Classifier

原版的ViT是额外加了一个分类token,来输出最后的分类结果。而这里采用平均池化 如:https://github.com/facebookresearch/pycls/blob/main/pycls/core/config.py#L205 处理最后的分类

Batch Second Input Tensor Layout

这里的数据格式与以往不同,将batch维度放在第二维,并在调用nn.MultiheadAttention的时候,设置batch_first=False,以减少不必要的转置

ifself.batch_firstandis_batched:
returnattn_output.transpose(1,0),attn_output_weights
else:
returnattn_output,attn_output_weights

总感觉这个实现怪怪的

其他优化

我们在采取560大小的batchsize下,达到了1.51倍的加速比,进一步的我们将batchsize设置为384,并将图片大小增大到256,达到了1.86倍加速比。在全FP16运算下,能够达到2.18倍加速比,尽管这偶尔会降低准确率(在实验中,准确率降低不到10%)。

d451532c-da96-11ec-ba43-dac502259ad0.png

使用上述优化,我们将Imagenet1K数据集每epoch训练时间从0.65小时降低到0.43小时

d4786106-da96-11ec-ba43-dac502259ad0.png

我们还研究了不同GPU配置对训练速度的影响,在不同配置下我们都实现了比DDP baseline更高的吞吐量。随着GPU增加,吞吐量会因为设备之间的通信开销略微下降。然而即使在64块GPU下,我们仍然比DDP基线快1.83倍

d4c4af7a-da96-11ec-ba43-dac502259ad0.png

文中链接

PyCls :https://github.com/facebookresearch/pycls

ContiguousParams:https://github.com/PhilJd/contiguous_pytorch_params

Adam:https://github.com/NVIDIA/apex/blob/master/csrc/multi_tensor_adam.cu

审核编辑 :李倩



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 加速器
    +关注

    关注

    2

    文章

    836

    浏览量

    39712
  • Vision
    +关注

    关注

    1

    文章

    204

    浏览量

    19281

原文标题:如何更快地训练Vision Transformer

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    信维低损耗MLCC电容,提升电路效率优选

    信维低损耗MLCC电容在提升电路效率方面表现优异,其核心优势体现在 低损耗特性、高频响应能力、小型化设计、高可靠性 以及 广泛的应用适配性 ,具体分析如下: 一、低损耗特性直接提升电路效率
    的头像 发表于 11-24 16:30 407次阅读

    函数发生器和直流电源结合如何显著提升测试效率

    函数发生器和直流电源是电子测试领域中不可或缺的两大工具。但您是否曾想过,将这两者结合使用能带来怎样的出色效果?今天,我们将深入探讨这一强大组合如何显著提升测试效率,并为工程师带来前所未有的测试体验。
    的头像 发表于 11-13 09:30 2857次阅读
    函数发生器和直流电源结合如何<b class='flag-5'>显著</b><b class='flag-5'>提升</b>测试<b class='flag-5'>效率</b>

    斑马技术助力PouchNATION提升大型活动管理效率

    斑马技术公司宣布 PouchNATION 通过采用斑马技术的高性能扫描解决方案,显著提升其大型活动的管理效率
    的头像 发表于 11-04 16:15 403次阅读

    借助NVIDIA Megatron-Core大模型训练框架提高显存使用效率

    策略;理解这些策略对显存的影响,才能更好地规划训练超参数,在不 OOM (out of memory) 的情况下尽可能提升硬件使用效率
    的头像 发表于 10-21 10:55 783次阅读
    借助NVIDIA Megatron-Core大模型<b class='flag-5'>训练</b>框架提高显存使用<b class='flag-5'>效率</b>

    【「AI芯片:科技探索与AGI愿景」阅读体验】+第二章 实现深度学习AI芯片的创新方法与架构

    显著提高Transformer 模型的训练速度。 为了优化计算和存储效率Transformer 引擎使用张量统计得出的扩展因子,动态的将
    发表于 09-12 17:30

    同步整流MOSFET的设计要点与效率提升技巧

    在现代高效率电源系统中,同步整流技术已成为主流选择,尤其是在DC-DC变换器、USB快充适配器、服务器电源和车载电源等场景中。同步整流相比传统的肖特基二极管整流,能够显著降低导通损耗,提高转换效率
    的头像 发表于 07-03 09:42 611次阅读
    同步整流MOSFET的设计要点与<b class='flag-5'>效率</b><b class='flag-5'>提升</b>技巧

    快手上线鸿蒙应用高性能解决方案:数据反序列化性能提升90%

    “class-transformer”的使用代码即可实现性能优化,既保持了对原有开发模式的兼容性,又大幅提升了运行效率,整体改造过程无侵入、低成本、低风险,适用于已有项目的快速集成与上线。 在实际应用中
    发表于 05-15 10:01

    提升AI训练性能:GPU资源优化的12个实战技巧

    在人工智能与机器学习技术迅速发展的背景下,GPU计算资源的高效利用已成为关键技术指标。优化的GPU资源分配不仅能显著提升模型训练速度,还能实现计算成本的有效控制。根据AI基础设施联盟2024年发布
    的头像 发表于 05-06 11:17 1176次阅读
    <b class='flag-5'>提升</b>AI<b class='flag-5'>训练</b>性能:GPU资源优化的12个实战技巧

    摩尔线程GPU原生FP8计算助力AI训练

    并行训练和推理,显著提升训练效率与稳定性。摩尔线程是国内率先原生支持FP8计算精度的国产GPU企业,此次开源不仅为AI
    的头像 发表于 03-17 17:05 1214次阅读
    摩尔线程GPU原生FP8计算助力AI<b class='flag-5'>训练</b>

    优化汽车点焊生产线,提升制造效率与质量

    在当前的制造业环境中,提高生产效率和产品质量是企业追求的核心目标之一。汽车点焊作为汽车制造过程中的关键环节,其效率和质量直接影响到整车的性能和安全。因此,优化汽车点焊生产线,不仅能够显著提升
    的头像 发表于 02-23 11:14 796次阅读

    回馈式交流电子负载:测试效率与节能效果的双重提升

    ,通过创新的能量回馈机制,实现了测试效率与节能效果的双重提升,为电力电子测试领域带来了革命性变革。 一、传统测试方法的局限性 传统电阻负载测试方法采用耗能式工作原理,将电能转化为热能消耗。这种测试方式
    发表于 02-07 11:13

    地平线ViG基于视觉Mamba的通用视觉主干网络

    Vision Mamba的成功预示着将视觉表征学习转换为线性复杂度视觉序列表征学习具有巨大的潜力。尽管以Vision Mamba为代表的线性视觉序列表征学习结构在高清图像上展示了显著效率
    的头像 发表于 01-08 09:33 927次阅读
    地平线ViG基于视觉Mamba的通用视觉主干网络

    港大提出SparX:强化Vision Mamba和Transformer的稀疏跳跃连接机制

    本文分享香港大学计算和数据科学学院俞益洲教授及其研究团队发表于 AAAI 2025 的论文——SparX,一种强化 Vision Mamba 和 Transformer 的稀疏跳跃连接机制,性能强大
    的头像 发表于 01-03 09:28 1800次阅读
    港大提出SparX:强化<b class='flag-5'>Vision</b> Mamba和<b class='flag-5'>Transformer</b>的稀疏跳跃连接机制

    RFID技术赋能民兵装备管理,仓储效率显著提升

    民兵装备仓储管理平台的三层架构通过紧密合作,实现了装备物资的高效管理和安全储存。这一架构不仅显著提高了管理效率,还有效降低了运营成本,为我国民兵部队提供了坚强可靠的后勤保障。
    的头像 发表于 12-23 14:29 791次阅读
    RFID技术赋能民兵装备管理,仓储<b class='flag-5'>效率</b><b class='flag-5'>显著</b><b class='flag-5'>提升</b>

    微软预览版Copilot Vision AI功能上线

    微软公司近日宣布,将面向美国地区的Copilot Pro用户推出预览版的Copilot Vision AI功能。这一创新功能旨在通过人工智能技术,进一步提升用户的网页浏览体验。 Copilot
    的头像 发表于 12-09 14:38 889次阅读