このトピックでは、Deep Learning Containers (DLC) コンピューティングリソースでAutoML実験を送信して、ハイパーパラメータの微調整を実行する方法について説明します。 このソリューションはPyTorchフレームワークを使用します。 torchvision.datasets.MNISTモジュールを使用して、手書き数字のMNISTデータセットを自動的にダウンロードして読み込み、データセットを使用してモデルをトレーニングします。 これにより、最適なハイパーパラメータの組み合わせを取得できます。 スタンドアロン、分散、またはネストされたパラメーターモードを使用して、トレーニング要件に基づいてモデルをトレーニングできます。
前提条件
AutoMLを使用するために必要なアクセス許可がアカウントに付与されます。 初めてAutoMLを使用する場合は、この前提条件を満たす必要があります。 詳細については、「AutoMLを使用するために必要な権限の付与」をご参照ください。
DLCを使用するために必要な権限がアカウントに付与されます。 詳細については、「DLCを使用するために必要な権限の付与」をご参照ください。
ワークスペースが作成され、一般的なコンピューティングリソースのパブリックリソースグループに関連付けられます。 詳細については、「ワークスペースの作成」をご参照ください。
Object Storage Service (OSS) が有効化され、OSSバケットが作成されます。 詳細については、「OSSコンソールを使用して開始する」をご参照ください。
手順1: データセットの作成
作成したOSSバケットにスクリプトファイルmnist.pyをアップロードします。 詳細については、「OSSコンソールを使用して開始する」をご参照ください。
ハイパーパラメータの微調整実験で生成されたデータファイルを保存するためのOSSデータセットを作成します。 詳細については、「データセットの作成と管理」の「Alibaba Cloudストレージサービスに保存されているデータに基づいてデータセットを作成する」セクションをご参照ください。
実際の状況に基づいて次の主要なパラメーターを設定し、他のパラメーターのデフォルト値を保持します。
名前: データセットの名前を入力します。
Select data store: スクリプトファイルが保存されているOSSパスを選択します。
プロパティ: フォルダーを選択します。
ステップ2: 実験の作成
[実験の作成] ページに移動し、次の手順を実行してキーパラメーターを設定します。 他のパラメーターの設定の詳細については、「実験の作成」をご参照ください。 パラメーターを設定したら、[送信] をクリックします。
[実行設定] セクションでパラメーターを設定します。
このソリューションは、スタンドアロン、分散、およびネストされたパラメータトレーニングモードを提供します。 1つのモードを選択してモデルをトレーニングできます。
スタンドアロントレーニングモードで使用されるパラメーター設定
パラメーター
説明
ジョブタイプ
[DLC] を選択します。
リソースグループ
[パブリックリソースグループ] を選択します。
フレームワーク
[PyTorch] を選択します。
データセット
手順2で作成したデータセットを選択します。
ノードイメージ
[PAIイメージ] を選択します。 次に、ドロップダウンリストからpytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。
[インスタンスタイプ]
[CPU] を選択します。 次に、ドロップダウンリストから16vCPU + 64GB Mem ecs.g6.4xlargeを選択します。
ノード数
このパラメーターを1に設定します。
Node Startupコマンド
python3 /mnt/data/mnist.py -- save_model=/mnt/data/examples/search/model/model _${ exp_id }_${ trial_id} -- batch_size =${ batch_size} -- lr $={ lr}
と入力します。ハイパーパラメータ
batch_size
制約タイプ: 選択を選択します。
検索スペース: をクリックして、16、32、64の3つの列挙値を追加します。
lr
制約タイプ: 選択を選択します。
検索スペース: をクリックして、0.0001、0.001、0.01の3つの列挙値を追加します。
実験は、前述の構成に基づいて9つのハイパーパラメータの組み合わせを生成し、ハイパーパラメータの組み合わせのそれぞれについて試行を作成することができる。 各試行では、ハイパーパラメータの組み合わせを使用してスクリプトを実行します。
分散トレーニングモードで使用するパラメーター設定
パラメーター
説明
ジョブタイプ
[DLC] を選択します。
リソースグループ
[パブリックリソースグループ] を選択します。
フレームワーク
[PyTorch] を選択します。
データセット
手順2で作成したデータセットを選択します。
ノードイメージ
[PAIイメージ] を選択します。 次に、ドロップダウンリストからpytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。
[インスタンスタイプ]
[CPU] を選択します。 次に、ドロップダウンリストから16vCPU + 64GB Mem ecs.g6.4xlargeを選択します。
ノード数
このパラメーターを3に設定します。
Node Startupコマンド
入力
$python -m torch.distributed.launch-master_addr=$MASTER_ADDR-master_port=$MASTER_PORT-nproc_per_node=1-nnodes=$WORLD_SIZE-node_rank=$RANK /mnt/data/mnist.py-data_dir=/examples /data /size} {exam_model /data model {exs} -- lr =${ lr}
.ハイパーパラメータ
batch_size
制約タイプ: 選択を選択します。
検索スペース: クリックして、16、32、64の3つの列挙値を追加します。
lr
制約タイプ: 選択を選択します。
検索スペース: をクリックして、0.0001、0.001、0.01の3つの列挙値を追加します。
実験は、前述の構成に基づいて9つのハイパーパラメータの組み合わせを生成し、ハイパーパラメータの組み合わせのそれぞれについて試行を作成することができる。 各試行では、ハイパーパラメータの組み合わせを使用してスクリプトを実行します。
ネストされたパラメータートレーニングモードで使用されるパラメーター設定
パラメーター
説明
ジョブタイプ
[DLC] を選択します。
リソースグループ
[パブリックリソースグループ] を選択します。
フレームワーク
[PyTorch] を選択します。
データセット
手順2で作成したデータセットを選択します。
ノードイメージ
[PAIイメージ] を選択します。 次に、ドロップダウンリストからpytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。
[インスタンスタイプ]
[CPU] を選択します。 次に、ドロップダウンリストから16vCPU + 64GB Mem ecs.g6.4xlargeを選択します。
ノード数
このパラメーターを1に設定します。
Node Startupコマンド
python3 /mnt/data/mnist.py -- save_model=/mnt/data/examples/search/pai/model/model _${ exp_id }_${ trial_id} -- batch_size =${ nested_params}.{batch_size} -- lr =${ nested_params} -- gamma。
ハイパーパラメータ
nested_params
制約タイプ: 選択を選択します。
検索スペース: クリック2つの列挙値を追加するには:
{"_name":"large","{lr}":{"_type":"choice","_value":[0.02,0.2]},"{batch_size}":{"_type":"choice","_value":[256,128]}}
と{"_name":"small","{lr}":{"_type":"choice","_value":[0.01,0.1]},"{batch_size}":{"_type":"choice","_value":[64,32]}}
.
ガンマ
制約タイプ: 選択を選択します。
検索スペース: をクリックして、0.8、0.7、0.9の3つの列挙値を追加します。
実験は、前述の構成に基づいて9つのハイパーパラメータの組み合わせを生成し、ハイパーパラメータの組み合わせのそれぞれについて試行を作成することができる。 各試行では、ハイパーパラメータの組み合わせを使用してスクリプトを実行します。
トライアル設定セクションでパラメーターを設定します。
パラメーター
説明
メトリック最適化
メトリックタイプ
[stdout] を選択します。 この設定は、実行中のプロセスで最終的なメトリック値がstdoutから抽出されることを示します。
移動方法
ベストを選択します。
メトリック重量
次の設定を使用します。
key: validation: accuracy=([0-9\\.]+)
値: 1
メトリックソース
コマンドキーワードとしてcmd1を設定します。
最適化
[最大化] を選択します。
モデルストレージパス
モデルが保存されているOSSパスを入力します。 この例では、パスは
oss:// examplebucket/examples/model/model _${ exp_id }_${ trial_id}
です。[検索設定] セクションでパラメーターを設定します。
パラメーター
説明
検索アルゴリズム
TPEを選択します。 検索アルゴリズムの詳細については、「AutoMLの制限と使用法の注意事項」の「サポートされている検索アルゴリズム」をご参照ください。
最大トライアル
このパラメーターを3に設定します。 この値は、実験において3回までの試行が可能であることを示す。
最大同時試行
このパラメーターを2に設定します。 この値は、実験において2回までの試行を並行して行うことができることを示す。
EarlyStopの有効化
早期停止機能を有効にするかどうかを指定します。 この特徴は、関連するハイパーパラメータの組み合わせが明らかに性能が低い場合、システムが試験の評価プロセスを早期に停止することを可能にする。
スタートステップ
このパラメーターを5に設定します。 この値は、トライアルに関する5つの評価が完了した後に、システムがトライアルを早期に停止するかどうかを決定できることを示します。
ステップ3: 実験の詳細と実行結果を表示する
実験リストで、目的の実験の名前をクリックして、[実験の詳細] ページに移動します。
[実験の詳細] ページで、トライアルの実行の進行状況とステータスの統計を表示できます。 実験では、検索アルゴリズムと最大試行パラメータの設定に基づいて3つの試行が自動的に作成されます。
[試行] タブをクリックして、実験によって生成されたすべての試行、および各試行の実行ステータス、最終メトリック値、ハイパーパラメータの組み合わせを表示します。
この例では、OptimizationはMaximizeに設定されています。 上の図では、最終的なメトリック値96.52に対応するハイパーパラメータの組み合わせ (batch_size: 16およびlr: 0.01) が最適なハイパーパラメータの組み合わせです。
関連ドキュメント
MaxComputeコンピューティングリソースでハイパーパラメータの微調整実験を送信することもできます。 詳細については、「K-means Clusteringコンポーネントの実行のベストプラクティス」をご参照ください。
AutoMLの仕組みの詳細については、「AutoML」をご参照ください。