Ollama + Dify 双 L20 显卡操作手册

这是一份非常详细的操作手册,旨在指导您在搭载两块 NVIDIA L20 显卡的本地服务器上,从零开始安装最新的显卡驱动,并配置 Ollama 以充分利用双显卡资源,最后与 Dify 对接。

NVIDIA L20 是一款功能强大的数据中心级显卡,单卡拥有 48GB VRAM。两块 L20 意味着您拥有 96GB 的总显存,这足以在本地流畅运行像 Llama 3 70B 这样顶尖的开源大模型。


本地部署 Ollama + Dify 双 L20 显卡操作手册

本手册分为六个主要步骤:

  1. 系统准备与环境检查
  2. 安装最新的 NVIDIA 显卡驱动
  3. 安装 Ollama
  4. 配置 Ollama 使用双显卡
  5. 运行模型并验证双卡工作状态
  6. 与 Dify 集成

第一步:系统准备与环境检查

在开始之前,请确保您的服务器满足以下条件:

  • 操作系统:一个现代的 Linux 发行版,强烈推荐 Ubuntu 22.04 LTS(本教程以此为例)。
  • 拥有 sudo 或 root 权限。
  • 服务器已连接到互联网。

1.1 更新系统

首先,更新您的系统软件包列表和已安装的包:

sudo apt update && sudo apt upgrade -y

1.2 确认显卡被系统识别

在安装驱动之前,先确认操作系统已经从硬件层面识别到了两块 L20 显卡。

lspci | grep -i nvidia

您应该能看到类似下面两行输出,确认有两台 NVIDIA Corporation 的设备:

01:00.0 3D controller: NVIDIA Corporation AD102GL [L20]
02:00.0 3D controller: NVIDIA Corporation AD102GL [L20]

如果看不到,请检查显卡是否已正确安装在 PCIe 插槽上并接通了电源。


第二步:安装最新的 NVIDIA 显卡驱动

我们将使用 NVIDIA 官方推荐的 CUDA Toolkit 仓库进行安装,这是最稳定、最可靠的方法。它会自动处理依赖关系并安装匹配的驱动程序。

2.1 清理旧的驱动(可选但推荐)

如果系统上曾安装过其他版本的 NVIDIA 驱动,最好先彻底卸载,避免冲突。

sudo apt-get purge nvidia* -y
sudo apt autoremove -y

2.2 添加 NVIDIA CUDA 仓库

访问 NVIDIA CUDA Toolkit 官网下载页面:https://developer.nvidia.com/cuda-downloads

按照页面指引选择您的系统配置,例如:

  • Linux -> x86_64 -> Ubuntu -> 22.04 -> deb (local) 或 deb (network)

推荐使用 deb (network),因为它会保持更新。官网会生成一系列命令,请依次执行。以下是截至目前的示例命令:

# 下载仓库 pinning 文件
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600

# 下载并安装仓库 GPG 密钥
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update

注意:请务必从官网获取最新的命令,以上仅为示例。

2.3 安装 CUDA 驱动

现在,直接安装 CUDA 驱动包。这个包会自动安装最新、最稳定的驱动版本。

sudo apt-get install cuda-drivers -y

2.4 重启服务器

驱动安装完成后,必须重启服务器以加载新的内核模块。

sudo reboot

2.5 验证驱动安装

服务器重启后,打开终端,执行 NVIDIA 的系统管理命令:

nvidia-smi

如果安装成功,您将看到一个表格,清晰地列出了两块 NVIDIA L20 显卡的信息,包括驱动版本、CUDA 版本以及显存使用情况(初始应为 0 MiB)。

(这是一个示例图,您看到的应该是两块 L20)

看到这个界面,恭喜您,最关键的一步已经完成!


第三步:安装 Ollama

Ollama 官方提供了一键安装脚本,非常方便。

curl -fsSL https://ollama.com/install.sh | sh

安装脚本会自动下载 Ollama、创建 ollama 用户和组,并设置 systemd 服务。

安装完成后,Ollama 服务会自动启动。您可以检查其状态:

systemctl status ollama

您应该看到 active (running) 的状态。


第四步:配置 Ollama 使用双显卡

这是实现双卡协同工作的核心步骤。Ollama 通过 CUDA_VISIBLE_DEVICES 这个环境变量来决定使用哪些 GPU。我们需要修改 Ollama 的 systemd 服务文件,使其在启动时加载这个环境变量。

4.1 创建服务覆盖配置

使用 systemd 的 edit 命令来创建一个覆盖文件,这是修改服务配置的最佳实践,可以避免在 Ollama 升级时覆盖您的设置。

sudo systemctl edit ollama.service

这会打开一个空的文本编辑器。

4.2 添加环境变量

在打开的编辑器中,粘贴以下内容:

[Service]
Environment="CUDA_VISIBLE_DEVICES=0,1"
  • [Service]:告诉 systemd 我们要修改服务相关的配置。
  • Environment="CUDA_VISIBLE_DEVICES=0,1":这是关键。它告诉 Ollama(以及其他 CUDA 程序)只能看到并使用索引为 0 和 1 的 GPU。根据 nvidia-smi 的显示,这两块卡正是您的两块 L20。

