孤本网
/ 1 阅读
0
0

AWS 推出 SOCI 索引加速 SageMaker AI 作业,镜像启动耗时最高降低 90%

一句话结论

亚马逊云科技(Amazon Web Services)推出 SOCI 索引技术,将 SageMaker AI 镜像启动时间从分钟级降至秒级,最高减少 90% GPU 空闲等待。

关键要点

  • 基准测试显示,使用 SOCI 索引的 35.4 GB 镜像拉取耗时从 7 分 17 秒降至 3-11 秒,速度提升约 38 倍。
  • 亚马逊提供带 `-soci` 后缀的预索引 AWS 深度学习容器(DLC),支持 PyTorch、TensorFlow 等框架。
  • 自定义镜像需在 Linux 主机上安装 containerd、SOCI snapshotter 及 Finch 或 nerdctl 生成索引,且索引不可从基础镜像继承。
  • 该技术支持自动回退机制,若索引读取失败则回退至标准下载模式,且对所有 AWS 区域的 SageMaker AI 作业可用。
  • 整体训练任务完成时间比标准下载快 1-6 分钟,净节省时间等于下载节省时长减去首次 Epoch 额外读取开销。

背景与事实

亚马逊云科技近期在 SageMaker AI 平台引入 Seekable OCI(SOCI)索引功能,旨在通过懒加载机制优化容器镜像拉取过程。传统方式下,SageMaker AI 作业启动前必须完整下载容器镜像,这一过程往往耗时数分钟,导致昂贵的 GPU 实例处于空闲状态。SOCI 索引技术改变了这一流程,允许计算实例在作业启动时仅下载必需文件,并在后台流式传输其余内容。用户无需修改现有的作业定义、入口点或数据通道逻辑,只需将指向预索引的 AWS 深度学习容器(DLC)或为自定义镜像添加索引,即可启用该功能。基准测试在 us-west-2 和 us-east-1 区域进行,涵盖 ml.g4dn、ml.g5 至 ml.p5 等多种实例规格,测试镜像压缩大小介于 1.8 到 35.4 GB 之间。数据显示,SOCI 索引将镜像下载时间从分钟级缩短至秒级,在基准测试中将拉取镜像期间的 GPU 空闲时间减少高达 90%。

在性能指标方面,不同大小的镜像表现出显著的效率差异。1.8 GB 镜像的拉取耗时从 48 秒降至 3-11 秒,提升约 8 倍;13.2 GB 镜像耗时从 3 分 42 秒降至约 6 秒,提升约 34 倍;35.4 GB 镜像耗时从 7 分 17 秒降至 3-11 秒,提升约 38 倍。针对 13 种实例类型和规格组合,13.2 GB 镜像的标准下载耗时在 3 分 16 秒至 4 分 20 秒之间,而懒加载耗时稳定在 6-8 秒。训练性能测试包含 ResNet-50 图像分类任务和 Qwen2.5-0.5B 模型的全参数监督微调,数据集分别包含 9,469 张图像和 51,760 条样本。测试结果表明,除首个 Epoch 因需获取文件而增加 3-16 秒耗时外,后续每个 Epoch 的训练时间与使用标准镜像完全一致。整体任务完成时间比标准下载快 1-6 分钟,该节省值为下载节省时间减去首次 Epoch 额外耗时。即使前置启动任务增加了复杂度,如使用 torch.compile 和 JIT 构建 CUDA 扩展,或加载 6 GB 模型权重,SOCI 索引仍保持优势,净节省时间分别为 3 分 25 秒至 3 分 56 秒和 2 至 2.5 分钟。

在部署实施层面,亚马逊云科技提供了带 `-soci` 后缀的预索引 DLC,涵盖 PyTorch、TensorFlow、vLLM、SGLang 及部分 arm64 变体。用户基于 DLC 构建自定义镜像时,必须为最终镜像单独创建 SOCI 索引,基础镜像的索引不可继承。生成索引需要在 Linux 主机上安装 containerd、SOCI snapshotter 以及 Finch 或 nerdctl。索引生成过程会产生 SOCI 索引和 OCI 兼容镜像索引清单,原镜像及其摘要保持不变。用户可通过部署 CFN ECR SOCI Index Builder 并结合 Amazon EventBridge 规则,在持续集成和持续部署管道中自动化索引生成,无需修改现有管道即可在每次推送镜像时自动创建索引。在 SageMaker AI 作业中引用 SOCI 索引镜像无需修改 API,仅需更新镜像标签,例如使用 `v1.0-soci`。

影响分析

这一变化对中文开发者与机器学习从业者具有直接的成本与效率影响。分析认为,由于 GPU 实例是机器学习作业的主要成本支出项,缩短镜像拉取时间可直接降低因等待启动产生的资源浪费。对于频繁进行模型迭代、实验或微调的团队,尤其是使用大尺寸镜像的团队,该功能能显著加速开发反馈循环。然而,这要求工程团队调整容器构建与推送流程,增加自动化索引步骤。对于使用 Docker CLI 或依赖 `/var/run/docker.sock` 的代码,开发者需要审查兼容性,因为 SOCI 运行在基于 containerd 的运行时上。

适用边界

SOCI 索引的加速效果受镜像大小影响,小于约 4 GB 的镜像改进幅度相对较小。该技术仅适用于亚马逊弹性容器注册表(ECR)私有仓库镜像,通过其他注册表或 VPC 模式的私有 Docker 注册塔拉取的镜像不符合资格。若启动阶段需要读取大部分镜像内容,如全量扫描、校验或预加载,首次 Epoch 等待时间将接近全量拉取,整体改进幅度随之减小。

孤本观察

这是基于本文事实的编辑判断:虽然官方强调“无需修改作业定义”,但自定义镜像索引的创建依赖特定 Linux 环境工具链,这实际上将部分复杂度转移到了 CI/CD 基础设施层,而非完全消除。此外,性能提升主要作用于启动阶段,对于计算密集型但镜像较小的任务,收益可能不如大镜像训练任务显著。

常见问题

35.4 GB 镜像使用 SOCI 索引后拉取耗时及速度提升是多少?

拉取耗时从 7 分 17 秒降至 3-11 秒,速度提升约 38 倍。

自定义镜像生成 SOCI 索引需要哪些前置条件?

需在 Linux 主机上安装 containerd、SOCI snapshotter 及 Finch 或 nerdctl,且索引不可从基础镜像继承。

SOCI 索引技术适用于哪些镜像仓库?

仅适用于亚马逊弹性容器注册表(ECR)私有仓库镜像,其他注册表或 VPC 模式的私有 Docker 注册塔拉取的镜像不符合资格。

使用 SOCI 索引后,后续训练 Epoch 的时间表现如何?

除首个 Epoch 因获取文件增加 3-16 秒耗时外,后续每个 Epoch 的训练时间与使用标准镜像完全一致。

来源:AWS Machine Learning Blog


评论