Amazon Web Services ブログ

複数の Amazon SageMaker ドメインを使って事業部門やチームを分割する方法

この記事は、Separate lines of business or teams with multiple Amazon SageMaker domains を翻訳したものです。

Amazon SageMaker Studio は機械学習 (ML) 用の完全に統合された開発環境 (IDE) であり、データサイエンティストや開発者は、データの準備からモデルの構築、トレーニング、チューニング、デプロイまで、ML ワークフローのすべてのステップを実行できます。

SageMaker Studio や Amazon SageMaker CanvasAmazon SageMaker 上の RStudio などのその他の Amazon の機械学習環境にアクセスするために、まず SageMaker ドメインをプロビジョニングする必要があります。SageMaker ドメインには、関連する Amazon Elastic File System (Amazon EFS) ボリューム、承認済みユーザーのリスト、さまざまなセキュリティ、アプリケーション、ポリシー、および Amazon Virtual Private Cloud (Amazon VPC) 設定が含まれます。

管理者は、単一の AWS アカウント内で異なる事業部門やチームを分離するために、複数の SageMaker ドメインをプロビジョニングできるようになりました。これにより、組織内のさまざまなグループのユーザー、ファイルストレージ、および構成設定が論理的に分離されます。例えば、次の複数ドメインを含むコンソールが示すように、ファイナンス部門とサステナビリティーデータサイエンス部門とを分離したいことがあるかもしれません。

SageMakerのドメインを複数作成することで、あるグループの研究用にパブリックなインターネットアクセスを許可し、より制限の厳しい事業部門にはトラフィックが指定したVPCを経由することを強制するなど、VPCの設定を始めとするドメインレベルの設定をきめ細かく設定することが可能です。

自動タグ付け

ユーザーやファイルストレージ、ドメイン設定を分離するだけでなく、管理者はドメイン内で作成された SageMaker リソースを分離することもできます。デフォルトでは、SageMaker はトレーニングジョブ、処理ジョブ、実験、パイプライン、モデルレジストリエントリなどの新しい SageMaker リソースに、それぞれの sagemaker:domain-arn で自動的にタグ付けするようになりました。SageMaker では、リソースの作成をより詳細に指定するために、リソースに sagemaker:user-profile-arn または sagemaker:space-arn などのタグを付けることもできます。

コスト配分

管理者は、自動タグ付けを使用して、AWS BudgetsAWS Cost Explorer などのツールから、業務部門、チーム、個々のユーザー、または個々のビジネス上の問題に関連するコストを簡単に監視できます。例として、管理者は sagemaker:domain-arn タグにコスト配分タグを付けることができます。

これにより、Cost Explorerを利用して、特定のドメインのノートブックにかかる費用を可視化できます。

ドメインレベルのリソース分離

管理者は、ドメインのユーザーがそれぞれのドメインに紐づく SageMaker リソースのみを作成したり開くことができるようにする AWS Identity and Access Management (IAM) ポリシーをアタッチできます。次のコードは、そのようなポリシーの例です。

{
    "Version": "2012-10-17",
    "Statement":
    [
        {
            "Sid": "CreateRequireDomainTag",
            "Effect": "Allow",
            "Action":
            [
                "SageMaker:Create*",
                "SageMaker:Update*"
            ],
            "Resource": "*",
            "Condition":
            {
                "ForAllValues:StringEquals":
                {
                    "aws:TagKeys":
                    [
                        "sagemaker:domain-arn"
                    ]
                }
            }
        },
        {
            "Sid": "ResourceAccessRequireDomainTag",
            "Effect": "Allow",
            "Action":
            [
                "SageMaker:Update*",
                "SageMaker:Delete*",
                "SageMaker:Describe*"
            ],
            "Resource": "*",
            "Condition":
            {
                "StringEquals":
                {
                    "aws:ResourceTag/sagemaker:domain-arn": "arn:aws:sagemaker:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>"
                }
            }
        }
    ]
}

詳細については、「Multiple Domains Overview」を参照してください。

既存リソースに対するドメインタグの後付け

マルチドメイン機能の開始以降、新しいリソースには自動的に aws:ResourceTag/sagemaker:domain-arn のタグが付くようになりました。しかし、リソースの分離を容易にするために既存のリソースを更新したい場合、管理者はスクリプトでの add-tag SageMaker API 呼び出しを使用できます。以下の例は、既存のすべての実験にドメインへのタグ付けを行う方法を示しています。

domain_arn=arn:aws:sagemaker:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>
experiments=`aws --region $REGION \
sagemaker list-experiments`
for row in $(echo "${experiments}" | jq -r '.ExperimentSummaries[] | @base64'); do
    _jq() {
     echo ${row} | base64 --decode | jq -r ${1}
    }

    exp_name=$(_jq '.ExperimentName')
    exp_arn=$(_jq '.ExperimentArn')

    echo "Tagging resource name: $exp_name and arn: $exp_arn with \"sagemaker:domain-arn=$domain_arn\""
    echo `aws sagemaker \
        add-tags \
        --resource-arn $exp_arn \
        --tags "Key=sagemaker:domain-arn,Value=$domain_arn" \
        --region $REGION`
    echo "Tagging done for: $exp_name"
    sleep 1
done

次のコードサンプルを使用して、個々のリソースが正しくタグ付けされていることを確認できます。

aws sagemaker \
list-tags \
--resource-arn <SAGEMAKER-RESOURCE-ARN> \
--region <REGION> 

ソリューションの概要

ここでは、自分の AWS アカウントに複数の SageMaker ドメインを設定する方法について概要を説明します。AWS コマンドラインインターフェイス (AWS CLI) または SageMaker コンソールのいずれかを使用できます。ドメインの作成に関する最新の手順については、「Amazon SageMaker ドメインにオンボードする」を参照してください。

AWS CLI を使用したドメインの作成

以前の aws sagemaker create-domain CLI 呼び出しと比べて、必要な API の変更はありませんが、SageMaker Studio で shared space を使用する場合のために、--default-space-settings がサポートされるようになりました。詳細については、「Amazon SageMaker Collaborate with shared spaces」を参照してください。
aws sagemaker create-domain を使用して指定した設定で新しいドメインを作成すると、ユーザーを作成する準備が整います。

SageMaker コンソールを使用したドメインの作成

アップデートされた SageMaker コンソールでは、ナビゲーションペインの SageMaker Domains という新しいオプションを使用してドメインを管理できます。
ここでは、既存のドメインを開くか、グラフィカルインターフェースを使用して新しいドメインを作成するオプションが表示されます。

まとめ

複数の SageMaker ドメインを利用することで、組織のニーズに応じた柔軟な運用が可能になります。ユーザーとその事業部門を分離したい、設定の違いから別のドメインを運用したいなど、是非 1 つの AWS アカウント内で複数の SageMaker ドメインを立ち上げてみてください。

翻訳は Solutions Architect の今井が担当しました。原文はこちらです。