AWS上のサービスとしてwatsonx.governanceをAmazonSageMakerと統合することで、watsonx.governanceのガバナンス、リスク、コンプライアンス機能を AmazonSageMakerモデルに導入することができます。
開始前に
以下のサービスを受けなければならない:
- watsonx.governanceのインスタンス
- AmazonSageMakerのインスタンス
AWSで以下のサービスをセットアップする:
- CloudTrail:AmazonSageMakerのイベントはCloudTrailに公開されます。
- Simple Queue service (SQS):このサービスを使用して、AmazonSageMakerモデル用のキューを設定します。 詳細については、Amazon SQSの設定を参照してください。
- EventBridge:このサービスを使用して、AmazonSageMakerモデルカードの変更を Simple Queue Service (SQS) FIFO キューに抽出するルールを定義します。
- リソースアクセスマネージャー:このサービスを使用して、中央モデル登録を作成し、リソースをグループ化して管理します。 詳細については、 リソース・エクスプローラの設定と構成を参照してください。
CloudTrailと EventBridgeのサービスが実行されていることを確認します。
構成の計画
接続のための認証情報
watsonx.governance と Amazon SageMakerの間のアクセスをどのように設定するかを決めます。 クロスアカウントロールまたはアクセスキーを使用することができます。
- クロスアカウントロールを使用するには、 クロスアカウントロールの設定を参照してください。
- アクセスキーを使用するには、 アクセスキーの設定を参照してください。
アカウント
Amazon SageMaker への各接続は、集中型モデルレジストリを所有するアカウントへの接続です。 最大10個の異なるアカウントに接続でき、それぞれがモデル登録を持っている。 1つ以上の中央モデルレジストリの使用に関する詳細については、 AWS 上のマルチアカウントMachine Learningモデルガバナンスのガイダンスを参照してください。
拠点
使用する事業体を決める。 設定する Amazon SageMaker 接続ごとに、個別のビジネスエンティティが必要です。 このビジネス・エンティティはルート・レベルでなければならず、他のビジネス・エンティティの子であってはならない。 watsonx.governance と Amazon SageMaker によって管理されるのは、設定されたビジネスエンティティの下にあるユースケースと、それに関連するモデルグループとモデルだけです。
ビジネス・エンティティはユースケースの親であるが、第一の親である必要はない。 事業体を他の目的に使用することもできる。
ユーザーは、ユースケースを作成するときにビジネス・エンティティを選択する必要があります。 ユーザーがどのビジネス・エンティティを使用すべきかを確実に把握できるようにする。 また、ユースケースの承認者は、ユースケースを承認する前に、ビジネスエンティティが正しく設定されていることを確認する。 ユースケースが承認される前にビジネスエンティティが正しく設定されていない場合、ユースケースとその子モデルグループおよびモデルは Amazon SageMaker と同期されません。
例えば、ユーザが設定したビジネスエンティティの子を選択し、ユースケースが承認された場合、同期ジョブはユースケースを Amazon SageMaker に同期しません。
ユーザーを支援するために、セキュリティ・ドメインを使用して、必要な特定のビジネス・エンティティへのアクセスを許可する。
以下のステップを実行します。
- それぞれの接続について、どのビジネス・エンティティを使うかを決める。 新しいビジネスエンティティを使用する場合は、Amazon SageMaker への接続を設定する前に作成してください。 ビジネス・エンティティを作成するには、管理者権限が必要です。
- Governance コンソールで、ユーザーにビジネス エンティティのセキュリティ ドメインへのアクセス権を与えます。 例えば、グループを作成し、そのグループにユーザーを追加し、そのグループをビジネス・エンティティのセキュリティ・ドメインに関連付ける。 詳細は、 セキュリティ・ドメインを参照。
デフォルト・プロファイルとデフォルト・ユーザー
各接続には、デフォルト・プロファイルとデフォルト・ユーザーが必要です。
デフォルトのプロファイルは、タスクビューで署名済みリンクを生成するために使用されます。 これらのリンクは、デフォルトのプロファイルを使用してAmazon SageMakerを開きます。 ガバナンスユーザーが Amazon SageMaker のモデルグループとモデルに関する詳細情報を取得するために必要な最小限のアクセス権をデフォルトプロファイルに与えます。
署名済みのリンクは5分間有効。 その後、ユーザーはリンクを再生成するためにタスクビューをリフレッシュする必要がある。
以下の場合、デフォルト・ユーザーが使用される:
- モデルにオーナーが割り当てられていない場合、モデルのオーナーはこのデフォルトユーザーに設定されます。
- モデルのオーナーがGovernanceコンソールにアカウントを持っていない場合、モデルのオーナーはこのデフォルトユーザーに設定されます。
認証情報の設定
Amazon SageMaker への接続には、クロスアカウントロールまたはアクセスキーを使用できます。 セキュリティを向上させるために、クロスアカウントロールの使用を検討してください。
クロスアカウントの役割設定
このタスクは、Amazon SageMakerと watsonx.governanceを統合するためにクロスアカウントロールを使用する場合に必要です。 詳細については、 IAMのクロスアカウント・リソースアクセスを参照してください。
クロスアカウント・ロールを設定するには、以下の手順を実行する:
- AWS アカウントの外部IDを生成する。
AmazonSageMakerFullAccess
およびAmazonSQSFullAccess
.- ロールの信頼ポリシーに外部IDを追加します。
役割定義のサンプル
以下のTerraformスクリプトをガイドとして、クロスアカウントロールを作成することができます。
スクリプトは次のような動作をする:
- スクリプトは、
Aws_Sagemaker_Sqs_Cross_Account_Role
という IAM ロールを作成します。 - スクリプトは、外部ID
123456
をロールに割り当てる。 - このスクリプトは、ロールに以下のサービスへのアクセス権を与える:
sqs.amazonaws.com
sagemaker.amazonaws.com
- スクリプトは次に、以下のポリシーをロールにアタッチする:
AmazonSQSFullAccess
AmazonSageMakerFullAccess
以下の行では、 999999999999
を watsonx.governanceの本番アカウントの ID に置き換えてください。
+ AWS = "arn:aws:iam::999999999999:root"
各項目の意味は次のとおりです。
arn:aws:iam::767397658217:root
は、顧客が AWS Marketplace からインスタンスをインストールする際の、 watsonx.governanceの本番アカウントの ID です。arn:aws:iam::384547875043:root
は、ユーザが IBM からインスタンスをインストールする際の watsonx.governance 本番アカウントの ID です。# module.iam.aws_iam_role.aws_sagemaker_sqs_cross_account_role[0] will be created + resource "aws_iam_role" "aws_sagemaker_sqs_cross_account_role" { + arn = (known after apply) + assume_role_policy = jsonencode( { + Statement = [ + { + Action = "sts:AssumeRole" + Condition = { + StringEquals = { + "sts:ExternalId" = "123456" } } + Effect = "Allow" + Principal = { + AWS = "arn:aws:iam::999999999999:root" + Service = [ + "sqs.amazonaws.com", + "sagemaker.amazonaws.com", ] } }, ] + Version = "2012-10-17" } ) + create_date = (known after apply) + force_detach_policies = false + id = (known after apply) + managed_policy_arns = (known after apply) + max_session_duration = 3600 + name = "Aws_Sagemaker_Sqs_Cross_Account_Role" + name_prefix = (known after apply) + path = "/" + tags_all = (known after apply) + unique_id = (known after apply) } # module.iam.aws_iam_role_policy_attachment.AmazonSQSFullAccess_role_policy_attach[0] will be created + resource "aws_iam_role_policy_attachment" "AmazonSQSFullAccess_role_policy_attach" { + id = (known after apply) + policy_arn = "arn:aws:iam::aws:policy/AmazonSQSFullAccess" + role = "Aws_Sagemaker_Sqs_Cross_Account_Role" } # module.iam.aws_iam_role_policy_attachment.AmazonSageMakerFullAccess_cross_role_policy_attach[0] will be created + resource "aws_iam_role_policy_attachment" "AmazonSageMakerFullAccess_cross_role_policy_attach" { + id = (known after apply) + policy_arn = "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess" + role = "Aws_Sagemaker_Sqs_Cross_Account_Role" }
アクセスキーの設定
アクセスキーを使用して Amazon SageMaker と watsonx.governance を接続する場合は、このタスクを実行します。
AWS で、watsonx.governance と統合するための長期アクセスキーを設定する。 クレデンシャルには以下のアクセス権が必要です:
- シンプル・キュー・サービス(SQS)へのプログラムによるアクセス
- AmazonSageMakerAPIへのプログラムアクセス
- AmazonSageMakerでモデルカードを更新する権限
詳細については、AWSセキュリティ認証情報を参照してください。
統合のためのAWSサービスのセットアップ
以下のステップを実行します。
- SQSキューの設定
- アマゾンEventBridgeを設定する rule and add your SQS queue as the target for the rule.
SQSキューの設定
この統合では、SQSキューを使用して、モデルグループとモデルの変更の通知を受け取ります。
各接続に対して、アカウントにSQSキューをセットアップする。
SQSキューをセットアップするには、以下の手順を実行する:
- AWSコンソールから、Simple Queue Serviceを選択します。
- キューの作成をクリックします。
- キューの名前を入力し、以下の情報を入力します:
- タイプFIFOタイプ
- 可視タイムアウト:30秒
- メッセージの保存期間4日間
- 最大メッセージサイズ:256KB
- 配達の遅れ:0
- 受信メッセージ待機時間:0
- FIFOキューの設定で、以下のオプションを有効にする:
- コンテンツベースの重複排除
- 高スループットFIFOキュー
SQSキューが定義されている。 次に、EventBridgeルールを設定する。
EventBridgeルールの設定
EventBridgeルールを設定し、ターゲットとしてSQSキューを追加するには、以下の手順を実行します:
- AWSコンソールから、AmazonEventBridgeサービスを選択します。
- 「ルールの作成」をクリックします。
- ルールの名前を入力し、[Next]をクリックする。
- イベント・ソースは「その他」をクリック。
- 作成方法は、「カスタムパターン(JSONエディタ)」をクリックし、Eventパターンに以下のJSONを入力する:
{ "source": ["aws.sagemaker"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sagemaker.amazonaws.com"], "eventName": ["CreateModelPackage", "CreateModelPackageGroup" "DeleteModelPackage", "DeleteModelPackageGroup", "UpdateModelPackage"] } }
- 次へ をクリックします。
- ターゲットを作成したSQSキューに設定する。
- 残りのページで[Next]をクリックし、[Create Rule]をクリックします。
これで、SQSキューをルールのターゲットとするEventBridgeルールができました。
統合の設定
このタスクを実行するには、 AWSの認証情報が必要だ。
- クロスアカウント・ロールを使用する場合は、以下の情報が必要です:
- ロールのAmazon Resource Name (ARN)。
- ロールの外部ID。
- 統合用に設定したAmazon SQSサービスの URL。
- 指定されたURLのデフォルトプロファイルのARN。
- アクセスキーを使用する場合は、以下の情報が必要です:
- AWSアカウントID
- 統合用に設定したアクセスキーIDとシークレットID。
- 統合用に設定したAmazon SQSサービスの URL。
- 指定されたURLのデフォルトプロファイルのARN。
必要な権限Governance コンソールの All/SOX/Administration/SageMaker アプリケーション権限が必要です。
統合を設定するには、以下の手順を実行する:
- Governance コンソールに管理者としてログインします。
- > Integrations > Amazon SageMaker をクリックします。
- 新規接続をクリックしてください。
- 一般設定]で、以下の手順を実行する:
- 説明を入力します。
- この Amazon SageMaker 接続の親ビジネスエンティティを選択します。 構成する接続ごとに異なるビジネス・エンティティを使用する。 詳細については、 事業体を参照のこと。
- デフォルトユーザーを選択します。 詳細については、 デフォルト・プロファイルとデフォルト・ユーザーを参照してください。
- AWSaccount credentialsに、AWSアカウントの認証情報とリージョンを入力します。
- デフォルトプロファイルのARN フィールドに、アカウント用に作成したデフォルトプロファイルのARNを入力します。
- 自分の資格情報を入力します。
- ロールを使用してアクセスを設定するには、[ Cross-account Role] をクリックします。 役割ARNと 外部IDを入力する。
- キーを使用したアクセスを設定するには、[ アクセスキー]をクリックします。 AWS アカウントID、アクセスキーID、シークレットキーIDを入力します。
- watsonx.governance インスタンスの地域を入力します。たとえば、
us-east-1
。
- モデル SQS URL に、アカウント用に構成した SQS キューの URL を入力します。
- Test connectionをクリックし、 Saveをクリックします。
- 統合を有効にするには、トグルをクリックします。 自動同期プロセスが開始されます。 進行状況を確認するには、「 その他 」>「 バックグラウンド・プロセス 」をクリックする。 このプロセスは、この時点以降のアップデートを同期する。
- Amazon SageMaker,に既存のモデルがある場合は、手動で同期を実行する必要があります。 既存のモデル情報を同期する ]をクリックします。 SageMaker 同期テーブルには、アカウントの手動同期の進行状況が表示されます。
Amazon SageMaker モデルが Governance コンソールで利用できるようになりました。
Amazon SageMaker に、 watsonx.governanceのユースケースワークフローの外で作成されたモデルグループとモデルが既にある場合、モデルグループを関連するユースケースに手動でリンクする必要があります。
データの同期化
自動同期プロセスは、以下のアクションをリッスンする:
- Amazon SageMakerで作成したモデルパッケージ CreateModelPackage
- Amazon SageMakerでモデルパッケージが更新さUpdateModelPackage
- Amazon SageMakerでモデルパッケージを削除 DeleteModelPackage
- モデルグループ作成 CreateModelPackageGroup )
- モデルグループの削除 DeleteModelPackageGroup )
自動同期プロセスのステータスを表示するには、[ その他 ]>[ バックグラウンド・プロセス]をクリックします。
手動同期プロセスのステータスを表示するには、 > Integrations > Amazon SageMaker をクリックします。 SageMaker 同期テーブルには、すべての接続の手動同期プロセスが一覧表示されます。 特定の接続のステータスを表示するには、 接続テーブルでその名前をクリックします。
詳細情報
これらのプロセスフローについて、さらに詳しくご覧ください: