⚡ AI 工程实践

从模型训练到生产环境 —— 部署、监控、Agent 开发与工程化落地

AI 工程概览

AI 工程(AI Engineering)是将 AI 模型从实验阶段推向生产环境的系统工程。涵盖模型部署、服务化、监控、数据管道、Agent 开发等多个环节。一个 AI 产品的成功,往往 80% 的工作在工程落地。

💡 AI 工程师的核心挑战

不只是「模型跑通」,而是要解决:高并发低延迟的推理服务、稳定可靠的线上表现、可观测可调试的系统行为、持续迭代的模型更新流程。

模型部署方案

将训练好的模型部署为可调用的服务,是 AI 工程的第一步。

推理引擎对比

引擎 特点 适用场景 性能
vLLM PagedAttention、连续批处理、张量并行 LLM 高并发推理 ⭐⭐⭐⭐⭐
TGI HuggingFace 官方推理服务器 HuggingFace 模型部署 ⭐⭐⭐⭐
Ollama 一键本地运行,OpenAI 兼容 API 个人开发、快速验证 ⭐⭐⭐
llama.cpp 纯 C/C++,CPU/Metal 推理 边缘设备、Mac 本地 ⭐⭐⭐
TensorRT-LLM NVIDIA 官方优化,极致性能 NVIDIA GPU 生产部署 ⭐⭐⭐⭐⭐
Triton 多框架支持、动态批处理 多模型混合部署 ⭐⭐⭐⭐

vLLM 部署实战

# 安装
pip install vllm

# 启动 OpenAI 兼容 API 服务
python -m vllm.entrypoints.openai.api_server \
    --model Qwen/Qwen2.5-7B-Instruct \
    --host 0.0.0.0 \
    --port 8000 \
    --tensor-parallel-size 2 \        # 2 卡张量并行
    --gpu-memory-utilization 0.9 \
    --max-model-len 8192 \
    --enable-prefix-caching           # 启用前缀缓存

# 调用(兼容 OpenAI SDK)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="none")

response = client.chat.completions.create(
    model="Qwen/Qwen2.5-7B-Instruct",
    messages=[{"role": "user", "content": "你好"}]
)

Docker 容器化部署

# Dockerfile 示例
FROM vllm/vllm-openai:latest

ENV MODEL_NAME=Qwen/Qwen2.5-7B-Instruct
ENV PORT=8000

EXPOSE 8000

ENTRYPOINT python -m vllm.entrypoints.openai.api_server \
    --model $MODEL_NAME \
    --host 0.0.0.0 \
    --port $PORT \
    --gpu-memory-utilization 0.9

# 构建与运行
docker build -t llm-service .
docker run --gpus all -p 8000:8000 llm-service

MLOps 工程体系

MLOps 是将 DevOps 理念应用到 AI 项目的工程实践,实现模型开发、测试、部署、监控的自动化。

MLOps 核心组件

📊 实验管理

记录每次实验的超参数、指标、模型文件。工具:Weights & Biases、MLflow、Neptune。

📦 模型注册

统一管理模型版本、元数据、依赖。工具:MLflow Model Registry、HuggingFace Hub。

🔄 CI/CD 流水线

自动化测试、构建、部署。工具:GitHub Actions、GitLab CI、Jenkins。

📈 监控告警

监控模型性能漂移、推理延迟、错误率。工具:Prometheus + Grafana、Evidently AI。

模型版本管理

# 使用 MLflow 管理模型版本
import mlflow

mlflow.set_tracking_uri("http://localhost:5000")

with mlflow.start_run(run_name="qwen2-lora-medical"):
    # 记录超参数
    mlflow.log_params({
        "model": "Qwen2.5-7B",
        "method": "LoRA",
        "rank": 16,
        "learning_rate": 2e-4,
        "epochs": 3,
        "train_samples": 5000,
    })

    # 记录指标
    mlflow.log_metrics({
        "eval_loss": 0.42,
        "eval_accuracy": 0.89,
        "train_loss": 0.38,
    })

    # 注册模型
    mlflow.register_model(
        "runs:/current/model",
        "qwen2-medical-qa"
    )

AI Agent 开发

AI Agent 是能够自主规划、使用工具、执行多步任务的智能体。从「被动回答」到「主动行动」的范式升级。

Agent 核心架构

