翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ローカルコードを SageMaker トレーニングジョブとして実行する
ローカル機械学習 (ML) Python コードは、大規模な単一ノードの Amazon SageMaker トレーニングジョブまたは複数の並列ジョブとして実行できます。これは、次のコードサンプルに示すように、コードに @remote デコレータで注釈を付けることで実現できます。リモート関数では複数のインスタンスにわたる分散トレーニングがサポートされていません。
@remote(**settings) def divide(x, y): return x / y
SageMaker Python SDK は、既存のワークスペース環境と関連するデータ処理コードとデータセットを SageMaker 、トレーニングプラットフォームで実行される SageMaker トレーニングジョブに自動的に変換します。また、永続キャッシュ機能を有効化して、以前にダウンロードした依存関係パッケージをキャッシュすることで、ジョブのスタートアップレイテンシーをさらに短縮することもできます。このジョブレイテンシーの短縮は、 SageMaker マネージドウォームプールのみを使用した場合のレイテンシーの削減よりも大きくなります。詳細については、「永続キャッシュを使用する」を参照してください。
注記
分散トレーニングジョブは、リモート関数ではサポートされていません。
以下のセクションでは、ローカル機械学習コードに @remote デコレータで注釈を付け、ユースケースに合わせてエクスペリエンスを調整する方法を示します。これには、環境のカスタマイズと SageMaker Experiments との統合が含まれます。
トピック
環境をセットアップする
次の 3 つのオプションから 1 つ選択して、環境をセットアップします。
ノートブックを作成し、 SageMaker Studio Classic イメージで使用可能なイメージをアタッチすることで、 SageMaker Studio Classic SageMaker からローカル ML コードに注釈を付けて実行できます。次の手順は、 SageMaker ノートブックの作成、 SageMaker Python SDK のインストール、コードの注釈を デコレータで作成するのに役立ちます。
-
ノートブックを作成し、次のように SageMaker Studio Classic SageMaker にイメージをアタッチします。
-
「Amazon SageMaker デベロッパーガイド」の「Amazon Studio Classic を起動する」の手順に従います。 SageMaker
-
左のナビゲーションペインで [Studio] を選択します。新しいウィンドウが開きます。
-
[使用を開始] ダイアログボックスで、下向き矢印からユーザープロファイルを選択します。新しいウィンドウが開きます。
-
Open Studio Classic を選択します。
-
メインワークエリアから [ランチャーを開きます] を選択します。新しいページが開きます。
-
メインワークエリアから [ノートブックの作成] を選択します。
-
[環境の変更] ダイアログボックスの [イメージ] の横にある下向き矢印から [Base Python 3.0] を選択します。
@remote デコレータは、 SageMaker Studio Classic ノートブックにアタッチされたイメージを自動的に検出し、それを使用してトレーニングジョブを実行します SageMaker。
image_uri
がデコレータまたは設定ファイルの引数として指定されている場合、検出されたイメージの代わりにimage_uri
で指定された値が使用されます。Studio Classic で SageMakerノートブックを作成する方法の詳細については、「Amazon Studio Classic ノートブックを作成または開く」の「ファイルメニューからノートブックを作成する」セクションを参照してください。 SageMaker
使用可能なイメージのリストについては、「Supported Docker images」を参照してください。
-
-
SageMaker Python SDK をインストールします。
Studio Classic Notebook 内の @remote 関数でコードに SageMaker注釈を付けるには、 SageMaker Python SDK がインストールされている必要があります。次のコード例に示すように、 SageMaker Python SDK をインストールします。
!pip install sagemaker
-
@remote デコレータを使用して、 SageMaker トレーニングジョブで関数を実行します。
ローカル ML コードを実行するには、まず依存関係ファイルを作成して、ローカルコード SageMaker の場所を指示します。そのためには、以下の手順を実行します。
-
SageMaker Studio Classic Launcher のメインワークエリアのユーティリティとファイル で、テキストファイル を選択します。これにより、
untitled.txt.
と呼ばれるテキストファイルを含む新しいタブが開きます。SageMaker Studio Classic ユーザーインターフェイス (UI) の詳細については、「Amazon SageMaker Studio Classic UI の概要」を参照してください。
-
untitled.txt
をrequirements.txt
に名前変更します。 -
コードに必要なすべての依存関係を SageMaker ライブラリとともに に追加します
requirements.txt
。divide
関数例のrequirements.txt
の最小限のコードサンプルを以下のセクションに示します。sagemaker
-
以下のように依存関係ファイルを渡して、リモートデコレータを使用してコードを実行します。
from sagemaker.remote_function import remote @remote(instance_type="ml.m5.xlarge", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)
その他のコードサンプルについては、サンプルノートブック quick_start.ipynb
を参照してください。 SageMaker Studio Classic ノートブックをすでに実行していて、「2」の説明に従って Python SDK をインストールしている場合。 SageMaker Python SDK をインストールします。カーネルを再起動する必要があります。詳細については、「Amazon SageMaker デベロッパーガイド」の SageMaker「Studio Classic ノートブックツールバーを使用する」を参照してください。
-
SageMaker ノートブックインスタンスからローカル ML コードに注釈を付けることができます。次の手順は、カスタムカーネルを使用してノートブックインスタンスを作成し、 SageMaker Python SDK をインストールし、コードに デコレータで注釈を付ける方法を示しています。
-
カスタム
conda
カーネルを使用してノートブックインスタンスを作成します。ローカル ML コードに @remote デコレータをアノテーションして、 SageMaker トレーニングジョブ内で使用できます。まず、Python バージョン 3.7 以降、最大 3.10.x のカーネルを使用するようにノートブック SageMaker インスタンスを作成してカスタマイズする必要があります。そのためには、以下の手順を実行します。
-
https://console.aws.amazon.com/sagemaker/
で SageMaker コンソールを開きます。 -
左側のナビゲーションパネルで、[ノートブック] を選択してオプションを展開します。
-
展開されたオプションから [ノートブックインスタンス] を選択します。
-
[ノートブックインスタンスの作成] ボタンを選択します。新しいページが開きます。
-
ノートブックインスタンス名には、スペースなしで 63 文字以内の名前を入力します。有効な文字は、A~Z、a~z、0~9、および .:+=@ _%- (ハイフン) です。
-
[ノートブックインスタンス設定] ダイアログボックスで、[追加設定] の横にある右矢印を展開します。
-
[ライフサイクル設定 - オプション] で、下向き矢印を展開して [新しいライフサイクル設定を作成する] を選択します。新しいダイアログボックスが開きます。
-
[名前] で、構成設定の名前を入力します。
-
[スクリプト] ダイアログボックスの [ノートブックの開始] タブで、テキストボックスの既存の内容を次のスクリプトに置き換えます。
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda/ source "$WORKING_DIR/miniconda/bin/activate" for env in $WORKING_DIR/miniconda/envs/*; do BASENAME=$(basename "$env") source activate "$BASENAME" python -m ipykernel install --user --name "$BASENAME" --display-name "Custom ($BASENAME)" done EOF echo "Restarting the Jupyter server.." # restart command is dependent on current running Amazon Linux and JupyterLab CURR_VERSION_AL=$(cat /etc/system-release) CURR_VERSION_JS=$(jupyter --version) if [[ $CURR_VERSION_JS == *$"jupyter_core : 4.9.1"* ]] && [[ $CURR_VERSION_AL == *$" release 2018"* ]]; then sudo initctl restart jupyter-server --no-wait else sudo systemctl --no-block restart jupyter-server.service fi
-
[スクリプト] ダイアログボックスの [ノートブックを作成] タブで、テキストボックスの既存の内容を次のスクリプトに置き換えます。
#!/bin/bash set -e sudo -u ec2-user -i <<'EOF' unset SUDO_UID # Install a separate conda installation via Miniconda WORKING_DIR=/home/ec2-user/SageMaker/custom-miniconda mkdir -p "$WORKING_DIR" wget https://repo.anaconda.com/miniconda/Miniconda3-4.6.14-Linux-x86_64.sh -O "$WORKING_DIR/miniconda.sh" bash "$WORKING_DIR/miniconda.sh" -b -u -p "$WORKING_DIR/miniconda" rm -rf "$WORKING_DIR/miniconda.sh" # Create a custom conda environment source "$WORKING_DIR/miniconda/bin/activate" KERNEL_NAME="custom_python310" PYTHON="3.10" conda create --yes --name "$KERNEL_NAME" python="$PYTHON" pip conda activate "$KERNEL_NAME" pip install --quiet ipykernel # Customize these lines as necessary to install the required packages EOF
-
ウィンドウの右下にある [構成を作成] ボタンを選択します。
-
ウィンドウの右下にある [ノートブックインスタンスの作成] ボタンを選択します。
-
ノートブックインスタンスのステータスが保留中から に変わるまで待ちますInService。
-
-
ノートブックインスタンスで Jupyter Notebook を作成します。
次の手順は、新しく作成した SageMaker インスタンスで Python 3.10 を使用して Jupyter Notebook を作成する方法を示しています。
-
前のステップのノートブックインスタンスのステータスが になったらInService、次の操作を行います。
-
新しく作成したノートブックインスタンスの [名前] を含んでいる行の [アクション] で [Jupyter を開く] を選択します。新しい Jupyter サーバーが開きます。
-
-
Jupyter サーバーで、右上のメニューから [新規] を選択します。
-
下向き矢印から [conda_custom_python310] を選択します。Python 3.10 カーネルを使用する新しい Jupyter Notebook が作成されます。この新しい Jupyter Notebook は、ローカルの Jupyter Notebook と同様に使用できるようになりました。
-
-
SageMaker Python SDK をインストールします。
仮想環境が実行されたら、次のコード例を使用して SageMaker Python SDK をインストールします。
!pip install sagemaker
-
@remote デコレータを使用して、 SageMaker トレーニングジョブで関数を実行します。
SageMaker ノートブック内の @remote デコレータを使用してローカル ML コードに注釈を付けると、 SageMaker トレーニングによってコードの関数が自動的に解釈され、 SageMaker トレーニングジョブとして実行されます。次の手順を実行して、ノートブックを設定します。
-
ステップ 1、カスタムカーネル を使用してノートブックインスタンスを作成するで作成したノートブックインスタンスから SageMaker、ノートブックメニューのカーネル名を選択します。 SageMaker
詳細については、「イメージまたはカーネルの変更」を参照してください。
-
下向き矢印から、3.7 以降のバージョンの Python を使用するカスタム
conda
カーネルを選択します。例として、
conda_custom_python310
を選択すると Python 3.10 用のカーネルが選択されます。 -
[選択] を選びます。
-
カーネルのステータスがアイドル (カーネルが起動したことを示す) になるのを待ちます。
-
Jupyter サーバーホームで、右上のメニューから [新規] を選択します。
-
下矢印の横で [テキストファイル] を選択します。
untitled.txt.
という名前の新しいテキストファイルが作成されます。 -
untitled.txt
からrequirements.txt
に名前を変更し、コードに必要な依存関係をsagemaker
と一緒に追加します。 -
次に示すように、依存関係ファイルを渡して、リモートデコレータを使用してコードを実行します。
from sagemaker.remote_function import remote @remote(instance_type="
ml.m5.xlarge
", dependencies='./requirements.txt') def divide(x, y): return x / y divide(2, 3.0)その他のコードサンプルについては、サンプルノートブック quick_start.ipnyb
を参照してください。
-
任意のローカル IDE 内でローカル機械学習コードに @remote デコレータで注釈を付けることができます。以下の手順は、必要な前提条件、Python SDK のインストール方法、およびコードに @remote デコレータで注釈を付ける方法を示しています。
-
AWS Command Line Interface (AWS CLI) を設定し、次のようにロールを作成して、前提条件をインストールします。
-
「Amazon 前提条件の設定AWS CLI 」の「前提条件」セクションの指示に従って SageMaker ドメインにオンボードします。 SageMaker
-
ロール の「実行ロールの作成SageMaker」セクションに従って IAM ロールを作成します。
-
-
PyCharm または のいずれかを使用し
conda
、Python バージョン 3.7 以降、最大 3.10.x を使用して仮想環境を作成します。-
PyCharm 次のように を使用して仮想環境を設定します。
-
メインメニューから [ファイル] を選択します。
-
[New Project] (新しいプロジェクト) を選択します。
-
[使用する新しい環境] の下向き矢印から [Conda] を選択します。
-
[Python のバージョン] フィールドで、下向き矢印を使用して 3.7 以降の Python のバージョンを選択します。リストから 3.10.x まで選択できます。
-
-
Anaconda がインストールされている場合、以下のように
conda
を使用して仮想環境をセットアップできます。-
Anaconda Prompt のターミナルインターフェースを開きます。
-
Python バージョン 3.7 以降 (3.10x まで) を使用して、新しい
conda
環境を作成し、アクティブ化します。次のコードサンプルは、Python バージョン 3.10 を使用してconda
環境を作成する方法を示しています。conda create -n
sagemaker_jobs_quick_start
python=3.10 pip conda activatesagemaker_jobs_quick_start
-
-
-
SageMaker Python SDK をインストールします。
任意の IDE からコードをパッケージ化するには、Python 3.7 以降 (最大 3.10x) を使用して仮想環境を設定する必要があります。また、互換性があるコンテナイメージも必要です。次のコード例を使用して SageMaker Python SDK をインストールします。
pip install sagemaker
-
@remote デコレータ内部でコードをラップします。 SageMaker Python SDK はコードの関数を自動的に解釈し、トレーニングジョブとして SageMaker実行します。次のコード例は、必要なライブラリをインポートし、 SageMaker セッションを設定し、@remote デコレータを使用して関数に注釈を付ける方法を示しています。
必要な依存関係を直接指定するか、アクティブな
conda
環境からの依存関係を使用してコードを実行できます。-
依存関係を直接指定するには、次の操作を行います。
-
コードがある作業ディレクトリに
requirements.txt
ファイルを作成します。 -
SageMaker ライブラリとともに、コードに必要な依存関係をすべて追加します。次のセクションでは、
divide
関数例のrequirements.txt
の最小限のコードサンプルを示します。sagemaker
-
依存関係ファイルを渡し、@remote デコレータを使用してコードを実行します。次のコード例では、 をジョブの実行 SageMaker に使用する AWS Identity and Access Management (IAM) ロール ARN
The IAM role name
に置き換えます。import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies='./requirements.txt' ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))
-
-
アクティブな
conda
環境からの依存関係を使用するには、以下に示すようにdependencies
パラメータの値auto_capture
を使用します。import boto3 import sagemaker from sagemaker.remote_function import remote sm_session = sagemaker.Session(boto_session=boto3.session.Session(region_name="
us-west-2
")) settings = dict( sagemaker_session=sm_session, role=<The IAM role name>
, instance_type="ml.m5.xlarge
", dependencies="auto_capture" ) @remote(**settings) def divide(x, y): return x / y if __name__ == "__main__": print(divide(2, 3.0))注記
Jupyter Notebook 内に以前のコードを実装することもできます。 PyCharm Professional Edition は Jupyter をネイティブにサポートしています。詳細については、 のドキュメントの「Jupyter Notebook のサポート
PyCharm」を参照してください。
-