PyTorch 1.12将默认的 fp32 数学更改为“最高精度”,并引入了torch.set_float32_matmul_ precision API,允许用户指定其中的精度medium
,high
并highest
用于 float32 矩阵乘法的内部精度。
从文档中,我读到选择较低的精度“可能会显着提高性能,并且在某些程序中,精度损失的影响可以忽略不计”。
1. 如何确定我的程序是否会从设置较低的精度中受益?这纯粹是经验主义吗?
同样,当使用PyTorch Lightning进行训练时,我收到以下警告:
You are using a CUDA device ('NVIDIA A100-SXM4-40GB') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')`
Run Code Online (Sandbox Code Playgroud)
这似乎回答了1。(即,当你的GPU有张量核心时,使用较低的精度),但没有建议使用两个较低精度中的哪一个。
2. 如何确定使用哪个较低精度(“高”或“中”)?这纯粹是经验主义吗?建议的方法是什么?