CloudFormation を使用して Braket ノートブックインスタンスを作成する
ヒント
AWS で量子コンピューティングの基礎について学びましょう。Amazon Braket Digital Learning Plan
CloudFormation を使用して、Amazon Braket ノートブックインスタンスを管理できます。Braket ノートブックインスタンスは Amazon SageMaker AI で構築されています。CloudFormation では、目的の設定が記述されているテンプレートファイルを使用して、ノートブックインスタンスをプロビジョニングすることができます。テンプレートファイルは JSON または YAML 形式で記述されています。インスタンスは、順序正しい繰り返し可能な方法で作成、更新、削除できます。この方法は、AWS アカウント で複数の Braket ノートブックインスタンスを管理する場合に有益です。
Braket ノートブック用の CloudFormation テンプレートを作成したら、CloudFormation を使用してこのリソースをデプロイします。詳細については、「CloudFormation ユーザーガイド」の「CloudFormation コンソールでのスタックの作成」を参照してください。
CloudFormation を使用して Braket ノートブックインスタンスを作成するには、次の 3 つのステップを実行します。
-
SageMaker AI ライフサイクル設定スクリプトを作成する。
-
SageMaker AI が引き受ける AWS Identity and Access Management (IAM) ロールを作成する。
-
プレフィックス
amazon-braket-を持つ SageMaker AI ノートブックインスタンスを作成する
ライフサイクル設定は、作成するすべての Braket ノートブック用に再利用できます。また、IAM ロールは、同じ実行許可を割り当てる Braket ノートブック用に再利用することができます。
このセクションの内容:
ステップ 1: SageMaker AI ライフサイクル設定スクリプトを作成する
次のテンプレートを使用して、SageMaker AI ライフサイクル設定スクリプトを作成します。このスクリプトは、SageMaker AI ノートブックインスタンスを Braket 用にカスタマイズしています。ライフサイクル CloudFormation リソースの設定オプションについては、「CloudFormation ユーザーガイド」の「AWS::SageMaker::NotebookInstanceLifecycleConfig」を参照してください。
BraketNotebookInstanceLifecycleConfig: Type: "AWS::SageMaker::NotebookInstanceLifecycleConfig" Properties: NotebookInstanceLifecycleConfigName: BraketLifecycleConfig-${AWS::StackName} OnStart: - Content: Fn::Base64: | #!/usr/bin/env bash sudo -u ec2-user -i ≪EOS curl -o braket-notebook-lcc.zip https://d3ded4lzb1lnme.cloudfront.net/notebook/braket-notebook-lcc.zip unzip braket-notebook-lcc.zip ./install.sh EOS exit 0
ステップ 2: Amazon SageMaker AI が引き受ける IAM ロールを作成する
Braket ノートブックインスタンスを使用すると、オペレーションがユーザーに代わって SageMaker AI により実行されます。例えば、サポートされているデバイスで回路を使用して Braket ノートブックを実行するとします。ノートブックインスタンス内で、ユーザーの代わりに SageMaker AI により、Braket に対するオペレーションが実行されます。SageMaker AI がユーザーに代わって実行できる詳細なオペレーションは、ノートブック実行ロールによって定義されています。詳細については、「Amazon SageMaker AIデベロッパーガイド」の「SageMaker AI ロール」を参照してください。
必要なアクセス許可を持つ Braket ノートブック実行ロールを作成するために、下記の例を使用します。ポリシーは必要に応じて変更できます。
注記
ロールに、s3:ListBucket というプレフィックスが付いた Amazon S3 バケットに対する braketnotebookcdk-" および s3:GetObject オペレーションのアクセス許可があることを確認してください。これらのアクセス許可は、ライフサイクル設定スクリプトが Braket ノートブックのインストールスクリプトをコピーするために必要です。
ExecutionRole: Type: "AWS::IAM::Role" Properties: RoleName: !Sub AmazonBraketNotebookRole-${AWS::StackName} AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "sagemaker.amazonaws.com" Action: - "sts:AssumeRole" Path: "/service-role/" ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonBraketFullAccess Policies: - PolicyName: "AmazonBraketNotebookPolicy" PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - s3:GetObject - s3:PutObject - s3:ListBucket Resource: - arn:aws:s3:::amazon-braket-* - arn:aws:s3:::braketnotebookcdk-* - Effect: "Allow" Action: - "logs:CreateLogStream" - "logs:PutLogEvents" - "logs:CreateLogGroup" - "logs:DescribeLogStreams" Resource: - !Sub "arn:aws:logs:*:${AWS::AccountId}:log-group:/aws/sagemaker/*" - Effect: "Allow" Action: - braket:* Resource: "*"
ステップ 3: プレフィックス amazon-braket- を持つ SageMaker AI ノートブックインスタンスを作成する
SageMaker AI ノートブックインスタンスを作成するには、SageMaker AI ライフサイクルスクリプトと、ステップ 1 とステップ 2 で作成した IAM ロールを使用します。このノートブックインスタンスは Braket 用にカスタマイズされており、Amazon Braket コンソールを使用してアクセスできます。この CloudFormation リソースの設定オプションの詳細については、「CloudFormation ユーザーガイド」の「AWS::SageMaker::NotebookInstance」を参照してください。
BraketNotebook: Type: AWS::SageMaker::NotebookInstance Properties: InstanceType: ml.t3.medium NotebookInstanceName: !Sub amazon-braket-notebook-${AWS::StackName} RoleArn: !GetAtt ExecutionRole.Arn VolumeSizeInGB: 30 LifecycleConfigName: !GetAtt BraketNotebookInstanceLifecycleConfig.NotebookInstanceLifecycleConfigName