产品AWS Machine Learning·原文 2026年10月28日

AWS为SageMaker AI训练与处理作业推出SOCI索引镜像,容器镜像拉取从分钟级降至秒级

SageMaker AI在创建训练或处理作业时会自动检查镜像是否带有SOCI索引;带有索引的镜像可懒加载启动,未带索引或索引读取失败时回退为标准下载,作业定义、入口点和数据通道无需改动。AWS称其基准测试中镜像拉取导致的GPU空闲时间最多减少 90%。

AI解读:AWS宣布为SageMaker AI训练和处理作业支持SOCI(Seekable OCI)索引,容器只拉取启动所需文件,其余内容在代码运行后于后台流式加载。AWS称这样作业启动可由分钟级降到秒级。

采用方式有两种:改用带 -soci后缀的预索引AWS Deep Learning Container,或为自己的镜像创建索引。作业定义、入口点、数据通道和API均无需改动。

SageMaker AI在创建作业时自动检查镜像是否有SOCI索引:有则懒加载;无则按原样完整下载;索引无法读取或懒加载失败时回退为标准下载,AWS称这不影响作业运行。

AWS公布的基准测试覆盖 1.8 GB至 35.4 GB的 8 个镜像,标准下载在 1.8 GB时为 48 秒、35.4 GB时为 7 分 17 秒,懒加载时间保持在 3 至 11 秒;13.2 GB镜像在 13 种实例配置上懒加载为 6 至 8 秒,标准下载为 3 分 16 秒至 4 分 20 秒。

训练性能方面,AWS称从第二个epoch起每轮耗时与标准下载一致,首个epoch因按需取文件多花 3 至 16 秒;两个测试作业整体仍提前 1 至 6 分钟完成。

适用范围限制:仅支持Amazon ECR私有仓库,经私有Docker仓库(TrainingRepositoryAccessMode设为Vpc)拉取的镜像不适用;小于约 4 GB的镜像改善相对较小;镜像改用containerd运行时,依赖Docker CLI、docker.sock或cgroup路径的脚本需检查。AWS称该功能在所有AWS区域可用。

AWS在机器学习博客中宣布,SageMaker AI训练和处理作业支持Seekable OCI(SOCI)索引:SageMaker AI只拉取启动容器所需的文件,其余内容在代码运行时于后台流式加载,AWS称作业启动时间因此从分钟级降至秒级。该功能在所有AWS区域可用。

SageMaker AI在创建作业时会自动检查指定镜像是否带有SOCI索引:有索引则懒加载;没有索引则维持标准下载;索引无法读取或懒加载失败时,作业回退为标准下载并继续运行。AWS表示,任务定义、入口点和数据通道均不需要改动。

AWS公布的基准测试数据

AWS称其测试覆盖 8 个压缩后大小为 1.8 GB至 35.4 GB的镜像,使用ml.g4dn、ml.g5、ml.g6、ml.g6e、ml.g7、ml.g7e、ml.p4d、ml.p5、ml.m7i等实例,区域为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 倍提升。
  • 13.2 GB镜像在 13 种实例类型与规格组合上:标准下载 3 分 16 秒至 4 分 20 秒,懒加载 6 至 8 秒,约 34 倍提升。

训练耗时与首个epoch代价

AWS用ResNet-50在Imagenette(9,469 张图片)上做图像分类,镜像为 13.2 GB的PyTorch DLC和 9.9 GB的TensorFlow DLC,实例包括ml.p5.48xlarge、ml.p4d.24xlarge、ml.g7e.48xlarge、ml.g7.48xlarge、ml.g6e.12xlarge、ml.g6e.24xlarge、ml.g6e.48xlarge;另用Hugging Face Trainer对Qwen2.5-0.5B在alpaca-cleaned(51,760 条样本)上做全参数监督微调,镜像为 9.4 GB的Hugging Face PyTorch DLC,实例为ml.p5.48xlarge、ml.p4d.24xlarge、ml.g6.48xlarge。

AWS称,从第二个epoch起,两类工作负载在每个实例上的每轮耗时与标准下载一致(在运行间波动范围内)。首个epoch因按需拉取首次访问的文件,懒加载镜像多花 3 至 16 秒,且该开销在各实例规格上相同。扣除这笔一次性开销后,每个作业提前 1 至 6 分钟完成,AWS称这是一笔固定的每作业节省。

适用条件与限制

AWS表示,首个epoch的额外代价取决于镜像内容和启动时访问的文件。如果第一步训练只需镜像的一小部分,其余内容可在训练期间流式加载,收益明显;如果入口点在训练开始前读取镜像的大部分内容(如扫描、校验和预加载),首个epoch需要等待与完整下载大致相同的字节数,净提升会很小。

AWS还称,测试中前置加载较多的场景仍取得净收益:torch.compile和即时编译CUDA扩展为首个epoch增加 7 至 15 秒,净节省仍为 3 分 25 秒至 3 分 56 秒;镜像内 6 GB模型在加载时流式读取权重增加 2 至 3.5 分钟,但作业整体仍提前 2 至 2.5 分钟完成。

  • 仅支持Amazon ECR私有仓库;其他仓库的镜像,或通过私有Docker仓库(TrainingRepositoryAccessMode设为Vpc)拉取的镜像不适用懒加载。
  • 小于约 4 GB的镜像改善相对较小。
  • SOCI索引镜像运行在基于containerd的运行时上,入口点和安装脚本若调用Docker CLI、读取 /var/run/docker.sock或从cgroup路径推导标识符,需要检查;SageMaker AI会挂载 /.dockerenv标记以兼容旧行为,但AWS建议不要新增对该标记的依赖。
  • 如果基于DLC基础镜像构建自己的镜像,需要为最终镜像创建SOCI索引,基础镜像的索引不会传递到派生镜像。

启用方式

AWS提供两种启用方式。一是使用预索引的AWS Deep Learning Container,镜像标签带 -soci后缀,覆盖PyTorch Training、TensorFlow Training、vLLM和SGLang,部分框架提供arm64变体;在作业定义中把镜像标签换成 -soci变体即可。

二是为自己的镜像创建索引:在装有containerd、SOCI snapshotter和Finch或nerdctl的Linux主机上,用nerdctl image convert --soci生成索引镜像并推送,原镜像及其digest保持不变。AWS还提供CFN ECR SOCI Index Builder,通过EventBridge规则在ECR镜像推送时自动构建索引,AWS称无需改动构建流水线。

信息来源