在一家互联网大厂里,每年都有员工入职、在职、离职。离职不是“收拾东西走人”那么简单——HR 要组织工作交接、回收工牌和电脑、把人事档案存进资料室、保留离职证明备查。这一整套流程,既让公司合规运转,也让后来人能顺利接手。 AI 模型也一样。一个模型训练完成相当于“入职”,部署上线相当于“上岗”,服务业务几个月甚至几年后,业务调整或模型老化,就像员工绩效不达标、岗位冗余,需要“离职”——这就是模型淘汰。但直接把模型文件删掉?那就等于员工连夜消失,公司会乱套。所以 MLOps 团队要有规范的“员工离职流程”:先评估淘汰、再安全下线、然后数据归档、资源回收、审计留痕、复盘改进。这篇文章就用“离职手续”这个比喻,把模型生命周期最后一程的每一步讲清楚。你已经知道怎么训练和部署模型,是时候学会让老模型体面退场了。

岗位关联

掌握模型归档与安全淘汰,能让 AI 从业者安全合规地清理海量过期模型,节省可观的 GPU 与存储成本,并让平台始终整洁可控——这是 MLOps 工程师的核心工程能力之一。

目录
  1. 可视化演示
  2. 淘汰决策:给模型打绩效
  3. 安全下线:像办离职交接
  4. 数据归档:把档案存进资料室
  5. 资源回收:归还工牌和电脑
  6. 审计合规:HR 的合规档案柜
  7. 复盘改进:让离职流程越办越顺
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示模型从生产(Prod)→预警(Warn)→归档(Arch)→删除(Del)的完整生命周期流程,底层Audit审计记录保障合规性和成本控制。

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

模型归档与安全淘汰 Prod(生产):模型在线服务;Warn(预警):性能下降触发淘汰评估 Arch(归档):保留历史版本和审计记录;Del(删除):安全下线释放资源 生命周期:Prod → Warn → Arch → Del

淘汰决策:给模型打绩效

员工离职的第一个触发点,来自定期的绩效评估:绩效常年垫底、岗位被裁撤、或者有更优秀的新人顶替。模型也是这样——不是“想下线就下线”,而是要有标准地评估。很多团队的习惯是“准确率低于 90% 就淘汰”,这就像只看员工出勤天数就决定裁员一样片面。一个准确率 95% 但推理成本极高的模型,可能远不如 92% 但便宜的模型值得保留。

真正的淘汰决策,要给模型打一个“综合绩效分”——健康度(Health Score)。健康度把三个关键维度加权在一起:模型在近期数据上的准确率(业务能力)、推理延迟的归一化评分(干活快不快)、以及数据漂移程度(面对的新数据和训练时分布差距有多大,相当于员工被调去完全不熟悉的岗位)。

H=w1×Accnorm+w2×Latnorm+w3×(1−Driftscore)\displaystyle H = w_1 \times Acc_{norm} + w_2 \times Lat_{norm} + w_3 \times (1 - Drift_{score})

1. 准确率分量:$Acc_{norm}$ 是模型在近期验证集上准确率的归一化得分(0 到 1),代表“业务能力还有多强”。

Accnorm∈[0,1]Acc_{norm} \in [0,1]

2. 延迟分量:$Lat_{norm}$ 是推理延迟的归一化评分,延迟越低得分越高,代表“干活是否还利索”。

Latnorm=1−LatmsLatmaxLat_{norm} = 1 - \frac{Lat_{ms}}{Lat_{max}}

3. 漂移惩罚项:$1 - Drift_{score}$ 中,$Drift_{score}$ 越大说明数据漂移越严重,保留价值越低,因此用 1 减去它作为惩罚。

Driftscore∈[0,1]Drift_{score} \in [0,1]

4. 加权求和:$w_1, w_2, w_3$ 是三个维度的重要性权重,由业务方和算法团队共同确定,三者相加等于 1。

∑i=13wi=1\sum_{i=1}^{3} w_i = 1

这份“绩效表”建议每月自动跑一次、每季度人工复核一次。当健康度跌破阈值、且业务价值评估认为“留着不划算”时,模型就正式进入退役候选名单。就像 HR 拿着绩效表找员工谈话:“你最近状态不好,公司准备让你离开了。”——而接下来,就是体面的离职流程。

安全下线:像办离职交接

决定让模型“离职”之后,最忌讳的就是当天拔电源。员工辞职要交接文档、告知协作方;模型下线最怕“还在被调用,服务却没了”。安全下线要解决两件事:流量切换(把线上请求从老模型一点点转到新模型)和依赖排查(这个模型还被哪些上游服务、日志系统、监控面板引用?)。这两件事没做完就下线,就像员工离职前没告诉同事“我的活儿由谁接”,线上事故分分钟爆发。

流量切换不能一步到位,而要灰度放量:先让 5% 的流量走新模型,观察监控指标正常后,再逐步放大。这里的放量节奏可以用一个简单的比例函数描述:

p(t)=min⁡(tT,1)\displaystyle p(t) = \min\left(\frac{t}{T}, 1\right)

1. 已切换时长:$t$ 表示从开始切流到当前时刻经过的时间,单位通常为分钟或小时。

t≥0t \ge 0

2. 计划总时长:$T$ 是团队与依赖方确认的安全切换窗口,比如“2 小时内完成全量切换”。

T>0T > 0

3. 进度比例:$\frac{t}{T}$ 是当前放量的理论进度,在 $t$ 超过 $T$ 后会大于 1。

tT∈[0,∞)\frac{t}{T} \in [0, \infty)

4. 上限截断:$\min(\cdot, 1)$ 保证放量比例最多到 1,也就是 100% 全量切换,不会出现“放量 120%”的荒谬情况。

p(t)∈[0,1]p(t) \in [0,1]

在放量过程中,每一步都要看四个信号:错误率、延迟、业务转化指标、依赖方告警。任何一项异常,立刻触发回滚预案——把流量倒回旧模型。这就像新员工试用期内表现不好,公司可以说“试用期不通过,请你回来”——前提是旧员工(旧模型)还没注销工号(还没被删除)。所以“回滚预案”必须在切流之前设计好,而不是出事后再翻文档。

数据归档:把档案存进资料室

员工离职后,HR 要把劳动合同、工资记录、工作交接文档整理成档案,存进资料室并保留若干年。模型退役后也不能直接删,要把“离职档案”归档:包括模型版本快照(权重文件、代码版本、Docker 镜像)、元数据(模型的“身份证信息”:版本号、训练框架、训练数据指纹、评测指标、上线和下线时间戳)、以及本次淘汰的审批记录。

归档要存多久?不是拍脑袋定“存 3 年”,而是由两个约束取最大值:

Tretain=max⁡(Tregulatory,Tcontract)\displaystyle T_{retain} = \max(T_{regulatory}, T_{contract})

1. 法规保留期:$T_{regulatory}$ 是行业法规强制要求的最短保留年限,比如金融行业对风控模型评分记录的保留要求通常更长。

Tregulatory≥0T_{regulatory} \ge 0

2. 合同保留期:$T_{contract}$ 是公司与客户或合作方在合同中约定的数据存续期。

Tcontract≥0T_{contract} \ge 0

3. 取最大值:$\max(\cdot)$ 表示两个约束同时满足,保留期取两者中较长的一个,避免合规风险。

Tretain≥Tregulatory 且 Tretain≥TcontractT_{retain} \ge T_{regulatory} \text{ 且 } T_{retain} \ge T_{contract}

归档存储要跟生产存储分开,通常用成本更低的冷存储(对象存储或磁带库),就像资料室放在地下室,便宜但找起来慢。注意,归档不等于备份:备份是为了“灾难后快速恢复”,归档是为了“合规备查和知识沉淀”。档案进了资料室,不是让它随时被调用,而是让它安安静静地躺着,等监管检查或未来复盘时需要它。

资源回收:归还工牌和电脑

