准备工作:
一台云服务器,配置最低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 个中文字。对于聊天场景来说可接受,等待几秒就能看到完整回复。
总结
- 用 Ollama,不用折腾 PyTorch、Transformers、CUDA 那一套
- 选对模型:Qwen2.5-1.5B 是甜点,Qwen2.5-3B 是上限
- 4-bit 量化是必须的,Ollama 默认就是量化版本,不用额外操作
- 开放 API 记得做安全防护,别裸奔
- CPU 推理就是慢,接受它。如果需要实时对话体验,升级到 GPU 机器是唯一出路
一台月租几十块的云服务器,加上开源的 AI 模型,能做很多事:个人助手、代码生成、文档摘要、翻译、RAG 知识库......关键是,它完全属于你,数据不外泄,想怎么玩就怎么玩。
祝折腾愉快。