侧边栏壁纸
博主头像
智栈工场 博主等级

行动起来,活在当下

  • 累计撰写 14 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

让 Ollama 火力全开:Docker 容器如何调用全部 GPU 加速 AI 推理

智栈工场
2025-06-21 / 0 评论 / 0 点赞 / 22 阅读 / 0 字 / 正在检测是否收录...

引言

你是否在运行 Ollama 时发现 GPU 利用率不足?默认配置可能只调用单块 GPU,而现代 AI 任务往往需要更强的算力支持。本文将手把手教你如何通过 Docker Compose 配置,让 Ollama 容器识别并使用所有可用 GPU,显著提升模型推理效率。无论你是开发者还是运维人员,只需 5 分钟调整,即可解锁硬件潜能!


正文

1. 为什么需要显式配置 GPU?

Docker 默认不会自动将宿主机的 GPU 资源分配给容器,尤其是多卡环境下。常见的“卡脖子”问题包括:

  • 容器仅使用 1 块 GPU,其他显卡闲置

  • CUDA 驱动未正确加载,导致报错 No CUDA-capable device is detected

  • 显存分配不均,部分任务阻塞

通过调整 docker-compose.yml,我们可以精准控制 GPU 资源的调度。


2. 完整配置代码(支持多 GPU)

version: '3.8'  # 必须 ≥ 3.8 以支持 GPU 配置

services:
  ollama:
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all      # 关键!允许使用所有 GPU
              capabilities: [gpu]
    environment:
      - NVIDIA_VISIBLE_DEVICES=all     # 开放所有显卡访问权限
      - NVIDIA_DRIVER_CAPABILITIES=compute,utility  # 启用 CUDA 支持
    # 其他配置(网络、卷等)保持不变...

3. 关键配置解析

count: allNVIDIA_VISIBLE_DEVICES=all 的区别

  • count: all:告诉 Docker 允许容器使用所有物理 GPU 设备(硬件层权限)。

  • NVIDIA_VISIBLE_DEVICES=all:让 NVIDIA 驱动将 GPU 列表暴露给容器内的应用(软件层可见性)。

类比:就像给你的员工(容器)开了一间有所有门禁卡(count: all)的办公室,但还需要把每台电脑(GPU)的密码(NVIDIA_VISIBLE_DEVICES)告诉他。

② 为什么需要 capabilities: [gpu]

它声明容器需要 GPU 的计算能力,而非仅图形渲染(如游戏或视频处理)。


4. 验证 GPU 是否生效

按步骤检查:

  1. 启动容器

    docker-compose up -d
  2. 进入容器执行命令

    docker exec -it ollama nvidia-smi

    预期结果:输出与宿主机 nvidia-smi 相同的 GPU 列表。

  3. 测试 Ollama 模型加载

    ollama run llama2

    观察任务管理器,确认所有 GPU 的显存和算力被占用。


5. 常见问题排查

Q1:报错 Failed to initialize NVML: Unknown Error

  • 原因:NVIDIA 驱动未正确安装或 Docker 无权限。

  • 解决:

    sudo apt-get install nvidia-container-toolkit
    sudo systemctl restart docker

Q2:只想用特定 GPU(如仅卡 0 和卡 2)

修改环境变量:

environment:
  - NVIDIA_VISIBLE_DEVICES=0,2  # 仅使用 GPU 0 和 2

结语

通过本文的配置,你的 Ollama 容器现在可以像“霸总”一样调用所有 GPU 资源了!无论是训练大模型还是并行推理,都能最大化硬件利用率。如果你遇到其他 Docker 或 GPU 相关的问题,欢迎在评论区留言讨论。

下一步尝试

  • 结合 Kubernetes 管理多节点 GPU 资源

  • 监控 GPU 使用率,优化显存分配

🚀 记住:算力就是生产力,别让你的显卡偷懒!

0

评论区