离职流程的最后一关,是让员工归还工牌、电脑、门禁卡。模型退役的资源回收,就是把这个动作搬到基础设施上:GPU 显存要释放、推理服务进程要停止、模型文件和相关缓存要清理、Docker 镜像要删除、环境变量和访问权限要收回、监控告警要解除。任何一项漏掉,都在持续烧钱或留下安全隐患。

资源回收到底省了多少钱?它不是一个抽象概念,而是一笔可以算清的账:

Creleased=Ccompute+Cstorage+Cops\displaystyle C_{released} = C_{compute} + C_{storage} + C_{ops}

1. 算力成本:$C_{compute}$ 是释放的 GPU/CPU 租用费用,等于资源单价乘以运行时长。

Ccompute=Rgpu×ThoursC_{compute} = R_{gpu} \times T_{hours}

2. 存储成本:$C_{storage}$ 是清理的模型文件、日志、快照占用的存储费用,等于存储量乘以单价。

Cstorage=SGB×PGBC_{storage} = S_{GB} \times P_{GB}

3. 运维成本:$C_{ops}$ 是节省的监控、告警和人工维护开销,等于节省人时乘以人力时薪。

Cops=Hops×RhourC_{ops} = H_{ops} \times R_{hour}

4. 成本求和:三类成本相加就是每月释放的总额,乘以回收时长即可用于汇报“本次治理节省了多少钱”。

Creleased=Ccompute+Cstorage+CopsC_{released} = C_{compute} + C_{storage} + C_{ops}

做资源回收时有一个容易忽略的细节:清理顺序。要先确认归档已完成、审计日志已落盘,再执行删除。就像员工先办完离职手续、档案入柜,最后才交工牌走人。如果顺序反了——先删资源再补归档——一旦中间某个环节失败,模型就“尸骨无存”,既没有档案,也没有证据。

审计合规:HR 的合规档案柜

为什么要留审计日志?因为怕“非法解雇”被告上法庭。监管来检查时,如果答不上“这个模型为什么停用?谁批准的?什么时候做的?依据是什么?”,就是严重的合规事故。审计机制的核心不是“记了就行”,而是“记录了之后没人能篡改”。

审计日志要做到三件事:只追加(append-only,任何人不能修改历史记录)、写读分离(写日志的人和读日志的人权限分开)、防篡改(用哈希链把每条日志和上一条绑定)。哈希链的原理很优雅,像锁链一样一环扣一环:

Digestnew=Hash(Digestold∥Logentry)\displaystyle Digest_{new} = Hash(Digest_{old} \| Log_{entry})

1. 旧摘要:$Digest_{old}$ 是上一条审计日志的哈希摘要,它是链条的“上一环”。

Digestold=Hash(prev entry)Digest_{old} = Hash(\text{prev entry})

2. 日志内容:$Log_{entry}$ 是本次操作的结构化记录,包括模型 ID、动作类型、操作人、时间戳和结果。

Logentry=(model_id,action,operator,ts)Log_{entry} = (\text{model\_id}, \text{action}, \text{operator}, \text{ts})

3. 拼接符号:$\|$ 表示把旧摘要和日志内容拼接成一个字符串,作为哈希函数的输入。

Digestold∥LogentryDigest_{old} \| Log_{entry}

4. 哈希运算:$Hash(\cdot)$ 通常是 SHA-256,输出固长摘要。只要输入有任何变化,输出就面目全非,从而保证链条不可篡改。

Digestnew=SHA256(Digestold∥Logentry)Digest_{new} = SHA256(Digest_{old} \| Log_{entry})

审计日志平时确实没人看,就像保险一样,出险时才发觉它的价值。但正因为如此,它必须在“平静时期”就被正确设计:权限管控(只有合规审计员能读)、不变性(任何人不能改)、完整性(每次下线都有记录)。等到监管检查或安全事故发生时,这套档案柜就是唯一的救命稻草。

复盘改进:让离职流程越办越顺

