把一家饭店想象成你的 AI 系统。老厨师掌勺十年,招牌菜就是线上模型,每天为成千上万客人出餐。这天来了一位新厨师,简历亮眼,但你绝不敢直接让他给客人做菜——万一砸了招牌,客人不会再来。于是你让他“影子跟灶”:每道客人点的菜,他在旁边照做一份,但这份菜不上桌,只端到后厨评审台,由老师傅记录口味、摆盘和用时。客人完全无感,新厨师却已经默默练了几千道真实订单。 影子模式(Shadow Mode)就是这套机制的工程版:新模型以影子节点方式挂在生产模型旁边,实时接收线上流量副本、独立预测,但结果只记录、不生效。等影子数据攒够,再用统计检验和指标体系判断“这位新厨师是否够格上灶”。本文就用这条“后厨试菜”故事线,带你走完影子流量配置、并行预测对比、指标差异分析、安全上线决策与 Pipeline 工程化的完整链路。

岗位关联

掌握影子模式,你就能在模型上线前用真实流量做零风险验证,把“拍脑袋发版”变成有数据背书的标准化流程——这是 ML 工程化中区分初级与进阶工程师的关键能力之一。

目录
  1. 可视化演示
  2. 认识影子模式
  3. 影子流量配置
  4. 并行预测对比
  5. 指标体系设计
  6. 差异显著性分析
  7. 安全上线决策
  8. Pipeline工程化
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示影子模式Shadow Mod的核心机制,通过开始/执行/监控/完成四种模式展示关键概念与交互流程。

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

影子模式Shadow Mod:影子模式 影子模式架构与流量配置策略 并行预测对比与指标差异分析 核心机制可视化 影子模式Shadow Mod整体架构与关键组件

认识影子模式

老厨师掌勺十年,客人认准他的手艺。新厨师简历再漂亮,老板也不敢直接让他上灶——万一招牌菜变了味,客人扭头就走。聪明的老板会让他“影子跟灶”:每道客人的菜,他同时在旁边做一份,但这份不出餐,端到后厨评审台。客人吃到的还是老味道,新厨师却已经拿真实订单练了手。这就是影子模式的第一直觉:真实世界照常运转,新人在暗处练兵。

到了模型世界,这个难题一模一样。线上模型负责真实决策,比如风控打分、推荐排序;新模型想要替换它,可谁也不敢直接让它上阵。影子模式的做法是:把新模型作为一个影子节点挂到生产链路旁,实时接收线上流量的副本,独立完成预测,但输出只落库、不参与业务决策。老系统的行为和线上用户没有任何感知差异,验证的风险趋近于零。

影子模式和 A/B 测试有本质区别:A/B 是真实分流,把一部分用户分给新版本,万一新版本出错,真实体验立刻受损;影子模式则是双轨并行、只比不改,任何错误都被隔离在评审区。我们可用下面的式子描述一次“影子运行”:

老厨师做菜、新厨师暗中学习,端给客人的永远是熟悉的味道——影子模式的哲学,就是用真实世界的风,吹一场不伤人的实验。

ShadowRun(x)=(yold(x), ynew(x)),x∈Dshadow\text{ShadowRun}(x) = \big( y_{\text{old}}(x),\ y_{\text{new}}(x) \big), \quad x \in D_{\text{shadow}}
  1. 影子样本集合线上真实请求被复制后形成的集合,是验证的“考题样本”。
    Dshadow⊆DonlineD_{\text{shadow}} \subseteq D_{\text{online}}
  2. 生产模型预测老模型对样本 x 给出线上真实使用的预测。
    yold(x)=Modelprod(x)y_{\text{old}}(x) = \text{Model}_{\text{prod}}(x)
  3. 影子模型预测新模型独立给出预测,但结果只记录、不生效。
    ynew(x)=Modelshadow(x)y_{\text{new}}(x) = \text{Model}_{\text{shadow}}(x)
  4. 成对输出同一输入得到新旧两个输出,构成一个对比样本对。
    ShadowRun(x)=(yold(x), ynew(x))\text{ShadowRun}(x) = \big( y_{\text{old}}(x),\ y_{\text{new}}(x) \big)

影子流量配置

让新厨师试菜,也不是每道菜都试。主厨会安排:晚市高峰的热门菜全部抄一份给他练手,冷门菜偶尔试;涉及 VIP 客人的订单,先把姓名住址抹掉再拿去评审。哪些单子抄、抄多少、要不要打码——这就是后厨的第一道标准动作。

