Ollama私有云GPU服务器搭建怎么做?GPU直通6步

2026-08-27 60 0

Ollama私有云GPU服务器搭建的完整路径就是 6 步:装 NVIDIA Container Toolkit、用 docker run 跑通 GPU 直通、写 Compose 固化配置、挂持久化卷保存权重、按卡做隔离、开 OpenAI 兼容接口——全程不需要分布式集群。2026 年 8 月的私有化部署实践已经把这条路径规范成了标准动作,单机单卡或多卡都能覆盖。

Ollama私有云GPU服务器搭建前先确认三件事:驱动、卡数、模型规模

先花两分钟确认三件事:

  • nvidia-smi 是否正常:能列出显卡、驱动和显存。
  • 有几张卡nvidia-smi -L 看卡 ID,决定 count: all 还是 device_ids
  • 最大模型规模:7B 还是 70B 量化版,决定显存需求和 Compose 写法。

第一步:装 NVIDIA Container Toolkit

容器要使用 GPU,必须有 NVIDIA Container Toolkit 做桥接。只装驱动没装 toolkit,或装完没重启 Docker,docker run --gpus all 会报:

could not select device driver "" with capabilities: [[gpu]]

排查顺序:确认 toolkit 已安装(dpkg -l | grep nvidia-container-toolkit),重启 Docker(sudo systemctl restart docker),验证(docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi)。

第二步:用 docker run 起最小可用服务

先跑一次性命令验证 GPU 直通:

docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama
  • --gpus all:让容器访问所有 GPU。
  • -v ollama:/root/.ollama:持久化模型权重。
  • -p 11434:11434:暴露默认端口。

进容器执行 nvidia-smi 确认能列出显卡,再拉模型。

第三步:写 Docker Compose 固化配置

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    volumes:
      - ollama:/root/.ollama
    ports:
      - "11434:11434"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

volumes:
  ollama:
  • deploy.resources.reservations.devices:声明 GPU 资源预留。
  • count: all:暴露所有 GPU。
  • restart: unless-stopped:崩溃后自动拉起。

要指定某张卡,用 device_ids: ["0", "1"],但容器内编号从 0 重新映射。

第四步:挂持久化卷保存模型权重

Ollama 模型默认存放在容器内的 /root/.ollama。不挂卷,容器重建后权重丢失。

方案写法优点缺点
命名卷-v ollama:/root/.ollamaDocker 管理,迁移方便备份需额外处理
宿主目录绑定-v /data/ollama:/root/.ollama直接可见文件权限需手动设置

首次部署可先按量租用实例跑通再决定长期保留。

第五步:多卡隔离——用 NVIDIA_VISIBLE_DEVICES 分卡

多卡机器两种场景:

  • 场景 A:跑两个服务实例,各占一张卡。
  • 场景 B:保留部分卡给其他任务。
方式作用层级示例适合场景
环境变量容器运行时-e NVIDIA_VISIBLE_DEVICES=1快速临时指定
Compose device_ids编排声明device_ids: ["1"]长期配置

容器内卡号从 0 重新映射,脚本别写错。

第六步:开放 OpenAI 兼容接口并保护访问

Ollama 原生提供 OpenAI 兼容接口。容器部署时由 -p 端口映射决定可达性,用 curl http://服务器IP:11434/v1/models 实测。但默认不带鉴权,三种安全暴露方式:

  1. 反向代理加鉴权:Nginx 或 Caddy 做 TLS 和 API-KEY。
  2. 安全组白名单:只放行特定 IP。
  3. 内网或隧道:VPN 或内网穿透。

显存调度:多模型常驻时怎么分配

多模型常驻时显存被权重、KV Cache 和并发增量占用,分账算法可参考GPU显存怎么选。同时加载多个模型显存不够,多数是空闲驻留时间太长。

以下为按量化精度换算的估算区间,实际随上下文长度与并发浮动

显存档位可常驻组合示例
48GB2-3 个 7B/14B 量化,或 1 个 32B 量化
80GB1 个 70B 量化独占,或 4-5 个 7B

显存不足时用 OLLAMA_KEEP_ALIVE=0 让模型用完立即释放。

卡型对照:7B/14B/32B/70B 量化版显存台阶

根据 2026 年 8 月云算力数据,L40S 为 48GB、时租约 $1.50/GPU-小时;A100 80GB 时租约 $1.77/GPU-小时。显存估算(按量化精度换算,实际浮动):

模型规模量化精度显存估算
7BQ4_K_M约 4-6 GB
14BQ4_K_M约 8-12 GB
32BQ4_K_M约 18-24 GB
70BQ4_K_M约 35-45 GB

Batch ≥ 8 的 FP8 下 L40S 成本更优;超长上下文和低 Batch 时 A100 延迟更低。建议先在支持按量、多型号 GPU 与预制模板的平台(如 NexGPU)上跑通,再定长期规格。参考 L40S 租用Qwen部署要多少显存

搭建检查清单与常见踩坑

  • [ ] NVIDIA Container Toolkit 已安装,Docker 已重启
  • [ ] docker run --gpus all 后容器内 nvidia-smi 可见卡
  • [ ] 权重卷已挂载(/root/.ollama 持久化)
  • [ ] 卡级隔离已配置
  • [ ] 对外端口已加鉴权
问题一句话处置
could not select device driver 报错重装 toolkit 或重启 docker
静默跑 CPU拉模型时观察宿主机显存
重启后重新拉模型检查卷是否挂载到 /root/.ollama
多容器抢同一张卡 OOM用环境变量或 device_ids 隔离,参考 GPU Out of Memory显存溢出解决方法

常见问题

ollama容器怎么指定用哪一张显卡?

用环境变量 NVIDIA_VISIBLE_DEVICES,如 -e NVIDIA_VISIBLE_DEVICES=1,或在 Compose 写 device_ids: ["1"]。容器内编号从 0 开始。

docker run ollama报could not select device driver nvidia怎么办?

检查 toolkit 是否安装,重启 Docker;还报错就执行 nvidia-smi 确认驱动。

ollama模型文件在容器里存哪个目录?

默认在 /root/.ollama,用 -v ollama:/root/.ollama 或绑定宿主目录持久化。

ollama同时加载多个模型显存不够怎么办?

OLLAMA_KEEP_ALIVE=0 释放显存,或换更小量化、减少并发。

ollama跑70b量化模型需要多大显存?

估算约 35-45 GB(Q4_K_M),实际随上下文和并发浮动。建议先按量租用 48GB 或 80GB 实测。

先用 NexGPU 按量实例跑通六步,量出真实显存占用,再定长期规格。

相关文章

云 GPU 镜像模板怎么选:按任务定模板,避开编译坑和存储费陷阱
Llama 模型部署实操:选卡、vLLM 开服、多卡切分与停机费用边界
H100和H200哪个划算?看显存带宽与时租溢价
A100租用做大模型推理的显存落位与成本折算口径
大模型推理GPU怎么选?显存带宽与精度档位
DeepSeek-R1私有化部署GPU配置怎么选?4档卡型显存对照

评论(0)

暂无评论

发布评论