每一次员工离职办完后,有经验的 HR 会复盘:流程有没有卡顿?文档是否齐全?下次能不能更快?模型退役也一样。这个环节最容易被忽视,但恰恰是团队工程能力持续提升的关键。复盘的核心是把问题沉淀成文档:本次下线有没有遇到依赖方不配合?归档存储有没有容量瓶颈?回滚预案是否真的可用?

复盘的效果可以用一个直观的效率指标衡量:

Eimprove=Told−TnewTold×100%\displaystyle E_{improve} = \frac{T_{old} - T_{new}}{T_{old}} \times 100\%

1. 优化前耗时:$T_{old}$ 是流程改进前,单个模型从评估到资源回收的平均时长。

Told=avg(retire time before)T_{old} = \text{avg(retire time before)}

2. 优化后耗时:$T_{new}$ 是改进后的平均时长,复盘后每个优化动作都应当让这个数字下降。

Tnew=avg(retire time after)T_{new} = \text{avg(retire time after)}

3. 时间节省量:$T_{old} - T_{new}$ 是每次优化节省的绝对时间,数值越大说明改进越有效。

Told−Tnew>0T_{old} - T_{new} > 0

4. 标准化提升率:除以 $T_{old}$ 后乘以 100%,消除团队规模差异,得到可横向对比的百分比。

Told−TnewTold×100%\frac{T_{old} - T_{new}}{T_{old}} \times 100\%

复盘改进的最终产出是三样东西:一份更新后的标准操作流程(SOP)、一个可复用的下线检查清单、以及一页“踩坑记录”文档。就像 HR 把优化后的离职流程写进员工手册,下一次办离职时,所有人照着做就能又快又稳。模型退役这件事,从“每次手忙脚乱”变成“半小时内自动跑完”,就是 MLOps 平台成熟度的最好证明。

AI 应用场景

金融风控模型合规退役

阶段:模型管理与合规治理

解决的问题:金融监管要求模型停用后仍需保留评分依据和完整审计轨迹。传统做法是人工把档案导出到 Excel 和共享网盘,既容易遗漏,也无法证明“没被篡改”。AI 平台将淘汰评估、归档、审计自动串成流水线,保留期自动按法规设定,哈希链保证日志不可篡改。

具体案例:某银行零售信贷风控模型被新一代模型替代。平台自动执行健康度评估(评分卡旧模型健康度跌破阈值)、生成下线审批单、归档全部版本快照与元数据(保留期 5 年)、把审计日志写入哈希链。3 个月后监管现场检查,审计员一键导出完整证据链,一次通过,没有补任何材料。

电商推荐模型季度汰换

阶段:模型生命周期管理

解决的问题:电商平台每季度训练多个推荐模型,旧模型长期占用 GPU 和存储,导致新模型排队等资源。传统“人肉清理”靠运维同学手动下线,风险高、速度慢。用健康度评分自动标记低效模型,走安全下线、归档、资源回收的标准流水线。

具体案例:某电商平台累计管理 200+ 推荐模型,季度清理时自动找出健康度低于 0.5 的旧模型,灰度切流到新模型后确认业务指标无回退,再归档并释放 GPU 配额。一个季度回收约 60% 的闲置推理资源,推理成本下降约 30%。

模型退役回滚自动化

阶段:变更管理与应急响应

解决的问题:新模型上线后效果崩溃,需要快速回滚到已归档的旧模型。很多团队因为归档不完整,只能“重建”旧模型环境,耗时数天。完整归档让回滚变成“取档案、恢复服务”两个动作。

具体案例:某推荐系统新模型上线 1 小时后点击率下降 20%,平台自动触发回滚预案,从归档存储中恢复旧模型版本快照和运行配置,5 分钟内完成流量回切,业务恢复稳定。事后复盘发现,正是归档阶段保存了完整的环境依赖和配置,才让回滚如此迅速。

Python 演示