在系统中,这套动作叫“影子流量配置”。核心回答三件事:复制哪些流量、复制多少、复制的数据是否合规。复制范围可以按业务线、用户分桶或请求类型圈定;复制量用采样率控制;敏感字段在进入影子环境前必须脱敏,防止模型验证过程中泄露用户隐私。

采样率是影子流量配置里最常用的参数,它定义影子请求占线上总请求的比例:

流量配置决定了“考题”的范围和成本:全量复制覆盖最全,但峰值成本翻倍;按比例采样则用更低的成本换取可信的结论。勾选菜单这件事,本身就是一门平衡艺术。

Rate=NshadowNonline×100%\text{Rate} = \frac{N_{\text{shadow}}}{N_{\text{online}}} \times 100\%
  1. 线上总请求数一段观察期内进入生产链路的所有请求数量。
    Nonline=∣Requestsprod∣N_{\text{online}} = |\text{Requests}_{\text{prod}}|
  2. 影子请求数其中被镜像复制进影子环境的请求数量。
    Nshadow=∣Requestsmirror∣N_{\text{shadow}} = |\text{Requests}_{\text{mirror}}|
  3. 复制比例计算影子请求占线上请求的百分比,决定覆盖度与成本。
    Rate=NshadowNonline×100%\text{Rate} = \frac{N_{\text{shadow}}}{N_{\text{online}}} \times 100\%

并行预测对比

评审台是后厨最忙的地方。同一道订单,老厨师那份端给客人,新厨师那份端进评审区,两份菜成对摆在一起——不是各评各的,而是逐单对照。

工程上也一样:新老模型接收同一份输入,各自输出预测,再按请求 ID 成对落库。只有成对存储,才能支撑后续的差异分析和统计检验。同时还要观测影子节点的延迟和资源消耗,避免影子模型拖慢线上主链路。

单样本上的预测差异和平均差异是并行对比的第一层指标,先看每单差多少,再看整体平均差多少:

评审台上成对归档的每一份“菜品样本”,都是最后评审会上的铁证——没有成对记录,就没有差异分析,也就没有科学上线的资格。

Δˉ=1n∑i=1n∣ynew(xi)−yold(xi)∣\bar{\Delta} = \frac{1}{n}\sum_{i=1}^{n} \big| y_{\text{new}}(x_i) - y_{\text{old}}(x_i) \big|
  1. 成对预测按请求 ID 对齐同一输入下新旧两个模型的输出。
    yold(xi), ynew(xi)y_{\text{old}}(x_i),\ y_{\text{new}}(x_i)
  2. 单样本差异两者差的绝对值,衡量该样本上的预测偏离。
    Δi=∣ynew(xi)−yold(xi)∣\Delta_i = \big| y_{\text{new}}(x_i) - y_{\text{old}}(x_i) \big|
  3. 平均差异全部影子样本上的平均偏离,作为整体对比的第一印象。
    Δˉ=1n∑i=1nΔi\bar{\Delta} = \frac{1}{n}\sum_{i=1}^{n} \Delta_i

指标体系设计

评审新厨师,不能只看一道菜。老师傅手里有一张打分表:口味占六成,摆盘占三成,出菜速度占一成。不同维度加权,才能把“这新厨师感觉不错”变成可量化、可对比的分数。

模型对比也需要这样一张打分表,通常分三层:业务指标(转化率、成交额、客诉率)反映最终业务结果;模型质量指标(准确率、AUC、NDCG 等,AUC 衡量排序能力,NDCG 衡量推荐排序质量)反映预测能力;系统性能指标(P95 延迟,即 95% 的请求都在该时限内完成,以及吞吐、算力占用)反映工程消耗。更重要的是口径统一:新旧模型必须在同一份数据、同一个时间段、同一个统计口径下计算,否则对比无效。

把三层指标加权合成综合得分,是评审表的数学表达:

一张精心设计的打分表,能把“凭感觉定厨师”变成“按权重算分数”。指标定得好,评审会就成功了一半;指标定得乱,后续分析全是空中楼阁。

