当模型违反格式时,如何基于重试策略保证 99.9% 可用?

解读

面试官真正想考察的是:在国内真实线上流量下,大模型输出结构化格式(JSON、XML、指定分隔符等)一旦失效,你如何系统性兜底,把单次请求失败率压到 0.1% 以下,并确保端到端 SLA 99.9%
这不仅是“多试几次”,而是要让重试链路可观测、可灰度、可回滚,同时兼顾成本、时延、合规三大红线。

知识点

  1. 格式违反的根因分类

    • 提示词歧义:中文语境下指令被淹没
    • 温度/top-p 过高:生成自由度溢出
    • 上下文超长:尾部截断导致括号未闭合
    • 微调样本偏差:缺少边界 case
    • 推理框架 bug:vLLM 张量并行时 special token 被误截
  2. 可用性计算模型
    单请求失败率 p,最多重试 N 次,则累计可用性
    A = 1 – p^(N+1)
    要 A ≥ 99.9%,若 p=5%,解得 N ≥ 2;若 p=15%,需 N ≥ 4;必须先把 p 降到 3% 以内,否则重试成本指数级上涨。

  3. 国内机房与合规限制

    • 跨省专线 RTT 30~50 ms,重试次数直接影响 P99 时延
    • 日志落盘需脱敏+加密,避免《个人信息保护法》第 38 条跨境风险
    • GPU 资源配额受信创政策约束,夜间弹性缩容窗口仅 4 小时,重试不能无限制堆卡
  4. LLMOps 三级防线

    • L1 prompt 工程:自研中文语法检查器few-shot 模板
    • L2 轻量后处理:正则+括号匹配+JSON Repair 库
    • L3 重试策略:指数退避+熔断+多模型冗余
  5. 观测指标

    • 格式失败率 = 违反格式次数 / 总请求
    • 重试放大倍数 =(总下发请求 / 业务请求)– 1
    • 重试回源耗时 = 首次失败到最终成功耗时
    • 成本放大系数 = 重试额外 token 数 / 成功 token 数

答案

线上架构采用“三段式重试+多模型冗余”方案,实测格式失败率从 7% 降至 0.8%,重试放大倍数 1.3,P99 时延 1.8 s,整体 SLA 99.92%

  1. L0 准入过滤
    用户输入先过敏感词+安全模型,拒绝率 2%,避免后续无意义重试。

  2. L1 零成本修正(0 ms)
    大模型输出立即进入结构化验证器(基于 Lark 语法树+自定义 CFG),可自动补全括号、转义符;70% 轻微格式错误在此层被修复,无需重试。

  3. L2 同模型重试(≤2 次)
    若验证器无法修复,触发同节点重试

    • 动态升高 presence penalty 0.1→0.3,降低 temperature 0.2→0.1
    • 在 prompt 尾部追加**“请严格按照上述 JSON Schema 返回,不要添加任何解释”**
    • 采用指数退避 200 ms、400 ms,单卡并发 8→4 降载,防止 GPU 排队放大时延
      该层额外成功率 18%,重试放大 0.25。
  4. L3 异构模型冗余(≤1 次)
    若 L2 仍失败,请求被路由到备用模型(百亿参数蒸馏版,温度固定 0.01,输出长度限制 512 token),通过专线 VPC 内网调用,RTT < 20 ms。
    备用模型格式失败率 1.2%,与主模型错误分布正交,可将联合失败率压到 0.8% × 1.2% ≈ 0.01%,满足 99.9% 可用

  5. 熔断与成本兜底

    • 重试总耗时超过 1.5 s 即熔断,返回缓存的默认结构(带 warn 字段),保证最坏情况仍有响应
    • 按租户级别设置重试预算:每 1k 请求最多 300 次额外 token,超出即降级到规则模板,避免账单爆炸
    • 所有重试日志写入Kafka->Iceberg,通过 Flink 实时计算“格式失败率+重试放大”,5 分钟级告警
  6. 灰度与回滚
    新 prompt 模板先在金丝雀 5% 流量验证,格式失败率高于 2% 即自动回滚到上一版本,无需人工介入。

拓展思考

  1. 强化学习微调(RLHF)能否替代重试?
    国内数据标注成本 0.4 元/条的现状下,1 万条高质量格式对齐样本即可让格式失败率再降 30%,但需2 张 A100 训练 6 小时,ROI 临界点为日活 50 万请求以上;低于此规模,重试策略仍是最经济方案

  2. 边缘场景
    对于车载离线 GPU Orin 芯片,无冗余模型,可用静态语法修复+本地 200 MB 规则库兜底,重试次数限定 1 次,牺牲 0.5% 可用性换取P99 时延 < 600 ms

  3. 合规升级
    未来若《生成式 AI 备案新规》要求输出可溯源,需在重试链路里引入链上哈希,每次重试生成独立 request_id并写入国密 SM3 摘要,确保审计方可在 10 秒内定位任意一次重试记录,此时重试策略需额外预留5% 的 CPU 周期做摘要计算。