一百多年前,英国煤矿工人下井前总会提着一个精致的鸟笼。笼子里不是宠物,而是一只金丝雀。金丝雀对瓦斯气体极其敏感,只要空气中出现微量毒气,它就会停止歌唱、甚至倒下。矿工们看见金丝雀“报警”,就立刻撤离,等通风后再返回。这只小小的鸟儿,用最轻的代价,替人探测了最大的风险——矿井深处看不见的毒气。 今天我们给AI模型“升级”,遇到的是同样的难题。新模型就像一个刚挖好的巷道,里面可能有毒气:推理延迟飙升、输出乱码、回答内容违规、甚至服务崩溃。如果直接把所有用户流量切到新模型上,一旦出问题,影响面就是全部用户、全部业务。Canary推理(金丝雀发布机制)就是把那只金丝雀带进AI世界:先让新模型接一小撮流量,像金丝雀先进入矿井一样试毒;它安全,就逐步放量;它报警,就立刻退回旧模型。整个“渐进放量”的过程,就是人类向未知系统投递新代码时,最优雅的一次深呼吸。

岗位关联

对AI从业者而言,掌握Canary推理和渐进放量,意味着你在模型上线时拥有了“安全气囊”——让每一次模型升级从心惊胆战的豪赌,变成可观测、可控制、可回退的工程流程。这正是AI运维工程师的核心竞争力。

目录
  1. 可视化演示
  2. 金丝雀发布起源
  3. 核心发布流程
  4. 流量控制策略
  5. 指标监控体系
  6. 自动回滚机制
  7. 与蓝绿对比
  8. AI推理实践
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

\u5c55\u793aKubernetes\u6eda\u52a8\u66f4\u65b0\u7b56\u7565\uff1a\u9010\u4e2a\u521b\u5efa\u65b0\u7248\u672cPod\u5e76\u7ec8\u6b62\u65e7\u7248\u672c\uff0c\u786e\u4fdd\u670d\u52a1\u96f6\u4e2d\u65ad\u5347\u7ea7\u3002

本节配有交互动效(进入视口后自动加载,约 3KB)。

\u6eda\u52a8\u66f4\u65b0 (Rolling Update) v1\u65e7\u7248 v2\u65b0\u7248 \u8fc7\u6e21\u4e2d maxSurge=1 \u9010\u6b65\u66ff\u6362Pod\u5b9e\u4f8b

金丝雀发布起源

矿工们发现,与其让整队人马冲进矿井赌运气,不如先让一只金丝雀进去探路。这只鸟的呼吸系统比人敏感得多,哪怕瓦斯浓度只有千分之几,它也会先倒下。这种“让代价更小的个体先暴露在风险中”的思想,后来被软件工程师们捡了起来,从发布提醒邮件,到Canary发布机制,一路传到了AI系统里。

在早期的软件发布中,工程师上线新功能就像换掉整根矿柱,一次全量部署失败就可能让服务瘫痪几小时。于是人们把金丝雀放进代码世界:先在一台服务器上部署新版本,观察日志没有问题,再陆续扩展到其他机器。到了AI推理时代,风险从“代码逻辑错误”扩大到了“模型行为不可控”——模型可能推理出有害内容、可能因为某个输入分布突然打满显存。新模型是一座新矿道,里面的瓦斯看不见摸不着,只有让一只“数字金丝雀”先进去,团队才能在安全距离外观察它的歌声是否还嘹亮。

AI推理中的金丝雀,就是那个只承载 1% 或 5% 流量的新模型副本。它的代价足够小:即使它崩了、胡言乱语了,受伤的用户也只占百分之一。但它的信号足够早:如果这个模型有系统性缺陷,错误率的上升往往在小流量阶段就会露出马脚。这正是风险防控思想的核心——用一小片试验田,验证整片庄稼地的收成。

核心发布流程

放金丝雀进矿道的第一步,是把鸟笼挂在主巷道旁边的小隔间里,先不给它任何任务,只确认它能活着。对应到模型发布,就是先把新模型部署到推理集群中,但把它的权重设为 0,像一只待命的预备队员。它热身、加载权重、和上游服务建立连接,却不接任何真实请求。这一步叫“新模型上线”,目标是确保服务本身能跑起来。

