面向本地大语言模型(LLM)基础设施团队的运维工具,实现完整评分拆分的请求追踪,按应用通过请求标签进行使用分析。
AI DevOps工具包 — 本地AI Fleets的可观察性.是一项面向实际任务的技能,主要用于DevOps 用于运行本地LLM 推论的工具, 生产质量;这种 DevOps 技能提供了可观察性、可追踪性和保健 mo。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
面向生产级本地 LLM 推理运行的 DevOps 工具集。本 DevOps 技能为 Ollama Herd 集群提供可观测性、链路追踪与健康监控能力。所有 DevOps 工作流——从请求追踪到容量规划——均统一经由一个基于 SQLite 的可观测性栈执行。
pip install ollama-herd
herd # 启动 DevOps 路由器(暴露全部 DevOps 可观测性端点)
herd-node # 在每个受 DevOps 监控的节点上启动
包名:ollama-herd | 仓库地址:github.com/geeks-accelerator/ollama-herd
本 DevOps 工具套件假设您已在 http://localhost:11435 运行一个 Ollama Herd 路由器,并且一个或多个节点代理正在向其上报状态。其聚焦于 DevOps 运维层面问题:请求是否成功?哪里变慢了?哪些应用消耗最多 token?节点是否健康?容量是否充足?
本 DevOps 可观测性层的所有数据均持久化至 SQLite 数据库 ~/.fleet-manager/latency.db。无需外部数据库,亦无需时序基础设施。可直接使用标准 sqlite3 查询 DevOps 追踪数据。
~/.fleet-manager/
├── latency.db # DevOps 追踪记录、延迟历史、用量统计
└── logs/
└── herd.jsonl # DevOps 结构化日志,按天轮转,保留 30 天
devops_health=$(curl -s http://localhost:11435/dashboard/api/health)
echo "$devops_health" | python3 -m json.tool
共包含十五项 DevOps 检查,每项返回严重等级(info/warning/critical)及对应建议:
| DevOps 检查项 | 检测内容 |
|---|---|
| 离线节点 | 停止发送心跳信号的节点 |
| 降级节点 | 上报错误或内存压力过高的节点 |
| 内存压力 | 接近内存上限的节点 |
| 低利用率节点 | 健康但未接收任何流量的节点 |
| VRAM 回退 | 为避免冷加载而将请求重路由至已加载替代模型 |
| 版本不匹配 | 节点运行版本与路由器不一致 |
| 上下文保护 | 已移除 num_ctx 值,或已升级模型以防止重复加载 |
| Zombie reaper | 清理卡住的进行中请求 |
| 模型抖动 | 模型频繁加载/卸载(内存争用) |
| 请求超时 | 请求延迟超出预设 DevOps 延迟阈值 |
| 错误率 | 各模型或各节点错误率异常升高 |
devops_fleet_status=$(curl -s http://localhost:11435/fleet/status)
echo "$devops_fleet_status" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"DevOps 集群:{d['fleet']['nodes_online']}/{d['fleet']['nodes_total']} 在线,{d['fleet']['requests_active']} 个活跃请求\")
for n in d['nodes']:
mem = n.get('memory', {})
cpu = n.get('cpu', {})
print(f\" {n['node_id']:20s} {n['status']:10s} CPU={cpu.get('utilization_pct',0):.0f}% MEM={mem.get('used_gb',0):.0f}/{mem.get('total_gb',0):.0f}GB pressure={mem.get('pressure','?')}\")
"
每次 DevOps 路由决策均被完整记录,并附带完整的可观测性上下文。
devops_traces=$(curl -s "http://localhost:11435/dashboard/api/traces?limit=20")
echo "$devops_traces" | python3 -m json.tool
每条 DevOps 追踪记录包含以下字段:request_id、model、original_model(回退前原始模型)、node_id、score、scores_breakdown(全部 7 项评分信号)、status、latency_ms、time_to_first_token_ms、prompt_tokens、completion_tokens、retry_count、fallback_used、tags。
# 近期 DevOps 失败请求及其错误详情
sqlite3 ~/.fleet-manager/latency.db "SELECT request_id, model, node_id, error_message, latency_ms/1000.0 as secs, datetime(timestamp, 'unixepoch', 'localtime') as time FROM request_traces WHERE status='failed' ORDER BY timestamp DESC LIMIT 20"
# DevOps 重试频率 —— 哪些节点需重点关注?
sqlite3 ~/.fleet-manager/latency.db "SELECT node_id, SUM(retry_count) as retries, COUNT(*) as total, ROUND(100.0 * SUM(CASE WHEN status='failed' THEN 1 ELSE 0 END) / COUNT(*), 1) as fail_pct FROM request_traces GROUP BY node_id ORDER BY fail_pct DESC"
# DevOps 回退频率 —— 哪些模型不可靠?
sqlite3 ~/.fleet-manager/latency.db "SELECT original_model, model as fell_back_to, COUNT(*) as n FROM request_traces WHERE fallback_used=1 GROUP BY original_model, model ORDER BY n DESC"
# DevOps 各模型 P50/P75/P99 延迟
sqlite3 ~/.fleet-manager/latency.db "
WITH ranked AS (
SELECT model, latency_ms,
PERCENT_RANK() OVER (PARTITION BY model ORDER BY latency_ms) as pct
FROM request_traces WHERE status='completed'
)
SELECT model,
ROUND(MIN(CASE WHEN pct >= 0.5 THEN latency_ms END)/1000.0, 1) as p50_s,
ROUND(MIN(CASE WHEN pct >= 0.75 THEN latency_ms END)/1000.0, 1) as p75_s,
ROUND(MIN(CASE WHEN pct >= 0.99 THEN latency_ms END)/1000.0, 1) as p99_s,
COUNT(*) as n
FROM ranked GROUP BY model HAVING n > 10 ORDER BY p75_s DESC
"
# DevOps 首 Token 时间可观测性(冷加载检测)
sqlite3 ~/.fleet-manager/latency.db "SELECT node_id, model, ROUND(AVG(time_to_first_token_ms), 0) as avg_ttft_ms, ROUND(MAX(time_to_first_token_ms), 0) as max_ttft_ms, COUNT(*) as n FROM request_traces WHERE time_to_first_token_ms IS NOT NULL GROUP BY node_id, model HAVING n > 5 ORDER BY avg_ttft_ms DESC"
# DevOps 异常值检测 —— 最慢请求
sqlite3 ~/.fleet-manager/latency.db "SELECT request_id, model, node_id, ROUND(latency_ms/1000.0, 1) as secs, prompt_tokens, completion_tokens, retry_count, datetime(timestamp, 'unixepoch', 'localtime') as time FROM request_traces WHERE status='completed' ORDER BY latency_ms DESC LIMIT 10"
通过打标(tag)请求,实现对 DevOps 使用情况按应用、团队或环境的追踪。
# DevOps 通过请求体打标
curl -s http://localhost:11435/v1/chat/completions
-H "Content-Type: application/json"
-d '{"model":"llama3.3:70b","messages":[{"role":"user","content":"Hello"}],"metadata":{"tags":["devops-prod","devops-code-review"]}}'
# DevOps 通过请求头打标
curl -s -H "X-Herd-Tags: devops-prod, devops-code-review"
http://localhost:11435/v1/chat/completions
-d '{"model":"llama3.3:70b","messages":[{"role":"user","content":"Hello"}]}'
curl -s http://localhost:11435/dashboard/api/apps | python3 -m json.tool
curl -s http://localhost:11435/dashboard/api/apps/daily | python3 -m json.tool
sqlite3 ~/.fleet-manager/latency.db "SELECT j.value as devops_tag, COUNT(*) as requests, SUM(COALESCE(prompt_tokens,0)) as prompt_tok, SUM(COALESCE(completion_tokens,0)) as completion_tok, SUM(COALESCE(prompt_tokens,0)+COALESCE(completion_tokens,0)) as total_tok FROM request_traces, json_each(tags) j WHERE tags IS NOT NULL GROUP BY j.value ORDER BY total_tok DESC"
# DevOps 每小时请求数(识别峰值负载时段)
sqlite3 ~/.fleet-manager/latency.db "SELECT CAST((timestamp % 86400) / 3600 AS INTEGER) as hour_utc, COUNT(*) as requests, ROUND(AVG(latency_ms)/1000.0, 1) as avg_secs FROM request_traces GROUP BY hour_utc ORDER BY hour_utc"
# DevOps 日度请求总量
sqlite3 ~/.fleet-manager/latency.db "SELECT date(timestamp, 'unixepoch') as day, COUNT(*) as requests, SUM(COALESCE(prompt_tokens,0)+COALESCE(completion_tokens,0)) as tokens FROM request_traces GROUP BY day ORDER BY day DESC LIMIT 14"
devops_recommendations=$(curl -s http://localhost:11435/dashboard/api/recommendations)
echo "$devops_recommendations" | python3 -m json.tool
返回基于硬件能力、当前使用情况及精选基准测试数据生成的 DevOps 推荐结果。适用于 DevOps 容量规划场景:哪些模型适配哪些机器?最优组合是什么?
curl -s http://localhost:11435/dashboard/api/usage | python3 -m json.tool
# 查看全部 DevOps 设置项
curl -s http://localhost:11435/dashboard/api/settings | python3 -m json.tool
# 动态切换 DevOps 运行时配置
curl -s -X POST http://localhost:11435/dashboard/api/settings
-H "Content-Type: application/json"
-d '{"auto_pull": false}'
结构化 JSONL 日志位于 ~/.fleet-manager/logs/herd.jsonl —— DevOps 日志层:
# 近期 DevOps 错误日志
grep '"level": "ERROR"' ~/.fleet-manager/logs/herd.jsonl | tail -10 | python3 -m json.tool
# DevOps 上下文保护事件
grep "Context protection" ~/.fleet-manager/logs/herd.jsonl | tail -10
# DevOps 流式响应错误
grep "Stream error" ~/.fleet-manager/logs/herd.jsonl | tail -10
Web 仪表盘地址:http://localhost:11435/dashboard。核心 DevOps 标签页包括:
~/.fleet-manager/ 下任意内容。herd 或 uv run herd。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.6万人学习
共89课时 | 133.1万人学习
共49课时 | 82万人学习
最新文章