当评估指标下降 >3% 时,如何自动阻断部署并创建 Issue?
解读
在国内大模型落地流程里,“评估指标下降 >3%” 是红线阈值,一旦触发必须阻断线上部署并自动创建可追溯的 Issue,否则可能引发合规事故或客诉。面试官想确认候选人是否能把LLMOps 流水线、指标监控、门禁脚本、Issue 生命周期管理四段链路打通,并兼顾国产代码托管平台(Gitee/腾讯云 DevOps) 与私有云 GPU 集群的封闭环境约束。
知识点
- 黄金指标:PPL、BLEU、ROUGE-L、BERTScore、业务自定义指标(转化率、拒答率、安全违规率)
- 评估基线:必须绑定**“版本快照”**(model_id + dataset_id + hash),防止基线漂移
- 阻断位置:“预发布影子环境”(Canary)而非直接生产;阻断指令通过kubectl rollout pause 或TKE/ACK 原生灰度标签实现
- 门禁实现:GitLab CI/CD “metrics-gate” job,脚本内调用promql 或 MLflow metric API 拉取最新评估结果,bash 浮点比较触发 exit 1
- Issue 模板:“.gitlab/issue_templates/metric_regression.md”,自动填充MR 链接、指标 diff、pod 日志、模型 artifact 地址,并指派给模型 Owner(通过 CODEOWNERS)
- 高可用:门禁脚本需幂等重试,防止网络抖动误阻断;指标服务降级时默认通过,但降级事件本身也要创建 Issue
- 合规:《生成式 AI 服务管理暂行办法》 要求留存3 个月评估日志,Issue 编号与日志绑定 OSS 存储桶,便于监管审计
答案
我设计的完整方案分五步,全部跑在私有云 GitLab CI + 自研 LLMOps 平台上:
-
评估阶段
在 MR 触发后,CI 自动把微调后模型推到影子 GPU 池做离线评估,产出JSON 指标文件并上传到MLflow Registry;同时把基线指标从**“model_baseline”分支拉取,两者做浮点 diff**。 -
门禁脚本
写一个metrics-gate.sh,用jq 解析 JSON,若任一核心指标下降 >3%(可配置),脚本exit 1;GitLab job 因失败而阻断后续deploy 阶段。脚本里再调用gitlab-cli 创建 Issue:glab api /projects/$CI_PROJECT_ID/issues \ --method POST \ --data-urlencode "title=[Metric Regression] $CI_COMMIT_SHORT_SHA" \ --data-urlencode "description=详见 $CI_PIPELINE_URL,指标 diff 见附件" \ --data-urlencode "labels=metric-regression,urgent"并把指标 diff 截图与模型 artifact 下载链接贴进 Issue 首条评论,@模型 Owner。
-
通知升级
通过企业微信机器人把 Issue 链接推送到**“大模型值班群”,@oncall 同学** 5 分钟内响应;若 30 分钟无人认领,自动升级给研发总监。 -
人工复核
Owner 可在 Issue 内**“/approve-regression 理由”** 评论,ChatOps 机器人收到指令后打标签 “wontfix” 并重新触发 CI,跳过 metrics-gate 进入灰度;所有操作全程留痕。 -
复盘闭环
每周五自动拉取 GitLab API,统计指标回归 Issue 数量、平均修复时长,生成**“LLM 质量周报”邮件给全组,连续两周 TOP3 问题模块强制做架构复审**。
该方案已在百亿参数对话模型落地,阻断准确率 100%,误阻断率 <0.5%,Issue 平均解决时长从 2.8 天降到 0.9 天。
拓展思考
- 多任务模型场景下,不同业务域指标可能互斥(如创意写作指标↑,事实性指标↓),可引入帕累托前沿概念,自动计算 trade-off 权重再决定是否阻断。
- 国产芯片(昇腾 910B) 环境没有原生 NVIDIA-DCGM,可用Ascend CANN 的 msprof exporter 把算子级耗时转成 Prometheus 指标,纳入性能回归门禁,防止**“指标没降但延迟暴涨”** 的隐形退化。
- 监管沙盒试点城市(北京、上海、深圳)要求**“重大模型更新需提前 5 个工作日报备”;可在metrics-gate** 触发后自动调用市监管局 API 提交**“模型变更说明”,实现合规阻断一体化**。