speechbrain.utils.quirks 模块

全局变化和平台/GPU特定的怪癖,即变通方法和更合理的默认值,有时是由于平台特定的问题。

Author:
  • Sylvain de Langen 2024

摘要

函数:

allow_tf32

在CUDA后端(可能包括ROCm),启用CuDNN和矩阵乘法运算符的TensorFloat32支持。

apply_quirks

根据平台应用特定的调整。

disable_cudnn_benchmarking

禁用CuDNN基准测试。

disable_jit_profiling

禁用JIT分析以避免在高度动态的形状上出现性能问题。

log_applied_quirks

记录由apply_quirks应用的所有quirks。

参考

speechbrain.utils.quirks.disable_cudnn_benchmarking()[source]

禁用CuDNN基准测试。在默认情况下已经关闭的平台上无操作。

基准测试,当启用时,理论上通过自动比较某些操作的不同内核来提高卷积性能。

然而,基准测试必须为每个独特的输入形状重新运行,这使得它不适合高度动态的形状。 由于SpeechBrain确实倾向于使用非常多样化的形状而不尝试填充差异,保持基准测试开启可能会严重降低训练性能。

此函数禁用它,因为我们认为不进行基准测试是一个更明智的默认设置,以避免当前出现性能问题。

截至 PyTorch 2.3.0,CUDA GPU 的默认值为 False,但 HIP GPU 的默认值为 True

HIP 的等效于 CuDNN 的是 MIOpen,但它通过相同的 PyTorch API 进行控制。

speechbrain.utils.quirks.disable_jit_profiling()[source]

禁用JIT分析以避免在高度动态的形状上出现性能问题。

speechbrain.utils.quirks.allow_tf32()[source]

在CUDA后端(可能包括ROCm),启用TensorFloat32支持用于CuDNN和矩阵乘法运算符。

这允许在较低精度下透明地执行某些操作,即使在不使用AMP的情况下进行fp32数学运算时,否则张量核心将不会被使用。TF32支持累积到fp32,因此溢出的担忧有所缓解。

在NVIDIA GPU上,自Ampere架构(例如A100)起,此功能可用。

详情请参阅PyTorch文档

speechbrain.utils.quirks.KNOWN_QUIRKS = {'allow_tf32': <function allow_tf32>, 'disable_cudnn_benchmarking': <function disable_cudnn_benchmarking>, 'disable_jit_profiling': <function disable_jit_profiling>}

应用的怪癖列表。由apply_quirks填充。

speechbrain.utils.quirks.applied_quirks = {'allow_tf32', 'disable_jit_profiling'}

排除的怪癖列表。由apply_quirksSB_DISABLE_QUIRKS环境变量填充,该变量是一个逗号分隔的要禁用的怪癖列表。

speechbrain.utils.quirks.apply_quirks()[source]

根据平台应用特殊处理。同时填充 applied_quirks

speechbrain.utils.quirks.log_applied_quirks()[source]

记录由apply_quirks应用的所有特殊处理。