云服务器部署私有AI大模型实战指南

准备工作:

一台云服务器,配置最低4G、4核,勉强能跑0.5b、1b大模型

详细步骤:

服务器配置:4核/4GB / Ubuntu 24.04 / 无 GPU

目标:让一台廉价云服务器也能跑大模型,且能通过 API 调用


前言:我为什么要写这篇

不是每台服务器都有 A100 显卡,不是每个人都在 H100 集群上做推理。

我的服务器配置很寒碜------4 核 CPU,3.6GB 内存,没有 GPU。这是一台典型的"买来挂个博客、跑个脚本"的轻量级云服务器。

但我想在这上面跑大模型。不是说说而已,是真的要用起来。

如果你也在类似的机器上挣扎过,这篇文章就是给你的。


硬件真相:你能跑什么样的模型?

先说结论:CPU + 3.6GB 内存,你能跑 1B~3B 参数级别的量化模型。

这里有个简单的经验公式:

模型运行时显存 ≈ 参数规模 × 量化精度

模型规模 4-bit 量化 8-bit 量化 FP16
0.5B (如 Qwen2.5-0.5B) ~0.3GB ~0.5GB ~1GB
1.8B (如 Qwen2.5-1.5B) ~1GB ~1.8GB ~3.6GB
3B (如 Qwen2.5-3B) ~1.7GB ~3GB ~6GB

看明白了吧?在 3.6GB 的机器上,Qwen2.5-1.5B 的 4-bit 量化版 是舒适区,Qwen2.5-3B 的 4-bit 量化版是极限。


提醒!!!

推荐直接给云服务器安装Openclaw或其它Agent镜像,然后直接让AI替你安装AI大模型即可免去手动折腾!下文也就不需要看了!

第一步:安装 Ollama

Ollama 是目前最简单的大模型运行方案。一条命令安装:

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

安装完成后,Ollama 会以 systemd 服务运行:

bash 复制代码
# 检查状态
systemctl status ollama

# 如果没启动
systemctl enable --now ollama

如果你的服务器在国外、网络不稳定,可以先检查一下 ollama.com 能否访问。被墙的话你得先解决代理问题,本文不展开。


第二步:选择合适的模型

推荐模型(按优先级排列)

1. Qwen2.5-1.5B(强烈推荐)

Qwen2.5 是阿里通义千问团队开源的最新系列。1.5B 版本在代码、推理、中文理解上表现惊艳,远超同参数级别的其他模型。

bash 复制代码
ollama pull qwen2.5:1.5b

2. Qwen2.5-3B(高配选择)

如果你关了 swap、清理了内存,3B 版本的 4-bit 量化勉强能跑。输出质量比 1.5B 明显提升,但推理速度会慢一截。

bash 复制代码
ollama pull qwen2.5:3b

3. DeepSeek-R1-1.5B(推理增强)

DeepSeek 的轻量推理模型,擅长逻辑推理和数学,适合当你需要"思考型"输出时使用。

bash 复制代码
ollama pull deepseek-r1:1.5b

4. Llama 3.2-3B(英文优先)

如果你的主要场景是英文,Meta 的 Llama 3.2 是不错的选择。中文能力弱于 Qwen。

bash 复制代码
ollama pull llama3.2:3b

个人建议:主力用 qwen2.5:1.5b,再拉一个 deepseek-r1:1.5b 做推理任务备用。两个模型加起来大约 2GB 内存,完全够用。


第三步:验证与测试

拉完模型后,先确认它在跑:

bash 复制代码
# 列出已安装的模型
ollama list

# 命令行直接对话测试
ollama run qwen2.5:1.5b

输入一个简单问题试试,比如:"用 Python 写一个冒泡排序"。看看输出是否正常。

如果出现 OOM(内存不足),检查:

bash 复制代码
# 查看当前内存使用
free -h

# 清理系统缓存
sync && echo 3 > /proc/sys/vm/drop_caches

第四步:开放 API 接口

Ollama 默认只在 127.0.0.1:11434 监听。如果要从其他机器访问,需要修改配置。

4.1 配置外部访问

编辑 Ollama 的环境变量:

bash 复制代码
# 编辑 systemd 服务配置
systemctl edit ollama

添加以下内容:

ini 复制代码
[Service]
Environment="OLLAMA_HOST=0.0.0.0"

然后重启:

bash 复制代码
systemctl daemon-reload
systemctl restart ollama

4.2 安全提醒 ⚠️

开放 0.0.0.0 意味着任何人都能访问你的模型。强烈建议配置防火墙

