pytorch无法使用的解决方法

GPU环境:两张A30

今天在安装完GPU驱动和cuda后,发现在使用torch的时候报错了。报错信息如下:

In [1]: import torch 
In [2]: torch.cuda.is_available() 
site-packages/torch/cuda/__init__.py:107: UserWarning: CUDA initialization: CUDA driver initialization failed, you might not have a CUDA gpu. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:109.)   return torch._C._cuda_getDeviceCount() > 0 Out
[2]: False

查看驱动信息

nvidia-smi

看着是没有任何问题的,实际是开着MIG,没有配置MIG,所以无法使用。

MIG是什么?

多实例 GPU (MIG) 扩展了每个 NVIDIA H100A100 及 A30 Tensor Core GPU 的性能和价值。MIG 可将 GPU 划分为多达七个实例,每个实例均完全独立于各自的高带宽显存、缓存和计算核心。如此一来,管理员便能支持所有大小的工作负载,且服务质量 (QoS) 稳定可靠,让每位用户都能享用加速计算资源。

技术原理:

若不使用 MIG,则同一 GPU 上运行的不同作业(例如不同的 AI 推理请求)会争用相同的资源。显存带宽更大的作业会占用其他作业的资源,导致多项作业无法达成延迟目标。借助 MIG,作业可同时在不同的实例上运行,每个实例都有专用的计算、显存和显存带宽资源,从而实现可预测的性能,同时符合服务质量 (QoS) 并尽可能提升 GPU 利用率。

参考官方信息:https://www.nvidia.cn/technologies/multi-instance-gpu/

所以需要使用如下命令进行配置

sudo nvidia-smi mig -cgi 0 -C

再次查看

nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.60.13    Driver Version: 525.60.13    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA A100 80G...  Off  | 00000000:21:00.0 Off |                   On |
| N/A   38C    P0    48W / 300W |      3MiB / 81920MiB |     N/A      Default |
|                               |                      |              Enabled |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| MIG devices:                                                                |
+------------------+----------------------+-----------+-----------------------+
| GPU  GI  CI  MIG |         Memory-Usage |        Vol|         Shared        |
|      ID  ID  Dev |           BAR1-Usage | SM     Unc| CE  ENC  DEC  OFA  JPG|
|                  |                      |        ECC|                       |
|==================+======================+===========+=======================|
|  0    0   0   0  |      3MiB / 81085MiB | 98      0 |  7   0    5    1    1 |
|                  |      3MiB / 13107... |           |                       |
+------------------+----------------------+-----------+-----------------------+

再次导入

In [1]: import torch
In [2]: torch.cuda.is_available()
Out[2]: True

参考资料:

关于MIG的使用说明参考:https://roychou121.github.io/2020/10/29/nvidia-A100-MIG/

关于NVIDIA对MIG的说明请参考:https://www.nvidia.cn/technologies/multi-instance-gpu/

关于pytorch的用法请参考:https://pytorch123.com/

发表评论

后才能评论