Ollama + Dify 双 L20 显卡操作手册
这是一份非常详细的操作手册,旨在指导您在搭载两块 NVIDIA L20 显卡的本地服务器上,从零开始安装最新的显卡驱动,并配置 Ollama 以充分利用双显卡资源,最后与 Dify 对接。
NVIDIA L20 是一款功能强大的数据中心级显卡,单卡拥有 48GB VRAM。两块 L20 意味着您拥有 96GB 的总显存,这足以在本地流畅运行像 Llama 3 70B 这样顶尖的开源大模型。
本地部署 Ollama + Dify 双 L20 显卡操作手册
本手册分为六个主要步骤:
- 系统准备与环境检查
- 安装最新的 NVIDIA 显卡驱动
- 安装 Ollama
- 配置 Ollama 使用双显卡
- 运行模型并验证双卡工作状态
- 与 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 的输出。
您应该能观察到以下现象,这证明双卡配置成功:
- 显存占用 (Memory-Usage):两块 L20 显卡的显存都被占用了。例如,您可能会看到 GPU 0 使用了 24GB,GPU 1 使用了 16GB。这表明模型层被成功地分割并加载到了两张卡上。
- 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
- 登录您的 Dify 平台。
- 进入
设置->模型供应商。 - 在列表中找到并选择
Ollama。 - 模型名称:填写您想在 Dify 中使用的模型名称,例如
llama3:70b。 - 基础 URL:填写您的 Ollama 服务器地址。
- 如果 Dify 和 Ollama 在同一台服务器上,且没有使用 Docker,可以直接填写:
http://localhost:11434 - 如果 Dify 在另一台机器上,或使用了 Docker,请填写 Ollama 服务器的局域网 IP 地址,例如:
http://192.168.1.100:11434
- 点击
保存。
现在,您可以在 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 监听地址错误。
- 解决:
- 在 Dify 服务器上
ping <Ollama服务器IP>确认网络是通的。 - 在 Dify 服务器上
curl http://<Ollama服务器IP>:11434,如果看到 “Ollama is running”,说明 Ollama API 可达。 - 如果连接不通,检查防火墙设置,并确认已按 6.1 节配置
OLLAMA_HOST=0.0.0.0并重启了服务。