bash 复制代码
# 仅允许特定 IP 访问
ufw allow from 你的IP to any port 11434

# 或使用 iptables
iptables -A INPUT -p tcp --dport 11434 -s 你的IP -j ACCEPT
iptables -A INPUT -p tcp --dport 11434 -j DROP

更好的做法是用 Nginx 反向代理加一层 Basic Auth,或者搭配 API Key 网关。

4.3 测试 API

bash 复制代码
# 从远程机器测试
curl http://你的服务器IP:11434/api/generate -d '{
  "model": "qwen2.5:1.5b",
  "prompt": "你好,请用一句话介绍你自己",
  "stream": false
}'

返回结果类似:

json 复制代码
{
  "model": "qwen2.5:1.5b",
  "response": "我是通义千问,阿里云开发的大语言模型。",
  "done": true
}

第五步:调优与踩坑

5.1 推理太慢怎么办?

CPU 推理就是慢,这是物理定律。但可以优化:

调整并发线程数:

bash 复制代码
# 设置 OLLAMA_NUM_PARALLEL 控制并发请求数(默认是1)
systemctl edit ollama

# 添加
Environment="OLLAMA_NUM_PARALLEL=1"

保持单并发。在 4 核 CPU 上,并行推理不会更快,反而会互相抢 CPU。

使用量化模型:

Ollama 默认使用 Q4_K_M 量化(4-bit),如果你是手动导入模型,确保用 GGUF 格式的量化版本,而不是 FP16 的原始权重。

5.2 内存不够用?

bash 复制代码
# 增加 swap(临时方案,会变慢但不会 OOM)
fallocate -l 4G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

注意:swap 会导致推理速度断崖式下降。能不用就别用。

5.3 模型下载慢?

设置代理:

bash 复制代码
# 配置 HTTP 代理环境变量
systemctl edit ollama

Environment="HTTP_PROXY=http://你的代理:端口"
Environment="HTTPS_PROXY=http://你的代理:端口"

或者换个思路------在一台网络好的机器上下载模型文件,然后 scp 到服务器,手动导入 Ollama。

5.4 模型下载中断 / 不完整?

Ollama 支持断点续传。如果下载中断,直接重新执行 ollama pull,它会从断点继续。


第六步:集成到你的应用

Python 调用示例

python 复制代码
import requests
import json

OLLAMA_URL = "http://localhost:11434"

def chat(prompt, model="qwen2.5:1.5b"):
    response = requests.post(
        f"{OLLAMA_URL}/api/generate",
        json={
            "model": model,
            "prompt": prompt,
            "stream": False,
            "options": {
                "temperature": 0.7,
                "num_predict": 512,  # 最大输出 token
            }
        }
    )
    return response.json()["response"]

# 使用
print(chat("解释一下什么是 API"))

兼容 OpenAI API 格式

Ollama 内置兼容 OpenAI 的 /v1/chat/completions 接口:

python 复制代码
from openai import OpenAI

client = OpenAI(
    base_url="http://你的服务器IP:11434/v1",
    api_key="ollama"  # 任意字符串即可
)

response = client.chat.completions.create(
    model="qwen2.5:1.5b",
    messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)

这意味着你现有的 LangChain、Dify、ChatBox 等工具可以直接对接。


性能基准

在 腾讯云 4C/3.6GB 这台机器上,实测:

模型 量化 推理速度 内存占用
qwen2.5:0.5b Q4_K_M ~25 tok/s ~500MB
qwen2.5:1.5b Q4_K_M ~12 tok/s ~1.2GB
qwen2.5:3b Q4_K_M ~5 tok/s ~2.1GB
deepseek-r1:1.5b Q4_K_M ~10 tok/s ~1.3GB

12 tok/s 意味着每秒能输出 12 个 token,大约 20 个中文字。对于聊天场景来说可接受,等待几秒就能看到完整回复。


总结

  1. 用 Ollama,不用折腾 PyTorch、Transformers、CUDA 那一套
  2. 选对模型:Qwen2.5-1.5B 是甜点,Qwen2.5-3B 是上限
  3. 4-bit 量化是必须的,Ollama 默认就是量化版本,不用额外操作
  4. 开放 API 记得做安全防护,别裸奔
  5. CPU 推理就是慢,接受它。如果需要实时对话体验,升级到 GPU 机器是唯一出路

一台月租几十块的云服务器,加上开源的 AI 模型,能做很多事:个人助手、代码生成、文档摘要、翻译、RAG 知识库......关键是,它完全属于你,数据不外泄,想怎么玩就怎么玩。

祝折腾愉快。