翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トレーニングスクリプトを変更してインスタンスグループを割り当てる
前のセクションの異種クラスター設定では、 SageMaker トレーニングジョブのトレーニング環境とインスタンスを準備しました。インスタンスグループを特定のトレーニングとデータ処理タスクにさらに割り当てるために、次のステップでトレーニングスクリプトを変更します。デフォルトでは、トレーニングジョブはインスタンスのサイズに関係なくすべてのノードのトレーニングスクリプトのレプリカを作成するので、パフォーマンスが低下する可能性があります。
例えば、ディープニューラルネットワークトレーニングスクリプトを SageMaker 推定器のentry_point
引数に渡すときに、異種クラスター内のCPUインスタンスとGPUインスタンスを混在させると、entry_point
スクリプトは各インスタンスにレプリケートされます。つまり、適切なタスク割り当てがないと、CPUインスタンスはスクリプト全体を実行し、GPUインスタンスの分散トレーニング用に設計されたトレーニングジョブも開始します。したがって、CPUインスタンスでオフロードして実行する特定の処理関数を変更する必要があります。 SageMaker 環境変数を使用して異種クラスターの情報を取得し、特定のプロセスを適切に実行させることができます。
トレーニングジョブが開始されると、トレーニングスクリプトは異種クラスター設定を含む SageMaker トレーニング環境情報を読み取ります。この設定には、現在のインスタンスグループ、各グループの現在のホスト、現在のホストがどのグループに属しているかなどの情報が含まれます。
トレーニングジョブの SageMaker初期化フェーズ中にインスタンスグループ情報をクエリするには、次の方法があります。
(推奨) SageMaker トレーニングツールキットを使用してインスタンスグループ情報を読み取る
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))