このトピックでは、DLC コンピューティングリソースでハイパーパラメータチューニングを行うための AutoML 実験を送信する方法について説明します。このソリューションは、PyTorch フレームワークとtorchvision.datasets.MNISTモジュールを使用して MNIST データセットを自動的にダウンロードしてロードし、モデルをトレーニングして最適なハイパーパラメータ設定を見つけます。スタンドアロン トレーニング、分散トレーニング、ネストされたパラメーターのトレーニングの 3 つのトレーニングモードから選択できます。
前提条件
-
初めて AutoML を使用する場合は、必要な権限を付与してください。詳細については、「クラウド製品への依存と権限付与:AutoML」をご参照ください。
-
DLC に必要な権限が付与されていること。詳細については、「クラウド製品への依存と権限付与:DLC」をご参照ください。
-
ワークスペースを作成し、パブリックリソースグループに関連付けていること。詳細については、「ワークスペースの作成と管理」をご参照ください。
-
Object Storage Service (OSS) を有効化し、OSS バケットを作成していること。詳細については、「クイックスタート」をご参照ください。
ステップ1:データセットの作成
-
スクリプトファイル mnist.py をお使いの OSS バケットにアップロードします。詳細については、「クイックスタート」をご参照ください。
-
実験のデータファイルを格納するための OSS データセットを作成します。詳細については、「データセットの作成と管理」をご参照ください。
次の主要なパラメーターを設定し、その他のパラメーターはデフォルト設定のままにします。
-
データセット名:カスタムデータセット名を入力します。
-
データストレージの選択:スクリプトファイルが格納されている OSS ディレクトリを選択します。
-
プロパティ:プロパティ を選択します。
-
ステップ2:実験の作成
実験の作成 ページに移動し、次の手順で説明されている主要なパラメーターを設定します。その他のパラメーターの詳細については、「実験の作成」をご参照ください。設定が完了したら、コミット をクリックします。
-
実行設定を構成します。
このソリューションは、スタンドアロン トレーニング、分散トレーニング、ネストされたパラメーターのトレーニングの 3 つのトレーニングモードを提供します。
スタンドアロン トレーニング
パラメーター
説明
タスクタイプ
DLC を選択します。
リソースグループ
パブリックリソースグループ を選択します。
フレーム
[PyTorch] を選択します。
データセット
ステップ 1 で作成したデータセットを選択します。
ノードイメージ
PAI プラットフォームイメージ >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。リソース仕様
CPU >
ecs.g6.4xlargeを選択します。ノード数
1 に設定します。
開始コマンド
python3 /mnt/data/mnist.py --save_model=/mnt/data/examples/search/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr}に設定します。[Hyperparameters]
-
batch_size
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、3 つの列挙値 (16、32、64) を追加します。
-
-
lr
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、3 つの列挙値 (0.0001、0.001、0.01) を追加します。
-
この設定により、9 つのハイパーパラメータの組み合わせが生成されます。実験は、組み合わせごとにトライアルを作成します。
分散トレーニング
パラメーター
説明
タスクタイプ
DLC を選択します。
リソースグループ
パブリックリソースグループ を選択します。
フレーム
[PyTorch] を選択します。
データセット
ステップ 1 で作成したデータセットを選択します。
ノードイメージ
PAI プラットフォームイメージ >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。リソース仕様
CPU >
ecs.g6.4xlargeを選択します。ノード数
3 に設定します。
開始コマンド
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=/mnt/data/examples/search/data --save_model=/mnt/data/examples/search/pai/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr}に設定します。[Hyperparameters]
-
batch_size
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、3 つの列挙値 (16、32、64) を追加します。
-
-
lr
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、3 つの列挙値 (0.0001、0.001、0.01) を追加します。
-
この設定により、9 つのハイパーパラメータの組み合わせが生成されます。実験は、組み合わせごとにトライアルを作成します。
ネストされたパラメーターのトレーニング
パラメーター
説明
タスクタイプ
DLC を選択します。
リソースグループ
パブリックリソースグループ を選択します。
フレーム
[PyTorch] を選択します。
データセット
ステップ 1 で作成したデータセットを選択します。
ノードイメージ
PAI プラットフォームイメージ >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。リソース仕様
CPU >
ecs.g6.4xlargeを選択します。ノード数
1 に設定します。
開始コマンド
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}.{lr} --gamma=${gamma}に設定します。[Hyperparameters]
-
nested_params
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、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]}}を追加します。
-
-
gamma
-
制約タイプ:choice を選択します。
-
探索空間:
をクリックして、3 つの列挙値 (0.8、0.7、0.9) を追加します。
-
この設定により、24 のハイパーパラメータの組み合わせが生成されます。実験は、組み合わせごとにトライアルを作成します。
-
-
トライアル設定を構成します。
パラメーター
説明
[Metric]
[Metric type]
stdout を選択します。この設定は、実行中に標準出力 (stdout) から最終的なメトリクスを抽出します。
[Method]
best を選択します。
[Metric weight]
次の項目を設定します。
-
key:validation: accuracy=([0-9\\.]+)
-
Value:1
[Metric source]
コマンドキーワードを cmd1 に設定します。
[Optimization direction]
[Maximize] を選択します。
[Model storage path]
モデルを保存する OSS パスに設定します。このソリューションでは、
oss://examplebucket/examples/search/pai/model/model_${exp_id}_${trial_id}と設定します。 -
-
探索設定を構成します。
パラメーター
説明
[Search algorithm]
TPE を選択します。アルゴリズムの詳細については、「サポートされている探索アルゴリズム」をご参照ください。
[Maximum trials]
3 に設定します。
[Maximum concurrent trials]
2 に設定します。
[Enable early stopping]
このスイッチをオンにすると、パフォーマンスの低いトライアルを早期に停止できます。
[Start step]
5 に設定します。トライアルは、少なくとも 5 回の評価を完了した後にのみ早期停止できます。
ステップ3:実験の詳細と結果の表示
-
実験リストで、実験名をクリックして [Experiment Details] ページを開きます。
[Experiment Details] ページには 4 つの主要なエリアがあります。[Basic configuration] エリアには、実験 ID、名前、可視性、ステータス、作成者、作成時刻、更新時刻が表示されます。[Trial status statistics] エリアには、完了、失敗、実行中、またはその他の状態のトライアル数を示すドーナツグラフが表示されます。[Trial configuration] エリアには、メトリクスタイプ、計算方法、メトリクス加重の正規表現、メトリクスソース、モデルストレージパスが含まれます。最後に、[Search configuration] エリアには、探索アルゴリズム、最大トライアル数、最大同時トライアル数、最適化の方向、早期停止の設定が含まれます。
このページでは、すべてのトライアルの進行状況とステータスを監視できます。実験は、探索アルゴリズムと最大トライアル数の設定に基づいて 3 つのトライアルを作成します。
-
[Trials] タブをクリックします。実験で生成されたすべてのトライアルのリストを表示でき、各トライアルのステータス、最終メトリクス、ハイパーパラメータの組み合わせが含まれます。
関連ドキュメント
-
MaxCompute コンピューティングリソースでハイパーパラメータチューニング実験を送信することもできます。詳細については、「MaxCompute k-means クラスタリングのベストプラクティス」をご参照ください。
-
AutoML の使用方法とその仕組みの詳細については、「AutoML」をご参照ください。