第二步才是真正的试探:把 1% 的流量切到新模型上。这就像矿工把金丝雀放进通风井最深处,静默几秒,听它叫不叫。这 1% 的用户往往选自不那么敏感的口令,比如内部测试账号或低价值地区的请求。若新模型在这期间表现正常,第三步就是逐步放大流量,5%、10%、20%,每上一个台阶都停下来观察一段时间。最后一步是全量切换,新模型接管 100% 流量,旧模型则退居二线,作为随时可以拉回来的后备队。

这个“先驻扎、再试探、后放量、终全量”的四步曲,本质上是让风险从 0 开始,以阶梯的方式逼近 1,而不是一步从 0 跳到 1。矿工不会因为金丝雀在第一段巷道里唱歌,就断定整座矿都安全;同理,运维也不会因为 1% 流量正常,就立刻全量切换。每一次放量都是一次新的试探,每一步都踩在上一块已验证的石头上。

Rt=min⁡(Rt−1+ΔR,  100%)R_t = \min(R_{t-1} + \Delta R, \; 100\%)
\( R_t \) 是当前批次切换给新模型的流量比例,\( \Delta R \) 是每个观察周期增加的幅度(比如 5% 或 10%),\( \min \) 确保最终不超过 100%。整个过程像一个“慢慢拧开的水龙头”,而不是大坝泄洪。
  1. 当前放量比例\( R_t \) 表示第 \( t \) 个观察批次时,切给新模型的流量占比。若 \( R_t = 0.05 \),即 5% 请求走新模型。
  2. 上一批次比例\( R_{t-1} \) 是上一个观察周期已验证安全的流量占比,它是放量的起点。
  3. 每批增量\( \Delta R \) 是每批新增的流量幅度,通常取 5%~20% 之间的固定值,由运维团队根据风险容忍度决定。
  4. 上限约束\( \min(\cdot, 100\%) \) 保证比例不会超过 100%,防止计算溢出和误配置。

流量控制策略

流量控制是渐进放量的“调速器”。矿工手里握着通风阀门,可以根据金丝雀的状态决定是继续送风还是关闸。在AI推理系统中,这个阀门就是权重分配机制:网关会根据配置的权重比,把请求按比例分给旧模型和新模型。

比如设置权重比 \( 90:10 \),就意味着每 100 个请求中有 90 个走旧模型、10 个走新模型。实现上最常用的是加权轮询(Weighted Round-Robin),网关维护一个计数器,落在新模型区间内的请求就被路由过去。这个比值的调整可以是手动的——运维人员盯着监控面板,点一下按钮把权重从 10% 调到 20%;也可以是自动的——根据预设策略,比如“每 5 分钟,若错误率低于 1% 就自动增加 5%”。

放量节奏的设计就像爬楼梯而不是坐电梯:每上一级台阶,都要停一停,让数据积累到统计学上有意义的量。一个常见的节奏是“1% 观察 10 分钟 → 5% 观察 10 分钟 → 20% 观察 30 分钟 → 50% 观察 1 小时 → 100%”。阶梯式增长的核心在于,每一级的观察期都是给“金丝雀”留出足够的反应时间。如果跳级太快——比如从 1% 直接跳到 80%——就等于把还没验过毒的金丝雀直接扔进主巷道深处,失去了渐进的意义。

Wnew:Wold=r:(1−r)W_{new} : W_{old} = r : (1 - r)
\( W_{new} \) 与 \( W_{old} \) 分别是新、旧模型的流量权重,\( r \) 是新模型的当前放量比例(0 到 1 之间的小数)。它描述的是一条“倾斜的跷跷板”:新模型这一端翘得越高,接到的请求就越多。
  1. 新模型权重\( W_{new} \) 是分配给新模型的权重值,它直接决定有多少请求会进入新模型推理。
  2. 旧模型权重\( W_{old} \) 是分配给旧模型的权重值,两者之和恒等于总流量。
  3. 放量比例\( r \) 的取值在 0 到 1 之间,例如 0.1 对应“新模型接 10% 流量”。
  4. 比例守恒公式中的 \( r:(1-r) \) 确保新旧权重的总和恒为 1,即流量不丢失、不重复。

