Docker GPU加速本地大模型推理
为什么要用Docker做GPU加速推理?
本地跑大模型(比如 Llama、Qwen)时,CPU推理速度很慢,一个简单的对话可能要等几十秒。
Docker 可以帮你把模型、依赖和 GPU 驱动环境打包在一起,一键启动就能调用显卡计算,推理速度直接提升几十倍。
而且环境隔离,不会影响宿主机上的其他软件。
准备工作:确认你的环境支持GPU容器
在开始之前,先确认三样东西:
- NVIDIA 显卡:支持 CUDA 的显卡(GTX 1060 以上基本都可以),且驱动已安装。打开终端运行
nvidia-smi,如果能显示 GPU 信息和驱动版本,说明驱动正常。 - Docker:已安装并启动。运行
docker --version检查版本,推荐 20.10 以上。 - NVIDIA Container Toolkit:这是让 Docker 容器识别 GPU 的关键组件。大多数发行版可以通过包管理器安装,也可以参考官方文档。官网地址。
如果 nvidia-smi 报错,先去 NVIDIA 官网下载对应显卡驱动安装。
一步步配置Docker GPU加速环境
1. 安装 NVIDIA Container Toolkit
以 Ubuntu 为例,一条命令全搞定:
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
安装完成后验证一下:
docker run --rm --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi
如果能看到 GPU 状态输出,说明 Docker 已经能调用显卡了。
如果报错 could not select device driver“”,检查第二步是否重启 Docker,或参考下面的避坑部分。
2. 拉取并运行一个带 GPU 加速的大模型容器
新手推荐用 ollama,它对 GPU 支持成熟,安装简单。
直接运行:
docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
参数说明:
--gpus all:将全部 GPU 挂载给容器。-v ollama:/root/.ollama:模型存储持久化,重启不会丢失。-p 11434:11434:映射 API 端口。
容器启动后,拉取一个轻量模型测试:
docker exec -it ollama ollama run qwen2.5:0.5b
输入一句话,如果秒级回复,说明 GPU 加速生效。
新手常见踩坑与解决办法
踩坑 1:could not select device driver
原因:NVIDIA Container Toolkit 未正确安装或 Docker 未重启。
解决:先确认 nvidia-container-toolkit 已安装,然后 sudo systemctl restart docker。如果仍报错,检查 Docker 版本(过低需升级)。
踩坑 2:--gpus 参数无效
原因:Docker 版本低于 19.03,或未启用实验特性。
解决:升级 Docker 至最新稳定版。如果公司环境受限,可改用 --runtime=nvidia 旧参数,但建议直接升级。
踩坑 3:容器内 nvidia-smi 能运行,但运行大模型时显存不足
原因:本地显卡显存小,选了过大的模型(如 13B 参数)。
解决:先用 1B 以下小模型验证加速效果,确认无误后再按需选择模型。
跑一个真正的大模型测试加速效果
以目前主流的 Qwen2.5-7B 为例(需要至少 6GB 显存),在容器内下载并运行:
docker exec -it ollama ollama run qwen2.5:7b
输入一个长问题,观察回复速度。
通常 7B 模型在 3060 上大约每秒能生成 15-25 个 token,是纯 CPU 的 20 倍以上。
你也可以用 ollama list 查看已下载的模型,或通过 API 调用测试。
如果运行中报 CUDA out of memory,说明模型太大,请换小模型或减少上下文长度。
写在最后
通过 Docker 做 GPU 加速本地大模型推理,关键就三步:装好 NVIDIA 驱动 → 安装 Container Toolkit → 运行带 --gpus all 的容器。
遇到问题多检查驱动版本和 Docker 版本,优先用验证命令 nvidia-smi 定位。
如果你正在处理 Docker GPU 加速本地大模型推理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。