Ollama 配合 ROCm 搭建本地 API 服务,私有化部署不求人
环境准备与驱动验证
在 AMD 显卡上搭建私有化大模型服务,最核心的基石是 ROCm 驱动环境的正确配置。很多开发者在这一步容易踩坑,往往是因为忽略了架构版本的匹配。如果你使用的是较新的 Radeon RX 7000 系列或 Instinct MI 系列,务必确认系统已安装 ROCm 6.0 及以上版本。
启动终端,首先通过 rocminfo 命令检查显卡是否被系统正确识别。如果输出中能看到你的 GPU 型号以及 Agent Type: GPU 字样,说明底层驱动工作正常。接下来是关键的变量配置,Ollama 默认可能优先寻找 NVIDIA 驱动,我们需要显式告诉它使用 HIP 后端。在 .bashrc 或 .zshrc 中加入以下导出命令:
export HSA_OVERRIDE_GFX_VERSION=11.0.0
export OLLAMA_HIP_VISIBLE_DEVICES=0
这里的 GFX_VERSION 需要根据你的具体卡型调整,例如 RX 7900XTX 通常对应 11.0.0,而更老的卡可能是 9.0.0 或 10.3.0。如果不确定,可以查阅 ROCm 官方文档或使用 rocm-smi 辅助判断。配置生效后,重启终端并尝试运行 ollama run llama3,如果能看到模型下载进度条且随后进入对话界面,恭喜你,最难的硬件适配关已经过了。
启动私有 API 服务
当命令行交互测试通过后,我们就可以将其转换为标准的 HTTP API 服务,供内网其他应用调用。Ollama 的设计非常简洁,它默认监听 127.0.0.1:11434,但为了能让局域网内的其他机器访问,我们需要绑定到 0.0.0.0。
使用以下命令后台启动服务:
OLLAMA_HOST=0.0.0.0:11434 ollama serve
建议配合 nohup 或 systemd 将其注册为系统服务,确保服务器重启后能自动拉起。例如创建一个简单的 systemd 配置文件 /etc/systemd/system/ollama.service,将执行路径指向上述命令,这样就能像管理 Nginx 或 MySQL 一样管理你的 AI 服务。
服务启动后,可以通过 curl 快速验证接口连通性:
curl http://localhost:11434/api/tags
如果返回了包含模型名称的 JSON 列表,说明服务已就绪。此时,你的 AMD 显卡正在全速运转,准备处理来自网络的推理请求。
API 调用实战示例
对于开发团队而言,接入这个私有服务非常简单,因为它完全兼容 OpenAI 的 API 格式(部分版本需开启兼容模式)或使用原生的 Ollama 接口。下面是一个基于 Python 的原生接口调用示例,展示了如何流式获取大模型的回复:
import requests
import json
url = "http://<your-server-ip>:11434/api/generate"
payload = {
"model": "llama3",
"prompt": "请简述 ROCm 在大模型推理中的优势。",
"stream": False
}
response = requests.post(url, json=payload)
if response.status_code == 200:
result = response.json()
print(result['response'])
else:
print(f"Error: {response.text}")
如果是构建复杂的 RAG(检索增强生成)应用,可以利用 Ollama 的上下文保持能力,在同一个会话中多次发送请求而无需重复传递历史记录,只需在 payload 中带上 context 字段即可。这种轻量级的交互方式,非常适合在内网部署智能客服、代码助手或知识库问答系统。
内网安全与防火墙配置
既然是私有化部署,安全性不容忽视。虽然我们将服务绑定到了 0.0.0.0,但这并不意味着要对整个互联网开放。大多数团队是在受信任的内网环境中使用,因此必须通过防火墙限制访问来源。
如果你使用的是 ufw(Ubuntu 默认防火墙),可以执行以下规则,仅允许特定网段(例如 192.168.1.0/24)访问 11434 端口:
sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp
sudo ufw enable
对于使用 firewalld 的 CentOS 或 Fedora 系统,逻辑类似,通过 --add-rich-rule 指定源 IP 范围。切记不要直接对公网开放该端口,除非你配置了反向代理(如 Nginx)并添加了严格的鉴权机制(如 API Key 验证或 Basic Auth)。此外,定期检查 Ollama 的日志文件(通常位于 /var/log/syslog 或通过 journalctl -u ollama 查看),监控是否有异常的访问尝试,也是运维的基本功。
通过这套方案,你可以利用现有的 AMD 硬件资源,零成本构建起一套完全可控、数据不出域的本地大模型 API 服务。无论是用于内部效率工具的开发,还是敏感数据的处理,这种“不求人”的部署方式都提供了极高的灵活性与安全感。
更多推荐

所有评论(0)