MindSpore 高阶优化器
MindSpore自研优化器THOR(Trace-based Hardware-driven layer-ORiented Natural Gradient Descent Computation),该优化器在ImageNet上训练ResNet50,使用MindSpore+8 Ascend 910 仅需66.7分钟,当使用256节点时仅需2.7分钟!
关于一二阶优化器,其中二阶优化器与一阶优化器相比收敛速度更快,但缺点是二阶信息矩阵求逆复杂度高,为
, 其中 n 为二阶信息矩阵维度,当模型参数量为
时,对应的二阶信息矩阵的大小为
。在深度学习模型中,
常常在数百万的量级,此时二阶信息矩阵的逆无法计算。因此如何降低二阶信息矩阵求逆的计算复杂度成为关键问题。
MindSpore针对该问题,提出了自研算法THOR,该算法是基于自然梯度法,对Fisher矩阵做了近似,自然梯度法中的
矩阵可以表示为:

其中
是网络模型的预测分布,
是其概率密度,
是需要网络模型的参数。
那THOR主要做了哪些改进呢,我们一起来看一下:

  1. 降低二阶信息矩阵更新频率
    通过实验观察
    矩阵的F范数(Frobenius norm),在前期变化剧烈,后期逐渐变稳定,从而假设
    是一个马尔可夫过程,可以收敛到一个稳态分布π,其中
    代表第k个迭代时的
    矩阵。因此,在训练过程中逐步增大
    矩阵的更新间隔,可以在不影响收敛速度的情况下,减少训练时间。例如在ResNet50中,更新间隔步数随着训练的进行越来越大,到后期每个epoch只需更新一次二阶信息矩阵,如下图所示。

THOR受KFAC启发,将
矩阵按层解耦来降低矩阵复杂度,分别针对每一层的
矩阵做实验,发现有些层的
矩阵趋于稳态的速度更快,因此在统一的更新间隔上,更加细粒度的去调整每一层的更新频率。THOR使用矩阵的迹作为判断条件,当迹的变化情况大于某一阈值时,更新该层的二阶信息矩阵,否则沿用上一个迭代的二阶信息矩阵,并且引入了停止更新机制,当迹的变化量小于某个阈值时,停止更新该层二姐信息矩阵,具体更新公式如下:

  1. 硬件感知矩阵切分
    THOR在将
    矩阵按层解耦的基础上,进一步假设每个网络层中的输入和输出块之间也是独立的,例如将每层网络的输入输出切分为n个块,这n个块之间即是独立的,根据该假设,对二阶信息矩阵做进一步的切分,从而提高了计算效率。THOR结合矩阵信息损失数据和矩阵性能数据确定了矩阵分块维度,从而大大提升
    矩阵求逆时间。
    那么如何确定矩阵分块维度的呢。具体方法为:
    (1)根据
    矩阵中维度最大的那一层,确定矩阵切分维度,拿ReseNet-50举例,网络层中的最大维度为2048,确定矩阵切分维度为[1,16,32,64,128,256,512,1024,2048];
    (2)根据确定的矩阵维度,根据谱范数计算每个维度下的矩阵损失,具体公式为

其中
表示矩阵 X 的最大特征值, A 表示原始未分割矩阵,
表示分割后的矩阵。然后统计在该维度下损失小于1%的矩阵数量,最后通过除以总的矩阵数量得到标准化后的矩阵损失信息。
(3)根据确定的矩阵维度,计算每个维度下的矩阵求逆时间,再通过公式
得到每个维度下标准化后性能数据,其中
表示维度最小的矩阵的性能数据,
表示第n个维度下的性能数据。
(4)根据标注化后的矩阵损失信息和标准化后的性能数据绘图,如以ResNet50为例,可得到下图,图中交叉点为106,与128最接近,最后确定矩阵切分维度为128。

  1. 实验结果
    下图展示了THOR在ResNet50+ImageNet,batchsize为256时一二阶上的训练曲线图。

图中的THOR,THOR_stop,THOR_NT分表表示 ,从图中可以看到THOR收敛所需迭代数大约是一阶的一半,且单step的时间与一阶相差也不大。相比一阶算法需要117min,二阶优化器端到端时间提速约40%。
THOR还测试了在不同batchsize下ResNet50+ImageNet的收敛结果,结果见下表,当batchsize为8192,使用256块Ascend 910时,只需2.7分钟精度即可收敛到75.9%,该结果在业界也是非常有竞争力的。MindSpore团队还会将THOR进一步应用到NLP领域中,如Bert和GPT-3,THOR在NLP任务上的表现。

