LLMOps综述
1. LLMOps vs 传统MLOps
1.1 什么是LLMOps
LLMOps(Large Language Model Operations)是MLOps在大语��模型时代的演进,专注于LLM应用���开发、部署和维护。
1.2 核心差异
| 维度 | 传统MLOps | LLMOps |
|---|---|---|
| 模型开发 | 从头训练/微调 | Prompt工程/RAG/微调 |
| 数据管理 | 训练数据+特征 | Prompt模板+知识库+对话历史 |
| 版本控制 | 模型权重+代码 | +Prompt版本+上下文配置 |
| 评估方式 | 固定指标(准确率等) | +主观质量+安全性+幻觉检测 |
| 成本结构 | 训练为主 | 推理成本显著(按token计费) |
| 部署方式 | 模型文件部署 | API调用/自部署模型服务 |
| 监控重点 | 数据漂移/模型退化 | +幻觉监控+Prompt注入检测+成本追踪 |
| 迭代速度 | 周/月级别 | 分钟/小时级别(Prompt修改) |
1.3 LLMOps的新增挑战
- Prompt管理: 如何版本化、测试、优化Prompt
- 上下文管理: RAG知识库维护、上下文窗口优化
- 成本控制: Token使用追踪、模型选择策略
- 评估困难: 开放式生成难以自动评估
- 安全治理: Prompt注入防御、输出安全过滤
2. LLM应用开发生命周期
2.1 生命周期概览
graph LR
A[原型开发] --> B[评估测试]
B --> C[部署上线]
C --> D[监控运维]
D --> E[迭代优化]
E --> A
A --> |Prompt设计| A1[System Prompt]
A --> |RAG构建| A2[知识库]
A --> |模型选择| A3[API/开源模型]
B --> |自动评估| B1[基准测试]
B --> |人工评估| B2[标注团队]
B --> |安全测试| B3[���队测试]
C --> |策略| C1[A/B测试]
C --> |策略| C2[金丝雀发布]
D --> |指���| D1[质量/延迟/成本]
D --> |告警| D2[幻觉/注入/异常]
2.2 阶段一:原型开发
关键活动:
- 问题分析和方案选择
- Prompt设计和迭代
- RAG系统构建(如需要)
- 模型选择(API vs 开源)
- 功能验证
工具选择:
- Playground: OpenAI Playground, Anthropic Console
- 开发框架: LangChain, LlamaIndex
- 快速原型: Streamlit, Gradio
2.3 阶段二:评估测试
评估维度:
- 功能正确性
- 输出质量(流畅性、相关性)
- 安全性(幻觉、偏见、有害内容)
- 性能(延迟、吞吐量)
- 成本
评估方法:
- 自动评估: RAGAS, DeepEval, Promptfoo
- LLM-as-Judge: 用强模型评估弱模型输出
- 人工评估: 标注团队打分
- 红队测试: 安全专家攻击测试
2.4 阶段三:部署上线
部署策略:
- 影子部署 → A/B测试 → 金丝雀 → 全量发布
- 详见 AB测试与上线
2.5 阶段四:监控运维
监控指标:
- 质��指标: 用户满意度、回答准确性
- 性能指标: 延迟(TTFT、总延迟)、吞吐量
- 成本指标: Token用量、API调用费用
- 安全指标: 幻觉率、注入攻击检测
2.6 阶段五:迭代优化
优化方向:
- Prompt优��: 根据失败案例改进Prompt
- 知识库更新: 添加/更新RAG文档
- 模型升级: 切换到更新/更好的模型
- 架构优���: 调整Pipeline各环节
3. 关键差异详解
3.1 Prompt管理
传统ML没有"Prompt"的概念,而LLMOps中Prompt是核心资产:
Prompt版本管理:
v1.0: 基础版Prompt → 质量: 72%
v1.1: 添加Few-shot示例 → 质量: 78%
v1.2: 优化System Prompt → 质量: 82%
v1.3: 添加输出格式约束 → 质量: 85%
3.2 上下文管理
上下文窗口优化:
- 系统Prompt: ~500 tokens(固定)
- Few-shot示例: ~1000 tokens(根据任务动态)
- RAG上下文: ~2000 tokens(检索结���)
- 对话历史: ~1000 tokens(滑动窗口)
- 用户输入: ~500 tokens
- 留给输出: ~3000 tokens
总计: ~8000 tokens
3.3 成本控制
# Token用量追踪
class TokenTracker:
def track_usage(self, request_id, model, prompt_tokens, completion_tokens):
cost = self.calculate_cost(model, prompt_tokens, completion_tokens)
self.db.insert({
"request_id": request_id,
"model": model,
"prompt_tokens": prompt_tokens,
"completion_tokens": completion_tokens,
"cost": cost,
"timestamp": datetime.now(),
})
def calculate_cost(self, model, prompt_tokens, completion_tokens):
rates = {
"gpt-4": {"input": 0.03/1000, "output": 0.06/1000},
"gpt-3.5-turbo": {"input": 0.0005/1000, "output": 0.0015/1000},
}
rate = rates[model]
return prompt_tokens * rate["input"] + completion_tokens * rate["output"]
3.4 评估挑战
传统ML可以用准确率、F1等明确指标评估,LLM应用的评估更加复杂:
| 评估类型 | 方法 | 优点 | 缺点 |
|---|---|---|---|
| 基准测试 | MMLU, HumanEval等 | 标准化、可复现 | 不反映实际应用 |
| 自动指标 | BLEU, ROUGE | 快速、低成本 | 与人类判断相关性低 |
| LLM-as-Judge | GPT-4评分 | 可扩展、较准确 | 成本、偏差 |
| 人工评估 | 标注团队 | 最准确 | 慢、贵、不可扩展 |
| 用户反馈 | 点赞/踩 | 真实信号 | 稀疏、有偏差 |
4. LLMOps工具生态
4.1 开发框架
- LangChain: 最流行的LLM应用开发框架
- LlamaIndex: 专��于RAG的框架
- Semantic Kernel: 微软的LLM编排框架
- Haystack: 端到端NLP/LLM框架
4.2 评估工具
- RAGAS: RAG系统评估
- DeepEval: 通用LLM评估
- Promptfoo: Prompt测试和评估
- Trulens: 反馈驱动的评估
4.3 监控平台
- Langfuse: 开源LLM可观测性
- LangSmith: LangChain生态监控
- Helicone: LLM API代理和监控
- Phoenix: Arize出品的LLM可观测性
4.4 ��署工具
- vLLM: 高性能LLM推理
- TGI: Hugging Face推理服务
- Ollama: 本地LLM运行
- LiteLLM: 统一LLM API网关
5. 总结
LLMOps的核心理念:
- Prompt即代码: Prompt需要像代码一样管理
- 评估驱动: 建立持续评估机制
- 成本意识: 从第一天就追踪成本
- 安全优先: 在每个环节嵌入安全检查
- 快速迭代: 利用Prompt修改的低成本快速实验
graph TD
subgraph LLMOps核心循环
P[Prompt/RAG开发] --> E[评估]
E --> D[部署]
D --> M[监控]
M --> O[优化]
O --> P
end