如果预测误差超过 15%,如何自动触发再训练?
解读
在国内云原生场景下,面试官真正想考察的是:
- 你是否理解Cloud SQL 本身不跑模型,而是作为特征库与标签库存在;
- 你能否把“误差>15%”这一业务指标转化为可观测信号,并串联Cloud SQL → BigQuery → Vertex AI → Cloud SQL 的闭环;
- 你能否用Google 原生托管服务(而非自己写 Cron)把“触发再训练”做成零运维、可审计、可灰度的方案,同时满足国内对数据不出境、日志可审计的合规要求。
一句话:让 Cloud SQL 成为可观测、可驱动、可回写的 MLOps 数据源,而不是被动地“被读”。
知识点
- Cloud SQL 可观测三件套:
- Cloud SQL Insights 内置指标(CPU、IO、锁等待);
- pg_stat_statements 级慢查询与自定义指标;
- Cloud Monitoring 自定义指标 API(国内 region 已上线上海/香港)。
- 误差计算放哪里:
- 不把算法逻辑放进 Cloud SQL,而是定期 ETL 到 BigQuery(国内可用“阿里云 DTS → BigQuery 跨境传输”或“Cloud SQL for PostgreSQL 逻辑复制 → 北京 BigQuery 专用通道”),用 BigQuery ML.PREDICT 对比真实标签。
- 触发器选型:
- Cloud Monitoring Alerting Policy 支持PromQL 风格阈值,可直接监听 BigQuery 导出的自定义指标(误差率);
- Cloud Composer 2(国内 region 已支持)监听 Pub/Sub 消息,拉起Vertex AI Pipeline;
- 若客户对公网流量敏感,可用 Private Service Connect + VPC-SC 保证数据不出 VPC。
- 再训练结果回写:
- Vertex AI 训练完成把新模型 A/B 版本号写回 Cloud SQL 的模型元数据表;
- 应用侧通过 Cloud SQL Auth Proxy 拿到版本号,热加载无需重启 Pod。
- 合规与灰度:
- 使用Cloud Audit Logs 投递到北京/上海日志桶,满足等保 3 级审计留存 6 个月;
- 再训练任务通过 Cloud IAM 细粒度授权,只允许Vertex AI 服务账号写回 Cloud SQL;
- 灰度发布用 Cloud SQL 只读实例做影子测试,对比新旧模型误差,误差<10% 才切换主实例。
答案
给面试官一个可落地的 5 步闭环,每一步都对应国内合规与 Cloud SQL 能力:
- 误差计算:
每晚 02:00,Cloud Composer 2 跑一个 BigQuery 任务:把过去 24h 的真实标签与 Vertex AI 最新模型预测结果做 JOIN,计算 mean_abs_pct_error(MAPE),结果写入 BigQuery 表 ml_monitor.error_daily。 - 指标导出:
用 BigQuery Data Transfer Service(国内已上线)把 ml_monitor.error_daily 的 MAPE 字段自动导出为 Cloud Monitoring 自定义指标custom.googleapis.com/ml/mape。 - 阈值告警:
在 Cloud Monitoring 创建 Alerting Policy:若custom.googleapis.com/ml/mape > 15持续 5 分钟,则向 Pub/Sub topicretrain-trigger发送一条消息,消息体包含 Cloud SQL 实例名、模型版本、当前 MAPE。 - 自动再训练:
Cloud Composer 2 的 DAG 监听retrain-trigger,收到消息后:
a. 从 Cloud SQL 只读实例导出最新 90 天特征数据(使用 gcloud sql export csv 到 Cloud Storage 北京 bucket,走私网出口);
b. 拉起 Vertex AI Pipeline,指定国内节点(asia-east1),使用自定义容器镜像(已预装国内 pip 源);
c. 训练完成把新模型注册到 Vertex AI Model Registry,并把版本号、MAPE、训练耗时写回 Cloud SQL 的模型元数据表model_meta,状态置为pending_shadow。 - 灰度与回写:
应用侧通过 Cloud SQL Auth Proxy 读取model_meta,发现状态为pending_shadow时,自动把影子流量切到只读实例做双写验证;若 24h 内影子误差<10%,则更新主实例的current_model_version字段并热加载,同时把状态改为production,否则回滚并触发 PagerDuty 告警。
全程零人工干预,所有操作通过 Cloud Audit Logs 投递到上海日志桶,满足国内等保与数据不出境要求。
拓展思考
- 误差定义不止 MAPE:
如果业务更关注分段误差(如高价值客户误差>5% 即触发),可以把 BigQuery 的 ML.CONFUSION_MATRIX 结果也导出为自定义指标,实现多维告警。 - Cold Start 问题:
新业务上线初期样本少,15% 阈值可能频繁误触发;可在 Cloud SQL 里维护一张样本量表,当近 7 天样本<1000 时,把阈值动态调到 25%,实现自适应阈值。 - 成本优化:
再训练任务使用 Vertex AI 的抢占式节点(国内已支持),训练完自动释放;Cloud SQL 只读实例可设为共享 CPU 型,只在导出数据时弹性扩容,降低 40% 费用。 - 多云容灾:
若客户同时部署在阿里云 RDS,可通过 Cloud SQL 外部服务器(PostgreSQL FDW)把阿里云 RDS 的误差指标也汇总到 BigQuery,实现跨云统一监控与单点触发再训练,满足国内混合云场景。