跳转到内容

Ollama 本地大模型

Ollama 是一个轻量级的本地大语言模型运行框架,让你可以在自己的服务器上轻松运行 Llama 3、Qwen2、Gemma 等开源大模型,无需依赖云端 API。它提供了简洁的命令行工具和兼容 OpenAI 的 REST API,非常适合在企业内网部署私有化 AI 服务。

  • CentOS Stream 9 & 10 / AlmaLinux 9.x & 10.x / Rocky Linux 9.x & 10.x
  • 至少 8 GB 内存(运行 7B 模型);16 GB 以上推荐
  • 如需 GPU 加速:NVIDIA 显卡 + 已安装驱动和 CUDA(参考 NVIDIA 驱动与 CUDA
  • CPU 模式也可运行,但速度较慢

Ollama 提供了一键安装脚本,适用于所有主流 Linux 发行版:

Terminal window
curl -fsSL https://ollama.com/install.sh | sh

安装完成后,Ollama 会自动注册为 systemd 服务并启动。验证安装:

Terminal window
ollama --version

检查服务状态:

Terminal window
sudo systemctl status ollama

如果服务器无法访问外网,可以手动安装:

Terminal window
# 下载对应架构的二进制文件
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
# 解压到 /usr 目录
sudo tar -C /usr -xzf ollama-linux-amd64.tgz
# 验证
ollama --version

创建专用用户和组:

Terminal window
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

Ollama 使用类似 Docker 的方式管理模型。使用 ollama pull 拉取模型。

Terminal window
# 拉取 Meta Llama 3.1 8B(约 4.7 GB)
ollama pull llama3.1
# 拉取阿里通义千问 Qwen2.5 7B(约 4.7 GB)
ollama pull qwen2.5
# 拉取 Google Gemma 2 9B(约 5.4 GB)
ollama pull gemma2
# 拉取更小的模型,适合低配机器
ollama pull llama3.2:3b
ollama pull qwen2.5:1.5b

查看已下载的模型列表:

Terminal window
ollama list

删除不需要的模型:

Terminal window
ollama rm llama3.1
Terminal window
# 启动交互式对话
ollama run llama3.1

进入对话后直接输入问题即可。输入 /bye 退出对话。

Terminal window
# 通过管道传入问题
echo "用一句话解释什么是 Linux" | ollama run qwen2.5

在交互模式中,使用 """ 开始和结束多行输入:

>>> """
请将以下内容翻译为英文:
Ollama 是一个强大的本地大模型框架。
"""

Ollama 默认在 http://localhost:11434 提供 REST API 服务。

Terminal window
curl http://localhost:11434/api/generate -d '{
"model": "qwen2.5",
"prompt": "请解释 Linux 中的 SELinux 是什么",
"stream": false
}'
Terminal window
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5",
"messages": [
{
"role": "system",
"content": "你是一个 Linux 系统管理专家。"
},
{
"role": "user",
"content": "如何查看 CentOS 的系统版本?"
}
],
"stream": false
}'

Ollama 同时提供兼容 OpenAI API 格式的接口,方便对接已有工具:

Terminal window
curl http://localhost:11434/v1/chat/completions -d '{
"model": "qwen2.5",
"messages": [
{"role": "user", "content": "你好"}
]
}'

这意味着你可以将 Ollama 作为 OpenAI API 的替代后端,只需将 API 地址指向 http://localhost:11434/v1

Terminal window
curl http://localhost:11434/api/tags

安装脚本会自动创建 systemd 服务。如果你是手动安装的,需要自行创建服务文件:

Terminal window
sudo tee /etc/systemd/system/ollama.service > /dev/null <<'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="HOME=/usr/share/ollama"
Environment="OLLAMA_HOST=0.0.0.0"
[Install]
WantedBy=default.target
EOF

启用并启动服务:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now ollama

常用服务管理命令:

Terminal window
# 查看状态
sudo systemctl status ollama
# 查看日志
sudo journalctl -u ollama -f
# 重启服务
sudo systemctl restart ollama
# 停止服务
sudo systemctl stop ollama

通过 systemd 的 override 机制修改配置:

Terminal window
sudo systemctl edit ollama

在编辑器中添加需要的环境变量:

[Service]
# 监听所有网络接口(默认仅 localhost)
Environment="OLLAMA_HOST=0.0.0.0"
# 修改模型存储目录
Environment="OLLAMA_MODELS=/data/ollama/models"
# 设置并发请求数
Environment="OLLAMA_NUM_PARALLEL=4"
# 设置最大已加载模型数量
Environment="OLLAMA_MAX_LOADED_MODELS=2"

修改后重新加载并重启:

Terminal window
sudo systemctl daemon-reload
sudo systemctl restart ollama

Ollama 会自动检测 NVIDIA GPU 并使用 CUDA 加速。前提是已正确安装 NVIDIA 驱动。

Terminal window
# 检查 NVIDIA 驱动
nvidia-smi
# 检查 Ollama 是否识别到 GPU
ollama ps

运行一个模型后,通过 nvidia-smi 可以看到 GPU 显存被占用:

Terminal window
# 先运行模型
ollama run llama3.1 "hello" && nvidia-smi

如果有多块 GPU,可以通过环境变量指定使用哪些:

Terminal window
sudo systemctl edit ollama
[Service]
# 仅使用 GPU 0 和 GPU 1
Environment="CUDA_VISIBLE_DEVICES=0,1"

如果你有 GPU 但希望强制使用 CPU 运行:

Terminal window
CUDA_VISIBLE_DEVICES="" ollama run llama3.1

你可以通过 Modelfile 创建自定义模型配置:

Terminal window
cat > ~/Modelfile <<'EOF'
FROM qwen2.5
SYSTEM """
你是一名资深 Linux 系统管理员,专门负责 CentOS/AlmaLinux/Rocky Linux 服务器运维。
回答问题时请给出具体的命令和步骤。
"""
PARAMETER temperature 0.3
PARAMETER num_ctx 4096
EOF
# 创建自定义模型
ollama create linux-assistant -f ~/Modelfile
# 运行自定义模型
ollama run linux-assistant

如果需要从其他机器访问 Ollama API,需要开放端口:

Terminal window
sudo firewall-cmd --permanent --add-port=11434/tcp
sudo firewall-cmd --reload

可以设置代理加速下载:

Terminal window
sudo systemctl edit ollama
[Service]
Environment="HTTPS_PROXY=http://your-proxy:7890"
Environment="HTTP_PROXY=http://your-proxy:7890"
Environment="NO_PROXY=localhost,127.0.0.1"

如果遇到 OOM(内存不足),可以尝试使用更小的量化模型:

Terminal window
# 使用 4-bit 量化的小模型
ollama pull llama3.2:3b
ollama pull qwen2.5:1.5b
Terminal window
ollama show llama3.1
ollama show llama3.1 --modelfile