MindSpore 高阶优化器相关推荐

  1. THOR:MindSpore 自研高阶优化器源码分析和实践应用

    摘要:这篇文章跟大家分享下THOR的实践应用.THOR算法的部分内容当前已经在MindSpore中开源 本文分享自华为云社区<MindSpore 自研高阶优化器源码分析和实践应用>,原文作 ...

  2. 陈丹琦团队提出低内存高效零阶优化器MeZO,单卡A100可训练300亿参数模型

    深度学习自然语言处理 原创 作者:辰宜 今天下午突然发现了一篇陈丹琦大佬的巨作~ 大家一起来简单瞅瞅. 本文旨在介绍一种用于fine-tuning语言模型(LM)的低内存优化器--MeZO,内存减少多 ...

  3. Matlab使用高阶求解器解决天体力学问题

    使用ode78和ode89解决天体力学问题,该问题需要 ODE 求解器的每一步都具有高精度才能成功积分.和ode45都ode113无法使用默认容错来解决问题.即使使用更严格的错误阈值,ode89由于它 ...

  4. 总结机器学习优化器Optimizer

    原谅小弟搬运 只为学习还是为了自己~~~ 以经典综述文献 An overview of gradient descent optimization algorithms为线索,结合一些优秀的文章,对目 ...

  5. 机器学习:各种优化器Optimizer的总结与比较

    优化器总结 机器学习中,有很多优化方法来试图寻找模型的最优解.比如神经网络中可以采取最基本的梯度下降法. 梯度下降法(Gradient Descent) 梯度下降法是最基本的一类优化器,目前主要分为三 ...

  6. 华为昇思高阶API套件迎来全新升级!解决无人驾驶疑难杂症真得靠它!

    点击蓝字 MindSpore 关注我们 对于程序员来说,拥有一款低门槛.易操作的深度学习开发工具包,可以说赢在了起跑线!来自华为的全场景AI框架昇思MindSpore在历经短短一年多时间的迭代,为专业 ...

  7. JAX-FLUIDS:可压缩两相流的完全可微高阶计算流体动力学求解器

    原文来自微信公众号"编程语言Lab":论文精读 | JAX-FLUIDS:可压缩两相流的完全可微高阶计算流体动力学求解器 搜索关注"编程语言Lab"公众号(HW ...

  8. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1):return x+y+z匿名 lambda x,y,z=1:x+y+z #与函数有 ...

  9. linux串流windows,【新品速递】高阶计算机讯源:SOtM sMS-1000SQ Windows Edition串流播放器...

    原标题:[新品速递]高阶计算机讯源:SOtM sMS-1000SQ Windows Edition串流播放器 SOtM来自韩国,旗下产品以串流播放与音响级网络周边配备为主,这部sMS-1000SQ W ...

最新文章

  1. 智能车大赛AI视觉组培训第一弹——基础篇
  2. 设置路径是服务器上的文件,设置服务器文件路径
  3. camel_Apache Camel 2.14中的更多指标
  4. 传统IDC转型有了新思路 Zstack除了混合云还有托管云
  5. 学好Python能做什么?有哪些从业方向?
  6. react router4 需要配置2遍BrowserRouter
  7. [转] 让Visual Studio生成Release版本的可执行文件
  8. 如何拆计算机主机箱,一种方便拆卸的计算机主机箱的制作方法
  9. 多线程:实现Callable接口
  10. Java基础学习总结(79)——Java本地接口JNI详解
  11. git笔记之解决eclipse不能提交jar等文件的问题
  12. 重学JavaScript系列之一_引用类型
  13. 68个Python内置函数详解,进阶必备!
  14. 单条知识:什么是平面束方程
  15. 电脑连手机热点找不到服务器的ip地址,电脑开热点手机连不上怎么连接
  16. java模拟器安卓7,指小游Java模拟器
  17. IT管理到底是做什么
  18. Linux系统load average异常值处理的trick
  19. 你知道PMU与PMU的区别吗?
  20. 无状态编程, lambda 表达式中传入的局部变量,为什么需要是不可变的(final)

热门文章

  1. IDEA设置单个文件、单个包、单个项目的编码格式
  2. 正视自己的所想所求,活出真实的自己
  3. 53个Python库,你必须要试试
  4. java中调用python
  5. 分布式TensorFlow集群local server使用详解
  6. The listener supports no services
  7. BEP 7:CUDA外部内存管理插件(下)
  8. 深度学习与传统图像识别
  9. 深度学习模型轻量化(下)
  10. YOLO v1到YOLO v4(上)