Score=w1⋅Biz+w2⋅Qual+w3⋅Perf,∑k=13wk=1\text{Score} = w_1 \cdot \text{Biz} + w_2 \cdot \text{Qual} + w_3 \cdot \text{Perf},\quad \sum_{k=1}^{3} w_k = 1
  1. 业务指标反映模型对最终业务结果的影响,如转化率、成交额。
    Biz=正反馈样本数总样本数\text{Biz} = \frac{\text{正反馈样本数}}{\text{总样本数}}
  2. 质量与性能归一化质量指标与性能指标量纲不同,先归一化到同一尺度再合成。
    Qual, Perf∈[0, 1]\text{Qual},\ \text{Perf} \in [0,\ 1]
  3. 加权合成用权重表达各维度的优先级,权重之和为 1。
    Score=w1⋅Biz+w2⋅Qual+w3⋅Perf\text{Score} = w_1 \cdot \text{Biz} + w_2 \cdot \text{Qual} + w_3 \cdot \text{Perf}

差异显著性分析

新厨师平均分 82,老厨师 80。看起来新厨师赢了,可如果只试了 3 道菜,这个领先也可能是运气。试了 3000 道菜还稳定领先,才是真本事。统计检验要回答的正是:这个差距,到底可不可信?

影子验证天然是配对设计——同一输入对应新旧两个输出,差异不受订单本身差异干扰。大样本下常用配对 z 检验:先算每单的配对差,再算差值的均值与标准差,最后看平均差相对波动是否足够大。

配对 z 检验的公式如下:

评审会上没人看单题分数,大家只看置信区间和显著性:当差异在统计上站得住脚,新厨师的“强”才是真的强;否则这份 82 分,不过是运气好尝出来的甜头。

z=dˉsd/n=dˉ⋅nsdz = \frac{\bar{d}}{s_d / \sqrt{n}} = \frac{\bar{d} \cdot \sqrt{n}}{s_d}
  1. 配对差序列每个样本上新旧表现的差构成配对差。
    di=ynew(xi)−yold(xi)d_i = y_{\text{new}}(x_i) - y_{\text{old}}(x_i)
  2. 差均值与标准差度量平均改善程度与波动。
    dˉ=1n∑i=1ndi,sd=1n−1∑i=1n(di−dˉ)2\bar{d} = \frac{1}{n}\sum_{i=1}^{n} d_i,\quad s_d = \sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(d_i-\bar{d})^2}
  3. 标准误与 z 值平均差除以标准误,判断是否显著偏离 0;\|z\| 超过 1.96 时,95% 置信水平下认为差异显著。
    z=dˉ⋅nsdz = \frac{\bar{d} \cdot \sqrt{n}}{s_d}

安全上线决策

评审会终于召开。老板面前是三张硬条件:新厨师评分差异的 95% 置信下限越过达标线;出菜速度不慢于老厨师(P95 延迟不超红线);连续观察期表现稳定。三项同时满足,老板才签字放行——而即便签字,也先只在周末上一半的灶,跑稳了再全量。

这就是“准出标准”(Launch Gate):用置信区间下限而不是点估计做决策,避免被运气误导。配套的还有风险分级:影响面大、回滚难的场景用更保守的阈值,反之可适当放宽。验证通过后衔接灰度发布(Canary),让新模型先承接小比例真实流量,再逐步全量,同时保留一键回滚预案。

决策规则可以写成指示函数形式——只有所有条件同时成立,才返回“放行”:

签字放行不是拍脑袋,而是把信心量化成一条不可逾越的下限。评审会结束,新厨师终于可以上灶,但半扇灶台之外,回滚预案已经备好——安全上线的底气,来自每一步都有退路。

Launch=1 ⁣(CIlow≥τbiz and Perf95≤τperf)\text{Launch} = \mathbb{1}\!\big( \text{CI}_{\text{low}} \ge \tau_{\text{biz}} \ \text{and}\ \text{Perf}_{95} \le \tau_{\text{perf}} \big)
  1. 置信下限95% 置信区间下界,作为新模型真实水平的最保守估计。
    CIlow=dˉ−1.96⋅sdn\text{CI}_{\text{low}} = \bar{d} - 1.96 \cdot \frac{s_d}{\sqrt{n}}
  2. 业务准出线业务指标必须越过的最低门槛。
    CIlow≥τbiz\text{CI}_{\text{low}} \ge \tau_{\text{biz}}
  3. 性能红线P95 延迟不超过线上红线。
    Perf95≤τperf\text{Perf}_{95} \le \tau_{\text{perf}}
  4. 指示函数内部条件全部成立时返回 1(放行),否则返回 0(打回)。
    1(⋅)∈{0, 1}\mathbb{1}(\cdot) \in \{0,\ 1\}

Pipeline工程化

这套试菜流程如果全靠人工,每次模型升级都要开三天会。聪明的后厨把它写成 SOP:自动抄单、自动并排出菜、自动打分开卷、自动汇总报告,最后自动给老板一条“放行/打回”的建议。人只在关键节点拍板。