指标监控体系

金丝雀的生命体征是矿工决策的依据,而AI模型的生命体征则是指标监控体系。判断一只“数字金丝雀”是否还健康,不能靠猜,要看几组关键数字。第一组是响应延迟:如果新模型的 P99 延迟比旧模型高出两倍,说明模型计算代价过大或排队拥堵,用户就会觉得“卡死了”。第二组是错误率:5xx 服务错误、超时、输出为空的占比,是模型是否“半路暴毙”的直接信号。

第三组指标更微妙——推理质量。对一个聊天模型,可以衡量回复是否偏离主题、是否包含有害内容;对一个推荐模型,可以看点击率和转化率是否下降。这些质量指标通常无法直接从系统日志看到,需要额外的评估模型或用户反馈通道。监控的威力来自基线对比:把新模型的每个指标和旧模型在相同时段的表现做差,而不是只看绝对值。这就好比判断金丝雀是否生病,要看它和昨天健康时的状态比,而不是跟老虎比谁嗓门大。

需要特别注意的是,监控窗口的粒度要和新模型承接的流量匹配。当新模型只接 1% 流量时,窗口内可能只有几千个请求,此时 1~2 个错误就会让错误率跳到 0.1%;如果直接把这个数字当作决策依据,就会频繁误触发回滚。成熟的团队会给指标加一个“最小样本量”门槛,比如错误率要超过 5% 且错误样本数大于 50 才判定异常。这就像矿工不会因为金丝雀打了个喷嚏就撤出整支队伍,而是要连续观察它是否真的萎靡不振。

E=NerrNtotal×100%E = \frac{N_{err}}{N_{total}} \times 100\%
\( E \) 是错误率,\( N_{err} \) 是失败请求数,\( N_{total} \) 是总请求数。可以把 \( N_{err} \) 想成金丝雀停止歌唱的次数,\( N_{total} \) 是它该唱歌的总次数,错误率就是“沉默的比例”。
  1. 失败请求数\( N_{err} \) 指在观察窗口内,返回 5xx、超时或空结果的请求数量。
  2. 总请求数\( N_{total} \) 指同一窗口内进入新模型的所有请求数量,保证比例的分母足够大、统计可信。
  3. 百分比换算\( \times 100\% \) 把比值变成直观的百分比。0.05 写成 5%,更贴合监控面板的展示习惯。

自动回滚机制

渐进放量最珍贵的能力,不是“进”,而是“退”。矿工手里的保命绳是通往井口的绞盘,一旦金丝雀倒下,绞盘会立刻把矿工拉回地面。AI推理系统中的保命绳就是自动回滚机制:当监控指标突破预设阈值时,系统不等人工介入,自动把流量全部切回旧模型。

阈值的设计要“一触即发”却又不过敏。常见的触发条件包括:错误率超过 5% 持续 30 秒、P99 延迟超过旧模型 3 倍、推理质量评分连续 10 个批次低于基线。触发后,快速止损操作立即生效——网关把新模型权重归零,所有新请求分流到旧模型,同时保留新模型的运行状态,方便事后排查。这个过程不需要“删掉新模型”,因为回滚不等于销毁,只是把它从流量线上摘下来,像把生病的金丝雀从井下提回笼中静养。

版本保留策略是回滚的另一半。旧模型不能在上线完成后立刻下架,至少要保留一段时间(通常是 1~2 周),以备新模型在更高流量下暴露出“慢性病”。同时,新模型也最好保留最近一两个版本,因为有时回滚的终点不是最旧的版本,而是“上一个已验证的版本”。这就像矿工不只准备一只金丝雀,而是笼子里养着两只:一只在井下工作,另一只在地面待命。一旦井下那只出了事,地面这只马上替补进洞。

