トレーニングスクリプトを変更してインスタンスグループを割り当てる - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

トレーニングスクリプトを変更してインスタンスグループを割り当てる

前のセクションの異種クラスター設定では、 SageMaker トレーニングジョブのトレーニング環境とインスタンスを準備しました。インスタンスグループを特定のトレーニングとデータ処理タスクにさらに割り当てるために、次のステップでトレーニングスクリプトを変更します。デフォルトでは、トレーニングジョブはインスタンスのサイズに関係なくすべてのノードのトレーニングスクリプトのレプリカを作成するので、パフォーマンスが低下する可能性があります。

例えば、ディープニューラルネットワークトレーニングスクリプトを SageMaker 推定器のentry_point引数に渡すときに、異種クラスター内のCPUインスタンスとGPUインスタンスを混在させると、entry_pointスクリプトは各インスタンスにレプリケートされます。つまり、適切なタスク割り当てがないと、CPUインスタンスはスクリプト全体を実行し、GPUインスタンスの分散トレーニング用に設計されたトレーニングジョブも開始します。したがって、CPUインスタンスでオフロードして実行する特定の処理関数を変更する必要があります。 SageMaker 環境変数を使用して異種クラスターの情報を取得し、特定のプロセスを適切に実行させることができます。

トレーニングジョブが開始されると、トレーニングスクリプトは異種クラスター設定を含む SageMaker トレーニング環境情報を読み取ります。この設定には、現在のインスタンスグループ、各グループの現在のホスト、現在のホストがどのグループに属しているかなどの情報が含まれます。

トレーニングジョブの SageMaker初期化フェーズ中にインスタンスグループ情報をクエリするには、次の方法があります。

(推奨) SageMaker トレーニングツールキットを使用してインスタンスグループ情報を読み取る

SageMaker トレーニングツールキットライブラリが提供する環境 Python モジュールを使用します。ツールキットライブラリは TensorFlow および のSageMaker フレームワークコンテナにプリインストールされているため PyTorch、構築済みのコンテナを使用する際に追加のインストール手順は必要ありません。これは、トレーニングスクリプトのコード変更が少ない SageMaker 環境変数を取得する推奨方法です。

from sagemaker_training import environment env = environment.Environment()

一般的な SageMaker トレーニングと異種クラスターに関連する環境変数:

  • env.is_hetero – 異種クラスターが設定されているかどうかを Boolean で返します。

  • env.current_host – 現在のホストを返します。

  • env.current_instance_type – 現在のホストのインスタンスのタイプを返します。

  • env.current_instance_group – 現在のインスタンスグループの名前を返します。

  • env.current_instance_group_hosts – 現在のインスタンスグループ内のホストのリストを返します。

  • env.instance_groups – トレーニングに使用するインスタンスグループ名のリストを返します。

  • env.instance_groups_dict – トレーニングジョブの異種クラスター構成全体を返します。

  • env.distribution_instance_groups – SageMaker 推定器クラスの distributionパラメータに割り当てられたインスタンスグループのリストを返します。

  • env.distribution_hosts – SageMaker 推定器クラスの distributionパラメータに割り当てられたインスタンスグループに属するホストのリストを返します。

例えば、次の 2 つのインスタンスグループで構成される異種クラスターの例を考えてみましょう。

from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge", 1) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge", 2)

この例の異種クラスターの env.instance_groups_dict 出力は、以下のようになっている必要があります。

{ "instance_group_1": { "hosts": [ "algo-2" ], "instance_group_name": "instance_group_1", "instance_type": "ml.c5.18xlarge" }, "instance_group_2": { "hosts": [ "algo-3", "algo-1" ], "instance_group_name": "instance_group_2", "instance_type": "ml.p3dn.24xlarge" } }

(オプション) リソース設定JSONファイルからインスタンスグループ情報を読み取る

環境変数を JSON 形式で取得する場合は、リソース設定JSONファイルを直接使用できます。 SageMaker トレーニングインスタンスのJSONファイルは/opt/ml/input/config/resourceconfig.json、デフォルトで にあります。

file_path = '/opt/ml/input/config/resourceconfig.json' config = read_file_as_json(file_path) print(json.dumps(config, indent=4, sort_keys=True))