工程上就是影子验证 Pipeline:配置(流量复制与脱敏)→ 回放(双模型并行预测)→ 评估(指标体系与显著性检验)→ 决策(准出标准判定)→ 衔接发布(灰度与回滚)。每一步的输入输出都标准化,报告自动汇总到评审页面,异常自动告警,整个流程沉淀为平台能力,每次模型发版都在同一套流水线上跑。

流水线的组合逻辑可以用嵌套函数表达——数据从最内层流向最外层:

当“试菜”变成自动化的流水线,模型升级就不再是心惊胆战的大冒险,而是按部就班的例行发版。后厨的 SOP 沉淀下来,新厨师换了一茬又一茬,流程永远可靠地运转。

Out=Decide(Eval(Replay(Config(Donline))))\text{Out} = \text{Decide}\big( \text{Eval}\big( \text{Replay}\big( \text{Config}(D_{\text{online}}) \big) \big) \big)
  1. 配置把线上流量按规则复制并脱敏,得到影子数据集。
    Config(Donline)=Dshadow\text{Config}(D_{\text{online}}) = D_{\text{shadow}}
  2. 回放影子模型按双轨并行方式对 D_shadow 做预测,产出成对结果。
    Replay(Dshadow)={ (yold, ynew)i }\text{Replay}(D_{\text{shadow}}) = \{\, (y_{\text{old}},\ y_{\text{new}})_i \,\}
  3. 评估计算指标、置信区间与显著性,形成评审依据。
    Eval(⋅)={Δˉ, CIlow, z, Score}\text{Eval}(\cdot) = \{\bar{\Delta},\ \text{CI}_{\text{low}},\ z,\ \text{Score}\}
  4. 决策依据准出标准返回“放行”或“打回”。
    Decide(⋅)∈{放行, 打回}\text{Decide}(\cdot) \in \{\text{放行},\ \text{打回}\}

AI 应用场景

场景一:风控模型发版前的零风险验证

阶段:模型上线前验证 / 部署与发布

解决的问题:风控模型直接替换可能误伤正常用户、引发资损。传统做法要么全量上线赌一次,要么花大量人工做离线回测,而离线回测的样本分布又与真实流量不一致。影子模式让新模型挂在生产旁并行打分,用真实流量零风险验证。

具体案例:某支付公司在反欺诈模型发版前,将新模型以影子节点运行两周,采集 500 万笔真实交易的双模型打分。对比发现,在“老模型放行、新模型拦截”的样本中有 1.2% 最终确认欺诈,证明新模型可提前拦截 12% 欺诈且误伤率不变,随后才全量切换。

场景二:推荐模型大规模实验的前置筛选

阶段:模型实验评估 / 特征与模型迭代

解决的问题:推荐团队每月十几个新模型,不可能每个都进 A/B 消耗真实流量。用影子模式并行打分、成对对比点击预估误差,可快速淘汰明显更差的候选,只有 top 候选才进入 A/B,节省实验流量与周期。

具体案例:某电商推荐团队用影子模式对新旧排序模型并行打分 3 天,按请求 ID 计算 NDCG 与点击率预估误差,发现 11 个候选中只有 2 个显著优于线上模型,将其送入 A/B 后,实验周期缩短一半。

场景三:LLM 客服升级的质量回归

阶段:模型监控与质量评估

解决的问题:LLM 版本升级可能带来回答风格漂移或安全性下降,直接切换风险大。影子模式下新旧模型同时应答线上提问,新模型回答不真正发送给用户,由离线评估器打分比对后再决定是否切换。

具体案例:某企业智能客服在切换基座模型前,影子运行一周,覆盖 10 万条真实用户问题,评估相关性、安全性与拒绝率三项指标,确认新模型相关性提升 8%、安全回复率不降后才放行并配合灰度发布。

Python 演示

