Tensorcore使用方法

用于深度学习的自动混合精度

深度神经网络训练传统上依赖IEEE单精度格式,但在混合精度的情况下,可以训练半精度,同时保持单精度网络的精度。这种同时使用单精度和半精度表示的技术称为混合精度技术。

​混合精度训练的好处

通过使用Tensor Core加速数学密集型运算,如线性和卷积层。

与单精度相比,通过访问一半的字节可以加快内存受限的操作。

减少训练模型的内存需求,支持更大的模型或更小的批。

启用混合精度涉及两个步骤:在适当的情况下,将模型移植到使用半精度数据类型;并使用损失缩放来保持较小的梯度值。

TensorFlow、PyTorch和MXNet中的自动混合精度特性为深度学习研究人员和工程师提供了在NVIDIA Volta和Turing gpu上最多3倍的人工智能训练速度,而只需要添加几行代码。

使用自动混合精度的主要深度学习框架

  • TensorFlow

在NVIDIA NGC容器注册表中提供的TensorFlow容器中提供了自动混合精度特性。要在容器内启用此功能,只需设置一个环境变量:

export TF_ENABLE_AUTO_MIXED_PRECISION=1 

另外,环境变量可以在TensorFlow Python脚本中设置:

os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1'   

另外还需要对优化器(Optimizer)作如下修改:

optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
optimizer = tf.train.experimental.enable_mixed_precision_graph_rewrite(optimizer) # 需要添加这句话,该例子是tf1.14.0版本,不同版本可能不一样

自动混合精度在TensorFlow内部应用这两个步骤,使用一个环境变量,并在必要时进行更细粒度的控制。

  • PyTorch

自动混合精度特性在GitHub上的Apex repository中可用。要启用,请将这两行代码添加到您现有的训练脚本中:

model, optimizer = amp.initialize(model, optimizer)

with amp.scale_loss(loss, optimizer) as scaled_loss:
    scaled_loss.backward()
  • MXNet

NVIDIA正在为MXNet构建自动混合精度特性。你可以在GitHub上找到正在进行的工作。要启用该功能,请在现有的训练脚本中添加以下代码行:

amp.init()
amp.init_trainer(trainer)
with amp.scale_loss(loss, trainer) as scaled_loss:
   autograd.backward(scaled_loss)
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Tensorcore使用方法

    深度神经网络训练传统上依赖IEEE单精度格式,但在混合精度的情况下,可以训练半精度,同时保持单精度网络的精度。这种同时使用单精度和半精度表示的技术称为混合精度技...

    marsggbo
  • [转载]tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

    tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置:

    marsggbo
  • 通俗理解决策树中的熵&条件熵&信息增益

    参考通俗理解决策树算法中的信息增益 说到决策树就要知道如下概念: 熵:表示一个随机变量的复杂性或者不确定性。 假如双十一我要剁手买一件衣服,但是我一直犹豫...

    marsggbo
  • 2433个乳腺癌患者的173个基因的突变全景图

    乳腺癌具有患者间与同一患者肿瘤内的基因组变异性。以患者间的异源性分类早期乳腺癌生物亚型,现在临床对乳腺癌患者通常是观察 morphological assess...

    生信技能树
  • JS魔法堂:深究JS异步编程模型

    前言  上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出“这条粉肠到底在说啥?”的结果:(下面是PPT的讲义,具体的...

    ^_^肥仔John
  • reactNative跨平台app开发经验分享-跨平台开发兼容

    Mr. 柳上原
  • 2019年UI和UX十大设计趋势

    我们仿佛已经达到了工具全面,技术进步。这个时候,能否理解产品和用户如何交互将会起到关键作用。 所以,让我们进入2019年UI和UX设计趋势。(我们也会指出每个趋...

    mixlab
  • Coverage analysis in AIE

    And analysis result will be displayed in different color:

    Jerry Wang
  • 虚拟化Pod性能比裸机还要好,原因竟然是这样!

    之前的文章介绍过 VMware 在 VMworld 上宣布的太平洋项目 (Project Pacific) ,这是 vSphere 向 Kubernetes 原...

    Henry Zhang
  • 应当使用 SQLite 的五个原因

    SQLite 是非常优秀的数据库,能够在真实的生产环境中完成一些真正的工作。本文将列出五个我认为在2016年应当选用 SQLite 的原因。 ? 便于管理 不知...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券