Docker部署AI模型GPU加速实战教程

为什么要在Docker中用GPU跑AI模型?


很多新手在部署AI模型时会被环境配置卡住——Python版本、CUDA、cuDNN、驱动版本,任意一个不匹配就会报错。Docker + GPU加速的组合能让你把整个运行环境打包成一个镜像,无论换到哪台机器,只要装上Docker和NVIDIA驱动,一条命令就能启动模型推理。

下面我会从零开始,带你把一个AI模型跑在Docker容器里,并确认GPU已经被正确调用。


准备工作:检查你的硬件和驱动


在动手之前,先确认你的服务器满足三个条件:



  • 有一块NVIDIA显卡(型号不限,支持CUDA即可)

  • 已安装Linux系统(Ubuntu 20.04/22.04最省心)

  • 确保你能用sudo执行命令


第一步:安装NVIDIA驱动


如果你还没有驱动,运行以下命令自动安装推荐版本:


sudo ubuntu-drivers autoinstall
sudo reboot

重启后,用nvidia-smi查看驱动信息,出现当前驱动版本和显卡列表就说明驱动正常。

如果命令找不到,先手动安装:sudo apt install nvidia-driver-535(535是常见稳定版,具体版本根据你的显卡选择)。


第二步:安装Docker和NVIDIA Container Toolkit


Docker官方安装脚本:


curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker # 让当前用户能免sudo执行docker

然后安装NVIDIA容器工具包,让Docker能读取到宿主的GPU:


distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update && sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

完成后,

执行docker run --rm --gpus all nvidia/cuda:

11.8-base nvidia-smi


如果能成功输出nvidia-smi信息,

就说明Docker已经能调用GPU了。


部署AI模型:拉取镜像并启动容器


这里我用一个经典的PyTorch推理模型举例,你可以替换成你自己的模型文件。


1. 选择基础镜像

推荐使用PyTorch官方提供的GPU镜像,比如:


docker pull pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime

这个镜像已经包含了CUDA 11.6和cuDNN 8,适合大多数PyTorch模型。


2. 编写Dockerfile(如果有定制需求)

如果模型依赖一些额外Python包,创建一个Dockerfile


FROM pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY model.pth inference.py ./ # 把你的模型文件和推理脚本放进来
CMD ["python", "inference.py"]

简单场景可以直接用现有镜像,不需要自己写Dockerfile。


3. 运行容器并挂载GPU

假设你的模型文件和推理脚本都在/home/user/my_model目录,执行:


docker run --rm --gpus all -v /home/user/my_model:/workspace pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime python /workspace/inference.py

关键参数说明:



  • --gpus all:让容器使用所有GPU,你也可以指定某个GPU(如--gpus 'device=0'

  • -v:将宿主目录挂载到容器内,方便修改代码和模型


验证GPU是否真正生效


模型跑完后,你肯定想知道GPU到底有没有被用上。

两种方法:


方法1:在容器内打印GPU信息

在你的inference.py中加入以下代码:


import torch
print("CUDA available:", torch.cuda.is_available())
print("GPU count:", torch.cuda.device_count())
print("Current device:", torch.cuda.get_device_name(0))

运行后如果输出CUDA available: True,就说明成功。


方法2:在宿主管看GPU占用

容器运行期间,打开另一个终端,执行watch -n 1 nvidia-smi。你会看到进程列表中出现了python进程,且显存和GPU利用率在跳动。如果显示的是No running processes found,那证明模型没用到GPU,需要检查代码中是否把模型和数据都放到了.cuda()上。


高频问题与避坑指南


Q1:--gpus参数报错“Unknown runtime specified nvidia”

→ 检查nvidia-container-toolkit是否安装并重启Docker:sudo systemctl restart docker。如果还不行,检查/etc/docker/daemon.json是否包含"runtimes": {"nvidia": {...}},没有则手动添加后重启。


Q2:容器启动后nvidia-smi显示“Failed to initialize NVML”

→ 常见原因是宿主驱动版本太旧或容器内CUDA版本不匹配。用nvidia-smi查看宿主驱动对应的最高CUDA版本,然后选择一个低于该版本的镜像。例如驱动535支持CUDA 12.2,你可以用pytorch/pytorch:2.0.1-cuda11.8-cudnn8(CUDA 11.8更低)。


Q3:镜像拉取速度极慢

→ 配置国内镜像加速器。编辑/etc/docker/daemon.json,加入:


{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

然后sudo systemctl restart docker再次拉取。


Q4:模型推理速度反而比CPU还慢

→ 检查代码中是否真的把张量和模型移到了GPU。常见错误:model.to('cuda')却忘记把输入数据也.cuda()。另外,如果模型很小,GPU初始化开销可能超过计算收益,这种情况属于正常现象。


总结


通过以上步骤,你已经能用一个干净的Docker容器跑AI模型,并且确认了GPU加速正常开启。

以后再迁移模型到其他服务器,只需要重复“装驱动+装Docker+拉镜像”三个动作,省去了大量环境折腾的时间。

如果你在操作中遇到本文没覆盖的报错,建议先检查nvidia-docker的官方文档,或者把错误信息贴到评论区一起讨论。

分享到:
上一篇
Linux服务器重启命令详解:零基础学会Linux服务器
下一篇
服务器技术变现运维接单:零基础靠服务器技术变现,运维
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意