我遇到有趣而奇怪的问题。
当我使用 GPU 启动 docker 容器时,它工作正常,并且我看到 docker 中的所有 GPU。然而,几个小时或几天后,我无法在docker中使用GPU。
当我nvidia-smi
在 docker 机器上做的时候。我看到这条消息
“无法初始化 NVML:未知错误”
但是,在主机中,我看到所有 GPU 都带有 nvidia-smi。另外,当我重新启动 docker 机器时。它完全工作正常并显示所有 GPU。
我的推理 Docker 机器应该一直打开,并根据服务器请求进行推理。有人有同样的问题或该问题的解决方案吗?
我正在尝试估计完全连接的模型所需的 VRAM,而无需在 pytorch 中构建/训练模型。
我非常接近这个公式:
# params = number of parameters
# 1 MiB = 1048576 bytes
estimate = params * 24 / 1048576
Run Code Online (Sandbox Code Playgroud)
这个示例模型有 384048000 个参数,但我已经在具有不同参数大小的不同模型上进行了测试。
结果非常准确。但是,该估计仅考虑 pytorch 会话 VRAM,而不考虑驱动程序/cuda 缓冲区 VRAM 量。以下是估计值(使用公式)与经验结果(在构建/训练模型后使用 nvidia-smi)
ESTIMATE BEFORE EMPIRICAL TEST:
VRAM estimate = 8790.1611328125MiB
EMPIRICAL RESULT AFTER BUILDING MODEL:
GPU RAM for pytorch session only (cutorch.max_memory_reserved(0)/1048576): 8466.0MiB
GPU RAM including extra driver buffer from nvidia-smi: 9719MiB
Run Code Online (Sandbox Code Playgroud)
关于如何估计 nvidia-smi 输出中显示的额外 VRAM 有什么想法吗?
[TL;DR]首先,等待几分钟并检查 Nvidia 驱动程序是否开始正常工作。如果没有,请停止并重新启动 VM 实例。
我创建了一个带有 A100 GPU 的深度学习虚拟机(Google 点击部署)。停止并启动实例后,当我运行时nvidia-smi
,我收到以下错误消息:
NVIDIA-SMI 失败,因为它无法与 NVIDIA 驱动程序通信。确保已安装并运行最新的 NVIDIA 驱动程序。
但如果我输入which nvidia-smi
,我得到
/usr/bin/nvidia-smi
好像驱动有但是不能用。有人可以建议如何在停止和启动深度学习虚拟机后启用 NVIDIA 驱动程序吗?我第一次创建并打开实例时,会自动安装驱动程序。
系统信息是(使用uname -m && cat /etc/*release
):
x86_64
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian .org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
我尝试了GCP 的安装脚本。第一次运行
curl https://raw.githubusercontent.com/GoogleCloudPlatform/compute-gpu-installation/main/linux/install_gpu_driver.py --output install_gpu_driver.py
Run Code Online (Sandbox Code Playgroud)
然后运行
sudo python3 install_gpu_driver.py
Run Code Online (Sandbox Code Playgroud)
它给出以下消息:
执行:which nvidia-smi
/usr/bin/nvidia-smi
已经安装。
我有一个在不同 GPU 上运行的进程的 PID 列表。我想根据每个进程的 PID 获取其使用的 GPU 内存。nvidia-smi
产生我想要的信息;但是,我不知道如何 grep 它,因为输出很复杂。我已经在寻找如何做到这一点,但我还没有找到任何直接的答案。