---
title: "在 GPU 服务器上私有化部署大模型（Ollama、vLLM）"
description: "在自己的 GPU 服务器上运行私有大语言模型：按显存选择 GPU，从 Ollama 入手，用 vLLM 提供兼容 OpenAI 的 API，并做好访问控制。"
url: https://offshoreserv.com/zh/blog/self-host-llm-gpu-server
lang: zh-Hans
updated: 2026-09-26
source: HTML page at the url above (canonical); this is its Markdown version
---

[AI 与 GPU](https://offshoreserv.com/zh/blog/category/ai-gpus)

# 如何在 GPU 服务器上自托管大语言模型（Ollama、vLLM）

从一台空白的 GPU 服务器到私有的、兼容 OpenAI 的端点：租用哪款显卡、Ollama 与 vLLM 的部署、TLS 与密钥、基准测试、隐私与成本。

2026年9月26日 阅读约 10 分钟 OffshoreServ 团队撰写

要点

- 按显存选型：权重，加上上下文所需的缓存，再留出 10 到 20% 的余量。4 位精度的 70B 模型大约需要 50 GB。
- Ollama 只需两条命令即可运行模型；它在 127.0.0.1:11434 上的 API 没有任何身份验证。
- vLLM 在 8000 端口上提供兼容 OpenAI 的 API，可以批量服务大量用户；其可选的密钥只保护部分路由。
- 不要直接暴露任何服务：请使用 SSH 隧道，或使用会校验密钥、只放行 `/v1` 路径的 TLS 反向代理。
- 在您自己的服务器上做基准测试，关闭遥测，并把月费与您的 API 账单进行比较。

要自托管大语言模型，请租用一台显存足以容纳模型的 GPU 服务器，安装 Ollama 快速上手，或安装 vLLM 以提供兼容 OpenAI 的 API，并让两者都只绑定在 127.0.0.1 上。通过 SSH 隧道或会校验密钥的 TLS 反向代理访问它们。8B 模型可以在 24 GB 的 RTX 4090 上以全精度运行。

本指南将一台空的 [GPU 服务器](https://offshoreserv.com/zh/offshore-gpu-servers) 打造成私有端点：要租哪块显卡、Ollama 和 vLLM 的具体命令、TLS 与身份验证、基准测试和成本。命令默认使用已安装 NVIDIA 驱动和 CUDA 的 Ubuntu 24.04，与我们的 GPU 服务器一致。

## 为什么要自托管大语言模型？

**您的提示词留在您的服务器上。** 使用托管 API 时，每条提示词和回答都要经过别人的基础设施，受对方的日志和留存规则约束。私有大模型服务器则在您自己的 GPU 上运行模型。Ollama 的常见问题说得很直白：在本地运行时，[“我们看不到您的提示词或数据”](https://github.com/ollama/ollama/blob/main/docs/faq.mdx)。

**成本可预测。** 按月计费的服务器无论处理十个请求还是一千万个请求，价格都一样：在持续使用时比按 token 计费便宜，在使用量低时则更贵。

**模型由您掌控：** 包括版本、量化方式和上下文长度。它不会因为服务商更新模型目录而改变，您还可以用留在服务器上的数据对它进行微调。

需要权衡的是：更新、安全和监控都要由您负责，而且开放权重模型并不是最大型 API 背后的那些专有模型。如果您需要其中之一，只能通过它的 API 使用。

## 按显存选择 GPU

要在 GPU 服务器上运行大语言模型，先从内存算起：权重、上下文所需的 KV 缓存以及一些余量都必须放得进显存。以下数据来自我们的指南 [大语言模型需要多少显存](https://offshoreserv.com/zh/blog/how-much-vram-for-llms)，已包含单用户 8K token 上下文和 10% 的余量。

| 模型（示例） | 4 位精度 | 8 位精度 | 16 位精度 | 合适的 GPU |
| --- | --- | --- | --- | --- |
| 7B 至 8B（Llama 3.1 8B） | 约 7 GB | 约 11 GB | 约 19 GB | RTX 4090，即使是 16 位精度 |
| 13B 至 14B（Qwen3-14B） | 约 11 GB | 约 18 GB | 约 32 GB | RTX 4090（8 位精度），长上下文用 RTX 5090 |
| 32B（Qwen3-32B） | 约 24 GB | 约 40 GB | 约 73 GB | RTX 5090（4 位精度） |
| 70B（Llama 3.3 70B） | 约 50 GB | 约 85 GB | 约 157 GB | A100 或 H100（4 位精度），2 × H100（8 位精度） |
| gpt-oss-120b（混合专家模型） | 单块 80 GB GPU 即可容纳（原生 MXFP4） | 不适用 | 不适用 | A100 或 H100 |

[RTX 4090 服务器](https://offshoreserv.com/zh/offshore-gpu-servers/rtx-4090) 每月 $84.99，[RTX 5090 服务器](https://offshoreserv.com/zh/offshore-gpu-servers/rtx-5090) 每月 $134.99，A100 80 GB 每月 $355.99，[H100 服务器](https://offshoreserv.com/zh/offshore-gpu-servers/h100) 每月 $581.99。4 位精度的 32B 模型大约需要 24 GB，上下文一变长，24 GB 的显卡就没有余地了，因此请选择 RTX 5090。在两款 80 GB 显卡之间，H100 拥有 3.35 TB/s 的显存带宽，同一模型的生成速度比 A100 更快。

## 快速上手：用 Ollama 自托管大语言模型

Ollama 的 Linux 安装脚本会设置系统服务并检测 NVIDIA GPU。您可以在运行前先阅读它：

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

`llama3.1:8b` 的下载大小为 4.9 GB。`ollama run` 会打开聊天（用 `/bye` 退出），`ollama ps` 应显示 **100% GPU** ；如果出现 CPU 占比，说明模型放不进显存。它的 CONTEXT 列显示上下文长度，[Ollama 会根据可用显存来设定](https://github.com/ollama/ollama/blob/main/docs/context-length.mdx)（低于 24 GiB 为 4K token，24 GiB 起为 32K，48 GiB 起为 256K），可以用 `OLLAMA_CONTEXT_LENGTH` 覆盖。然后检查它监听的地址并调用其 API：

```
ss -tln | grep 11434
curl http://127.0.0.1:11434/api/generate -d '{"model": "llama3.1:8b", "prompt": "Why is the sky blue?", "stream": false}'
```

[Ollama 默认绑定 127.0.0.1 的 11434 端口](https://github.com/ollama/ollama/blob/main/docs/faq.mdx)，所以第一行应显示 `127.0.0.1:11434`。保持这样即可。常见问题中介绍了如何用 `OLLAMA_HOST=0.0.0.0` 对外开放，但本地 API 没有身份验证：任何能访问该端口的人都可以运行、拉取和删除模型。

Ollama 还在 `/v1` 下提供 OpenAI 风格的路由。客户端需要填写基础 URL `http://127.0.0.1:11434/v1` 和任意 API 密钥，[Ollama 会忽略这个密钥](https://github.com/ollama/ollama/blob/main/docs/api/openai-compatibility.mdx)。设置项是该服务的环境变量：运行 `sudo systemctl edit ollama.service`，添加以下几行，然后重新加载并重启：

```
[Service]
Environment="OLLAMA_NO_CLOUD=1"
Environment="OLLAMA_CONTEXT_LENGTH=16384"
```

```
sudo systemctl daemon-reload
sudo systemctl restart ollama
```

## 用 vLLM 提供兼容 OpenAI 的 API

vLLM 为吞吐量而生：它在 GPU 上同时批量处理大量请求，并使用 OpenAI 协议，因此现有的客户端代码无需修改即可使用。按照 [vLLM 安装指南](https://github.com/vllm-project/vllm/blob/main/docs/getting_started/installation/gpu.cuda.inc.md) 把它安装在独立的虚拟环境中，然后创建密钥并启动服务器：

```
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
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
```

由于设置了 `VLLM_API_KEY`，因此必须提供密钥；`--api-key` 参数的作用相同。[快速入门](https://docs.vllm.ai/en/latest/getting_started/quickstart.html) 给出的默认地址是 `http://localhost:8000`，但 [服务器代码](https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/launchers/launcher.py) 在未指定主机时会绑定所有 IPv4 接口，所以务必传入 `--host`。`--max-model-len` 用于限制上下文及其缓存。vLLM 默认预留 92% 的 GPU 显存，因此 `nvidia-smi` 中显卡几乎占满是正常的。模型会在首次启动时从 Hugging Face 下载，权重约需 15 GB：请使用 24 GB 或更大的显卡。用官方 OpenAI 客户端测试：

```
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="YOUR_KEY")
reply = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "Explain RAID 1 in one sentence."}],
)
print(reply.choices[0].message.content)
```

同样的代码也可以通过 `http://127.0.0.1:11434/v1` 连接 Ollama。使用 Docker 时，只在 127.0.0.1 上发布端口，因为 Docker 的端口规则会绕过 ufw；并保留 `--ipc=host`，以便 PyTorch 使用共享内存：

```
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 --api-key "$VLLM_API_KEY"
```

在两块或四块 GPU 上，`--tensor-parallel-size 2` 或 `4` 会把一个模型拆分到多块 GPU 上。我们的 [GPU 镜像指南](https://offshoreserv.com/zh/docs/gpu/images) 还介绍了 NVIDIA Container Toolkit，以及让 vLLM 持续运行的 systemd 单元。

### Ollama 与 vLLM 一览

| 问题 | Ollama | vLLM |
| --- | --- | --- |
| 部署方式 | 一个脚本，作为系统服务运行 | Python 包或 Docker 镜像 |
| 模型 | Ollama 模型库，按名称 | Hugging Face，按仓库 |
| 默认地址 | 127.0.0.1:11434 | 所有接口上的 8000 端口，除非设置了 `--host` |
| 身份验证 | 本地 API 没有 | 可选密钥，只保护部分路由 |
| 适用场景 | 单个用户或小团队，快速测试 | 大量并发请求，多 GPU 部署 |

## 在前面加上 TLS 和身份验证

这两种服务器都不应原样暴露在互联网上。Ollama 的文档写明，[本地 API 不需要身份验证](https://github.com/ollama/ollama/blob/main/docs/api/authentication.mdx)。vLLM 的 [安全指南](https://docs.vllm.ai/en/latest/usage/security.html) 指出，`--api-key` 只保护 `/v1`、`/v2`、`/inference` 和 `/cohere` 下的路由，`/pause` 和 `/tokenize` 等其他路由则保持开放，并提醒不要只依赖密钥。

### 自己使用：SSH 隧道

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

隧道运行期间，您电脑上的客户端使用 `http://127.0.0.1:11434/v1` 或 `http://127.0.0.1:8000/v1`。SSH 会加密流量，并用您的密钥验证身份；服务器不需要开放新端口。该命令在 PowerShell 中同样适用。

### 供应用和团队使用：带 TLS 和密钥的 Caddy

Caddy 会自动获取并续期证书，并 [把 HTTP 重定向到 HTTPS](https://caddyserver.com/docs/automatic-https)。把域名的 A 记录指向服务器，在防火墙中开放 80 和 443 端口，从 [官方仓库](https://caddyserver.com/docs/install) 安装 Caddy，用 `openssl rand -hex 32` 生成密钥，然后把 `/etc/caddy/Caddyfile` 替换为：

```
llm.example.com {
	@denied {
		not {
			path /v1/*
			header Authorization "Bearer YOUR_LONG_RANDOM_KEY"
		}
	}
	respond @denied 403
	reverse_proxy 127.0.0.1:11434 {
		header_up Host localhost:11434
	}
}
```

然后运行 `sudo systemctl reload caddy`。不同时满足“位于 `/v1/` 之下”和“携带密钥”这两个条件的请求会收到 403，因为 [`respond` 在 `reverse_proxy` 之前执行](https://caddyserver.com/docs/caddyfile/directives)。路径规则还能让 Ollama 原生的 `/api` 路由（可以拉取和删除模型）保持私有。改写 Host 很重要：监听 127.0.0.1 时，[Ollama 会对其他主机名的请求返回 403](https://github.com/ollama/ollama/blob/main/server/routes.go)，其常见问题中的 nginx 示例也以同样的方式改写该请求头。对于 vLLM，请代理到 `127.0.0.1:8000`，去掉 `header_up` 块，并使用服务器的密钥。

之后，客户端使用 `https://llm.example.com/v1` 和密钥，兼容 OpenAI 的客户端会把密钥作为 Bearer token 发送；Caddy 会立即推送流式回答。面向他人的服务还需要限流，而且我们的 [可接受使用政策](https://offshoreserv.com/zh/acceptable-use-policy) 同样适用于它生成的内容。

## 自己测量吞吐量

每秒 token 数取决于显卡、模型、量化方式、引擎版本、上下文长度和并发量，因此我们不发布未经实测的数据。对于单用户使用稠密模型的情况，上限是显存带宽除以权重大小：根据我们的显存指南，4 位精度的 8B 模型在 RTX 4090 上约为每秒 205 个 token。实际结果会低于这个值。

### 使用 Ollama

```
ollama run llama3.1:8b --verbose
```

`--verbose` 会在每次回答后输出耗时，其中包括 **eval rate** ，即以每秒 token 数表示的生成速度。通过 API 时，响应中带有以纳秒为单位的 `eval_count` 和 `eval_duration`，[Ollama 的 API 参考](https://github.com/ollama/ollama/blob/main/docs/api.md) 给出的速率计算方式是 `eval_count / eval_duration × 10^9`。

### 使用 vLLM

vLLM 自带 [负载生成器](https://github.com/vllm-project/vllm/blob/main/docs/benchmarking/cli.md)。以下命令向 127.0.0.1:8000 发送 200 个请求，每个请求包含 1,024 个随机输入 token 和 256 个输出 token，每次并发 16 个，并以 `OPENAI_API_KEY` 作为 Bearer token：

```
export OPENAI_API_KEY="$VLLM_API_KEY"
vllm bench serve --model Qwen/Qwen2.5-7B-Instruct --dataset-name random --random-input-len 1024 --random-output-len 256 --num-prompts 200 --max-concurrency 16
```

请看报告中的三行： **output token throughput** （整个服务器的输出吞吐量）、衡量响应速度的 **mean TTFT** （首 token 时间），以及反映每个用户实际体验的 **mean TPOT** （每个输出 token 的时间）。分别在并发 1、8 和 32 下重复测试，同时观察 `nvidia-smi dmon -s pucm`，并使用与真实流量接近的提示词长度。

## 让提示词保持私密

只有在没有任何其他东西把提示词发送出去的情况下，自托管才能让提示词只留在您的服务器上：

1. **不开放公网端口。** `sudo ss -tlnp` 必须显示 11434 和 8000 只监听在 127.0.0.1 上。只放行 SSH，以及供 Caddy 使用的 80 和 443 端口，其他一律不开放，具体见我们的[加固指南](https://offshoreserv.com/zh/docs/security/hardening)；Docker 端口请以 `127.0.0.1:PORT:PORT` 的形式发布。
2. **避免误用云端模型。** Ollama 也可以在自己的服务器上运行 `gemma4:cloud` 等[云端模型](https://github.com/ollama/ollama/blob/main/docs/cloud.mdx)，那样您的提示词就会由它们处理。`OLLAMA_NO_CLOUD=1` 可以禁用云端模型和网络搜索。
3. **关闭遥测。** vLLM 默认会收集关于您的硬件和配置的匿名[使用统计](https://docs.vllm.ai/en/latest/usage/usage_stats.html)；`VLLM_NO_USAGE_STATS=1` 或 `DO_NOT_TRACK=1` 可以停止收集。[`HF_HUB_DISABLE_TELEMETRY=1`](https://huggingface.co/docs/huggingface_hub/package_reference/environment_variables) 会关闭 Hugging Face 的遥测，而模型下载完成后，`HF_HUB_OFFLINE=1` 会阻止所有对 Hub 的访问。
4. **保持日志安静。** vLLM 只有在使用 `--enable-log-requests` 时才记录请求，只有在 DEBUG 级别才记录提示词文本。请保持这样，并检查任何聊天前端会保存哪些内容。

```
export VLLM_NO_USAGE_STATS=1
export HF_HUB_DISABLE_TELEMETRY=1
export HF_HUB_OFFLINE=1
```

如果以服务方式运行，请把这些设置写入它的环境变量文件。在我们这边，我们不记录也不检查客户服务器的流量：不做深度包检测，不扫描内容，也从不查看服务器内部运行的内容。

## 成本：API、云 GPU 与自有服务器

- **API** 按 token 计费：无需自己运维，也没有闲置成本，但每条提示词都会发送给服务商，账单随用量增长。
- **云 GPU** 按小时计费。与按月计费的服务器相比，盈亏平衡点是月费除以小时费率：我们 $84.99 的 RTX 4090 相当于按每小时 $1.00 的示例价格使用 85 小时。
- **自有服务器** 无论忙闲费用都一样，因此使用量越大，每个 token 的成本越低。全天候运行时，我们的 RTX 4090 折合每小时约 $0.116，H100 约 $0.797。

与 API 相比，当平均吞吐量高于以下数值时，服务器就能收回成本：

```
break-even tokens per second = monthly price ÷ (API price per million tokens × 2.628)
```

2.628 是一个按 730 小时计的月份所包含的秒数（以百万计）。以每百万 token $1 的示例 API 价格计算，$84.99 的服务器在平均约每秒 32 个 token（含闲置时间）时达到盈亏平衡，$581.99 的 H100 则约为每秒 221 个。以上均为示例价格，并非报价，而且 API 也对输入 token 计费。我们对 [独立 GPU 服务器与云 GPU](https://offshoreserv.com/zh/blog/dedicated-gpu-vs-cloud-gpu) 的比较介绍了按小时计费的一面。

季付可省 5%，年付可省 12%，这样 RTX 4090 折合每月 $74.79。服务器在 1 到 24 小时内就绪；GPU 服务器一经交付不予退款，因此请在下单前确定好模型规模。

## 常见问题

### 我可以在自己的服务器上运行大语言模型吗？

可以。任何配备 NVIDIA GPU、且显存足以容纳模型的 Linux 服务器都可以：8B 模型大约需要 7 GB，70B 模型大约需要 50 GB，均按 4 位精度并包含上下文。安装 Ollama 或 vLLM，让它们保持在 127.0.0.1 上，并通过 SSH 隧道或会校验密钥的 TLS 反向代理连接。

### Ollama 和 vLLM 哪个更好？

它们解决的问题不同。Ollama 部署更快，适合单个用户或小团队。vLLM 能批量处理大量并发请求，可以把模型拆分到多块 GPU 上，还会校验 API 密钥，更适合应用程序。两者都在 /v1 下响应 OpenAI 风格的请求，所以您可以先用 Ollama，之后再换成 vLLM，而无需重写客户端。

### 70B 模型需要多少显存？

4 位精度下权重约需 43 GB，加上 8K 上下文和余量约需 50 GB：一块 80 GB 的 A100 或 H100，或两块 32 GB 的 RTX 5090。8 位精度下约需 85 GB，也就是两块 H100；16 位精度下约需 157 GB，需要多 GPU 的 H100 服务器。更长的上下文和更多用户需要更多显存。

### Ollama 有身份验证吗？

本地 API 没有。Ollama 的文档写明，localhost:11434 上的 API 不需要身份验证；API 密钥只适用于其云服务。请保持默认绑定到 127.0.0.1（只有服务器自身可以访问），在其他人连接之前加上 SSH 隧道或带 TLS 和密钥校验的反向代理。

### 自托管大语言模型比 API 便宜吗？

用量稳定时通常更便宜；用量低或不规律时通常不会。用服务器的月费除以“API 每百万 token 的价格 × 2.628”：结果就是服务器需要持续达到的平均每秒 token 数，才能收回成本。隐私可能比价格更重要：在您自己的服务器上，提示词始终在您的掌控之中。

**选择法律站在您这边的地方托管**

离岸 VPS、独立服务器、RDP 与 GPU 服务器，覆盖七个司法管辖区。无需 KYC，使用加密货币付款。

## 更多博客文章

- [AI 与 GPU 独立 GPU 服务器与云 GPU 对比：成本、隐私与速度 按月还是按小时计费？如何找到独立 GPU 服务器与云 GPU 之间的盈亏平衡点，以及两者在可用性、速度和隐私方面有何不同。2026年9月26日 阅读约 8 分钟](https://offshoreserv.com/zh/blog/dedicated-gpu-vs-cloud-gpu)
- [AI 与 GPU 运行大语言模型需要多少显存？（2026年指南）为大语言模型估算 GPU 显存的实用方法：按精度计算权重，为上下文预留 KV 缓存，留出余量，以及哪些 GPU 能容纳 8B 至 120B 参数的模型。2026年9月26日 阅读约 9 分钟](https://offshoreserv.com/zh/blog/how-much-vram-for-llms)
- [法律与司法管辖区 5 眼、9 眼和 14 眼联盟国家：对主机托管意味着什么 哪些国家属于 5 眼、9 眼和 14 眼联盟，哪些信息是官方公布的、哪些来自泄露，以及成员国身份对我们七个地区中每一处的服务器究竟意味着什么。2026年9月26日 阅读约 8 分钟](https://offshoreserv.com/zh/blog/14-eyes-countries-hosting)

---

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
