AI 平台模型注册表:别让模型文件散落在对象存储里

AI2周前发布 beixibaobao
11 0 0

AI 平台模型注册表:别让模型文件散落在对象存储里

一、模型文件需要被治理

云原生 AI 平台里,模型权重、Tokenizer、配置、LoRA、量化版本经常被放在对象存储里。早期团队可能用路径约定管理,例如 models/v1/models/latest/。规模一大,就会出现版本混乱、依赖缺失、权限不清、回滚困难。

模型注册表的价值,是把模型当成平台资产管理,而不是一堆文件。

二、注册表要记录完整元数据

flowchart TD
  A[模型文件] --> B[模型注册]
  B --> C[版本元数据]
  C --> D[部署引用]
  D --> E[灰度与回滚]

模型版本不只包含权重路径,还应包含基础模型、训练数据版本、量化方式、运行镜像、兼容推理引擎、许可信息和校验 hash。缺少这些元数据,平台很难判断一个模型能不能部署。

部署服务不应该直接引用对象存储路径,而应该引用注册表里的模型版本。

三、数据结构要支持追溯

type ModelVersion = {
  modelId: string
  version: string
  artifactUri: string
  runtimeImage: string
  checksum: string
  quantization?: "int8" | "int4"
  createdAt: string
}

checksum 可以防止文件被悄悄替换。runtimeImage 能说明这个模型要用哪个运行时启动。

model_registry_policy:
  require_checksum: true
  immutable_version: true
  record_runtime_image: true
  allow_rollback_reference: true

模型版本一旦发布,应尽量不可变。需要修复就发布新版本,不要覆盖旧文件。

四、注册表要连接发布流程

模型进入注册表后,还要经过评测、审批、灰度和部署。注册表不是单纯目录,而是发布链路的入口。

还要管理清理策略。旧模型不能无限保存,但删除前要确认没有部署、没有回滚依赖、没有审计要求。

注册表还可以和 Kubernetes CRD 结合。平台把模型版本声明成资源,部署控制器根据资源状态拉取文件、校验 checksum、更新推理服务。这样模型发布就能进入声明式流程,而不是依赖脚本手工执行。

apiVersion: ai.example.com/v1
kind: ModelVersion
metadata:
  name: chat-model-v4
spec:
  artifactUri: s3://models/chat/v4
  runtimeImage: inference-runtime:1.8
  checksum: sha256:abc123

CRD 的 status 可以记录是否已校验、是否已部署、哪些服务正在引用。运维排查时,不需要去对象存储里猜路径。

还要给注册表加权限。不是所有人都能注册生产模型,也不是所有服务都能引用所有模型。模型资产往往涉及许可证和客户数据,权限边界必须清楚。

最后,注册表应和评测报告关联。一个模型版本如果没有通过指定评测,就不能进入生产部署。模型治理和质量门禁要绑在一起。

注册表还要提供引用图谱。平台至少要能回答:某个模型版本被哪些推理服务、离线任务、灰度环境和回滚计划引用。否则清理旧模型时,很容易删掉仍被低频任务依赖的版本。

model_reference_graph:
  track_deployment_refs: true
  track_batch_job_refs: true
  block_delete_when_referenced: true
  require_owner_for_orphan_model: true

我更推荐把删除动作设计成两阶段:先标记 deprecated,再等待观察窗口,最后才物理清理。观察窗口内如果仍有服务拉取该版本,注册表应直接阻止删除并把引用方列出来。

五、总结

AI 平台模型注册表要管理模型文件、版本、运行时、校验、部署引用和回滚关系。

模型文件散落在对象存储里,平台迟早会失去可控性。注册表是模型工程化的基础。

© 版权声明

相关文章