Amazon SageMaker StudioがSOCIインデックス作成をサポート、コンテナ起動時間を30〜50%短縮

FEAT AWS What's New · 2026/1/22
要約: SageMaker StudioでSOCIインデックス作成がサポートされ、カスタムイメージ使用時のコンテナ起動時間が30〜50%短縮。遅延ローディングによりイメージ全体のダウンロードなしで起動可能に。ML開発の反復サイクルが高速化。

新機能の背景

カスタムコンテナイメージの起動時間がボトルネックに

Amazon SageMaker Studio は、機械学習(ML)の開発を行うためのフルマネージド型のブラウザベース統合開発環境です。TensorFlow、PyTorch、Scikit-learn などの人気の ML フレームワーク用のあらかじめ構築されたコンテナイメージが提供されており、迅速に環境をセットアップできます。

しかし、データサイエンティストが特定のユースケースのために追加のライブラリ、依存関係、設定などを含むカスタム環境が必要な場合、カスタムコンテナイメージを構築して登録することができます。ML ワークロードがより複雑になるにつれ、これらのカスタムコンテナイメージのサイズが大きくなり、起動に数分かかるようになっていました。

従来の課題

これらの起動レイテンシーは、環境を頻繁に切り替えたり、異なるフレームワークを使用したりする場合に特に顕著なボトルネックとなり、開発者の生産性を大きく低下させていました。

新機能の概要

SOCI インデックス作成による遅延ローディング

今回、Amazon SageMaker Studio に SOCI(Seekable Open Container Initiative)インデックス作成のサポートが追加されました。この機能により、カスタムイメージ使用時のコンテナ起動時間が 30〜50%(場合によっては最大 70%)短縮されます。

SOCI の仕組み

SOCI は、コンテナイメージの遅延ローディング(lazy loading)を可能にする技術です:

  1. インデックスの作成: コンテナイメージの内部ファイル構造をマッピングする特殊なメタデータインデックスを作成
  2. 選択的ダウンロード: イメージ全体ではなく、アプリケーションの起動に必要な最小限のコンポーネント(通常は全体の 5〜10%)のみをダウンロード
  3. オンデマンドロード: 追加のファイルは必要に応じてバックグラウンドで並行してダウンロード
  4. 即座の起動: ユーザーは数秒で作業を開始でき、環境は透過的にバックグラウンドで初期化を完了

主要なメリット

アーキテクチャコンポーネント

使い方

前提条件

SOCI インデックスの作成方法

SOCI インデックスは、以下のツールを使用して作成できます:

オプション 1: nerdctl と SOCI CLI の使用

# 変数の設定
ACCOUNT_ID="111122223333"
REGION="us-east-1"
REPOSITORY_NAME="repository-name"
ORIGINAL_IMAGE_TAG="original-image-tag"
SOCI_IMAGE_TAG="soci-indexed-image-tag"

# 必要なツールのインストール
sudo yum install soci-snapshotter
sudo yum install containerd jq
sudo systemctl start soci-snapshotter
sudo systemctl restart containerd
sudo yum install nerdctl

# レジストリ変数の設定
REGISTRY_USER=AWS
REGISTRY="$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com"

# Amazon ECR への認証
export AWS_REGION=$REGION
REGISTRY_PASSWORD=$(aws ecr get-login-password --region $AWS_REGION)
echo $REGISTRY_PASSWORD | sudo nerdctl login -u $REGISTRY_USER --password-stdin $REGISTRY

# 元のコンテナイメージのプル
sudo nerdctl pull $REGISTRY/$REPOSITORY_NAME:$ORIGINAL_IMAGE_TAG

# SOCI インデックスの作成
sudo nerdctl image convert --soci $REGISTRY/$REPOSITORY_NAME:$ORIGINAL_IMAGE_TAG $REGISTRY/$REPOSITORY_NAME:$SOCI_IMAGE_TAG

# SOCI インデックス付きイメージのプッシュ
sudo nerdctl push --platform linux/amd64 $REGISTRY/$REPOSITORY_NAME:$SOCI_IMAGE_TAG

オプション 2: Finch CLI の使用

Finch CLI は、AWS が開発した Docker 互換のコマンドラインツールで、SOCI のネイティブサポートが組み込まれています。Docker のようなインターフェースで、追加のツールなしで SOCI インデックス付きイメージを簡単に作成できます。

オプション 3: Docker + SOCI CLI の使用

既存の Docker ワークフローを活用しながら、専用の SOCI コマンドラインインターフェースを通じて SOCI インデックス作成機能を追加できます。

SageMaker Studio での使用

SOCI インデックス付きイメージを作成後、SageMaker Studio で使用するには:

# SOCI v2 イメージインデックス URI の使用
IMAGE_INDEX_URI="123456789012.dkr.ecr.us-west-2.amazonaws.com/my-sagemaker-image:soci-image"

# SageMaker Image の作成
aws sagemaker create-image \
  --image-name "my-sagemaker-image" \
  --role-arn "arn:aws:iam::123456789012:role/SageMakerExecutionRole"

# SOCI インデックスを使用した SageMaker Image Version の作成
aws sagemaker create-image-version \
  --image-name "my-sagemaker-image" \
  --base-image "$IMAGE_INDEX_URI"

# JupyterLab 用 App Image Config の作成
aws sagemaker create-app-image-config \
  --app-image-config-name "my-sagemaker-image-config" \
  --jupyter-lab-app-image-config '{
    "FileSystemConfig": {
      "MountPath": "/home/sagemaker-user",
      "DefaultUid": 1000,
      "DefaultGid": 100
    }
  }'

# ドメインの更新(カスタムイメージを含める)
aws sagemaker update-domain \
  --domain-id "d-xxxxxxxxxxxx" \
  --default-user-settings '{
    "JupyterLabAppSettings": {
      "CustomImages": [{
        "ImageName": "my-sagemaker-image",
        "AppImageConfigName": "my-sagemaker-image-config"
      }]
    }
  }'

対応環境

SOCI インデックス作成は、SageMaker Unified Studio と SageMaker AI の両方で、すべての ML 環境(JupyterLab、CodeEditor など)に対応しています。

注意点

パフォーマンスの変動

イメージインデックス URI の使用

SOCI インデックスの作成プロセス

ストレージの考慮事項

利用可能なリージョン

ビルド時変換とイメージ署名

ワークロード固有の最適化

現在の実装では、特定のワークロードに基づいたロード順序の最適化は含まれていません。将来のアップデートで追加される可能性があります。


補完情報の出典