ノートブックインスタンスの作成 - Amazon SageMaker

ノートブックインスタンスの作成

Amazon SageMaker ノートブックインスタンスは、Jupyter ノートブックアプリを実行する ML コンピューティングインスタンスです。SageMaker は、インスタンスおよび関連リソースの作成を管理します。ノートブックインスタンスで Jupyter ノートブックを使用して、データの準備と処理、モデルのトレーニング用コードの作成、SageMaker ホスティングへのモデルのデプロイ、モデルのテストまたは検証を行います。

ノートブックインスタンスを作成するには、SageMaker コンソールか CreateNotebookInstance API のいずれかを使用します。

選択するノートブックインスタンスタイプは、ノートブックインスタンスの使用方法によって異なります。ノートブックインスタンスがメモリ、CPU、または IO にバインドされていないことを確認してください。調査や前処理のためにデータセットをノートブックインスタンスのメモリ内にロードする場合は、データセット用の十分な RAM メモリがあるインスタンスタイプを選択することをお勧めします。これには、少なくとも 16 GB のメモリ (.xlarge 以上) を持つインスタンスが必要です。コンピューティング負荷の高い前処理にノートブックを使用する場合は、c4 や c5 などのコンピューティング最適化インスタンスを選択することをお勧めします。

SageMaker ノートブックを使う場合のベストプラクティスとしては、ノートブックインスタンスを使って AWS の他のサービスをオーケストレートします。例えば、ノートブックインスタンスを使って、ETL (抽出、変換、ロード) サービスのために AWS Glue を呼び出したり、Hadoop を使ってマッピングやデータ削減を行うために Amazon EMR を呼び出したりすることで、大規模なデータセット処理を管理できます。AWS のサービスは、データの一時的な計算形式やストレージ形式として使用できます。

Amazon S3 バケットを使用して、トレーニングデータやテストデータを保存および取得できます。次に、SageMaker を使ってモデルのトレーニングや構築を行うことができます。そのため、ノートブックのインスタンスタイプは、モデルのトレーニングやテストの速度にまったく影響しません。

リクエストを受け取ると、SageMaker は次の処理を行います。

  • ネットワークインターフェイスを作成する - オプションの VPC 設定を選択した場合、VPC にネットワークインターフェイスが作成されます。リクエストで指定したサブネット ID を使って、サブネットを作成するアベイラビリティーゾーンを決定します。SageMaker は、リクエストに指定したセキュリティグループをサブネットに関連付けます。詳細については、「VPC 内のノートブックインスタンスを外部リソースに接続する」を参照してください。

  • ML コンピューティングインスタンスを起動する - SageMaker は SageMaker VPC で ML コンピューティングインスタンスを起動します。ノートブックインスタンスの管理を可能にする設定タスクが実行され、VPC を指定した場合、VPC とノートブックインスタンス間のトラフィックが有効になります。

  • 一般的な深層学習プラットフォーム用の Anaconda パッケージとライブラリをインストールする - インストーラに含まれているすべての Anaconda パッケージをインストールします。詳細については、「Anaconda パッケージリスト」を参照してください。SageMaker はさらに、TensorFlow および Apache MXNet 深層学習ライブラリをインストールします。

  • ML ストレージボリュームをアタッチする - SageMaker は ML ストレージボリュームを ML コンピューティングインスタンスにアタッチします。ボリュームを作業領域として使用して、トレーニングデータセットをクリーンアップしたり、検証やテスト、またはその他のデータを一時的に保存したりできます。ボリュームのサイズを 5 GB から 16384 GB の間で、1 GB 単位で選択します。デフォルトは 5 GB です。ML ストレージボリュームは暗号化されているため、SageMaker でボリューム上の使用可能な空き容量を判断できません。これにより、ボリュームのサイズを増やすことができますが、ノートブックインスタンスを更新するときに、ボリュームのサイズを小さくすることはできません。使用中の ML ストレージボリュームのサイズを小さくする場合は、目的のサイズで新しいノートブックインスタンスを作成します。

    ノートブックインスタンスセッション間では、/home/ec2-user/SageMaker フォルダ内に保存されたファイルとデータのみが保持されます。このディレクトリ外に保存されたファイルとデータは、ノートブックインスタンスが停止して再起動すると上書きされます。各ノートブックインスタンスの /tmp ディレクトリは、インスタンスストアに最低 10 GB のストレージを提供します。インスタンスストアは、永続的ではない一時的なブロックレベルのストレージです。インスタンスが停止または再起動されると、SageMaker はディレクトリの内容を削除します。この一時的なストレージは、ノートブックインスタンスのルートボリュームの一部です。

  • Jupyter ノートブックのサンプルをコピーする - これらの Python のコード例は、さまざまなアルゴリズムとトレーニングデータセットを使ったモデルトレーニングとホスティングの例を示しています。

