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 H100、A100 及 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/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。