AWS 为 SageMaker AI 训练与处理作业推出 SOCI 索引镜像,容器启动缩至秒级
AWS 为 Amazon SageMaker AI 的训练作业和处理作业增加了 Seekable OCI(SOCI)索引支持,让容器镜像不再需要整包下载完成后才能启动。按官方说明,SageMaker AI 会先取启动容器所需的文件,其余内容在代码运行过程中后台流式读取,作业启动时间从分钟级降到秒级。
问题出在镜像下载
SageMaker AI 的训练和处理作业运行在存放于 Amazon Elastic Container Registry(Amazon ECR)的容器镜像中。作业执行代码前,服务要把整个镜像下载到实例,解压并把每一层写入磁盘。小镜像只需几秒,但深度学习镜像常超过 10 GB,下载会给每个作业增加数分钟,而这部分时间计入可计费的作业时长。对超参数调优这类动辄数百个作业的扫描、快速实验和短时处理作业,镜像下载甚至可能占据大部分运行时间。
SOCI 的工作方式
SOCI 是一项开源技术,用于懒加载容器镜像。SOCI 索引是记录镜像内每个文件位置的元数据,作为符合 OCI 规范的独立产物存放在 Amazon ECR,并关联到原镜像。由于索引是单独产物,原镜像的 digest 和已有签名保持有效。
创建训练或处理作业时,SageMaker AI 会自动检查指定镜像是否带索引:有索引则懒加载,在完整下载结束前启动容器;没有索引则按原有方式完整下载;索引读取失败或懒加载不成功时,作业回退到标准下载并继续运行。AWS 强调,这一回退机制意味着加索引不会阻止作业运行,只可能带来更快的启动。
官方基准数据
AWS 在真实 SageMaker AI 训练作业上对比了标准下载与 SOCI 懒加载,覆盖 8 个镜像(压缩后 1.8–35.4 GB)、ml.g4dn 至 ml.p5 及 ml.m7i 等实例、xlarge 到 48xlarge 规格,区域为 us-west-2 和 us-east-1,数据取重复运行的中位数。
- 1.8 GB 镜像:标准下载 48 秒,懒加载 3–11 秒,约 8 倍。
- 13.2 GB 镜像:3 分 42 秒降至约 6 秒,约 34 倍。
- 35.4 GB 镜像:7 分 17 秒降至 3–11 秒,约 38 倍。
懒加载耗时基本不随镜像体积增长,官方给出的整体提升区间为 8–46 倍。在 13 个实例类型与规格组合上运行 13.2 GB 镜像,标准下载为 3 分 16 秒至 4 分 20 秒,懒加载稳定在 6–8 秒,约 34 倍,说明无需更换实例即可受益。
训练性能方面,AWS 用 ResNet-50 在 Imagenette(9,469 张图)上做图像分类,镜像为 PyTorch(13.2 GB DLC)和 TensorFlow(9.9 GB DLC),实例包括 ml.p5.48xlarge、ml.p4d.24xlarge、ml.g7e.48xlarge、ml.g7.48xlarge 及 ml.g6e 的多个规格,逐 epoch 对比后称除首个 epoch 的额外开销外训练性能不受影响,GPU 拉镜像空闲时间最多减少 90%。原文对大语言模型微调部分的描述在此处截断,具体结果未完整给出。
编辑部观察
这次更新的实际价值集中在作业启动环节,而非训练吞吐。对频繁提交短作业、跑大规模调参扫描的团队,省下的是每个作业数分钟的计费时间和排队等待;对长周期训练,收益占比则有限。需要注意,官方数据来自 AWS 自身基准,镜像体积、实例类型和区域均限定在上述范围内,其他镜像构成或网络条件下的表现需自行验证。
实践建议
启用方式有两种:指向已预索引的 AWS Deep Learning Container,或为自己的镜像添加 SOCI 索引。AWS 表示两种方式都不需要改动作业定义、入口点或数据通道。落地前可先挑一个镜像体积大、作业频次高的训练任务做小范围对比,记录启用前后的镜像拉取耗时、作业总时长和首个 epoch 时间,确认回退行为是否符合预期,再逐步推广到调参类批量作业。

