如何在 Docker Compose 中利用 Nvidia GPU 加速运行 Ollama

大型语言模型(LLM)正在各个领域掀起革命,推动机器能力的边界。然而,它们的复杂性需要不断增加的处理能力。在这里,像 Nvidia GPU 这样的加速器可以发挥重要作用,为训练和推理任务提供显著的性能提升。

在这篇博客文章中,我们将指导您如何使用 Docker Compose 运行 Ollama(一种流行的自托管 LLM 服务器)并利用 Nvidia GPU 的强大性能。我们将深入探讨配置细节,确保您能够最大限度地发挥 LLM 的潜力。

先决条件:

Docker 和 Docker Compose:确保您的系统上已安装并运行 Docker 和 Docker Compose。您可以在 Docker 官方网站找到安装说明:https://docs.docker.com/engine/install/
Nvidia GPU:您的系统必须安装并配置好 Nvidia GPU。通过在终端中运行 nvidia-smi 来验证。如果该命令不起作用或返回错误,请参阅 Nvidia 的文档进行配置指导:https://docs.nvidia.com/

理解配置:

现在,让我们探讨一下 docker-compose.yml 文件的关键组件,该文件可以使用 GPU 加速运行 Ollama:

Docker Compose 版本:
version 属性指定了使用的 Docker Compose 版本。虽然有些人可能会提到 3.9,但推荐使用官方文档中提到的版本,目前是 3.8。这样可以确保兼容性和稳定性。

Ollama 服务定义:
services 部分定义了 ollama 服务,它封装了 Ollama 容器。以下是其重要属性的分解:

image:指定 Ollama 的 Docker 镜像。默认是 ollama/ollama,但如果需要,可以使用特定版本(请参阅 Ollama 的文档以获取可用版本)。
deploy:该部分配置了 Ollama 容器的资源保留,这是利用 GPU 的关键。
resources:定义容器的资源需求。
reservations:该嵌套属性允许您为容器保留特定设备。
devices:定义设备保留。在此嵌套配置中,我们指定:
driver:将设备驱动程序设置为 nvidia,表示我们请求使用 Nvidia GPU。
capabilities:列出 Ollama 请求的功能。在本例中,我们指定 "gpu" 以表示我们希望利用 GPU 进行处理。
count:该值确定要为 Ollama 保留多少个 Nvidia GPU。使用 all 来利用所有可用的 GPU,或者如果有多个 GPU 并希望为 Ollama 专门分配一部分,可以指定一个具体的数量。
持久化卷定义:
volumes 部分定义了一个名为 ollama 的持久化卷。此卷确保 Ollama 生成的任何数据(如训练模型或配置)在容器重启后仍然存在。它被挂载在 Ollama 容器内的 /root/.ollama 目录。

整合配置

以下是完整的 docker-compose.yml 配置,用于使用 Nvidia GPU 加速运行 Ollama:

services:
  ollama:
    container_name: ollama
    image: ollama/ollama  # 如果需要,替换为特定的 Ollama 版本
    deploy:
      resources:
        reservations:
          devices:
          - driver: nvidia
            capabilities: ["gpu"]
            count: all  # 根据需要调整 GPU 的数量
    volumes:
      - ollama:/root/.ollama
    restart: always

volumes:
  ollama:

使用 GPU 加速运行 Ollama:
准备好配置文件后,将其保存为 docker-compose.yml 到您想要的目录中。现在,您可以运行以下命令以支持 GPU 的方式启动 Ollama:
docker-compose up -d
-d 标志确保容器在后台运行。

验证:
运行命令后,您可以检查 Ollama 的日志以查看是否正在使用 Nvidia GPU。查找日志中类似 "Nvidia GPU detected via cudart" 的消息。这些确认信息表明 Ollama 成功集成了 GPU。

其他注意事项:
请参阅 Ollama 的官方文档,以获取根据您的具体使用情况进行的任何额外配置或资源需求。
调整 devices 部分中的 count 值,以匹配您想要为 Ollama 专门分配的 Nvidia GPU 数量。
此示例使用 Nvidia 并不直接适用于 ROCm。它旨在说明 Compose 文件中的资源保留概念(目前不支持 ROCm)。

原文地址:
https://dev.to/ajeetraina/running-ollama-with-docker-compose-and-gpus-lkn