容器化部署ollama环境变量问题
容器化部署ollama环境变量问题
你的 GPU 是 GTX 1050 Ti,而 Ollama 依赖 CUDA 计算能力至少 7.0,但 GTX 1050 Ti 只有 6.1,这可能是 Ollama 不支持的原因。
你可以运行:
如果输出 < 7.0,说明你的 GPU 不支持 Ollama 的 CUDA 版本,你可能需要使用 CPU 推理,或者换一张更高计算能力的 GPU(如 RTX 20 系列及以上)。
环境变量解释:
- CUDA_VISIBLE_DEVICES: 0 # 指定使用 GPU 0
 - OLLAMA_USE_CUDA: true # ollama开启GPU
 - OLLAMA_USE_GPU: true # ollama开启GPU
 
这些环境变量的详细解释如下(GPT4.0回答):
1. KEEP_GPUS_TIMEOUT: 40
- 作用:保持 GPU 资源分配的超时时间,单位通常是 秒。
 - 影响:如果 Ollama 在 40 秒内没有使用 GPU,可能会释放 GPU 资源(取决于实现)。
 - 适用场景:避免 GPU 资源长期占用而不释放,有助于提高资源利用率。
 
2. TZ: Asia/Shanghai
- 作用:设置 容器内部的时区 为 
Asia/Shanghai(北京时间)。 - 影响:影响日志、任务调度等依赖系统时间的功能。
 - 适用场景:如果不设置,容器可能默认使用 UTC 时间,导致日志时间与实际不符。
 
3. OLLAMA_ORIGINS: "*"
- 作用:配置 CORS 允许的来源,
*表示允许所有来源访问 Ollama API。 - 影响:
- 允许任何客户端(前端网页、应用等)访问 Ollama API。
 - 可能存在安全风险,建议限制特定域名,如:
1
OLLAMA_ORIGINS: "http://example.com,https://example.com"
 
 - 适用场景:
- 允许 Web 应用(如 
Vue或React)调用 Ollama。 - 开发和测试环境,方便跨域请求。
 
 - 允许 Web 应用(如 
 
4. OLLAMA_HOST: "0.0.0.0"
- 作用:设置 Ollama 监听的 网络接口,
0.0.0.0表示监听所有 IP 地址。 - 影响:
- 允许外部访问 Ollama API(如 
http://<服务器IP>:11434)。 - 如果只想让本地访问,建议改成:
1
OLLAMA_HOST: "127.0.0.1"
 
 - 允许外部访问 Ollama API(如 
 - 适用场景:
- 部署在远程服务器,允许局域网或公网访问 Ollama。
 - 如果是本地开发,建议限制为 
127.0.0.1。 
 
5. CUDA_VISIBLE_DEVICES: 0
- 作用:指定 可见的 GPU,
0表示使用 第 1 块 GPU。 - 影响:
- 如果服务器有多块 GPU:
CUDA_VISIBLE_DEVICES: 1→ 只使用 第 2 块 GPU。CUDA_VISIBLE_DEVICES: 0,1→ 使用 第 1 和 2 块 GPU。
 - 如果设置为 
-1,则 禁用 GPU,强制使用 CPU。 
 - 如果服务器有多块 GPU:
 - 适用场景:
- 多 GPU 服务器,指定某块 GPU 运行 Ollama。
 - 资源控制,避免 Ollama 占用所有 GPU。
 
 
6. OLLAMA_USE_CUDA: true
- 作用:强制启用 CUDA 加速,让 Ollama 使用 GPU 进行推理。
 - 影响:
true:如果检测到 NVIDIA GPU,Ollama 运行在 GPU 上(性能更快)。false:即使有 GPU 也 强制使用 CPU(可能用于调试)。
 - 适用场景:
- 需要 GPU 加速的模型推理。
 - 服务器上有 GPU,但默认未启用,需要手动指定。
 
 
7、NVIDIA_DRIVER_CAPABILITIES=compute,utility
NVIDIA_DRIVER_CAPABILITIES=compute,utility 是一个环境变量,用于控制 Docker 容器内可用的 NVIDIA 驱动功能。
在 Docker 运行带 GPU 加速的容器时,这个变量确保容器可以使用必要的 GPU 计算能力。它的作用如下:
- **
compute**:启用 GPU 计算功能(用于 CUDA、TensorFlow、PyTorch 等)。 - **
utility**:启用 NVIDIA 实用程序(如nvidia-smi)。 
总结
| 变量 | 作用 | 影响 | 
|---|---|---|
KEEP_GPUS_TIMEOUT: 40 | GPU 资源保持时间 | 40 秒内无任务可能释放 GPU | 
TZ: Asia/Shanghai | 设置时区 | 确保容器日志时间正确 | 
OLLAMA_ORIGINS: "*" | 允许所有来源访问 API | 跨域访问,可能有安全风险 | 
OLLAMA_HOST: "0.0.0.0" | 监听所有 IP | 允许外部访问 Ollama | 
CUDA_VISIBLE_DEVICES: 0 | 选择 GPU | 0代表使用第 1 块 GPU | 
OLLAMA_USE_CUDA: true | 启用 GPU 加速 | true= 使用 CUDA,false= 仅 CPU | 
如果你在 云服务器 上运行 Ollama,建议:
- 限制 API 访问,避免被滥用:
1
OLLAMA_ORIGINS: "http://yourdomain.com"
 - 只监听本地,如果不需要外部访问:
1
OLLAMA_HOST: "127.0.0.1"
 - 指定 GPU,避免影响其他任务:
1
CUDA_VISIBLE_DEVICES: 0
 
你是想排查 Ollama 不使用 GPU 的问题吗?如果是,nvidia-smi 显示 无进程,说明 Ollama 仍然在 CPU 上跑,可能要进一步检查 Ollama 运行日志或 docker-compose 配置。🚀
docker-compose.yml文件如下
1  | version: '3'  | 
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
 Comment




