博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
混合精度训练(FP16 & FP32)
阅读量:2135 次
发布时间:2019-04-30

本文共 481 字,大约阅读时间需要 1 分钟。

混合精度是指训练时在模型中同时使用单精度 float32和半精度 float16 浮点类型,从而加快运行速度,减少内存使用的一种训练方法

通过让模型的某些部分保持使用 32 位类型以保持数值稳定性,可以缩短模型的单步用时,而在评估指标(如准确率)方面仍可以获得同等的训练效果。

 

作为一名算法工程师,我们经常会遇到训练网络的事情,当前训练网络的整个过程基本上都是在N卡上面执行的,当我们的数据集比较大时,训练网络会耗费大量的时间。由于我们需要使用反向传播来更新具有细微变化的权重,因而我们在训练网络的过程中通常会选用FP32类型的数据和权重。说了这么多,那么混合精度到底是什么呢,有什么用呢?

  简而言之,所谓的混合精度训练,即当你使用N卡训练你的网络时,混合精度会在内存中用FP16做储存和乘法从而加速计算,用FP32做累加避免舍入误差。它的优势就是可以使你的训练时间减少一半左右。它的缺陷是只能在支持FP16操作的一些特定类型的显卡上面使用,而且会存在溢出误差和舍入误差。

 

NVIDIA GPU 使用 float16 执行运算的速度比使用 float32 快

 

 

 

转载地址:http://xrygf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】235-Lowest Common Ancestor of a Binary Search Tree
查看>>
【LEETCODE】110-Balanced Binary Tree
查看>>
【LEETCODE】101-Symmetric Tree
查看>>
【LEETCODE】257-Binary Tree Paths
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】107-Binary Tree Level Order Traversal II
查看>>
数据结构-stack-学习笔记
查看>>
【LEETCODE】145-Binary Tree Postorder Traversal
查看>>
【LEETCODE】144-Binary Tree Preorder Traversal
查看>>
【LEETCODE】94-Binary Tree Inorder Traversal
查看>>
【LEETCODE】96-Unique Binary Search Trees
查看>>
【LEETCODE】95-Unique Binary Search Trees II
查看>>
【LEETCODE】108-Convert Sorted Array to Binary Search Tree
查看>>
【LEETCODE】173-Binary Search Tree Iterator
查看>>
【LEETCODE】199-Binary Tree Right Side View
查看>>
【Programming for Everybody】学习笔记
查看>>
【LEETCODE】114-Flatten Binary Tree to Linked List
查看>>
【LEETCODE】109-Convert Sorted List to Binary Search Tree
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】236-Lowest Common Ancestor of a Binary Tree
查看>>