保存文件并退出编辑器(在 nano 编辑器中,按 Ctrl+X,然后按 Y,最后按 Enter)。

4.3 重启 Ollama 服务

为了让新的配置生效,需要重新加载 systemd守护进程并重启 Ollama 服务。

sudo systemctl daemon-reload
sudo systemctl restart ollama

现在,Ollama 已经被配置为可以同时看到并使用您的两块 L20 显卡了。


第五步:运行模型并验证双卡工作状态

当请求运行一个足够大的模型时,Ollama 会自动将模型的不同层(layers)分配到不同的 GPU 上。

5.1 选择一个大模型

为了测试双卡负载,我们需要一个足够大的模型,使其无法完全放入单张 L20(48GB VRAM)。llama3:70b 的 Q4 量化版本大约需要 40GB+ 的显存,是完美的测试对象。

5.2 下载并运行模型

在终端中执行:

ollama run llama3:70b

首次运行时,Ollama 会下载模型文件(约 40GB),请耐心等待。下载完成后,模型会开始加载。

5.3 实时监控 GPU 使用情况

在模型加载和运行时,打开另一个终端窗口,执行以下命令来实时监控 GPU 状态:

watch -n 1 nvidia-smi

watch -n 1 会每秒刷新一次 nvidia-smi 的输出。

您应该能观察到以下现象,这证明双卡配置成功:

  1. 显存占用 (Memory-Usage):两块 L20 显卡的显存都被占用了。例如,您可能会看到 GPU 0 使用了 24GB,GPU 1 使用了 16GB。这表明模型层被成功地分割并加载到了两张卡上。
  2. GPU 利用率 (GPU-Util):当您与模型进行对话(推理)时,两块显卡的 GPU-Util 都会出现波动,说明它们都在参与计算。

(这是一个示例图,展示了两块 GPU 都有显存占用的情况)

看到两块卡的 Memory-Usage 都有显著增加,就意味着您已成功让 Ollama 同时使用两块 L20!


第六步:与 Dify 集成

Dify 通过 API 与 Ollama 通信。默认情况下,Ollama 只监听本地回环地址 127.0.0.1。如果您的 Dify 是通过 Docker 或在另一台机器上运行,需要让 Ollama 监听所有网络接口。

6.1 (可选) 配置 Ollama 监听公网 IP

如果 Dify 和 Ollama 不在同一台机器或同一个网络命名空间(如 Docker),请执行此步。

再次编辑 Ollama 服务文件:

sudo systemctl edit ollama.service

在 [Service] 部分,追加一个新的环境变量 OLLAMA_HOST。文件内容将变为:

[Service]
Environment="CUDA_VISIBLE_DEVICES=0,1"
Environment="OLLAMA_HOST=0.0.0.0"

保存并退出。然后再次重启 Ollama 服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama

安全提示:将服务暴露在 0.0.0.0 意味着局域网内的任何设备都可以访问它。请确保您的服务器有防火墙保护,只允许受信任的 IP(例如 Dify 服务器的 IP)访问 11434 端口。

6.2 在 Dify 中配置 Ollama

  1. 登录您的 Dify 平台。
  2. 进入 设置 -> 模型供应商
  3. 在列表中找到并选择 Ollama
  4. 模型名称:填写您想在 Dify 中使用的模型名称,例如 llama3:70b
  5. 基础 URL:填写您的 Ollama 服务器地址。
  • 如果 Dify 和 Ollama 在同一台服务器上,且没有使用 Docker,可以直接填写:http://localhost:11434
  • 如果 Dify 在另一台机器上,或使用了 Docker,请填写 Ollama 服务器的局域网 IP 地址,例如:http://192.168.1.100:11434
  1. 点击 保存

现在,您可以在 Dify 中创建应用,并在提示词编排中选择您刚刚添加的 llama3:70b 模型了。当您在 Dify 中与模型交互时,可以再次通过 watch -n 1 nvidia-smi 观察到两块 L20 显卡都在协同工作。


故障排查 (Troubleshooting)

  • nvidia-smi: command not found
  • 原因:驱动安装失败或环境变量 PATH 不正确。
  • 解决:重新执行第二步,确保没有报错。检查 reboot 是否已执行。
  • Ollama 只使用一块 GPU
  • 原因:CUDA_VISIBLE_DEVICES 环境变量未生效。
  • 解决:检查 /etc/systemd/system/ollama.service.d/override.conf 文件内容是否正确。确保执行了 sudo systemctl daemon-reload 和 sudo systemctl restart ollama
  • Dify 无法连接到 Ollama
  • 原因:网络问题或 Ollama 监听地址错误。
  • 解决:
  1. 在 Dify 服务器上 ping <Ollama服务器IP> 确认网络是通的。
  2. 在 Dify 服务器上 curl http://<Ollama服务器IP>:11434,如果看到 “Ollama is running”,说明 Ollama API 可达。
  3. 如果连接不通,检查防火墙设置,并确认已按 6.1 节配置 OLLAMA_HOST=0.0.0.0 并重启了服务。
欢迎访问本网站!
雨木霜月 » Ollama + Dify 双 L20 显卡操作手册

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据