如果预测误差超过 15%,如何自动触发再训练?

解读

在国内云原生场景下,面试官真正想考察的是:

  1. 你是否理解Cloud SQL 本身不跑模型,而是作为特征库与标签库存在;
  2. 你能否把“误差>15%”这一业务指标转化为可观测信号,并串联Cloud SQL → BigQuery → Vertex AI → Cloud SQL 的闭环;
  3. 你能否用Google 原生托管服务(而非自己写 Cron)把“触发再训练”做成零运维、可审计、可灰度的方案,同时满足国内对数据不出境、日志可审计的合规要求。

一句话:让 Cloud SQL 成为可观测、可驱动、可回写的 MLOps 数据源,而不是被动地“被读”。

知识点

  1. Cloud SQL 可观测三件套
    • Cloud SQL Insights 内置指标(CPU、IO、锁等待);
    • pg_stat_statements 级慢查询与自定义指标;
    • Cloud Monitoring 自定义指标 API(国内 region 已上线上海/香港)。
  2. 误差计算放哪里
    • 不把算法逻辑放进 Cloud SQL,而是定期 ETL 到 BigQuery(国内可用“阿里云 DTS → BigQuery 跨境传输”或“Cloud SQL for PostgreSQL 逻辑复制 → 北京 BigQuery 专用通道”),用 BigQuery ML.PREDICT 对比真实标签。
  3. 触发器选型
    • Cloud Monitoring Alerting Policy 支持PromQL 风格阈值,可直接监听 BigQuery 导出的自定义指标(误差率);
    • Cloud Composer 2(国内 region 已支持)监听 Pub/Sub 消息,拉起Vertex AI Pipeline
    • 若客户对公网流量敏感,可用 Private Service Connect + VPC-SC 保证数据不出 VPC。
  4. 再训练结果回写
    • Vertex AI 训练完成把新模型 A/B 版本号写回 Cloud SQL 的模型元数据表
    • 应用侧通过 Cloud SQL Auth Proxy 拿到版本号,热加载无需重启 Pod。
  5. 合规与灰度
    • 使用Cloud Audit Logs 投递到北京/上海日志桶,满足等保 3 级审计留存 6 个月
    • 再训练任务通过 Cloud IAM 细粒度授权,只允许Vertex AI 服务账号写回 Cloud SQL;
    • 灰度发布用 Cloud SQL 只读实例做影子测试,对比新旧模型误差,误差<10% 才切换主实例。

答案

给面试官一个可落地的 5 步闭环,每一步都对应国内合规与 Cloud SQL 能力:

  1. 误差计算
    每晚 02:00,Cloud Composer 2 跑一个 BigQuery 任务:把过去 24h 的真实标签与 Vertex AI 最新模型预测结果做 JOIN,计算 mean_abs_pct_error(MAPE),结果写入 BigQuery 表 ml_monitor.error_daily
  2. 指标导出
    BigQuery Data Transfer Service(国内已上线)把 ml_monitor.error_daily 的 MAPE 字段自动导出为 Cloud Monitoring 自定义指标 custom.googleapis.com/ml/mape
  3. 阈值告警
    Cloud Monitoring 创建 Alerting Policy:若 custom.googleapis.com/ml/mape > 15 持续 5 分钟,则向 Pub/Sub topic retrain-trigger 发送一条消息,消息体包含 Cloud SQL 实例名、模型版本、当前 MAPE
  4. 自动再训练
    Cloud Composer 2 的 DAG 监听 retrain-trigger,收到消息后:
    a. 从 Cloud SQL 只读实例导出最新 90 天特征数据(使用 gcloud sql export csvCloud Storage 北京 bucket,走私网出口);
    b. 拉起 Vertex AI Pipeline,指定国内节点asia-east1),使用自定义容器镜像(已预装国内 pip 源);
    c. 训练完成把新模型注册到 Vertex AI Model Registry,并把版本号、MAPE、训练耗时写回 Cloud SQL 的模型元数据表 model_meta,状态置为 pending_shadow
  5. 灰度与回写
    应用侧通过 Cloud SQL Auth Proxy 读取 model_meta,发现状态为 pending_shadow 时,自动把影子流量切到只读实例做双写验证;若 24h 内影子误差<10%,则更新主实例的 current_model_version 字段并热加载,同时把状态改为 production,否则回滚并触发 PagerDuty 告警

全程零人工干预,所有操作通过 Cloud Audit Logs 投递到上海日志桶,满足国内等保与数据不出境要求。

拓展思考

  1. 误差定义不止 MAPE
    如果业务更关注分段误差(如高价值客户误差>5% 即触发),可以把 BigQuery 的 ML.CONFUSION_MATRIX 结果也导出为自定义指标,实现多维告警
  2. Cold Start 问题
    新业务上线初期样本少,15% 阈值可能频繁误触发;可在 Cloud SQL 里维护一张样本量表,当近 7 天样本<1000 时,把阈值动态调到 25%,实现自适应阈值
  3. 成本优化
    再训练任务使用 Vertex AI 的抢占式节点(国内已支持),训练完自动释放;Cloud SQL 只读实例可设为共享 CPU 型,只在导出数据时弹性扩容,降低 40% 费用。
  4. 多云容灾
    若客户同时部署在阿里云 RDS,可通过 Cloud SQL 外部服务器(PostgreSQL FDW)把阿里云 RDS 的误差指标也汇总到 BigQuery,实现跨云统一监控单点触发再训练,满足国内混合云场景。