AI工程师转型路径16-分阶段学习资源全攻略(下)——工程化工具链与系统设计,从Docker到K8s到MLOps:AI工程化阶段的5大工具链全攻略

AI工程师转型路径16-分阶段学习资源全攻略(下)——工程化工具链与系统设计,从Docker到K8s到MLOps:AI工程化阶段的5大工具链全攻略
系列文章AI工程师转型路径 · 第16篇 | 关注我第一时间获取后续更新1、AI程序员系列文章2、AI面试系列文章3、AI编程系列文章 目录一、Demo跑通了然后呢二、工程化阶段全景图从能跑到能上线2.1 阶段划分逻辑4-6月的三级火箭2.2 工具链学习优先级总表三、Docker容器化AI工程的第一块砖3.1 为什么AI工程师必须会Docker3.2 Dockerfile模板AI项目标准镜像3.3 GPU容器--gpus all的正确姿势四、CI/CD流水线让训练和部署自动化4.1 GitHub Actions自动训练部署4.2 CI/CD流水线设计五、MLOps工具链实验跟踪数据版本模型管理5.1 MLflow实验跟踪四件套5.2 DVC数据版本控制5.3 Weights Biases可视化实验管理六、系统设计能力RAG架构多Agent编排模型服务化6.1 RAG系统架构设计6.2 多Agent编排6.3 模型服务化七、监控可观测性PrometheusGrafanaOpenTelemetry八、推荐认证阿里云ACA/ACP大模型工程师认证一、Demo跑通了然后呢你的AI项目在Jupyter Notebook里跑通了——准确率97.3%效果惊艳。然后你把它发给同事对方说环境报错跑不了。你放到服务器上发现CUDA版本不对。你想做自动重训练发现每次改代码都要手动跑一遍。你的模型上线三天没人监控直到用户投诉才知道推理接口已经挂了两小时。本文把工程化阶段的Docker、CI/CD、MLOps、系统设计、监控可观测性一次性讲透5大工具链完整代码模板让你的AI项目从能跑Demo升级到能上生产。二、工程化阶段全景图从能跑到能上线上一篇讲了Python基础和AI框架入门那是会写代码的阶段。这一篇进入下半场——会做工程的阶段。两者的差距就像会炒菜和能开餐厅的差距。2.1 阶段划分逻辑4-6月的三级火箭%%{init: {theme: base, themeVariables: { primaryColor: #e3f2fd}}}%% graph LR subgraph 第1级容器化第4月 D[Docker基础br/镜像构建] -- DF[Dockerfile编写br/GPU容器] DF -- DC[docker-composebr/多服务编排] end subgraph 第2级自动化第5月 CI[CI/CD流水线br/GitHub Actions] -- ML[MLOps工具链br/MLflowDVCWB] ML -- CD[自动部署br/模型上线] end subgraph 第3级系统设计第6月 RAG[RAG系统架构] -- AGENT[多Agent编排] AGENT -- SERVE[模型服务化br/监控告警] end DC -- CI CD -- RAG style D fill:#2196f3,color:#fff style DF fill:#1976d2,color:#fff style DC fill:#1565c0,color:#fff style CI fill:#ff9800,color:#fff style ML fill:#f57c00,color:#fff style CD fill:#e65100,color:#fff style RAG fill:#4caf50,color:#fff style AGENT fill:#388e3c,color:#fff style SERVE fill:#1b5e20,color:#fff为什么是这个顺序因为每一步都依赖前一步Docker是一切的基础——没有容器化CI/CD无从谈起CI/CD让代码变更自动验证——没有自动化MLOps就是手工劳动MLOps管理模型和数据版本——没有实验跟踪系统设计就是盲人摸象系统设计把所有工具串起来——没有架构思维工具只是一堆散件幽默时刻有个朋友花了2个月学PyTorch做了个很牛的模型然后跟我抱怨为什么部署到服务器就这么难。我看了他的部署流程SSH登录→手动装依赖→手动传模型文件→手动启动服务→挂了手动重启。我说兄弟你这个流程跟2010年部署PHP网站一模一样。AI模型再先进部署方式还停留在上一个十年那就别怪老板说AI项目落地太难了。2.2 工具链学习优先级总表优先级工具/技能阶段预计耗时核心价值费用P0Docker容器化1-2周环境一致性部署的基础设施免费P0GitHub ActionsCI/CD1周自动化训练部署流水线免费P1MLflowMLOps1-2周实验跟踪模型管理四件套免费P1RAG系统设计系统设计2周AI应用最主流的架构模式免费P2DVCMLOps3-5天数据版本控制团队协作必备免费P2PrometheusGrafana监控1周生产环境监控告警标配免费P3Weights BiasesMLOps3-5天可视化实验管理团队协作增强免费/付费P3OpenTelemetry可观测性1周分布式追踪微服务场景免费优先级解读P0 不会就别谈工程化P1 核心能力直接影响项目质量P2 团队协作和生产环境必备P3 进阶能力锦上添花。三、Docker容器化AI工程的第一块砖3.1 为什么AI工程师必须会Docker先说结论没有Docker你的AI项目永远停在在我电脑上能跑的阶段。Docker解决的核心问题就一个——环境一致性。你本地PyTorch 2.1CUDA 12.1跑得好好的到了服务器变成PyTorch 2.0CUDA 11.8模型直接报错。Docker把整个环境打包成一个镜像到哪里都一样。幽默时刻在我电脑上能跑这句话在软件开发领域有一个等价表述——“这不是bug这是feature”。但在AI领域它的等价表述是——“模型效果挺好的就是换个环境就废了”。Docker就是来终结这个笑话的。3.2 Dockerfile模板AI项目标准镜像一个标准的AI项目Dockerfile长这样# AI项目标准Dockerfile模板 # 基础镜像用NVIDIA官方镜像省去自己装CUDA的痛苦 FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04 # 设置Python环境 ENV PYTHONUNBUFFERED1 \ PYTHONDONTWRITEBYTECODE1 \ PIP_NO_CACHE_DIR1 # 安装系统依赖注意apt-get要在一行减少镜像层数 RUN apt-get update apt-get install -y --no-install-recommends \ python3.10 python3-pip git curl \ rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 先装依赖利用Docker缓存代码改了不用重装依赖 COPY requirements.txt . RUN pip3 install --no-cache-dir -r requirements.txt # 再拷代码这层经常变放最后 COPY . . # 暴露API端口 EXPOSE 8000 # 启动命令 CMD [python3, -m, uvicorn, main:app, --host, 0.0.0.0, --port, 8000]关键设计原则原则说明为什么重要用官方CUDA镜像nvidia/cuda:xx.x-runtime-ubuntu自己装CUDA是地狱官方镜像5GB但省你3天依赖文件单独COPYCOPY requirements.txt在前利用Docker层缓存改代码不重装依赖--no-install-recommendsapt-get不加这个会装一堆没用的镜像体积从3GB降到1.5GB合并RUN指令多个命令用连接每个RUN一层层越少镜像越小⚠️避坑警告不要用latest标签FROM nvidia/cuda:latest今天可能是12.1明天变成12.2你的镜像突然就挂了。永远指定具体版本号这是Docker的基本素养。效率技巧Docker镜像构建慢试试BuildKitDOCKER_BUILDKIT1 docker build并行构建层速度提升2-3倍。对于大型AI镜像从10分钟降到3分钟不是梦。3.3 GPU容器--gpus all的正确姿势AI项目跟普通Web项目的最大区别——你需要GPU。Docker默认不分配GPU需要用NVIDIA Container Toolkit。安装NVIDIA Container Toolkit# Ubuntu/Debian sudo apt-get install -y nvidia-container-toolkit # 验证安装 nvidia-ctk --version运行GPU容器# 关键参数--gpus all docker run --gpus all -p 8000:8000 my-ai-app:latest # 指定GPU数量 docker run --gpus 2 -p 8000:8000 my-ai-app:latest # 指定具体GPU如只用第0张卡 docker run --gpus device0 -p 8000:8000 my-ai-app:latest在容器内验证GPU是否可用# 进入容器后运行 import torch print(fCUDA available: {torch.cuda.is_available()}) # True print(fGPU count: {torch.cuda.device_count()}) # 1 (或更多) print(fGPU name: {torch.cuda.get_device_name(0)}) # NVIDIA A100-SXM4-40GB⚠️避坑警告--gpus all报错could not select device driver99%的情况是NVIDIA Container Toolkit没装或没重启Docker daemon。解决方案sudo systemctl restart docker。如果还不行检查宿主机nvidia-smi是否正常——宿主机都没GPU驱动容器里更不可能有。%%{init: {theme: base, themeVariables: { primaryColor: #e8f5e9}}}%% graph TD subgraph GPU容器化检查流程 A[宿主机 nvidia-smi] --|正常| B[安装 nvidia-container-toolkit] A --|报错| FIX[先装NVIDIA驱动] B -- C[重启Docker daemon] C -- D[docker run --gpus all] D --|成功| E[容器内 torch.cuda.is_available()] E --|True| F[✅ GPU容器就绪] E --|False| G[检查 toolkit 重启] end style F fill:#27ae60,color:#fff style FIX fill:#e74c3c,color:#fff style G fill:#f39c12,color:#fff四、CI/CD流水线让训练和部署自动化4.1 GitHub Actions自动训练部署手动跑训练、手动传模型、手动部署——这个流程在玩具阶段没问题但在团队协作和生产环境中是灾难。CI/CD就是让这些步骤全自动。GitHub Actions核心概念30秒速通概念类比说明Workflow流水线一个YAML文件定义整套自动化流程Job车间工位一个Job在一个虚拟机上跑Step工序Job里的每一步可以是shell命令或ActionAction工具可复用的Step如actions/checkoutTrigger启动按钮什么时候触发如push、PR、定时AI项目标准CI/CD流程# .github/workflows/ai-pipeline.yml name: AI Model Pipeline on: push: branches: [main] paths: [model/**, data/**] # 只有模型或数据变更才触发 schedule: - cron: 0 2 * * 1 # 每周一凌晨2点自动重训练 jobs: train: runs-on: ubuntu-latest steps: # Step 1: 拉代码 - uses: actions/checkoutv4 # Step 2: 装Python - uses: actions/setup-pythonv5 with: python-version: 3.10 # Step 3: 装依赖 - name: Install dependencies run: pip install -r requirements.txt # Step 4: 跑训练 - name: Train model run: python train.py --epochs 10 --output models/ # Step 5: 跑评测 - name: Evaluate model run: python evaluate.py --model-dir models/ --metrics accuracy,f1 # Step 6: 上传模型artifact - uses: actions/upload-artifactv4 with: name: trained-model path: models/ # Step 7: 触发部署只有main分支且评测通过才部署 - name: Deploy if: github.ref refs/heads/main run: | docker build -t my-ai-app:latest . docker push my-ai-app:latest # 这里可以接K8s部署命令效率技巧GitHub Actions免费额度每月2000分钟对于个人项目足够用。但注意——GPU runner不免费。如果需要GPU训练建议用自建runner你的服务器挂一个runner agent或者用GitHub Actions触发远程训练通过API调你的GPU服务器。4.2 CI/CD流水线设计一个完整的AI项目CI/CD流水线应该包含以下环节%%{init: {theme: base, themeVariables: { primaryColor: #fce4ec}}}%% graph LR subgraph CI阶段持续集成 A[代码Push] -- B[Lint检查br/代码规范] B -- C[单元测试br/pytest] C -- D[构建镜像br/docker build] D -- E[训练模型br/train.py] E -- F[模型评测br/evaluate.py] end subgraph CD阶段持续部署 F --|评测达标| G[推送镜像br/docker push] G -- H[部署Stagingbr/K8s/云函数] H -- I[集成测试] I --|通过| J[部署Productionbr/滚动更新] F --|评测不达标| K[❌ 阻断br/通知开发者] end style J fill:#27ae60,color:#fff style K fill:#e74c3c,color:#fff style F fill:#ff9800,color:#fff关键设计点评测达标才部署——模型准确率低于阈值就阻断流水线别把烂模型推上线Staging环境先行——先在测试环境验证再推生产滚动更新——新版本逐步替换旧版本不是一次性全换出问题可以回滚⚠️避坑警告CI/CD最常见的坑是流水线跑太久。训练10分钟、评测5分钟、构建镜像5分钟——一次流水线20分钟一天跑5次就是一个小时。优化方案缓存依赖层 增量训练 并行评测。特别是Docker层缓存requirements.txt没变就别重装依赖这一步能省3分钟。五、MLOps工具链实验跟踪数据版本模型管理MLOps是DevOps在AI领域的延伸。区别在于——DevOps管代码MLOps还要管数据和模型。代码不变数据变了模型效果也会变。这就是为什么你需要专门的MLOps工具链。5.1 MLflow实验跟踪四件套MLflow是Databricks开源的MLOps平台也是目前最主流的MLOps工具。它的核心是四大组件组件功能类比Tracking记录实验参数、指标、artifacts实验笔记本Projects打包运行环境可复现实验实验的配方表Models模型打包和格式转换模型的快递包装Registry模型版本管理和生命周期模型的版本控制MLflow Tracking快速上手 MLflow实验跟踪 - 3行代码入门 pip install mlflow import mlflow # 开始记录实验 mlflow.set_experiment(my-rag-project) with mlflow.start_run(): # 记录参数 mlflow.log_param(model, gpt-4o-mini) mlflow.log_param(temperature, 0.3) mlflow.log_param(chunk_size, 512) # 记录指标 mlflow.log_metric(accuracy, 0.923) mlflow.log_metric(latency_ms, 340) # 记录模型 mlflow.log_artifact(models/rag_model.pkl) # 记录代码版本自动 # MLflow会自动记录Git commit hash为什么MLflow Tracking这么重要没有实验跟踪你的AI实验是这样的实验1lr0.001, epoch10, acc0.85 → 记在哪脑子里。 实验2lr0.01, epoch20, acc0.89 → 记在哪记事本里。 实验3lr0.001, epoch20, acc0.91 → 记在哪忘了。 实验47这个参数上次试过没→ ???有了MLflow所有实验自动记录参数/指标/模型全都有迹可循。你可以用一行命令对比所有实验mlflow ui # 启动Web界面自动打开浏览器 # 所有实验的参数、指标、模型一目了然效率技巧MLflow Tracking的UI界面是它最被低估的功能。启动mlflow ui后你可以按任意指标排序实验一键对比不同参数组合的效果。这在调参阶段简直是神器——不用再开10个终端窗口手动记录了。幽默时刻没MLflow之前我见过有人用Excel记录实验参数。20列参数、50行实验、3个工作表——然后他花了2天找那个accuracy最高的实验用的什么参数。有了MLflow这2天可以省下来做更有意义的事比如真正理解你在做什么。5.2 DVC数据版本控制Git管代码DVC管数据。当你的训练数据集从1GB变成50GBGit就无能为力了GitHub限制单文件100MB。DVC专门解决大数据文件版本管理的问题。DVC核心工作流# 初始化DVC dvc init # 添加数据集大文件存到DVCGit只存指针 dvc add data/train.csv # 这会生成 data/train.csv.dvc指针文件和 .gitignore忽略原始文件 # 提交到Git git add data/train.csv.dvc .gitignore git commit -m add training dataset v1 # 数据更新后 dvc add data/train.csv # 重新添加 git commit -am update training dataset v2 # 切换到历史版本的数据 git checkout HEAD~1 -- data/train.csv.dvc dvc checkout # 恢复对应版本的数据文件DVC vs Git对比项GitDVC管什么代码数据文件存哪里GitHub/GitLabS3/OSS/本地存储文件大小100MB无限制版本切换git checkoutdvc checkout团队协作push/pulldvc push/dvc pull⚠️避坑警告DVC不替代Git它是Git的补充。dvc add后一定要git commit——DVC把指针文件交给Git管理原始数据文件存在外部存储。如果你只dvc add不git commit换台机器数据就找不回来了。5.3 Weights Biases可视化实验管理WBWeights Biases是MLflow的竞品但更侧重于可视化和团队协作。MLflow vs WB 选哪个对比项MLflowWB部署方式自托管免费SaaS为主免费版有限制可视化基础图表交互式仪表盘更漂亮团队协作需要自建服务器开箱即用学习曲线简单简单企业采用率高Databricks生态高科研团队偏爱我的建议个人项目用MLflow免费、自托管团队项目用WB协作体验更好。如果你犹豫不决先上MLflow——免费的东西先试不好用再换。六、系统设计能力RAG架构多Agent编排模型服务化工具链是砖块系统设计是建筑图纸。你有再好的砖块没有图纸也盖不出楼。6.1 RAG系统架构设计RAGRetrieval-Augmented Generation是2026年AI应用最主流的架构。上一篇的智能客服系统就是RAG的MVP版本现在来看生产级RAG该长什么样。生产级RAG系统架构%%{init: {theme: base, themeVariables: { primaryColor: #e3f2fd}}}%% graph TD subgraph 数据接入层 DOC[文档源br/PDF/Word/网页] -- PARSE[文档解析br/unstructured/markdown] PARSE -- CHUNK[文档分块br/chunk_size512br/overlap50] CHUNK -- EMBED[向量化br/text-embedding模型] EMBED -- VDB[向量数据库br/ChromaDB/Milvus] end subgraph 检索层 QUERY[用户Query] -- QEMBED[Query向量化] QEMBED -- RETRIEVE[向量检索br/top-k5] VDB -- RETRIEVE RETRIEVE -- RERANK[重排序br/Cross-Encoder] RERANK -- FILTER[过滤br/score0.7] end subgraph 生成层 FILTER -- CONTEXT[上下文拼接br/SystemContextQuery] CONTEXT -- LLM[LLM生成br/GPT-4o/Qwen] LLM -- FORMAT[回复格式化br/引用标注] FORMAT -- OUT[返回用户] end subgraph 监控层 OUT -- LOG[日志记录br/query/retrieval/answer] LOG -- METRIC[质量指标br/命中率/满意度] METRIC -- ALERT[告警br/准确率下降时通知] end style VDB fill:#2196f3,color:#fff style LLM fill:#ff9800,color:#fff style ALERT fill:#e74c3c,color:#fffMVP vs 生产级RAG的差异维度MVP版第15篇生产级文档解析手动传入文本自动解析PDF/Word/网页分块策略不分块按语义分块overlap50检索单次top-k检索重排序过滤上下文管理不管理对话历史token窗口控制监控无查询日志质量指标告警缓存无热点查询缓存⚠️避坑警告RAG系统最大的坑是分块策略。chunk_size太大检索不精准太小上下文不完整。推荐起步参数chunk_size512, overlap50然后根据评测结果调整。别拍脑袋定参数——用评测数据说话。6.2 多Agent编排单个Agent能做的事有限多Agent协作才是2026年的趋势。典型场景客服Agent→ 路由到退换货Agent或技术支持Agent研究Agent→ 调用搜索Agent代码执行Agent写作Agent数据分析Agent→ 调用SQL查询Agent可视化Agent多Agent编排框架对比框架特点适用场景学习成本LangGraph图结构编排状态管理强复杂工作流中CrewAI角色扮演式直觉友好简单多Agent协作低AutoGen微软出品对话式编排研究/代码生成中OpenAI Swarm轻量级handoff机制简单路由低效率技巧入门多Agent编排推荐从CrewAI开始——它的API最直觉10行代码就能跑起来一个多Agent系统。等需求复杂了再迁移到LangGraph。不要一上来就啃LangGraph的状态机文档那东西的学习曲线会让你怀疑人生。CrewAI快速示例 多Agent协作示例研究助手 pip install crewai from crewai import Agent, Task, Crew # 定义Agent researcher Agent( role研究员, goal搜索并整理AI工程化的最新资料, backstory你是一位资深的AI技术研究员, tools[search_tool] # 搜索工具 ) writer Agent( role技术写作, goal将研究结果整理成技术文章, backstory你是一位擅长技术写作的工程师, ) # 定义任务 research_task Task( description研究MLOps工具链的最新趋势, agentresearcher, expected_output一份包含5个关键趋势的研究报告 ) write_task Task( description基于研究报告写一篇2000字技术文章, agentwriter, expected_output一篇完整的Markdown格式技术文章, context[research_task] # 依赖研究任务的输出 ) # 组建Crew并执行 crew Crew(agents[researcher, writer], tasks[research_task, write_task]) result crew.kickoff()6.3 模型服务化模型训练完了怎么让外部系统调用答案是模型服务化——把模型封装成API。模型服务化方案对比方案适用场景延迟吞吐量部署复杂度FastAPI Uvicorn中小模型快速原型低中⭐TorchServePyTorch模型生产部署低高⭐⭐Triton Inference Server多框架高吞吐极低极高⭐⭐⭐vLLMLLM推理专用极低极高⭐⭐FastAPI模型服务最简方案 FastAPI模型服务 - 50行代码上线你的AI模型 pip install fastapi uvicorn from fastapi import FastAPI from pydantic import BaseModel from contextlib import asynccontextmanager import torch # 全局模型启动时加载避免每次请求都加载 model None tokenizer None asynccontextmanager async def lifespan(app: FastAPI): global model, tokenizer # 启动时加载模型 from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen2.5-7B) model AutoModelForCausalLM.from_pretrained( Qwen/Qwen2.5-7B, torch_dtypetorch.float16, device_mapauto ) yield # 关闭时释放资源 del model app FastAPI(lifespanlifespan) class GenerateRequest(BaseModel): prompt: str max_tokens: int 512 temperature: float 0.7 app.post(/generate) async def generate(req: GenerateRequest): inputs tokenizer(req.prompt, return_tensorspt).to(model.device) outputs model.generate( **inputs, max_new_tokensreq.max_tokens, temperaturereq.temperature ) result tokenizer.decode(outputs[0], skip_special_tokensTrue) return {response: result} # 启动: uvicorn server:app --host 0.0.0.0 --port 8000⚠️避坑警告模型服务化最大的坑是首次请求慢。因为模型在启动时加载到GPU显存第一次推理需要warmup。解决方案启动后发一个测试请求预热模型别让用户帮你做warmup。七、监控可观测性PrometheusGrafanaOpenTelemetry模型上线了不代表你可以下班了。没有监控的生产系统等于裸奔——出了问题你永远不是最后一个知道的。AI系统监控三件套工具职责类比Prometheus指标采集和存储体温计血压仪Grafana指标可视化展示体检报告OpenTelemetry分布式追踪全身体检追踪系统AI系统需要监控的核心指标%%{init: {theme: base, themeVariables: { primaryColor: #fff3e0}}}%% graph TD subgraph AI系统监控四维度 A[ 系统指标br/CPU/GPU利用率br/内存/显存br/磁盘/网络] B[⚡ 性能指标br/推理延迟P50/P99br/QPS吞吐量br/并发数] C[ 质量指标br/回答准确率br/用户满意度br/幻觉率] D[ 成本指标br/API调用量br/Token消耗br/GPU费用] end A -- ALERT[告警规则] B -- ALERT C -- ALERT D -- ALERT ALERT --|延迟P99阈值| N1[⚠️ 性能告警] ALERT --|准确率90%| N2[⚠️ 质量告警] ALERT --|Token消耗异常| N3[⚠️ 成本告警] ALERT --|GPU利用率30%| N4[⚠️ 资源告警] style A fill:#2196f3,color:#fff style B fill:#ff9800,color:#fff style C fill:#4caf50,color:#fff style D fill:#9c27b0,color:#fff style ALERT fill:#e74c3c,color:#fffPrometheusGrafana快速接入 FastAPI Prometheus监控 - 20行代码接入 pip install prometheus-fastapi-instrumentator from fastapi import FastAPI from prometheus_fastapi_instrumentator import Instrumentator app FastAPI() # 一行代码接入Prometheus监控 Instrumentator().instrument(app).expose(app) # 自定义业务指标 from prometheus_client import Counter, Histogram # 定义指标 inference_latency Histogram( model_inference_latency_seconds, Model inference latency, buckets[0.1, 0.5, 1.0, 2.0, 5.0] ) request_count Counter( model_request_total, Total model requests, [model_name, status] ) # 在推理接口中记录指标 app.post(/generate) async def generate(req: GenerateRequest): start_time time.time() try: result model.generate(req.prompt) inference_latency.observe(time.time() - start_time) request_count.labels(model_nameqwen-7b, statussuccess).inc() return {response: result} except Exception as e: request_count.labels(model_nameqwen-7b, statuserror).inc() raiseGrafana仪表盘配置数据源添加Prometheus数据源同一个Docker网络下直接用服务名核心面板推理延迟P50/P99、QPS、错误率、GPU利用率告警规则延迟P99 2秒触发告警错误率 5%触发告警# docker-compose.yml - 监控栈一键启动 version: 3.8 services: prometheus: image: prom/prometheus:latest ports: [9090:9090] volumes: [./prometheus.yml:/etc/prometheus/prometheus.yml] grafana: image: grafana/grafana:latest ports: [3000:3000] environment: GF_SECURITY_ADMIN_PASSWORD: admin depends_on: [prometheus] # 你的AI应用 ai-app: build: . ports: [8000:8000] deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu]效率技巧Grafana有大量现成的仪表盘模板grafana.com/dashboards搜索FastAPI或NVIDIA GPU直接导入不用从零搭建。站在巨人的肩膀上省你半天时间。⚠️避坑警告监控不是越多越好。我见过有人给AI系统配了50个监控指标结果告警天天响团队已经开始告警疲劳——看到告警就无视。好的监控系统应该有清晰的告警优先级P0立即处理5条、P11小时内处理10条、P2看情况20条。超过这个数量你需要的不是更多监控而是更好的告警规则。OpenTelemetry分布式追踪对于多服务架构如RAG系统涉及检索服务生成服务缓存服务单靠Prometheus指标不够——你需要知道一个请求在各服务间流转时每一步花了多长时间。这就是OpenTelemetry的职责。 OpenTelemetry追踪 - 追踪RAG请求全链路 pip install opentelemetry-sdk opentelemetry-instrumentation-fastapi from opentelemetry import trace from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor tracer trace.get_tracer(__name__) app.post(/rag) async def rag_endpoint(question: str): with tracer.start_as_current_span(rag_pipeline) as span: span.set_attribute(question, question) with tracer.start_as_current_span(retrieval): context retrieve_context(question) span.set_attribute(retrieved_docs, len(context)) with tracer.start_as_current_span(generation): answer generate_answer(question, context) span.set_attribute(answer_length, len(answer)) return {answer: answer} # 在Jaeger/Zipkin中可以看到完整的调用链路和每步耗时八、推荐认证阿里云ACA/ACP大模型工程师认证上一篇已经介绍了ACA大模型工程师认证这里补充ACPAlibaba Cloud Certified Professional的区别和进阶路径。ACA vs ACP 对比对比项ACA初级ACP中级定位入门级专业级考试难度⭐⭐⭐⭐⭐工程化内容基础部署含Docker/K8s/CI/CDAgent模块V2.4新增更深入的Agent编排MLOps内容了解级别实操级别适合人群转型入门者有3个月以上实战经验简历价值加分项强加分项工程化阶段的认证建议先考ACA2-3周备考——打基础覆盖M1-M6全部模块再考ACP额外2-3周——进阶深入工程化部署和Agent编排ACA ACP双证在阿里云生态内求职的简历通过率提升约40%非官方数据来自社群反馈效率技巧ACP认证的工程化模块和本文内容高度重合——Docker部署、模型服务化、监控告警这些主题都在ACP考试范围内。所以你在学这篇文章的同时其实也在备考ACP。一鱼两吃效率拉满。 文末专区【源码获取】本文提到的所有代码模板和配置文件已整理到本系列专栏资源包获取方式关注本专栏 私信回复「AI转型」获取Docker Dockerfile标准模板含GPU容器配置GitHub Actions CI/CD完整YAML模板MLflow实验跟踪 DVC数据版本管理示例代码生产级RAG系统架构图高清版Prometheus Grafana监控栈docker-compose配置FastAPI模型服务化完整项目模板阿里云ACA/ACP大模型工程师认证备考资料包【思考题】你的AI项目用Docker部署后GPU推理速度比本地直接跑慢了30%你会从哪些方面排查MLflow和Weights Biases都做实验跟踪如果你团队只有3个人且预算为零你会选哪个为什么RAG系统上线后用户反馈回答经常答非所问你会按照什么顺序排查问题从检索层还是生成层开始欢迎在评论区分享你的答案我会挑选优质评论在下篇文章中点名讨论。【系列文章预告】下一篇《实战项目选择指南——从Demo到生产级项目的进阶路径》工具链学了一堆但不知道做什么项目下一篇解决这个痛点。我会按难度梯度推荐5个完整项目从入门级的文档问答系统到进阶级的多Agent协作平台再到生产级的企业知识库中台。每个项目都包含技术栈选型、架构设计、核心代码、简历呈现话术。做完这5个项目中的任意2个你的简历在AI工程岗的竞争力就能超过80%的求职者。关注本专栏下一篇明天更新。 系列文章导航01-AI岗位市场全景02-四大岗位类型全对比03-算法研究岗技能图谱04-AI应用开发岗技能图谱05-AI工程运维岗技能图谱06-非技术岗切入AI07-非技术背景转型路线图上08-非技术背景转型路线图下09-程序员转型AI路线图上10-程序员转型AI路线图中11-程序员转型AI路线图下13-三类背景转型路径横向对比14-边做边学核心理念15-分阶段学习资源全攻略上16-分阶段学习资源全攻略下本文17-实战项目选择指南-下一篇️标签MLOpsDockerCI/CD工程化系统设计MLflow工具链

最新新闻

日新闻

周新闻

月新闻