Enew>θ⇒Wnew←0E_{new} > \theta \quad \Rightarrow \quad W_{new} \leftarrow 0
\( E_{new} \) 是新模型当前错误率,\( \theta \) 是预设阈值(如 0.05),\( \Rightarrow \) 表示“一旦满足就立即执行”:将新模型权重归零。它是一条“一票否决”的规则。
  1. 当前错误率\( E_{new} \) 由监控系统周期性计算,是回滚决策的输入信号。
  2. 判异阈值\( \theta \) 是团队预先批准的错误率红线,一旦越过就认定新模型不安全。
  3. 逻辑推导\( \Rightarrow \) 表示蕴含关系,即前件成立时后件必须执行,不留协商余地。
  4. 权重归零\( W_{new} \leftarrow 0 \) 表示将新模型权重置为 0,所有流量回到旧模型。

与蓝绿对比

Canary发布并非唯一的低风险发布策略,运维圈里还有个老牌的蓝绿部署。想象一栋办公楼有两套一模一样的机房:蓝色机房跑着旧系统,绿色机房已经部署好新系统。切换时,门口的保安把闸机从蓝色机房拨向绿色机房,所有员工瞬间进入新大楼。这个操作本身很干净:版本隔离彻底、回滚就是再把闸机拨回去。但它有一个显著特点——整批切换。

全量切换之所以有风险,是因为它把“验证”和“承担风险”放在同一个瞬间:闸机拨过去的那一刻,如果绿色机房里有毒气,所有员工就都吸进去了。蓝绿部署虽然回滚快,但风险是全量暴露的;而Canary发布的风险是按比例暴露的——风险从 1% 开始随流量增长,始终小于等于当前放量比例。用一个式子来看:

那么两者如何选择?如果新版本只是改了一行配置、一个模型权重文件,不需要长时间观察复杂行为,蓝绿部署的干净利落就很有吸引力;如果新版本是一个全新的 LLM 推理管线、其行为几乎不可能事先完全验证,那 Canary 的渐进特性就弥足珍贵。很多大型团队的做法是“先 Canary 后蓝绿”:先用渐进放量充分验证,最后再用蓝绿切换完成版本交替。金丝雀和整栋楼并不矛盾——先让小鸟进去探路,确认安全后,大家再一起搬进新楼。

Rbluegreen=Rswitch,Rcanary=r×RfailR_{bluegreen} = R_{switch}, \quad R_{canary} = r \times R_{fail}
蓝绿部署的风险 \( R_{bluegreen} \) 等于切换瞬间的全部暴露 \( R_{switch} \)(通常视为 100%);Canary 的风险 \( R_{canary} \) 等于放量比例 \( r \) 乘以模型失败概率 \( R_{fail} \)。当 \( r \) 很小时,Canary 的风险远低于蓝绿。
  1. 切换风险\( R_{switch} \) 是蓝绿部署在切换时刻系统性失效的概率,它作用于所有流量。
  2. 放量比例\( r \) 是 Canary 当前放给新模型的流量比例,例如 10% 时 \( r=0.1 \)。
  3. 失败概率\( R_{fail} \) 是新模型在单位流量下发生严重故障的概率。
  4. 风险相乘\( r \times R_{fail} \) 说明 Canary 把风险压缩到了“流量比例”这一维度内,放量越小,风险越可控。

AI推理实践

把这只金丝雀真正养在服务器机房里,需要一套与之匹配的推理服务架构。典型架构中,一个智能网关(API Gateway)位于客户端和推理服务之间,后面挂着两个推理服务组:一组承载旧模型,一组承载新模型。网关不只负责路由,还承担流量比例控制、指标采集和回滚指令下发。它就像一个尽职的矿工,一手握着通风阀门,一手攥着绞盘拉绳,眼睛盯着鸟笼。

路由网关配置是落地第一关。以云原生环境最常用的 Istio 为例,可以通过 VirtualService 配置 HTTP 路由权重,按百分比把流量分配到两个不同的 Kubernetes Service 上。配置从 90:10 改成 50:50,只需下发一次配置更新,网关秒级生效。第二关是监控告警联动:Prometheus 抓取新旧模型的请求量、延迟、错误率,Grafana 面板实时展示对比曲线。当错误率触达阈值,告警规则不仅会给值班人员发消息,还可以通过 webhook 直接调用网关管理 API,实现“阈值触发→自动回滚”的闭环。