python69 行
# 影子模式(Shadow Mode)最小模拟: 并行预测、配对差异分析、上线决策import mathimport random  class ShadowEval:    """影子模式评估器: 并行运行新老模型并做配对显著性检验"""     def __init__(self, prod_model, shadow_model):        self.prod_model = prod_model        self.shadow_model = shadow_model        self.pair_list = []   # 成对预测记录 (x, y_old, y_new)        self.total_count = 0  # 已处理请求计数     def run(self, requests):        for x in requests:            y_old = self.prod_model(x)            y_new = self.shadow_model(x)            self.pair_list.append((x, y_old, y_new))            self.total_count += 1     def paired_diffs(self):        # d_i = 老模型误差 - 新模型误差, 正数代表新模型更优        diffs = []        for x, y_old, y_new in self.pair_list:            err_old = abs(y_old - x["true"])            err_new = abs(y_new - x["true"])            diffs.append(err_old - err_new)        return diffs     def z_test(self):        d = self.paired_diffs()        n = len(d)        mean_d = sum(d) / n        sd = math.sqrt(sum((v - mean_d) ** 2 for v in d) / (n - 1))        z = mean_d * math.sqrt(n) / sd        return z, mean_d, sd, n  def prod_model(x):    random.seed(x["id"] * 7)    return x["true"] + 0.15 * random.gauss(0, 1)  def shadow_model(x):    random.seed(x["id"] * 13)    return x["true"] + 0.10 * random.gauss(0, 1)  def main():    random.seed(42)    requests = [        {"id": i, "true": 0.3 + 0.4 * random.random()}        for i in range(5000)    ]    ev = ShadowEval(prod_model, shadow_model)    ev.run(requests)    z, mean_d, sd, n = ev.z_test()    print("影子样本数:", n)    print("平均每单误差改进: %.4f" % mean_d)    print("z 统计量: %.4f" % z)    if z > 1.96:        print("结论: 新模型显著优于老模型")    else:        print("结论: 差异不显著, 暂不上线")  if __name__ == "__main__":    main()
目的:用合成流量模拟影子模式验证——新旧模型并行预测、按请求成对记录误差,并用配对 z 检验判断新模型是否显著更优,实现零风险上线前的自动评估。
  1. ev = ShadowEval(prod_model, shadow_model)用新旧模型构建影子评估器
  2. ev.run(requests)对 5000 个请求并行预测并成对记录
  3. self.pair_list.append((x, y_old, y_new))把每单新旧预测成对落库
  4. err_old = abs(y_old - x["true"])计算老模型在该单上的误差
  5. z = mean_d * math.sqrt(n) / sd计算配对 z 统计量,衡量差异可信度
  6. if z > 1.96:差异显著才放行,对应准出标准

常见误区

误区影子模式和 A/B 测试差不多,都是把一部分真实用户分给新模型做实验。

正解两者有本质区别。影子模式并不把真实用户分给新模型——新模型输出不参与线上决策,用户完全无感,属于零风险并行验证;A/B 测试才是真实分流,新版本决策直接作用于用户,有体验风险。实际工程中二者常配合:影子模式先筛出候选,再进 A/B 做最终确认。

为何常见:两者都是“新旧对比”的流程,表面相似,容易混为一谈。

误区影子模式跑几天,新模型分数比老模型高,就可以直接切换上线。

正解分数高可能只是运气。必须用配对检验和置信区间判断差异是否显著,同时满足业务、质量、性能三层指标与准出标准,再经灰度发布衔接。只看点估计就上线,等于把概率当结论。

为何常见:人脑天然擅长“大小比较”,却容易忽略样本波动和样本量带来的不确定性。

误区影子验证数据越多越有效,所以应该全量复制线上流量,最保险。

正解全量复制会把线上峰值流量近乎翻倍地灌给影子节点,造成资源成本飙升,甚至拉高线上延迟。应该按业务面圈定范围、按采样率控制量级,并对敏感字段脱敏,在覆盖度与成本之间取平衡。

为何常见:习惯性认为“数据多=效果好”,忽视了影子验证的工程代价与数据合规要求。

误区新模型在影子模式里跑得不错,说明它已经是可信的,直接全量替换即可。

正解影子验证证明的是“并行环境下表现达标”,不等于真实环境一定稳定。上线前仍需按风险分级设定阈值,先灰度到小比例真实流量,观察线上指标后再逐步全量,并随时准备一键回滚。

为何常见:把“验证”与“发布”两个环节混为一步,低估了真实环境与影子环境的差异。

面试题

Q1. 影子模式(Shadow Mode)的核心特征是什么?

单选题 · easy

  • A.新模型直接接管线上流量
  • B.新模型并行预测但不生效← 正确答案
  • C.新模型只处理离线历史数据
  • D.新旧模型轮流服务用户

答案:B。影子模式让新模型接收真实流量副本、并行预测,但结果不参与决策——就像新厨师悄悄做菜但不上桌。A 是直接接管,C 是离线回放,D 是轮流服务,均不符合定义。

Q2. 影子模式与 A/B 测试最本质的区别是?

