高级机器学习工程师
生产机器学习工程模式,用于模型部署、MLOps基础设施和大型语言模型(LLM)集成。
目录
模型部署工作流
将训练好的模型部署到生产环境,并进行监控:
- 将模型导出为标准化格式(ONNX、TorchScript、SavedModel)
- 将模型及其依赖项打包到Docker容器中
- 部署到暂存环境
- 对暂存环境进行集成测试
- 将流量的5%部署到生产环境
- 监控1小时的延迟和错误率
- 如果指标通过,则推广到全面生产
- 验证: p95延迟<100ms,错误率<0.1%
容器模板
FROM python:3.11-slim
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY model/ /app/model/
COPY src/ /app/src/
HEALTHCHECK CMD curl -f http://localhost:8080/health || exit 1
EXPOSE 8080
CMD ["uvicorn", "src.server:app", "--host", "0.0.0.0", "--port", "8080"]
服务选项
| 选项 | 延迟 | 吞吐量 | 用例 |
|---|---|---|---|
| FastAPI + Uvicorn | 低 | 中等 | REST API,小型模型 |
| Triton推理服务器 | 非常低 | 非常高 | GPU推理,批处理 |
| TensorFlow Serving | 低 | 高 | TensorFlow模型 |
| TorchServe | 低 | 高 | PyTorch模型 |
| Ray Serve | 中等 | 高 | 复杂管道,多模型 |
MLOps管道设置
建立自动化训练和部署:
- 为训练数据配置特征存储(Feast、Tecton)
- 设置实验跟踪(MLflow、Weights & Biases)
- 创建带有超参数日志记录的训练管道
- 在模型注册表中注册模型,并带有版本元数据
- 配置由注册表事件触发的暂存部署
- 设置A/B测试基础设施以比较模型
- 启用漂移监控和警报
- 验证: 新模型自动与基线评估
特征存储模式
from feast import Entity, Feature, FeatureView, FileSource
user = Entity(name="user_id", value_type=ValueType.INT64)
user_features = FeatureView(
name="user_features",
entities=["user_id"],
ttl=timedelta(days=1),
features=[
Feature(name="purchase_count_30d", dtype=ValueType.INT64),
Feature(name="avg_order_value", dtype=ValueType.FLOAT),
],
online=True,
source=FileSource(path="data/user_features.parquet"),
)
重新训练触发器
| 触发器 | 检测 | 动作 |
|---|---|---|
| 预定 | Cron(每周/每月) | 完全重新训练 |
| 性能下降 | 准确度<阈值 | 立即重新训练 |
| 数据漂移 | PSI>0.2 | 评估后重新训练 |
| 新数据量 | X新样本 | 增量更新 |
LLM集成工作流
将LLM API集成到生产应用程序中:
- 为供应商灵活性创建提供商抽象层
- 实现带有指数退避的重试逻辑
- 配置回退到次要提供商
- 设置令牌计数和上下文截断
- 为重复查询添加响应缓存
- 实施每请求成本跟踪
- 添加结构化输出验证与Pydantic
- 验证: 响应正确解析,成本在预算内
提供商抽象
from abc import ABC, abstractmethod
from tenacity import retry, stop_after_attempt, wait_exponential
class LLMProvider(ABC):
@abstractmethod
def complete(self, prompt: str, **kwargs) -> str:
pass
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=10))
def call_llm_with_retry(provider: LLMProvider, prompt: str) -> str:
return provider.complete(prompt)
成本管理
| 提供商 | 输入成本 | 输出成本 |
|---|---|---|
| GPT-4 | $0.03/1K | $0.06/1K |
| GPT-3.5 | $0.0005/1K | $0.0015/1K |
| Claude 3 Opus | $0.015/1K | $0.075/1K |
| Claude 3 Haiku | $0.00025/1K | $0.00125/1K |
RAG系统实现
构建检索增强生成管道:
- 选择向量数据库(Pinecone、Qdrant、Weaviate)
- 根据质量/成本权衡选择嵌入模型
- 实施文档分块策略
- 创建带有元数据提取的摄取管道
- 构建带有查询嵌入的检索
- 添加重新排名以提高相关性
- 格式化上下文并发送到LLM
- 验证: 响应引用检索到的上下文,无幻觉
向量数据库选择
| 数据库 | 托管 | 规模 | 延迟 | 最适合 |
|---|---|---|---|---|
| Pinecone | 托管 | 高 | 低 | 生产,托管 |
| Qdrant | 两者 | 高 | 非常低 | 性能关键 |
| Weaviate | 两者 | 高 | 低 | 混合搜索 |
| Chroma | 自托管 | 中等 | 低 | 原型制作 |
| pgvector | 自托管 | 中等 | 中等 | 现有Postgres |
分块策略
| 策略 | 块大小 | 重叠 | 最适合 |
|---|---|---|---|
| 固定 | 500-1000个令牌 | 50-100 | 一般文本 |
| 句子 | 3-5句话 | 1句话 | 结构化文本 |
| 语义 | 可变 | 基于含义 | 研究论文 |
| 递归 | 层次结构 | 父子 | 长文档 |
模型监控
监控生产模型的漂移和退化:
- 设置延迟跟踪(p50、p95、p99)
- 配置错误率警报
- 实施输入数据漂移检测
- 跟踪预测分布变化
- 在可用时记录真实情况
- 使用A/B指标比较模型版本
- 设置自动重新训练触发器
- 验证: 在用户可见退化之前触发警报
漂移检测
from scipy.stats import ks_2samp
def detect_drift(reference, current, threshold=0.05):
statistic, p_value = ks_2samp(reference, current)
return {
"drift_detected": p_value < threshold,
"ks_statistic": statistic,
"p_value": p_value
}
警报阈值
| 指标 | 警告 | 严重 |
|---|---|---|
| p95延迟 | >100ms | >200ms |
| 错误率 | >0.1% | >1% |
| PSI(漂移) | >0.1 | >0.2 |
| 准确度下降 | >2% | >5% |
参考文档
MLOps生产模式
references/mlops_production_patterns.md包含:
- 带有Kubernetes清单的模型部署管道
- Feast示例的特征存储架构
- 带有漂移检测代码的模型监控
- 带有流量分割的A/B测试基础设施
- 带有MLflow的自动重新训练管道
LLM集成指南
references/llm_integration_guide.md包含:
- 提供商抽象层模式
- 带有tenacity的重试和回退策略
- 少量样本、CoT的提示工程模板
- 使用tiktoken进行令牌优化
- 成本计算和跟踪
RAG系统架构
references/rag_system_architecture.md包含:
- 带有代码的RAG管道实现
- 向量数据库比较和集成
- 分块策略(固定、语义、递归)
- 嵌入模型选择指南
- 混合搜索和重新排名模式
工具
模型部署管道
python scripts/model_deployment_pipeline.py --model model.pkl --target staging
生成部署工件:Dockerfile、Kubernetes清单、健康检查。
RAG系统构建器
python scripts/rag_system_builder.py --config rag_config.yaml --analyze
带有向量存储集成和检索逻辑的RAG管道搭建。
ML监控套件
python scripts/ml_monitoring_suite.py --config monitoring.yaml --deploy
设置漂移检测、警报和性能仪表板。
技术栈
| 类别 | 工具 |
|---|---|
| ML框架 | PyTorch、TensorFlow、Scikit-learn、XGBoost |
| LLM框架 | LangChain、LlamaIndex、DSPy |
| MLOps | MLflow、Weights & Biases、Kubeflow |
| 数据 | Spark、Airflow、dbt、Kafka |
| 部署 | Docker、Kubernetes、Triton |
| 数据库 | PostgreSQL、BigQuery、Pinecone、Redis |