一个真实的运维案例:某家电商平台的推荐模型要从 V2 升级到 V3。团队先把 V3 部署到一个只有内网测试流量的推理组里,确认无报错后,将权重设为 2%,让 2% 的真实用户悄悄体验新推荐策略。监控显示 A/B 对比中,V3 的点击率提升了 4%,但 P99 延迟比 V2 高了 40%。团队没有急着放量,而是先给 V3 做了算子融合和量化,把延迟压回 V2 的 1.2 倍以内,再按 5% → 25% → 100% 的节奏放量。整个过程历时三天,期间没有一次用户可见的服务中断。这就是金丝雀的价值——它并不保证新模型一定优秀,但它保证在问题暴露时,代价小到可以承受。

AI 应用场景

电商推荐模型升级

阶段:模型上线与发布管理

解决的问题:传统做法是深夜直接把推荐模型全量切换,一旦新模型对真实用户分布水土不服(比如误判了某种商品偏好),次日白天才被点击率数据发现,损失已造成大半。Canary 方案把新模型先接 5% 流量,用真实点击/购买数据判断效果,远优于离线评测。

具体案例:某跨境电商平台升级推荐模型时,先让 5% 的东南亚用户流量进入新模型,实时对比点击率与 GMV。两小时后发现新模型在“大促商品”场景下推荐倾向异常,系统自动把流量回切到旧模型,排查后修正了排序特征,再重新放量。

大模型对话服务换版

阶段:LLM 推理服务灰度发布

解决的问题:大模型升级的不可控因素极多——新版本可能在长对话场景下开始胡编乱造,或某类提示词触发生成有害内容。全量发布一旦翻车,客服、助手类产品全部遭殃。Canary 推理让小比例真实对话先进新模型,配合内容安全审核指标决定进退。

具体案例:某公司把客服机器人的底座模型从 13B 升级到 70B,先放 3% 的会话流量,重点监控回复长度、超时率和安全审核命中率。发现 70B 模型在“退款政策”类问题上的回答虽然更长,但多次出现指令冲突。团队随即在提示词工程侧做了修正,再逐步放量到 100%。

Python 演示

python55 行
import random  class CanaryDeploy:    """金丝雀渐进放量控制器:按权重分流 + 错误率决策"""     def __init__(self, error_threshold=0.05, step=20):        self.error_threshold = error_threshold        self.step = step        self.new_weight = 0        self.max_weight = 100        self.state = "pending"     def allocate(self, request_id):        """根据当前权重把请求路由到新模型"""        if request_id % 100 < self.new_weight:            return "new"        return "old"     def report(self, results):        """统计新模型错误率,返回放量或回滚决策"""        if not results:            return "no_data"        error_rate = sum(1 for r in results if r["error"]) / len(results)        if error_rate > self.error_threshold:            self.new_weight = 0            self.state = "rollback"            return "rollback"        self.new_weight = min(self.max_weight, self.new_weight + self.step)        self.state = "running"        return "promote"     def simulate(self, batches):        """模拟多批流量。每批100个请求,新模型错误率随压力上升"""        for i, batch in enumerate(batches):            routes = [self.allocate(req_id) for req_id in batch]            results = []            for req_id, route in zip(batch, routes):                if route == "new":                    pressure = self.new_weight / 100.0                    err_prob = min(0.30, 0.02 + pressure * pressure * 0.5)                    results.append({"error": random.random() < err_prob})                else:                    results.append({"error": random.random() < 0.01})            decision = self.report(results)            print(                f"批次{i + 1}: 新模型权重={self.new_weight:>3}% "                f"| 状态={self.state:<8} | 决策={decision}"            )  if __name__ == "__main__":    controller = CanaryDeploy(error_threshold=0.05, step=20)    batch_list = [list(range(100)) for _ in range(6)]    controller.simulate(batch_list)
目的:模拟从 0% 开始,每批给新模型增加 20% 流量,同时让错误率随新模型流量压力上升,观察控制器何时触发回滚。
  1. class CanaryDeploy:定义金丝雀控制器类,内部保存放量权重、阈值和状态。
  2. self.error_threshold = error_threshold错误率红线,超过 5% 就判定新模型“有毒气”。
  3. def allocate(self, request_id)核心路由逻辑:用取模运算把 request_id 映射到 0~99,落在权重区间内的请求走新模型。
  4. error_rate = sum(1 for r in results if r["error"]) / len(results)计算当前批次的错误率,这是金丝雀的“歌声是否正常”的量化指标。
  5. if error_rate > self.error_threshold:错误率超线时触发回滚,将新模型权重直接归零。
  6. self.new_weight = min(self.max_weight, self.new_weight + self.step)安全则按 step 阶梯式放量,并用 min 封顶在 100%。
  7. err_prob = min(0.30, 0.02 + pressure * pressure * 0.5)模拟“放量越猛、出错概率越高”的非线性风险,让演示更贴近真实。

