• 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)
    


    微信公众号:AutoML机器学习
    MARSGGBO原创
    如有意合作或学术讨论欢迎私戳联系~
    邮箱:marsggbo@foxmail.com



    2020-01-23 17:45:35



  • 相关阅读:
    xtu数据结构 I. A Simple Tree Problem
    图论trainning-part-1 A. 最短路
    xtu数据结构 D. Necklace
    xtu数据结构 G. Count the Colors
    xtu数据结构 B. Get Many Persimmon Trees
    xtu数据结构 C. Ultra-QuickSort
    NYOJ 118 修路方案
    POJ 1679 The Unique MST
    NYOJ 115 城市平乱
    NYOJ 38 布线问题
  • 原文地址:https://www.cnblogs.com/marsggbo/p/11686184.html
Copyright © 2020-2023  润新知