python82 行
import timeimport hashlib  class ModelRetirementManager:    """模型退役管理器:健康度评估->下线->归档->回收->审计"""     def __init__(self):        self.models = {}        self.logs = []        self._gc_count = 0     def register(self, model_id, accuracy, latency_ms, drift_score):        self.models[model_id] = {            'accuracy': accuracy,            'latency_ms': latency_ms,            'drift_score': drift_score,            'status': 'running',        }        self._append_log(model_id, 'register', '模型登记上线')     def health_score(self, model_id, w1=0.4, w2=0.3, w3=0.3):        m = self.models[model_id]        lat_norm = max(0, 1 - m['latency_ms'] / 1000.0)        return w1 * m['accuracy'] + w2 * lat_norm + w3 * (1 - m['drift_score'])     def evaluate(self, model_id, threshold=0.6):        h = self.health_score(model_id)        if h < threshold:            self._append_log(model_id, 'evaluate',                             '健康度 %.2f 低于阈值 %.2f,判定淘汰' % (h, threshold))            return True        self._append_log(model_id, 'evaluate', '健康度 %.2f 达标,继续服役' % h)        return False     def offline(self, model_id):        self.models[model_id]['status'] = 'offline'        self._append_log(model_id, 'offline', '流量已切换,安全下线')     def archive(self, model_id, retention_days):        m = self.models[model_id]        m['status'] = 'archived'        m['retention_days'] = retention_days        snapshot = hashlib.sha256(model_id.encode()).hexdigest()        m['snapshot'] = snapshot        self._append_log(model_id, 'archive', '归档完成,保留 %d 天' % retention_days)     def reclaim(self, model_id):        gpu_cost = 1200.0        storage_cost = 80.0        self._gc_count += 1        self.models[model_id]['status'] = 'reclaimed'        self._append_log(model_id, 'reclaim',                         '资源回收完成,释放成本约 %.0f 元/月' % (gpu_cost + storage_cost))     def _append_log(self, model_id, action, detail):        self.logs.append({            'ts': time.strftime('%Y-%m-%d %H:%M:%S'),            'model_id': model_id,            'action': action,            'detail': detail,            'digest': self._chain_hash(action, detail),        })     def _chain_hash(self, action, detail):        prev = self.logs[-1]['digest'] if self.logs else 'GENESIS'        raw = '%s|%s|%s' % (prev, action, detail)        return hashlib.sha256(raw.encode()).hexdigest()[:16]     def audit_trail(self, model_id):        return [log for log in self.logs if log['model_id'] == model_id]  if __name__ == '__main__':    mgr = ModelRetirementManager()    mgr.register('rec-2024-v3', accuracy=0.72, latency_ms=85, drift_score=0.55)    if mgr.evaluate('rec-2024-v3', threshold=0.65):        mgr.offline('rec-2024-v3')        mgr.archive('rec-2024-v3', retention_days=180)        mgr.reclaim('rec-2024-v3')    for entry in mgr.audit_trail('rec-2024-v3'):        print('%(ts)s [%(action)s] %(detail)s digest=%(digest)s' % entry)
目的:用一个可运行的退役管理器,演示健康度评估、安全下线、归档留档、资源回收与哈希链审计的完整流程。
  1. mgr.register('rec-2024-v3', accuracy=0.72, latency_ms=85, drift_score=0.55)模型登记,相当于给员工建立人事档案
  2. mgr.evaluate('rec-2024-v3', threshold=0.65)计算健康度并与阈值比较,返回是否退役
  3. mgr.health_score(model_id, w1=0.4, w2=0.3, w3=0.3)加权求和三个维度,对应正文的健康度公式
  4. mgr.offline('rec-2024-v3')标记为已下线,模拟流量切换完成
  5. mgr.archive('rec-2024-v3', retention_days=180)归档并设定保留期,生成快照摘要
  6. mgr.reclaim('rec-2024-v3')模拟资源回收并统计释放成本
  7. mgr._chain_hash(action, detail)用上一条摘要拼接本条日志做哈希,形成防篡改链
  8. mgr.audit_trail('rec-2024-v3')查询某一模型的全部审计轨迹,供合规检查使用

常见误区

