通常情况下,在安装了CUDA的环境中,会安装单一版本,是自己项目用的最多的版本,比如我的项目里用的多的是11.7版本
但是在体验幻方DeepSeek-VL大模型的时候,不能使用11.7版本,项目里使用的torch版本需要2.2以上,但是跟CUDA11.7 相匹配的是2.0.1版本,如果升级torch版本就会提醒CUDA版本太低,这时候如果不想升级宿主机上的CUDA版本,可以使用nvidia-docker来解决这个问题。
举例如下:
使用CUDA12.2版本的docker来运行,首先拉取镜像
docker pull nvcr.io/nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04
通过编写dockerfile,打造一个镜像之后,运行起来,挂载好本地的路径
docker run -itd --gpus=all -p PORT:PORT --env NVIDIA_DISABLE_REQUIRE=1 -v ~/.cache:/root/.cache -v /PATH:/home/workspace/PATH my_image:latest /bin/bash
这里面有一个很神奇的环境变量是 NVIDIA_DISABLE_REQUIRE
,他的作用是让nvidia-docker运行的时候忽略宿主机版本和容器内版本的校验,如果没有这个环境变量,运行的时候会提示:
docker: Error response from daemon: failed to create shim task: OCI runtime create failed:
runc create failed: unable to start container process: error during container init: error running hook #0:
error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: requirement error: unsatisfied condition: cuda>=12.2, please update your driver to a newer version, or use an earlier cuda container: unknown.
终于能成功运行起来,看下效果: 贴图是掘金的首页