Server - PyTorch BFloat16 “TypeError: Got unsupported ScalarType BFloat16“ 解决方案

欢迎关注我的CSDN:https://spike.blog.csdn.net/

本文地址:https://spike.blog.csdn.net/article/details/132665807

BFloat16 类型是 16 位的浮点数格式,可以用来加速深度学习的计算和存储。BFloat16 类型的特点是保留 32 位浮点数(float32)的 8 位指数部分,但是只有 8 位的有效数字部分(而不是 float32 的 24 位)。这样,BFloat16 类型,可以表示和 float32 类型相同的数值范围,但是精度会降低。BFloat16 类型的优势在于,可以减少内存占用和数据传输的开销,从而提高深度学习模型的训练和推理速度。同时,由于 BFloat16 类型的指数部分和 float32 类型一致,可以更好地处理梯度消失和梯度爆炸的问题,以及在低精度下保持数值稳定性。PyTorch 支持 BFloat16 类型的计算和存储。PyTorch 提供一些工具和方法来使用 BFloat16 类型进行混合精度训练和推理,例如 torch.bfloat16 数据类型,torch.cuda.amp 模块,torch.nn.BFloat16Module 类等。使用 BFloat16 类型进行混合精度训练和推理的基本思路是:对于计算密集型的操作,如卷积和矩阵乘法,使用 BFloat16 类型进行计算;对于其他的操作,如激活函数和归一化层,使用 float32 类型进行计算。这样可以平衡计算速度和精度损失。

在 PyTorch 使用 BFloat16 时,遇到 Bug,TypeError: Got unsupported ScalarType BFloat16,即:

bash 复制代码
File "[your file].py", line 38, in [function]
    reference_np = reference.detach().cpu().numpy()    
TypeError: Got unsupported ScalarType BFloat16

原因 PyTorch Version: 1.13.0 版本,不支持直接转换 BFloat16 格式, 在 detach() 之后,增加 to(torch.float),再转换 cpu(),即可:

python 复制代码
reference_np = reference.detach().to(torch.float).cpu().numpy()

参考:

相关推荐
夫唯不争,故无尤也1 天前
梯度累计原理:数学可行性与PyTorch实现
人工智能·pytorch·python
八年。。2 天前
Ai笔记(二)-PyTorch 中各类数据类型(numpy array、list、FloatTensor、LongTensor、Tensor)的区别
人工智能·pytorch·笔记
Keep_Trying_Go2 天前
LightningCLI教程 + 视频讲解
人工智能·pytorch·语言模型·大模型·多模态·lightning
AI即插即用2 天前
即插即用系列 | 2024 SOTA LAM-YOLO : 无人机小目标检测模型
pytorch·深度学习·yolo·目标检测·计算机视觉·视觉检测·无人机
AIminminHu2 天前
底层视觉及图像增强-项目实践理论补充(十六-0-(25):PyTorch---》底层视觉及图像增强):从奥运大屏到手机小屏,快来挖一挖里面都有什么
pytorch
FL171713143 天前
Pytorch保存pt和pkl
人工智能·pytorch·python
钅日 勿 XiName3 天前
一小时速通pytorch之训练分类器(四)(完结)
人工智能·pytorch·python
m0_462605223 天前
第N6周:中文文本分类-Pytorch实现
pytorch·分类·数据挖掘
嵌入式-老费3 天前
自己动手写深度学习框架(pytorch训练第一个网络)
人工智能·pytorch·深度学习
Keep_Trying_Go3 天前
论文Leveraging Unlabeled Data for Crowd Counting by Learning to Rank算法详解
人工智能·pytorch·深度学习·算法·人群计数