常见误区

误区我一开始以为 Canary 发布和 A/B 测试是同一回事,反正都是让一部分用户用新模型、一部分用旧模型,最后比谁效果好。

正解两者目标和终结条件不同。A/B 测试的目标是“做实验”,新老版本可能长期共存,用统计显著性判断哪个方案更好;Canary 发布的目标是“安全上线”,默认新版本应该取代旧版本,渐进放量只是降低风险的手段。A/B 测试的结果可能是永远保留 B 方案,而 Canary 的终点必然是切到 100% 或者回滚。

为何常见:因为两者的操作手法都包含“流量分割”和“对比监控”,表面形式很像,初学者容易只盯形式,忽略目的差异。

误区金丝雀验证很顺利,新模型已经接了 100% 流量,说明旧模型没用了,可以马上释放它占用的 GPU 资源。

正解放量到 100% 只代表“新模型通过了既有指标的考验”,不代表它在未来的流量高峰、新类型请求、数据分布漂移下依然可靠。旧模型应保留 1~2 周作为回滚的退路,尤其在节假日流量洪峰到来前,很多团队会强制保留旧版本。释放资源前要确认“回滚预案”依然成立,否则就等于拆掉了矿工的绞盘。

为何常见:GPU 资源昂贵,运维人员天然想尽快释放闲置算力,却忽略了模型服务的“保险”价值。

误区感觉金丝雀发布和蓝绿部署都是准备两套环境,随时切换,应该只是叫法不同。

正解蓝绿部署是“整批切换”,流量从一个环境瞬间全部切到另一个环境,回滚也是瞬间全量切回;金丝雀发布是“渐进式放量”,流量按 1%、5%、50% 的阶梯逐步增加,风险随流量比例线性增长。两者可以结合使用,但不能混为一谈——一个是在“切成全量”之前做验证,一个是“切换动作”本身。

为何常见:两者都涉及新旧两套版本,且都强调快速回滚,概念边界容易模糊。

误区既然新模型在 1% 流量下表现完美,错误率是 0,说明没有坑,直接一把放到 100% 也行。

正解小流量下的样本量可能不足以暴露所有问题。1% 流量一小时只积累几百个请求,一些低频异常(如特定语言、特定长度输入的崩溃)完全可能漏网;而且某些故障与负载相关,只有在流量增大到一定水位后才会触发资源瓶颈或并发竞争。渐进放量的意义恰恰在于每一级台阶都重新验证一次,跳级等于放弃了这个安全机制。

为何常见:人脑习惯于“眼见为实”的正向反馈,一旦看到好结果就容易追求速度,忽略了统计意义上的样本充分性。

面试题

Q1. “金丝雀发布”这个名称来源于什么?

单选题 · easy

  • A.一种鸟类迁徙行为
  • B.煤矿用金丝雀探测毒气← 正确答案
  • C.古代驯鹰捕猎传统
  • D.养鸟人的宠物商店

