环境
上一篇把双 P40 直通到了虚拟机(aiserver),这篇在虚拟机里部署 Ollama + OpenWebUI,让两张显卡都参与大模型推理。
- 系统:Ubuntu 26.04
- GPU:Tesla P40 × 2(各 24GB,直通)
- 运行时:Docker
- 服务:Ollama(模型推理)+ OpenWebUI(前端界面)
1. 开启 Docker GPU 支持
Docker 默认看不到 GPU,需要装 NVIDIA Container Toolkit:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpgcurl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listapt update && apt install -y nvidia-container-toolkit配置 Docker runtime:
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker验证容器里能看到 GPU:
docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi能列出两张 P40 就说明通了。
2. 部署 Ollama
用 Docker 跑 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 端口
3. 部署 OpenWebUI
OpenWebUI 连 Ollama 提供网页界面:
docker run -d -p 18480:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main4. 验证双卡识别
启动后在 OpenWebUI 的后台设置里,应该能看到 GPU 列表里出现 gpu0 和 gpu1 两张 P40。
也可以在宿主机直接看显存占用:
nvidia-smi踩坑记录
坑 1:没挂 GPU 时 CPU 直接跑满
最开始 Docker 容器没加 --gpus all,Ollama 直接用 CPU 跑模型,CPU 占用飙到 700%+(多核满载),推理慢得像蜗牛。nvidia-smi 一看显卡利用率 0%,才发现 GPU 根本没被容器识别。加上 --gpus all 后立刻好转。
坑 2:Ollama 常驻显存
Ollama 加载模型后会常驻显存。实测 GPU0 被占了约 10GB(常驻模型缓存),导致 GPU0 剩余显存只有 14.7GB,而 GPU1 空闲有 25.4GB。后面跑视频生成(ComfyUI)前要先把 Ollama 停掉,否则显存不够:
docker stop ollama坑 3:32B 模型挂不上双卡
试 deepseek-r1:32b 和 qwen3:32b 时,发现模型只会在单卡上加载,不会自动拆分到两张卡。双卡协同需要手动配置 tensor split,P40 的 Pascal 架构对张量并行优化一般,实际体验不如预期。
坑 4:qwen3-vl 爆显存
跑 qwen3-vl:32b 视觉模型时,上下文稍微拉长就爆显存,监控显示显存占用到 29GB/30GB(96%),直接 OOM。后续要调小 num_ctx 参数。
小结
Ollama + OpenWebUI 跑通后,日常对话和代码问答都能本地完成。双卡识别没问题,但大模型的双卡拆分在 P40 上收益有限。下一步上 ComfyUI 做视频生成。