speechbrain.utils.quirks
模块
全局更改和平台/GPU 特定的怪癖(quirks),即变通方法和更合理的默认值,有时是由于平台特定的问题。
- 作者
Sylvain de Langen 2024
总结
函数
在 CUDA 后端(可能包括 ROCm)上,为 CuDNN 和 matmul 运算符启用 TensorFloat32 支持。 |
|
根据平台应用怪癖(quirks)。 |
|
禁用 CuDNN 基准测试。 |
|
禁用 JIT 分析,以避免在高度动态形状上出现性能问题。 |
|
记录通过 |
参考
- 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.allow_tf32()[source]
在 CUDA 后端(可能包括 ROCm)上,为 CuDNN 和 matmul 运算符启用 TensorFloat32 支持。
这允许在较低精度下透明地执行某些操作,即使在使用 fp32 数学且未启用 AMP 时也是如此,否则将不会使用 Tensor Core。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>}
已应用的怪癖(quirks)列表。由
apply_quirks
填充。
- speechbrain.utils.quirks.applied_quirks = {'allow_tf32', 'disable_jit_profiling'}
排除的怪癖(quirks)列表。由
apply_quirks
从SB_DISABLE_QUIRKS
环境变量填充,该变量是一个逗号分隔的要禁用的怪癖列表。