误区“旧模型没用了,`rm -rf` 一下,干干净净多省事。反正新模型已经上线了,留着旧文件就是浪费空间。”

正解下线不等于删除。直接删除会让团队失去恢复和追溯能力:万一新模型上线后效果崩了需要回滚呢?监管要求保留评分证据呢?正确顺序是“安全下线 → 数据归档 → 保留期满 → 再清理”。就像员工离职要先办交接、档案保留期满后才能销毁,而不是人还没走就把工位砸了。

为何常见:开发同学习惯了“不要的代码就删”,但生产模型涉及业务连续性、合规审计和可回滚性,远比普通代码复杂。

误区“归档和备份不是一回事吗?都是把模型文件复制一份存起来,顶多存的格式不同。”

正解备份服务于灾难恢复,目标是“出事时最快恢复运行”,通常存热存储或温存储;归档服务于合规备查和知识沉淀,目标是“长期保存证据链”,通常存冷存储,且伴随完整的元数据和审计日志。备份像员工出差的临时交接,归档像离职档案的永久入库,两者目的完全不同。

为何常见:两者都涉及“复制一份数据”,表面动作太像,新人很容易把目的混为一谈。

误区“准确率高的模型就该一直留着,准确率跌破 90% 就立刻淘汰,其他指标都是虚的。”

正解准确率只是健康度的一个因子。业务价值、推理延迟、数据漂移、运行成本同样重要。一个 95% 准确率但每次推理成本 10 元的模型,可能不如 92% 但成本 1 元的模型划算。淘汰决策应该是多维度加权综合评分,而不是单看一个数字。

为何常见:准确率是最直观、最容易拿到的指标,也是新手最容易只盯着的那个"KPI"。

误区“模型文件删掉就完事了,存储空间省下来,资源的钱不就省下来了吗?”

正解资源回收的范围远不止存储:GPU/CPU 算力释放、推理服务进程停止、Docker 镜像删除、环境变量与权限回收、监控告警解除、Redis 缓存清理,每一项都算。漏掉镜像或缓存,存储账单照样在涨;漏掉服务进程,算力账单也照扣。就像离职员工不光要清空工位,还要还电脑、交门禁卡、注销账号。

为何常见:存储文件是“看得见的资源”,GPU 进程、容器镜像、访问权限这些“看不见的资源”容易被忽略。

误区“平时也没人看审计日志,随便打个日志就行,甚至不开审计功能也出不了大事。”

正解审计日志是典型的“出事才值钱”的保险。监管检查、安全事件溯源、团队内部纠纷(比如“这个下线是谁批的?为什么没有审批记录?”),都依赖完整不可篡改的日志。它要 append-only、权限分离、哈希链防篡改。平时没人读,关键时刻是唯一的救命稻草。

为何常见:人的注意力天然被“当前紧急事务”吸引,而“未来可能被追责”这种概率性风险,很难让人产生紧迫感。

面试题

Q1. 模型淘汰决策最核心的输入是什么?

单选题 · easy

  • A.模型参数量的大小
  • B.健康度与业务价值← 正确答案
  • C.训练数据的规模
  • D.推理框架的版本

答案:B。淘汰决策核心是“该不该让模型退休”,健康度(准确率、延迟、数据漂移的加权)和业务价值是决定因素。参数量、训练数据量、框架版本只是工程属性,不直接决定是否淘汰。就像裁员评估看绩效和岗位价值,不看工位大小。

Q2. 模型下线之前,第一步应该做什么?

单选题 · easy

  • A.直接删除模型文件
  • B.切断流量排查依赖← 正确答案
  • C.格式化 GPU 节点
  • D.邮件通知业务方

答案:B。安全下线第一步是切断流量并排查依赖,确保没有服务还在调用它。直接删文件、格式化节点是暴力操作,会导致线上故障。相当于员工辞职要先交接工作、告知同事,而不是直接消失不见。

Q3. 模型归档与普通备份的核心区别是什么?

单选题 · mid

  • A.归档需占用更多空间
  • B.归档服务合规证据链← 正确答案
  • C.备份的数据恢复更快
  • D.归档只存储模型参数