SageMaker ノートブックインスタンスを作成するには:

  1. https://console.aws.amazon.com/sagemaker/ で SageMaker コンソールを開きます。

  2. [ノートブックインスタンス] を選択して、[ノートブックインスタンスの作成] を選択します。

  3. [ノートブックインスタンスの作成] ページで、次の情報を入力します。

    1. [ノートブックインスタンス名] に、ノートブックインスタンスの名前を入力します。

    2. [Notebook instance type] (ノートブックインスタンスタイプ) で、ユースケースに適したインスタンスサイズを選択します。サポートされているインスタンスタイプとクォータのリストについては、「Amazon SageMaker Service Quotas」を参照してください。

    3. [Elastic Inference] で、ノートブックインスタンスから推論を実行する場合は、ノートブックインスタンスに関連付ける推論アクセラレータの種類を選択するか、[none] を選択します。Elastic Inference については、使用アイテム SageMaker Elastic Inference (EI) を参照してください。

    4. [Platform Identifier] (プラットフォーム識別子) で、ノートブックインスタンスを作成するプラットフォームタイプを選択します。このプラットフォームタイプによって、ノートブックインスタンスの作成に使用するオペレーティングシステムと JupyterLab バージョンが決まります。プラットフォーム識別子タイプの詳細については、「Amazon Linux 2 ノートブックインスタンスと Amazon Linux ノートブックインスタンス」を参照してください。JupyterLab のバージョンの詳細については、「JupyterLab バージョニング」を参照してください。

    5. (オプション) 上級ユーザーの場合、[追加設定] を使用して、インスタンスの作成または起動時に実行できるシェルスクリプトを作成できます。このスクリプトはライフサイクル設定スクリプトと呼ばれ、ノートブックの環境を設定したり、その他の関数を実行したりするために使用できます。詳細については、ライフサイクル設定スクリプトを使用したノートブックインスタンスをカスタマイズします。 を参照してください。

    6. (オプション) [追加設定] では、ノートブックインスタンスにアタッチされている ML ストレージボリュームのサイズを GB 単位で指定することもできます。5 GB ~ 16,384 GB のサイズを 1 GB 単位で選択できます。ボリュームを使用してトレーニングデータセットをクリーンアップしたり、検証や他のデータを一時的に保存できます。

    7. (オプション) [Minimum IMDS Version] (最小 IMDS バージョン) で、ドロップダウンリストからバージョンを選択します。この値を v1 に設定すると、両方のバージョンをノートブックインスタンスで使用できます。v2 を選択すると、IMDSv2 のみをノートブックインスタンスで使用できます。IMDSv2 の詳細については、「IMDSv2 の使用」を参照してください。

    8. [IAM role] (IAM ロール) で、SageMaker リソースにアクセスするために必要なアクセス許可を持つアカウント内の既存の IAM ロールを選択するか、または [Create a new role] (新しいロールの作成) を選択します。[Create a new role] (新しいロールの作成) を選択すると、SageMaker では AmazonSageMaker-ExecutionRole-YYYYMMDDTHHmmSS という名前の IAM ロールが作成されます。AWS 管理ポリシー AmazonSageMakerFullAccess がロールにアタッチされます。ロールは、ノートブックインスタンスが SageMaker および Amazon S3 を呼び出すことを許可するアクセス許可を提供します。

    9. [Root access (ルートアクセス)] で、すべてのノートブックインスタンスユーザーに対してルートアクセスを有効にするには、[Enabled (有効化)] を選択します。ユーザーのルートアクセスを無効にするには、[Disable (無効化)] を選択します。ルートアクセスを有効にすると、ノートブックインスタンスのすべてのユーザーに管理者権限が付与され、そのインスタンス上のすべてのファイルにアクセスして編集できるようになります。

    10. (オプション) 暗号化キーを使用すると、AWS Key Management Service (AWS KMS) キーを使用して、ノートブックインスタンスにアタッチされた ML ストレージボリューム上のデータを暗号化できます。機密情報を ML ストレージボリュームに保存する場合は、情報を暗号化することを検討してください。

    11. (オプション) [ネットワーク] を使用すると、ノートブックインスタンスを Virtual Private Cloud (VPC) 内に配置できます。VPC はセキュリティを強化し、VPC 内のリソースへの VPC 外のソースからのアクセスを制限します。VPC の詳細については、「Amazon VPC ユーザーガイド」を参照してください。

      ノートブックインスタンスを VPC に追加するには:

      1. [VPC] と [SubnetId] を選択します。

      2. [セキュリティグループ] で、VPC のデフォルトのセキュリティグループを選択します。

      3. ノートブックインスタンスにインターネットアクセスが必要な場合は、直接インターネットアクセスを有効にします。[直接インターネットアクセス] で [有効化] を選択します。インターネットアクセスにより、ノートブックインスタンスの安全性が低下する可能性があります。詳細については、「VPC 内のノートブックインスタンスを外部リソースに接続する」を参照してください。

    12. (オプション) git リポジトリをノートブックインスタンスに関連付けるには、デフォルトのリポジトリと最大 3 つの追加リポジトリを選択します。詳細については、「Git リポジトリを SageMaker のノートブックインスタンスに関連付ける」を参照してください。

    13. [Create notebook instance] (ノートブックインスタンスの作成) を選択します。

      数分で、Amazon SageMaker で ML コンピューティングインスタンス (この場合ノートブックインスタンス) が起動し、ML ストレージボリュームがアタッチされます。ノートブックインスタンスには、事前設定された Jupyter ノートブックサーバと一連の Anaconda ライブラリがあります。詳細については、「CreateNotebookInstance API」を参照してください。

  4. コンソールでノートブックインスタンスのステータスが InService の場合、ノートブックインスタンスを使用する準備ができています。ノートブック名の横にある [Open Jupyter (Jupyter を開く)] を選択して、クラシック Jupyter ダッシュボードを開きます。

    [Open JupyterLab (JupyterLab を開く)] を選択すると、JupyterLab ダッシュボードが開きます。ダッシュボードは、ノートブックインスタンスと、完全なコードチュートリアルを含む SageMaker サンプルノートブックへのアクセスを提供します。これらのチュートリアルでは、SageMaker を使って一般的な機械学習タスクを実行する方法を示します。詳細については、「サンプルノートブック」を参照してください。詳細については、「SageMaker ノートブックインスタンスへのルートアクセスを制御する」を参照してください。

    Jupyter ノートブックの詳細については、Jupyter ノートブックを参照してください。