简单理解TensorFloat32
创始人
2024-05-30 22:18:01
0

目录

1. NVIDIA TF32

1.1 数据格式比较

1.2 使用方法及条件

NVIDIA TF32开关

2. Pytorch

2.1 Pytorch对NVIDIA TF32的支持

2.2 Pytorch自动混合精度AMP

参考


1. NVIDIA TF32

TensorFloat-32,是NVIDIA在Ampere架构的GPU上推出的专门运用于TensorCore的一种计算格式。

1.1 数据格式比较

TF32仅仅是在使用TensorCore时的一种中间计算格式,它并不是一个完全的数据类型

1.2 使用方法及条件

  1. 前置条件
    • 矩阵乘法及卷积相关运算,且输入数据类型位FP32,才可以使用TF32作为TensorCore的中间计算类型 
    • Ampere架构的GPU
  2. 调用方式
    通常情况下使用TF32,都是由cuBLAS,suDNN等NVIDIA的计算库来在内部进行调用的。
    因此无论上层的深度学习框架使用的是什么,必须保证cuBLAS>=11.0,cuDNN>=8.0。

      如何查询版本号?

NVIDIA TF32开关

在Ampere架构的GPU上,默认启用了TF32来进行计算加速,但是并不是每一个矩阵及卷积计算都一定会使用FP32。如果想强制关闭TF32,可以通过设置环境变量:
export NVIDIA_TF32_OVERRIDE=0

2. Pytorch

2.1 Pytorch对NVIDIA TF32的支持

Pytorch 1.7中添加了对TensorFloat32运算的支持,allow_tf32 标志在PyTroch1.7到PyTroch1.11中默认为True,在PyTorch1.12及更高版本中默认为False。

此标志控制PyTorch是否允许使用TensorFloat32 TensorCore。

 

# The flag below controls whether to allow TF32 on matmul. This flag defaults to False# in PyTorch 1.12 and later.

torch.backends.cuda.matmul.allow_tf32=True

# The flag below controls whether to allow TF32 on cuDNN. This flag defaults to True.

torch.backends.cudnn.allow_tf32=True

查询开关的默认值

 

2.2 Pytorch自动混合精度AMP

PyTorch自1.6版本开始增加内置 torch.cuda.amp, 采用Float32和Float16的自动混合运算,注意与TF32计算模式是不同的。

参考

NVIDIA TF32 — DeepRec latest 文档

CUDA semantics — PyTorch 1.13 documentation

https://arxiv.org/pdf/1710.03740.pdf

TF32和AMP训练为何可以保证训练精度收敛_来自底层的仰望的博客-CSDN博客

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...