AI 模型治理体系设计

从开发到退役:构建 AI 模型全生命周期的治理能力


为什么需要模型治理

一个企业可能同时运行几十个甚至几百个 AI 模型。如果没有治理体系,就会出现:模型版本混乱(线上跑的是哪个版本?)、权责不清(这个模型谁负责?)、风险失控(模型漂移了谁来发现?)、合规缺口(这个模型通过审批了吗?)。

模型治理不是官僚主义,而是让 AI 系统可靠、可审计、可维护的工程实践。


一、模型生命周期

1.1 六阶段模型

┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐
│ 规划  │───>│ 开发  │───>│ 验证  │───>│ 部署  │───>│ 运营  │───>│ 退役  │
│      │    │      │    │      │    │      │    │      │    │      │
│ Plan │    │ Dev  │    │ Test │    │Deploy│    │ Ops  │    │Retire│
└──────┘    └──────┘    └──────┘    └──────┘    └──────┘    └──────┘
   │            │            │            │            │            │
   ▼            ▼            ▼            ▼            ▼            ▼
 需求文档    实验记录     测试报告     上线审批    监控报告    退役评估
 PIA报告    模型卡片     偏差报告     部署配置    审计日志    迁移计划

1.2 各阶段门禁

阶段转换 门禁条件 审批方 输出物
规划 -> 开发 需求评审通过 + PIA 完成 产品+法务 立项文档
开发 -> 验证 代码审查 + 实验记录完整 技术Lead 模型包
验证 -> 部署 所有测试通过 + 偏差检查通过 技术+合规 测试报告
部署 -> 运营 灰度验证通过 + 监控就绪 运维+业务 上线报告
运营 -> 退役 退役评估完成 + 迁移计划就绪 管理层 退役报告

二、版本控制

2.1 模型版本规范

版本号格式: MAJOR.MINOR.PATCH-STAGE

  MAJOR: 架构变更(基础模型更换/训练方法重大改变)
  MINOR: 功能更新(新增能力/数据集更新/微调)
  PATCH: 修复(bug修复/参数微调)
  STAGE: alpha / beta / rc / release

示例:
  1.0.0-alpha    首个测试版本
  1.0.0-beta     内部测试通过
  1.0.0-rc       上线前候选
  1.0.0-release  正式发布
  1.0.1-release  修复 bug
  1.1.0-release  新增功能/数据更新
  2.0.0-alpha    基础模型更换

2.2 模型注册中心

class ModelRegistry:
    """Central registry for all AI models in the organization."""

    async def register_model(self, model: ModelRegistration) -> str:
        """Register a new model version."""
        # Validate required metadata
        self._validate_registration(model)

        # Generate unique model ID
        model_id = f"{model.name}:{model.version}"

        # Store model metadata
        await self.store.save({
            "model_id": model_id,
            "name": model.name,
            "version": model.version,
            "stage": model.stage,
            "framework": model.framework,
            "base_model": model.base_model,
            "training_data": model.training_data_id,
            "metrics": model.metrics,
            "owner": model.owner,
            "created_at": datetime.utcnow(),
            "model_card": model.model_card,
            "artifacts": model.artifact_paths,
            "approved_by": None,
            "deployed_at": None,
        })

        return model_id

    async def promote_model(
        self,
        model_id: str,
        to_stage: str,
        approved_by: str,
        evidence: dict
    ) -> None:
        """Promote model to next stage with approval."""
        model = await self.store.get(model_id)

        # Validate stage transition
        valid_transitions = {
            "alpha": ["beta"],
            "beta": ["rc", "archived"],
            "rc": ["release", "archived"],
            "release": ["deprecated"],
            "deprecated": ["archived"],
        }
        if to_stage not in valid_transitions.get(model["stage"], []):
            raise ValueError(f"Invalid transition: {model['stage']} -> {to_stage}")

        # Record promotion
        await self.store.update(model_id, {
            "stage": to_stage,
            "approved_by": approved_by,
            "promoted_at": datetime.utcnow(),
            "promotion_evidence": evidence,
        })

    async def get_production_model(self, name: str) -> dict:
        """Get the current production model for a given name."""
        models = await self.store.query(name=name, stage="release")
        if not models:
            raise ValueError(f"No production model found for {name}")
        return sorted(models, key=lambda m: m["promoted_at"])[-1]

