大模型LLMOps实践:零基础搭建模型服务与监控流程
大模型LLMOps(Large Language Model Operations)是把大模型从实验环境推进到可稳定运行、可监控、可迭代的工程实践。
如果你刚开始接触,可以把它理解为:让模型服务像普通Web服务一样,有部署流程、有日志、有监控、有版本管理。
本文按零基础可操作的方式,带你走一遍最小可用的LLMOps流程。
先确认你的运行环境和前提条件
在开始之前,你需要一台能运行Docker的Linux服务器(Ubuntu 20.04/22.04或CentOS 7+均可),至少8GB内存(7B参数模型量化后运行的最低建议),并已安装Docker和Docker Compose。
检查命令如下:
docker --version
docker compose version
free -h
df -h
如果Docker未安装,可参考官方文档安装。
确认磁盘剩余空间大于20GB,用于存放模型文件和镜像。
另外,你需要一个可访问的模型文件,例如从Hugging Face下载的量化模型,或者使用Ollama等工具拉取。
本文以Ollama为例,因为它对零基础用户更友好。
部署模型推理服务
LLMOps的第一步是让模型能通过API被调用。
使用Ollama可以快速启动一个本地模型服务。
在服务器上执行:
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama
安装完成后,拉取一个轻量模型(例如qwen2:1.5b,适合测试):
ollama pull qwen2:1.5b
ollama run qwen2:1.5b "你好"
如果看到模型返回文本,说明推理服务已可用。
Ollama默认监听127.0.0.1:11434,为了后续通过Nginx或直接调用,可以修改监听地址为0.0.0.0:11434。
编辑服务配置:
systemctl edit ollama
在编辑器中加入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存后重启服务:
systemctl daemon-reload
systemctl restart ollama
ss -tlnp | grep 11434
看到监听0.0.0.0:11434即表示对外可访问。注意:直接暴露端口有安全风险,生产环境应通过防火墙限制来源IP或使用Nginx反向代理加认证。
配置日志与基础监控
LLMOps实践离不开可观测性。
至少需要收集服务日志和资源使用情况。
Ollama的日志可以通过journalctl查看:
journalctl -u ollama -f
为了长期保留日志,可以配置rsyslog或使用Docker日志驱动。
更简单的方式是使用docker run方式运行Ollama并指定日志选项,但本文以systemd服务为主,建议用journalctl --since today -u ollama > /var/log/ollama-$(date +%F).log做每日归档。
资源监控方面,安装htop和nmon可以快速查看CPU、内存和GPU使用率:
apt install htop nmon -y
nmon
如果服务器有NVIDIA GPU,使用nvidia-smi查看显存占用。
对于生产环境,建议部署Prometheus + Node Exporter采集指标,但零基础阶段先用系统工具确认资源瓶颈即可。
避坑指南:常见失败原因
- 模型拉取超时:国内网络访问Hugging Face或Ollama仓库可能缓慢,可配置镜像或手动下载模型文件放入
~/.ollama/models目录。 - 端口无法访问:检查防火墙
ufw status或firewall-cmd --list-ports,确保11434端口已放行,但不要对所有IP开放。 - 内存不足:运行模型时出现Killed,通常是OOM。用
dmesg | grep -i kill确认,然后换更小参数模型或增加swap(临时方案)。 - 服务启动失败:查看
journalctl -u ollama -n 50,常见原因是模型文件损坏或权限问题。
验证服务是否达到可用状态
完成以上步骤后,用curl调用API验证:
curl http://127.0.0.1:11434/api/generate -d '{
"model": "qwen2:1.5b",
"prompt": "用一句话解释LLMOps",
"stream": false
}'
预期返回JSON中包含response字段和生成的文本。
如果返回错误,根据错误信息检查模型名称是否正确、服务是否运行。
同时观察journalctl -u ollama -f是否有请求日志。
最后,你可以把上述命令整理成部署检查清单:服务状态、端口监听、API响应、日志无异常、资源占用在合理范围。
这套最小流程就是大模型LLMOps实践的起点,后续可以逐步加入版本管理、A/B测试和自动化评测。
常见疑问
问:LLMOps和MLOps有什么区别?
答:MLOps覆盖传统机器学习模型的全生命周期,LLMOps更聚焦大语言模型特有的问题,比如提示词管理、推理成本控制、输出质量评估和上下文长度处理。
问:没有GPU能实践LLMOps吗?
答:可以。使用量化后的小参数模型(如1.5B、7B的4-bit量化版)在CPU上也能运行,只是推理速度较慢,适合学习和流程验证。
问:模型服务需要暴露到公网吗?
答:不建议直接暴露。零基础阶段先在本地或内网调用,确需公网访问时,通过Nginx反向代理并配置API密钥或IP白名单。