单选题 · easy

  • A.影子模式不改变用户体验← 正确答案
  • B.A/B 测试不需要样本量
  • C.影子模式只用于推荐系统
  • D.A/B 测试不涉及统计检验

答案:A。A/B 测试把真实用户分桶到新版本,新版本决策直接生效;影子模式的新模型不产生真实决策,用户无感知。B、C、D 的说法均与事实不符。

Q3. 影子流量配置中,采样率 Rate 的定义正确的是?

单选题 · mid

  • A.影子请求数除以线上总请求数← 正确答案
  • B.线上请求数除以影子请求数
  • C.新模型参数数量除以总参数量
  • D.影子运行天数除以总观测天数

答案:A。Rate = N_shadow / N_online,反映复制进影子环境的流量占比,用于控制覆盖度与成本。B 是倒数,C、D 与采样率无关。

Q4. 影子样本 n=2500,配对差均值 d̄=0.02,差的标准差 s=0.5,则 z 统计量约为多少?

单选题 · mid

  • A.1.00
  • B.1.96
  • C.2.00← 正确答案
  • D.2.50

答案:C。z = d̄ × √n / s = 0.02 × 50 / 0.5 = 2.00。因为 |z| > 1.96,在 95% 置信水平下认为新旧模型的差异显著。

Q5. 95% 置信水平下,配对 z 检验拒绝“新旧模型无差异”的双侧临界值约为?

单选题 · mid

  • A.1.28
  • B.1.65
  • C.1.96← 正确答案
  • D.2.58

答案:C。双侧 95% 对应 z₀.₉₇₅ = 1.96;1.65 是单侧 95% 的临界值,2.58 对应双侧 99%,1.28 对应单侧 90%。影子模式做差异验证时通常用 1.96 作为达标分界线。

Q6. 综合得分 Score = 0.6×业务 + 0.3×质量 + 0.1×性能,若业务=0.85、质量=0.90、性能=0.70,则 Score 为?

单选题 · hard

  • A.0.790
  • B.0.820
  • C.0.850← 正确答案
  • D.0.880

答案:C。Score = 0.6×0.85 + 0.3×0.90 + 0.1×0.70 = 0.51 + 0.27 + 0.07 = 0.85。权重之和为 1,说明综合得分是三层指标的加权折中。

Q7. 以下哪个是影子验证 Pipeline 的正确阶段顺序?

单选题 · hard

  • A.决策、评估、回放、配置
  • B.配置、回放、评估、决策← 正确答案
  • C.回放、配置、决策、评估
  • D.评估、配置、决策、回放

答案:B。先配置影子流量,再双轨并行回放,再计算指标与显著性,最后按准出标准决策。其他选项的阶段顺序逻辑错乱,无法构成可运行的验证流水线。

Q8. 关于影子模式实现零风险上线验证,以下哪些说法正确?

多选题 · mid

  • A.新模型预测结果可以安全丢弃
  • B.新模型不参与线上真实决策← 正确答案
  • C.影子流量可不经脱敏直接使用
  • D.对比结果需成对存储按ID关联← 正确答案

答案:BD。影子模式的核心是“不生效”,且对比结果必须成对存储才能支撑差异分析,所以 B、D 正确。预测结果并非可丢弃,而是要记录用于分析;影子流量含敏感信息,必须脱敏,故 A、C 错误。

Q9. 关于差异显著性分析,正确的说法包括?

多选题 · hard

  • A.样本量越大效应越容易显著← 正确答案
  • B.置信区间给出真实差异的可能范围← 正确答案
  • C.样本量 n 只需大于等于 2 即可
  • D.平均差大且标准差小时 z 值更大← 正确答案

答案:ABD。z = d̄×√n / s,n 越大、d̄ 越大或 s 越小时 z 越大,越容易显著,故 A、D 正确;置信区间确实给出真实差异的可能范围,B 正确。n≥2 只是计算前提,远不足以支撑可靠结论,还需功效分析确定样本量,C 错误。

Q10. 影子模式(Shadow Mode)的适用场景包括?

多选题 · easy

  • A.高风险模型替换前的验证← 正确答案
  • B.A/B 测试的前置筛选环节← 正确答案
  • C.新模型直接全量上线的通道
  • D.模型发版前的安全验证步骤← 正确答案

答案:ABD。影子模式适合发版/替换前的零风险验证,也可作为 A/B 测试的前置筛选;“直接全量上线”正是影子模式要避免的做法,因此 C 不属于适用场景。