2.3 模型血缘追踪

Model Lineage:

tax-classifier:2.0.0-release
  ├── Base Model: qwen-2.5-72b
  ├── Training Data: tax-dataset-v5 (2026-01-15)
  │     ├── Source: tax-law-corpus-v3 (500K docs)
  │     ├── Source: user-feedback-2025Q4 (50K records)
  │     └── Preprocessing: dedupe + clean + tokenize
  ├── Fine-tuning Config: lora-r16-alpha32
  ├── Training Run: run-20260120-001
  │     ├── Duration: 48h
  │     ├── GPU: 8x A100
  │     └── Hyperparameters: lr=2e-5, epochs=3
  ├── Predecessor: tax-classifier:1.5.0-release
  └── Changes: +6% accuracy on invoice classification

三、审批工作流

3.1 审批矩阵

变更类型 风险等级 审批流程 审批时间
参数微调 技术 Lead 审批 1 天
数据集更新 技术 + 数据合规 3 天
功能新增 技术 + 产品 + 合规 5 天
基础模型更换 全委员会审批 10 天
新业务场景上线 全委员会 + PIA 15 天

3.2 审批流程可视化

提交人
  │
  ▼
[技术审核]
  模型性能、代码质量、测试覆盖
  │
  ├── 拒绝 -> 返回修改
  │
  └── 通过 -> [安全审核]
                安全测试、对抗样本、提示注入
                │
                ├── 拒绝 -> 返回修改
                │
                └── 通过 -> [合规审核]
                             偏差检查、数据合规、标注要求
                             │
                             ├── 拒绝 -> 返回修改
                             │
                             └── 通过 -> [业务审核]
                                          业务影响、用户体验
                                          │
                                          ├── 拒绝 -> 返回修改
                                          │
                                          └── 通过 -> 部署

3.3 自动化门禁

# model-gate-config.yaml
gates:
  pre_deploy:
    - name: accuracy_check
      type: metric_threshold
      config:
        metric: accuracy
        min_value: 0.90
        dataset: eval_set_v5

    - name: fairness_check
      type: fairness_audit
      config:
        max_disparity: 0.05
        protected_attributes: ["gender", "age_group", "region"]

    - name: security_check
      type: adversarial_test
      config:
        attack_types: ["prompt_injection", "jailbreak"]
        max_success_rate: 0.05

    - name: latency_check
      type: performance_benchmark
      config:
        p95_max_ms: 3000
        qps_min: 100

    - name: hallucination_check
      type: hallucination_detection
      config:
        max_hallucination_rate: 0.03
        test_size: 1000

四、监控体系

4.1 模型监控维度

维度 指标 监控频率 告警阈值
性能 准确率/F1 下降 > 3%
延迟 P50/P95/P99 实时 P95 > 3s
漂移 数据分布变化 KL > 0.1
公平 群体差异 差异 > 5%
安全 攻击检测率 实时 成功率 > 1%
成本 cost/query 实时 超预算 20%
质量 幻觉率 > 3%

4.2 模型健康度仪表盘