答案:B。归档的服务目标是合规备查与知识沉淀,伴随完整元数据和审计日志;备份服务于灾难恢复,目标是尽快恢复运行。C 是表象差异,A 和 D 都不准确。就像离职档案入库(归档)和出差临时交接(备份)目的完全不同。

Q4. 以下哪些资源属于模型退役时需要回收的范围?

多选题 · mid

  • A.GPU 显存资源← 正确答案
  • B.模型存储文件← 正确答案
  • C.线上推理缓存← 正确答案
  • D.训练师的工位

答案:ABC。GPU 显存、模型存储文件、线上推理缓存(比如 Redis)都在回收范围内。训练师的工位是比喻里的元素,不归算力平台管。资源回收要像离职收工牌、电脑、门禁卡一样全面。

Q5. 保留期公式 T = max(T_reg, T_contract) 中的 max 含义是什么?

单选题 · mid

  • A.取两者中较大者← 正确答案
  • B.取两者中较小者
  • C.求和后的总时长
  • D.计算平均时长

答案:A。max 表示“两个约束都要满足,所以取较长者”。比如法规要求至少保留 5 年、合同约定 3 年,就取 5 年。取较小值会踩合规红线,求和则造成无谓的存储浪费。

Q6. 灰度下线时,新模型承接 10% 流量后线上报错率翻倍,正确操作是什么?

单选题 · hard

  • A.继续放量至百分之五十
  • B.立即全量下线新模型
  • C.触发回滚恢复旧模型
  • D.忽略问题等待系统自愈

答案:。灰度放量到 10% 就发现报错率翻倍,说明新模型或切换过程有严重问题。正确做法是触发回滚预案,把流量倒回旧模型。继续放量会扩大故障;“立即全量下线新模型”如果旧模型还没归档清理,其实也是回滚的一种,但标准流程是触发预案,所以选 C。

Q7. 模型元数据归档应包含哪些内容?

多选题 · mid

  • A.版本号与训练框架← 正确答案
  • B.评测指标与数据指纹← 正确答案
  • C.上下线时间戳记录← 正确答案
  • D.部署机器与负责人← 正确答案

答案:ABCD。元数据是模型的“身份证+档案”,版本、框架、评测指标、训练数据指纹、时间戳、部署信息、负责人全部要归档。只有存全了,未来才能回答“这个模型是什么、为什么存在、是否合规”。

Q8. 审计日志“不可篡改”的关键技术保障是什么?

单选题 · hard

  • A.日志文件存得足够深
  • B.追加哈希链权限分离← 正确答案
  • C.文件名难以被猜测
  • D.使用加密的记事本记录

答案:B。不可篡改来自技术设计:append-only 保证只能追加、哈希链把每条日志和上一条绑定(改一条全链断)、写日志与审计权限分离。存得深、文件名保密都不是真正的安全机制,加密记事本更是反模式。

Q9. 模型在流量高峰期被判定需要退役,以下哪些做法是正确的?

多选题 · extreme

  • A.立即终止服务进程
  • B.提前规划切换窗口← 正确答案
  • C.忽略回滚应急预案
  • D.分阶段通知依赖方← 正确答案

答案:BD。高峰期是高风险窗口,应立即规划切换窗口、提前通知依赖方、分阶段切流,而不是瞬间 kill 服务。忽略回滚预案会使故障扩大化。就像公司要在低风险时段有序劝退员工,而不是在下班高峰期大声宣布裁员。

Q10. 模型淘汰后的复盘改进,核心输出物是什么?

单选题 · easy

  • A.删除更多退役模型
  • B.优化流程沉淀文档← 正确答案
  • C.增加更多计算资源
  • D.关闭审计日志功能

答案:B。复盘改进的核心是流程迭代和文档沉淀,让下一次退役更快更稳。多删模型、加服务器、关审计日志都是错误目标。相当于 HR 优化离职流程是为了让未来更规范,而不是追求裁员数量。