# Agent 的核心循环
while task not completed:
    # 1. 思考(Reasoning)
    thought = llm.think(task, memory, observations)

    # 2. 决策(Planning)
    action = llm.decide(thought, available_tools)

    # 3. 执行(Action)
    result = execute(action)

    # 4. 观察(Observation)
    memory.update(thought, action, result)

    # 5. 判断是否完成
    if is_task_done(result):
        return final_answer

主流 Agent 框架

框架 特点 适合场景
LangChain 生态最丰富,模块化组件多 RAG、对话机器人、工具链
LangGraph 图结构编排,支持复杂工作流 多步骤、有状态的 Agent
CrewAI 多 Agent 协作,角色扮演 多角色协作的复杂任务
AutoGen 微软出品,多 Agent 对话 代码生成、分析任务
Dify 低代码平台,可视化编排 快速构建 AI 应用

LangChain Agent 实战

from langchain_openai import ChatOpenAI
from langchain.agents import tool, AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate

# 定义工具
@tool
def search_web(query: str) -> str:
    """搜索互联网获取最新信息"""
    # 实际调用搜索 API
    return f"搜索结果:{query} 的相关信息..."

@tool
def calculate(expression: str) -> str:
    """计算数学表达式"""
    return str(eval(expression))

# 创建 Agent
llm = ChatOpenAI(model="gpt-4", temperature=0)
tools = [search_web, calculate]
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个智能助手,可以使用工具来帮助用户。"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])

agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)

# 运行
result = executor.invoke({
    "input": "北京今天气温多少度?比上海高几度?"
})
# Agent 会自动:1.搜索北京气温 2.搜索上海气温 3.计算差值

向量数据库

向量数据库是 RAG 系统和语义搜索的核心基础设施,专门用于存储和检索高维向量(Embedding)。

主流向量数据库对比

数据库 部署方式 特点 适合规模
Milvus 自建 / 云 功能最全,分布式架构 大规模生产
Qdrant 自建 / 云 Rust 实现,性能优秀 中大规模
Weaviate 自建 / 云 内置向量化模块 中大规模
Pinecone 纯云托管 零运维,开箱即用 快速上手
Chroma 嵌入式 轻量级,Python 原生 开发 / 小规模
pgvector PostgreSQL 插件 复用现有 PG 基础设施 已有 PG 的项目

RAG 系统实战

from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA

# 1. 文档加载与切分
splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
)
chunks = splitter.split_documents(documents)

# 2. 向量化并存入数据库
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    chunks, embeddings, persist_directory="./chroma_db"
)

# 3. 构建 RAG 链
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4"),
    retriever=vectorstore.as_retriever(
        search_type="similarity",
        search_kwargs={"k": 5},       # 检索 top-5
    ),
    return_source_documents=True,
)

# 4. 查询
result = qa_chain.invoke({"query": "公司的年假政策是什么?"})
print(result["result"])

监控与可观测性

AI 系统上线后,持续监控是保证质量的关键。

需要监控的指标

LLM 应用监控工具

🔍 LangSmith

LangChain 官方追踪平台,可视化 Agent 执行链路,调试 Prompt。

📊 Phoenix (Arize)

开源 LLM 可观测性平台,追踪调用、评估质量、检测幻觉。

📈 Grafana + Prometheus

通用监控方案,自定义指标采集和可视化,适合基础设施监控。

🧪 Braintrust

AI 产品评估平台,A/B 测试、回归测试、Prompt 版本管理。

AI 应用架构模式

常见架构模式

成本优化策略

# 1. 模型路由:简单问题用小模型,复杂问题用大模型
def route_request(user_input):
    if is_simple_query(user_input):
        return call_small_model(user_input)    # 成本低
    else:
        return call_large_model(user_input)    # 效果好

# 2. 语义缓存:相似问题复用历史回答
def get_response(query):
    cached = vector_store.search(query, threshold=0.95)
    if cached:
        return cached.answer    # 命中缓存
    return generate_new(query)  # 未命中,调用模型

# 3. Prompt 缓存:固定前缀自动缓存(vLLM/OpenAI)
# 4. 批处理:非实时任务合并为 Batch API(节省 50%)

🚀 工程实践建议

先跑通最小可行产品(MVP)→ 建立评估体系 → 逐步优化工程细节。不要一开始就追求完美架构,但也别忽视监控和可观测性——看不到问题比有问题更危险