问题标签 [automatic-mixed-precision]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pytorch - 为什么使用 torch.cuda.amp.GradScaler 时比例变为零?
在使用 Pytorch 的自动混合精度包 ( amp )时,我使用以下代码片段来显示比例:
这是我得到的输出:
而这一步之后的所有损失都变成Nan
了(同时规模仍然为0)。
我的损失函数或训练数据有什么问题?
pytorch - 如何在 Pytorch 上使用具有模型并行性的 apex AMP(自动混合精度)?
我的模型有一些 LSTM,当使用一个 GPU 在大型序列上运行时,它们会耗尽 Cuda 内存。所以我将模型的一些组件转移到另一个 GPU 上。我用 Apex AMP 尝试了两件事:
在调用
amp.initialize
. 在这种情况下,我在第一次反向传播后很快就得到了 NaN。首先调用
amp.initialize
,然后将模型组件移动到另一个 GPU。在这种情况下,它就像模型反向传播在单个 GPU 上运行。它耗尽了 Cuda 内存。
模型训练在没有 Apex 的情况下运行良好,所以我想我错过了在两个 GPU 上反向传播损失的一些步骤。我查看了 Apex 的文档,但是,它只谈论 DataParallelism,而不是 ModelParallelism。
有任何想法吗?
tensorflow - TensorFlow 混合精度训练:Conv2DBackpropFilter 不使用 TensorCore
我正在使用 keras 混合精度 API 以适应 GPU 中的网络。通常在我的代码中,这看起来像这样。MWE 将是:
这似乎达到了预期的效果,因为当我训练我的模型并使用 TensorBoard 回调对其进行分析时,我的大部分操作都以半精度运行,其中一些正在使用 TensorCore(我有一个具有计算能力的 GPU 7.0 以上)。
然而,Conv2DBackpropFilter
没有使用 TensorCore,即使根据 TensorBoard 信息它有资格使用它。
我还没有整个事情的最小可重现示例,如果需要,我可以处理它,但我想首先知道这是否是预期的行为,或者是否有一些已知的陷阱,因为我找不到任何网上资料。
编辑
我有一个 MRE,它的行为不同,但问题相同:为什么不使用 TensorCore(所有需要的维度都是 8 的倍数)?
在这个 MRE 中,64.2% 的操作时间花费在半精度上,这意味着半精度确实正在发生。在我的日志中,我还检查了计算能力:
然而,没有任何操作(这次不仅仅是Conv2DBackpropFilter
)使用 TensorCore 运行。我不明白为什么。
tensorflow - 带有 float16 的 tf2.4 混合精度返回 0 梯度
这个问题之前发过这里,我在这里重新打开它以引起更多关注。
主要问题是在正常的 float32 环境中测试时,张量流返回类似的梯度,但是在我mixed_precision.set_global_policy('mixed_float16')
使用 float16 切换后,返回的梯度始终为 0。
下面是一个可以重现错误的玩具代码。
系统信息
操作系统平台和发行版:linux TensorFlow 版本(使用下面的命令):tf2.4.1
重现代码
行为描述
使用 tf.float32 设置时,梯度的结果是合理的,值在 0.6 左右,然而,当使用混合精度转换到 tf.float16 时,梯度始终为 0。我们是否应该期望计算的梯度在普通 float32 模式和混合精度 float16 模式?谢谢!
python - 使用混合精度和构建 EfficientNetB0 模型时出现 Dtype 错误
系统信息
- 操作系统平台和发行版:MacOS
- TensorFlow 安装自:Colab
- TensorFlow 版本:2.5.0
- Python版本:python 3.7
- GPU型号和内存:Tesla T4
错误
TypeError: Input 'y' of 'Sub' Op has type float16 that does not match type float32 of argument 'x'
当前行为
在使用混合精度并构建 Keras 功能 API 模型 (EfficientNet B0) 时,它显示以下错误
TypeError: Input 'y' of 'Sub' Op has type float16 that does not match type float32 of argument 'x'
注意:由于某种原因 StackOverflow 不允许我发布图片。访问以下链接以更深入地了解该问题: https ://github.com/tensorflow/tensorflow/issues/49725
预期行为
我在上一个单元格中设置的全局策略是mixed_float16
. 运行时问题正常,tensorflow 2.4.1
因此错误与tensorflow 2.5.0
您可以使用以下笔记本重现相同的错误: https ://colab.research.google.com/drive/1TfNZSIJ_I7IZI35RsGFnTdj-6beMHV2_?usp=sharing
deep-learning - Pytorch混合精度学习,torch.cuda.amp运行比正常慢
我试图从属性中resnet18
存在的正常模型推断结果。torchvision.models
该模型仅在FP32上进行了简单的训练,没有任何混合精度学习。但是,我想在推理时获得更快的结果,所以我torch.cuda.amp.autocast()
只在运行测试推理用例时启用了函数。
下面给出了相同的代码 -
没有amp
-
与amp
-
显然,autocast()
启用的代码需要双倍的时间。甚至,对于较大的模型,如resnet50
,时间变化也大致相同。
有人可以帮我解决这个问题吗?我在Google Colab上运行这个例子,下面是 GPU 的规格
python - 如何在 TensorFlow 中使用自动混合精度?
我无法将自动混合精度与 TensorFlow 2.3.2(在 Windows 10 上)一起使用。
我的系统环境中有一个TF_ENABLE_AUTO_MIXED_PRECISION
变量设置为 1。我已经使用显式 Python 代码启用了内存增长。
我只是在做模型推理,而不是训练。我没有打电话model.compile
。
我在 TensorFlow 日志中没有看到任何关于检测或启用自动混合精度的信息,并且内存要求与没有设置环境变量时一样高。7GB 很多,如果 TF 使用 float16 而不是 float32,我希望会看到不同。
除了设置环境变量之外,我还应该做些什么吗?我就是不知道出了什么问题。我只想让 TensorFlow 自动、透明地重写我的图表,并在内部使用 float16 进行计算。
tensorflow2 - 混合精度并没有提高性能
我正在尝试使用混合精度来提高我的训练和推理性能,但我注意到它似乎并没有增加,实际上只是稍微降低了我的性能。我开始只是从Tensorflow网站上复制教程,即使这样似乎也没有任何变化。为了测试性能,我简单地计算了运行 fit 函数所需的时间。我正在使用 GeForce RTX 2080 Ti 和 tf 2.4.2。任何建议将不胜感激!
python - 在 cpus 上尝试 pytorch 自动混合精度时出错
我在 cpu 上试用 pytorch。
我想用混合精度在 cpus 上训练一个模型。由于 pytorch 默认混合精度适用于 GPU,为了在 CPU 上使用混合精度,我尝试使用 ipex(https://github.com/intel/intel-extension-for-pytorch#automatically-mix-precision)最初我正在尝试使用 torch-ipex 1.0.1 和 pytorch 1.5.0 (py3.7_cpu_0)。
对于下面的片段
我收到了错误
AttributeError:模块“ipex”没有属性“enable_auto_mixed_precision”
然后我可以发现在 torch-ipex 1.0.1 中不存在 enable_auto_mixed_precision 属性,所以我使用以下命令将 torch-ipex 升级到 1.9.0
现在我在尝试导入 ipex( import intel_pytorch_extension as ipex
)时遇到以下错误
导入错误:/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/lib/libtorch_ipex.so:未定义符号:_ZNK3c104Type14isSubtypeOfExtERKSt10shared_ptrIS0_EPSo