答案:B。煤矿工人带金丝雀下井,利用它对瓦斯气体的敏感性,先于人类发出危险信号。Canary 发布借用了这个“小代价探测大风险”的思想。

Q2. 以下哪一项是金丝雀发布的正确流程?

单选题 · mid

  • A.全量后小流量再观察
  • B.小流量逐步放量再全量← 正确答案
  • C.跳过小流量直接全量
  • D.先删旧模型再上新模型

答案:B。金丝雀发布必须先部署新模型、从小流量试探开始,逐级验证后再放量到 100%。全量切换是终点而非起点,删除旧模型更是大忌。

Q3. 金丝雀发布中,哪些指标适合作为新模型的健康度判断依据?

多选题 · mid

  • A.响应延迟P99← 正确答案
  • B.服务错误率← 正确答案
  • C.新增用户数
  • D.推理质量评分← 正确答案

答案:ABD。响应延迟反映性能,错误率反映稳定性,推理质量反映模型行为是否正确,这些都是金丝雀的“生命体征”。新增用户数属于业务增长指标,与模型健康度没有直接因果关系。

Q4. 新模型放量过程中错误率超过阈值,正确的处理方式是?

单选题 · hard

  • A.继续放量到百分之百
  • B.自动回滚到旧模型← 正确答案
  • C.立即删除新模型
  • D.忽略错误继续观察

答案:B。阈值是预先设定的红线,一旦越过必须触发回滚,将流量切回旧模型止损。继续观察会让更多用户受影响,删除新模型则失去了排查问题的现场。

Q5. 关于金丝雀发布与蓝绿部署的区别,下列说法正确的是?

多选题 · hard

  • A.金丝雀是渐进式放量← 正确答案
  • B.蓝绿是整批切换← 正确答案
  • C.金丝雀需指标阈值← 正确答案
  • D.蓝绿不需回滚机制

答案:ABC。金丝雀按比例渐进放量、依赖指标阈值决策;蓝绿部署是环境级整批切换,切换动作本身瞬间完成。蓝绿同样需要回滚机制(切回蓝环境),只是回滚方式不同。

Q6. 渐进放量策略的核心思想是什么?

单选题 · easy

  • A.一步到位风险最低
  • B.小代价试探再扩大← 正确答案
  • C.流量同时切换最稳
  • D.完全无需指标监控

答案:B。渐进放量的本质是用小比例流量承担试错代价,验证通过后再逐步扩大,始终把风险控制在当前放量比例以内。

Q7. 权重比从 90:10 逐渐调整到 50:50,再调到 0:100,属于什么策略?

单选题 · mid

  • A.蓝绿部署策略
  • B.渐进放量策略← 正确答案
  • C.全量发布策略
  • D.容量规划策略

答案:B。权重随观察结果分步调整,正是金丝雀渐进放量的标志。蓝绿部署没有这样的中间状态,全量发布则是一步切换。

Q8. 放量到 100% 后,为什么不能马上删除旧模型?

单选题 · mid

  • A.删除命令必然报错
  • B.保留回滚能力← 正确答案
  • C.旧模型资源不足
  • D.新模型无需备份

答案:B。旧模型是最后的回滚保险。新模型在高负载、数据漂移等场景下可能暴露出小流量阶段未发现的慢性问题,保留旧模型才能一键回退。

Q9. 新模型在小流量下表现正常,最合理的下一步是什么?

单选题 · easy

  • A.一定能全量成功
  • B.可继续放大流量← 正确答案
  • C.不需要再做监控
  • D.旧模型一定有问题

答案:B。小流量正常只代表当前样本下没问题,可以按阶梯继续放量,但每上一个台阶都要重新观察指标,不能据此推断全量必然成功。

Q10. 以下哪些属于金丝雀发布的风险防控措施?

多选题 · hard

  • A.设置错误率阈值← 正确答案
  • B.保留旧版可回滚← 正确答案
  • C.放量节奏分步执行← 正确答案
  • D.直接全量不做监控

答案:ABC。阈值触发回滚、保留旧版本、分步放量是金丝雀发布的三大支柱。直接全量且不做监控恰恰是它要避免的冒险做法。