---
title: "GPU 服务器镜像：CUDA、PyTorch、Ollama、vLLM、ComfyUI"
description: "GPU 镜像包含哪些组件，以及如何在 Ubuntu 24.04 上运行 PyTorch、Ollama、vLLM、ComfyUI 与 Docker，保持端点私密并监控 GPU。"
url: https://offshoreserv.com/zh/docs/gpu/images
lang: zh-Hans
updated: 2026-09-26
source: HTML page at the url above (canonical); this is its Markdown version
---

知识库 · GPU 服务器

# GPU 服务器镜像：CUDA、PyTorch、Ollama、vLLM 与 ComfyUI

OffshoreServ GPU 镜像包含哪些内容，以及如何在 Ubuntu 24.04 上运行 PyTorch、Ollama、vLLM、ComfyUI 和 Docker，保持端点私有并监控 GPU。

更新于 2026年9月26日 阅读约 8 分钟

本指南要点

- Linux 镜像为预装了 NVIDIA 驱动和 CUDA 的 Ubuntu 24.04 LTS；可分别用 nvidia-smi 和 nvcc 检查两者。
- 请在虚拟环境中安装 Python 工具，因为 Ubuntu 24.04 禁止在系统范围内使用 pip 安装。
- Ollama、vLLM 和 ComfyUI 只需几分钟即可部署完成。请让它们只监听 127.0.0.1，并通过 SSH 隧道访问。
- Docker 需要 NVIDIA Container Toolkit；除非将发布的端口绑定到 127.0.0.1，否则这些端口会绕过 ufw。

GPU 服务器11 个章节