┌─────────────────────────────────────────────────────┐
│  Model Health Dashboard                              │
│  Model: tax-classifier:2.0.0  Status: [Healthy]     │
├─────────────────────────────────────────────────────┤
│                                                      │
│  Performance (24h)                                   │
│  Accuracy: 93.2% [OK]     Latency P95: 1.8s [OK]   │
│  F1 Score: 91.5% [OK]     Throughput: 2.4K qps      │
│                                                      │
│  Data Drift (7-day)                                  │
│  Feature Drift: ██░░░░░░░░ 2/10 features drifted    │
│  Label Drift:   █░░░░░░░░░ Minimal                   │
│                                                      │
│  Fairness (7-day)                                    │
│  Gender Gap:   0.02 [OK]                             │
│  Age Gap:      0.03 [OK]                             │
│  Region Gap:   0.08 [WARN]                           │
│                                                      │
│  Safety (24h)                                        │
│  Injection Attempts: 23 (all blocked)                │
│  Content Violations: 5 (all caught)                  │
│                                                      │
│  Cost (MTD)                                          │
│  Total: ¥12,450 / Budget: ¥20,000                   │
│  Avg Cost/Query: ¥0.065                              │
│                                                      │
└─────────────────────────────────────────────────────┘

五、模型退役

5.1 退役触发条件

条件 描述 判定标准
性能退化 模型效果持续下降 连续 30 天低于基线
被替代 新模型已验证上线 新模型全指标优于旧模型
合规变更 法规要求变更 无法满足新合规要求
业务下线 业务场景不再需要 业务方确认
安全风险 发现不可修复的安全漏洞 安全评估不通过
成本考量 运行成本过高 ROI 低于阈值

5.2 退役流程

Step 1: 退役评估
  - 当前模型的使用情况统计
  - 依赖此模型的下游系统清单
  - 替代方案评估

Step 2: 迁移计划
  - 替代模型部署和验证
  - 下游系统切换时间表
  - 回滚方案

Step 3: 灰度迁移
  - 逐步将流量切换到新模型
  - 监控切换过程中的指标变化
  - 确认无异常后完成切换

Step 4: 模型下线
  - 停止模型推理服务
  - 释放计算资源
  - 保留模型文件和文档(归档)

Step 5: 归档与文档
  - 模型文件归档(保留至少 3 年)
  - 训练数据归档
  - 审计日志归档
  - 退役报告编写

六、文档要求

6.1 模型卡(Model Card)

字段 内容 必选
模型名称 唯一标识
版本号 语义化版本
所有者 负责人/团队
用途描述 设计用途和限制
训练数据 来源、规模、时间范围
评估指标 各场景的性能数据
公平性评估 各群体的差异数据
已知局限 弱项、失败模式
伦理考量 潜在风险和缓解措施
维护计划 更新频率和责任人

6.2 变更日志

## Changelog

### v2.0.0 (2026-02-15) - MAJOR
- Changed: Base model from Qwen-2.0-72b to Qwen-2.5-72b
- Added: Support for new tax categories (2026 tax reform)
- Improved: Invoice classification accuracy +6%
- Risk: Full regression testing completed

### v1.5.1 (2026-01-20) - PATCH
- Fixed: Incorrect tax rate for agricultural products
- Fixed: Timeout on large document batches

### v1.5.0 (2025-12-01) - MINOR
- Added: Cross-province tax policy comparison
- Improved: Response latency -30%

治理成熟度模型

级别 描述 特征
L1 初始 无正式流程 模型由个人管理,无文档
L2 可重复 基础流程建立 有版本控制和基本审批
L3 已定义 标准化流程 统一注册中心 + 门禁
L4 可度量 量化治理 自动化监控 + 告警
L5 优化 持续改进 自动化治理 + 智能决策

总结

模型治理的核心等式:

模型治理 = 生命周期管理 x 版本控制 x 审批流程 x 持续监控 x 合规文档

  生命周期: 从规划到退役的六阶段管理
  版本控制: 语义化版本 + 模型注册中心 + 血缘追踪
  审批流程: 分级审批 + 自动化门禁 + 可追溯审计
  持续监控: 性能/漂移/公平/安全/成本全维度监控
  合规文档: 模型卡 + 变更日志 + 审计报告

治理的目标不是制造流程摩擦,而是让 AI 系统在规模化运行时保持可控、可审计、可信赖。好的治理体系让团队"做正确的事"比"做错误的事"更容易。


Maurice | maurice_wen@proton.me