我们的 [GPU 服务器](https://offshoreserv.com/zh/offshore-gpu-servers) 配备独享的 NVIDIA GPU，以及可直接用于 CUDA 工作的 Linux 镜像。本指南先检查镜像，然后在其上部署常用的 AI 工具。以下命令假定使用 Ubuntu 24.04，并以拥有 sudo 权限的用户执行；如果您以 root 身份操作，请省略 `sudo`。请将 `SERVER_IP` 替换为您服务器的地址。

## 镜像包含的内容

- Ubuntu 24.04 LTS，标准支持至 2029年5月。
- NVIDIA 驱动，包括 `nvidia-smi` 工具。
- CUDA，包括 `nvcc` 编译器。

镜像更新后版本会有变化，因此请检查您的版本：

```
nvidia-smi
nvcc --version
```

`nvidia-smi` 输出的顶部会显示驱动版本和 **CUDA Version** 。后者是该驱动所支持的最新 CUDA 版本，在下文选择 PyTorch 构建时很重要。如果找不到 `nvcc`，通常是因为工具包已安装在 `/usr/local/cuda` 下，但不在您的 PATH 中：

```
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```

> 当系统更新替换了 NVIDIA 驱动软件包后，在重启之前，`nvidia-smi` 会报告“Driver/library version mismatch”。请将驱动更新与重启一并安排。如果您使用 unattended-upgrades，可以考虑将 NVIDIA 软件包加入其 `Package-Blacklist`，改为手动更新。

## 验证 GPU

```
nvidia-smi -L
nvidia-smi topo -m
```

第一条命令会列出每块 GPU 及其型号；请检查数量和型号是否与您的套餐一致，以及 `nvidia-smi` 显示的显存是否与显卡相符，例如 RTX 4090 为 24 GB。在多 GPU 服务器上，第二条命令会显示 GPU 之间的互连方式（NVLink 或 PCIe），这会影响它们之间分担工作的速度。要在某一块特定的 GPU 上运行任务，请设置 `CUDA_VISIBLE_DEVICES`；这样进程只能看到那块显卡，编号从 0 开始：

```
CUDA_VISIBLE_DEVICES=1 python train.py
```

## 准备 Python 环境

Ubuntu 24.04 将系统 Python 标记为外部管理，因此在虚拟环境之外运行 `pip install` 会失败，并报 `externally-managed-environment` 错误。请为每个工具单独创建一个环境：例如，vLLM 会锁定自己的 PyTorch 版本。先安装基础组件；在运行时编译 GPU 内核的工具需要用到编译器和头文件：

```
sudo apt update
sudo apt install -y python3-venv python3-dev build-essential git
```

## 安装 PyTorch

PyTorch 针对特定的 CUDA 版本发布构建。当前版本提供 CUDA 12.6 和 CUDA 13.0 构建，另有一个实验性的 CUDA 13.2 构建。请选择不高于 `nvidia-smi` 所报告 CUDA 版本的构建：

```
python3 -m venv ~/venvs/torch
source ~/venvs/torch/bin/activate
pip install --upgrade pip
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu130
python -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
```

最后一行应输出 `True` 和您的 GPU 名称。`cu130` 构建要求驱动报告的 CUDA 版本不低于 13.0。如果您的驱动报告的是 12.x，请在索引 URL 中改用 `cu126`。该构建支持我们产品线中的所有 GPU，唯独 RTX 5090 除外，它需要 CUDA 12.8 或更高版本。

## 使用 Ollama 运行模型

关于私有模型服务器的意义及其安全方面，请阅读 [如何在 GPU 服务器上自托管大语言模型](https://offshoreserv.com/zh/blog/self-host-llm-gpu-server)。Ollama 是运行开放权重语言模型最快捷的方式。其安装脚本会设置系统服务并检测 NVIDIA GPU。您可以先下载脚本、读过之后再运行，也可以直接通过管道交给 shell 执行：

```
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.1:8b
ollama run llama3.1:8b
ollama ps
```

`ollama run` 会打开一个聊天提示符；输入 `/bye` 即可退出。在 `ollama ps` 的输出中，Processor 列应显示 **100% GPU** 。如果出现 CPU 占比，说明模型无法完全装入显存：请选择更小的模型或压缩程度更高的量化版本。[运行大语言模型需要多少显存](https://offshoreserv.com/zh/blog/how-much-vram-for-llms) 可以帮助您估算所需配置。

Ollama 默认监听 `127.0.0.1:11434`。请保持这一设置，并通过下文介绍的 SSH 隧道连接。它还在 `/v1` 下接受 OpenAI 风格的请求，因此同一套客户端代码可同时用于 Ollama 和 vLLM。模型存放在 `/usr/share/ollama/.ollama/models` 中。要更改监听地址等设置，请使用以下命令为该服务添加 `Environment=` 行：

```
sudo systemctl edit ollama.service
```

## 使用 vLLM 提供兼容 OpenAI 的端点

vLLM 是一款为吞吐量而设计的推理服务器：它会将大量请求合批同时处理，并使用与 OpenAI 相同的 HTTP 协议，因此现有的客户端库都能直接使用。它的构建是针对特定的 PyTorch 和 CUDA 版本编译的，因此请使用 vLLM 文档给出的索引 URL，将其安装在独立的环境中：

```
python3 -m venv ~/venvs/vllm
source ~/venvs/vllm/bin/activate
pip install --upgrade pip
pip install vllm --extra-index-url https://download.pytorch.org/whl/cu129
```

如果您的驱动报告的 CUDA 版本较旧，vLLM 文档还介绍了通过 `uv` 配合 `--torch-backend=auto` 进行安装的方法，该方法会选择与驱动匹配的 PyTorch 构建。

创建一个令牌，确保只有您能使用该服务器，记下令牌，然后在 localhost 上启动服务器：

```
export VLLM_API_KEY=$(openssl rand -hex 32)
echo "$VLLM_API_KEY"
vllm serve Qwen/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --max-model-len 8192
```

首次启动时，会从 Hugging Face 将模型下载到 `~/.cache/huggingface`；仅该模型的权重就需要约 15 GB 显存，因此请使用显存为 24 GB 或以上的 GPU。在 16 GB 显存的 RTX A4000 上，请选择更小的模型，例如 `Qwen/Qwen2.5-3B-Instruct`。在配备多块 GPU 的服务器上，添加 `--tensor-parallel-size 2`（或 4）即可将模型拆分到多块 GPU 上。除非传入 `--host`，否则 vLLM 会监听所有网络接口，因此请务必设置该参数。受限模型（例如 Meta 的 Llama 系列）还需要 Hugging Face 访问令牌：请先在该模型的 Hugging Face 页面上接受其许可协议，然后在启动服务器之前导出 `HF_TOKEN`。

在第二个 SSH 会话中导出同一个令牌，然后从该会话进行测试：

```
curl http://127.0.0.1:8000/v1/models -H "Authorization: Bearer $VLLM_API_KEY"
curl http://127.0.0.1:8000/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer $VLLM_API_KEY" -d '{"model": "Qwen/Qwen2.5-7B-Instruct", "messages": [{"role": "user", "content": "Say hello in five words."}]}'
```

### 将 vLLM 作为服务运行

从 shell 启动的服务器会在您退出登录时停止。要让它持续运行并在重启后自动恢复，请将令牌保存在仅 root 可读的文件中，然后创建一个 systemd 单元：

```
sudo install -m 600 /dev/null /etc/vllm.env
echo "VLLM_API_KEY=$(openssl rand -hex 32)" | sudo tee /etc/vllm.env > /dev/null
sudo cat /etc/vllm.env
sudo systemctl edit --force --full vllm.service
```

将以下单元内容粘贴到编辑器中，并将 `YOUR_USER` 替换为您的用户名：

```
[Unit]
Description=vLLM server
After=network-online.target
Wants=network-online.target

[Service]
User=YOUR_USER
EnvironmentFile=/etc/vllm.env
ExecStart=/home/YOUR_USER/venvs/vllm/bin/vllm serve Qwen/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --max-model-len 8192
Restart=on-failure

[Install]
WantedBy=multi-user.target
```

然后启动服务，设置开机自启，并实时查看其日志：

```
sudo systemctl enable --now vllm.service
sudo journalctl -u vllm.service -f
```

## 使用 ComfyUI 生成图像

```
git clone https://github.com/Comfy-Org/ComfyUI.git
cd ComfyUI
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
pip install -r requirements.txt
python main.py --listen 127.0.0.1 --port 8188
```

将模型检查点放在 `ComfyUI/models/checkpoints` 中，VAE、LoRA 等其他文件则放在 `models` 下对应的文件夹中。如果使用 `--listen` 而不指定地址，ComfyUI 会在所有 IPv4 和 IPv6 接口上监听，而且没有任何密码保护；只有在防火墙规则仅放行您自己 IP 的情况下才可以这样做。自定义节点会以您用户的权限运行任意 Python 代码，因此请只安装来自可信来源的节点。

## Docker 与 NVIDIA Container Toolkit

容器需要借助 NVIDIA 的 Container Toolkit 才能访问 GPU。请从 Ubuntu 官方软件仓库安装 Docker，添加 NVIDIA 的软件仓库，并将 Docker 配置为使用 NVIDIA 运行时：

```
sudo apt install -y docker.io
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo docker run --rm --gpus all ubuntu nvidia-smi
```

最后一条命令应输出与宿主机上相同的表格。如果您更喜欢 Docker 官方软件仓库中的 Docker CE，其用法完全相同。例如，以下命令会在容器中运行 vLLM，并且只在 localhost 上发布端口：

```
sudo docker run --rm --gpus all --ipc=host -p 127.0.0.1:8000:8000 -v ~/.cache/huggingface:/root/.cache/huggingface vllm/vllm-openai:latest --model Qwen/Qwen2.5-7B-Instruct
```

> Docker 会写入自己的防火墙规则。以 `-p 8000:8000` 形式发布的端口，即使 ufw 拒绝，也能从互联网访问。除非端口本来就要公开，否则请以 `127.0.0.1:PORT:PORT` 形式发布端口。

## 保持端点私有

这些工具在原样状态下直接对外暴露都不安全：Ollama 和 ComfyUI 完全没有登录验证，vLLM 的令牌也是可选的。请让它们保持绑定在 `127.0.0.1` 上，并从您自己的电脑通过 SSH 隧道访问（在 Windows 上，同样的命令也可在 PowerShell 中使用）：

```
ssh -N -L 8188:127.0.0.1:8188 -L 8000:127.0.0.1:8000 -L 11434:127.0.0.1:11434 YOUR_USER@SERVER_IP
```

隧道运行期间，在浏览器中打开 `http://127.0.0.1:8188` 即可使用 ComfyUI，并将兼容 OpenAI 的客户端指向 `http://127.0.0.1:8000/v1`。请按照 [加固指南](https://offshoreserv.com/zh/docs/security/hardening) 的做法，用只放行 SSH 的防火墙关闭服务器的其余部分。如果某项服务必须公开，请在其前面部署带有 TLS、身份验证和速率限制的反向代理，并牢记 [可接受使用政策](https://offshoreserv.com/zh/acceptable-use-policy)。

## 监控 GPU

```
nvidia-smi dmon -s pucm
watch -n 1 nvidia-smi
nvidia-smi --query-gpu=index,temperature.gpu,utilization.gpu,memory.used,memory.total,power.draw --format=csv -l 5
sudo apt install -y nvtop
nvtop
```

`nvidia-smi dmon` 每秒为每块 GPU 输出一行，包括功耗和温度（p）、利用率（u）、时钟频率（c）以及显存（m）。查询形式的命令每五秒写入一次 CSV，便于为长时间运行的任务记录日志。`nvtop` 是一个交互式视图，可显示所有 GPU 及其进程，类似于 htop。如果负载下时钟频率下降，请检查原因：

```
nvidia-smi -q -d PERFORMANCE
```

## 故障排查

- **CUDA 显存不足（OutOfMemoryError）：** 模型、其上下文或批次超出了显存容量。请选择更小或压缩程度更高的模型，在 vLLM 中调低 `--max-model-len`，或减小批大小。`nvidia-smi` 可以显示是否仍有其他进程占用着显存。
- **`torch.cuda.is_available()` 返回 False：** 虚拟环境未激活，或者 PyTorch 构建所需的 CUDA 版本高于驱动所支持的版本。请将 `torch.version.cuda` 与 `nvidia-smi` 中显示的 CUDA 版本进行比较。
- **“Driver/library version mismatch”：** 驱动软件包已更新，但旧的内核模块仍处于加载状态。请重启。
- **容器中看不到 GPU：** 在 `docker run` 中添加 `--gpus all`，并检查是否已执行 `nvidia-ctk runtime configure`，以及 Docker 是否已重启。
- **首次启动较慢：** 首次运行时会下载模型并编译 GPU 内核。之后的启动会更快。

准备好选择硬件了吗？请比较 [RTX 服务器](https://offshoreserv.com/zh/offshore-gpu-servers/rtx)、[数据中心级 GPU](https://offshoreserv.com/zh/offshore-gpu-servers/datacenter) 和 [多 GPU 服务器](https://offshoreserv.com/zh/offshore-gpu-servers/multi-gpu)。

**某个步骤遇到困难？**

独立服务器和 GPU 服务器客户可在 [客户中心](https://offshoreserv.com/zh/account/support) 提交工单，注明服务器的 IP 地址以及已尝试过的操作。首次回复目标：12 小时内。其他服务器请使用其页面上的服务器操作、[指南](https://offshoreserv.com/zh/docs) 和 [网络状态](https://offshoreserv.com/zh/status) 页面。

---

OffshoreServ 是一家离岸主机服务商，在七个司法管辖区（冰岛、瑞士、摩尔多瓦、罗马尼亚、荷兰、保加利亚和马来西亚）提供 VPS、独立服务器、Windows RDP 和 GPU 服务器，仅接受加密货币付款（比特币、以太坊、门罗币、泰达币（USDT）和 Solana），无需身份验证（无需 KYC）。

Prices and plans: https://offshoreserv.com/zh/pricing · Answers: https://offshoreserv.com/zh/faq · Every page: https://offshoreserv.com/llms.txt
