このトピックでは、DLC コンピューティングリソースでハイパーパラメータチューニングを行うための AutoML 実験を送信する方法を説明します。このソリューションは、PyTorch フレームワークと torchvision.datasets.MNIST モジュールを使用して、MNIST データセットを自動的にダウンロードして読み込み、最適なハイパーパラメータ設定を見つけるためにモデルをトレーニングします。トレーニングモードは、スタンドアロントレーニング、分散トレーニング、ネストされたパラメータトレーニングの 3 つから選択できます。
前提条件
-
初めて AutoML を使用する場合は、必要な権限を付与してください。詳細については、「クラウド製品の依存関係と認可:AutoML」をご参照ください。
-
DLC に必要な権限が付与されていること。詳細については、「クラウド製品の依存関係と認可:DLC」をご参照ください。
-
ワークスペースを作成し、パブリックリソースグループに関連付けていること。詳細については、「ワークスペースの作成と管理」をご参照ください。
-
Object Storage Service (OSS) を有効化し、OSS バケットを作成済みであること。詳細については、「クイックスタート」をご参照ください。
ステップ 1:データセットの作成
-
スクリプトファイル mnist.py を OSS バケットにアップロードしてください。詳細については、「クイックスタート」をご参照ください。
-
実験のデータファイルを格納するための OSS データセットを作成してください。詳細については、「データセットの作成と管理」をご参照ください。
以下の主要なパラメータを設定し、他のパラメータはデフォルト設定のままにしてください:
-
[Dataset Name]: カスタムのデータセット名を入力します。
-
[Select Data Storage]: スクリプトファイルが格納されている OSS ディレクトリを選択します。
-
[Property]: [Property] を選択します。
-
ステップ 2:実験の作成
新しい実験 ページに移動し、次の手順に従ってキーパラメーターを設定します。その他のパラメーターの詳細については、「実験の作成」をご参照ください。設定が完了したら、Submit をクリックします。
-
実行設定を構成します。
このソリューションでは、スタンドアロントレーニング、分散トレーニング、ネストされたパラメータトレーニングの 3 つのトレーニングモードを提供します。
スタンドアロントレーニング
パラメータ
説明
[Job Type]
[DLC] を選択します。
[Resource Group]
[Public Resource Group] を選択します。
[Framework]
PyTorch を選択します。
[Datasets]
ステップ 1 で作成したデータセットを選択します。
[Node Image]
[PAI Image] >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。[Instance Type]
[CPU] >
ecs.g6.4xlargeを選択します。[Nodes]
1 に設定します。
[Startup Command]
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-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、16、32、64 の 3 つの列挙値を追加します。
-
-
lr-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、0.0001、0.001、0.01 の 3 つの列挙値を追加します。
-
この設定により、9 つのハイパーパラメータの組み合わせが生成されます。実験では、各組み合わせに対してトライアルが作成されます。
分散トレーニング
パラメータ
説明
[Job Type]
[DLC] を選択します。
[Resource Group]
[Public Resource Group] を選択します。
[Framework]
PyTorch を選択します。
[Datasets]
ステップ 1 で作成したデータセットを選択します。
[Node Image]
[PAI Image] >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。[Instance Type]
[CPU] >
ecs.g6.4xlargeを選択します。[Nodes]
3 に設定します。
[Startup Command]
コマンドを
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}と設定します。ハイパーパラメータ
-
batch_size-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、16、32、64 の 3 つの列挙値を追加します。
-
-
lr-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、0.0001、0.001、0.01 の 3 つの列挙値を追加します。
-
この設定により、9 つのハイパーパラメータの組み合わせが生成されます。実験では、各組み合わせに対してトライアルが作成されます。
ネストされたパラメータトレーニング
パラメータ
説明
[Job Type]
[DLC] を選択します。
[Resource Group]
[Public Resource Group] を選択します。
[Framework]
PyTorch を選択します。
[Datasets]
ステップ 1 で作成したデータセットを選択します。
[Node Image]
[PAI Image] >
pytorch-training:1.12PAI-gpu-py38-cu113-ubuntu20.04を選択します。[Instance Type]
[CPU] >
ecs.g6.4xlargeを選択します。[Nodes]
1 に設定します。
[Startup Command]
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}と設定します。ハイパーパラメータ
-
nested_params-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、{"_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]}}の 2 つの列挙値を追加します。
-
-
gamma-
制約タイプ: [choice] を選択します。
-
検索スペース:
をクリックして、0.8、0.7、0.9 の 3 つの列挙値を追加します。
-
この設定により、24 のハイパーパラメータの組み合わせが生成されます。実験では、各組み合わせに対してトライアルが作成されます。
-
-
トライアル設定を構成します。
パラメータ
説明
メトリクス
メトリクスタイプ
[stdout] を選択します。この設定により、実行中の標準出力 (stdout) から最終メトリクスが抽出されます。
方法
[best] を選択します。
メトリクスの重み
以下の項目を設定します:
-
キー: validation: accuracy=([0-9\\.]+)
-
値: 1
メトリクスソース
コマンドキーワードを「cmd1」に設定します。
最適化方向
[Maximize] を選択します。
モデルストレージパス
モデルを保存するための OSS パスを設定します。このソリューションでは、パスを
oss://examplebucket/examples/search/pai/model/のように設定します。 -
-
検索設定を構成します。
パラメータ
説明
検索アルゴリズム
[TPE] を選択します。アルゴリズムの詳細については、「サポートされている検索アルゴリズム」をご参照ください。
最大トライアル数
3 に設定します。
最大同時トライアル数
2 に設定します。
早期停止の有効化
このスイッチをオンにすると、パフォーマンスが低いトライアルを早期に停止できます。
開始ステップ
5 に設定します。トライアルは、少なくとも 5 回の評価を完了した後にのみ早期停止できます。
ステップ 3:実験詳細と結果の表示
-
実験リストで実験名をクリックして、[実験詳細] ページを開きます。
[実験詳細] ページには 4 つの主要エリアがあります。[基本設定] エリアには、実験 ID、名前、可視性、ステータス、作成者、作成時刻、更新時刻が表示されます。[トライアルステータス統計] エリアには、完了、失敗、実行中、またはその他の状態にあるトライアルの数を示すドーナツチャートが表示されます。[トライアル設定] エリアには、メトリクスタイプ、計算方法、メトリクスの重みの正規表現、メトリクスソース、モデルストレージパスが含まれます。最後に、[検索設定] エリアには、検索アルゴリズム、最大トライアル数、最大同時トライアル数、最適化方向、早期停止の設定が含まれます。
このページでは、すべてのトライアルの進捗とステータスを監視できます。実験は、検索アルゴリズムと最大トライアル数の設定に基づいて 3 つのトライアルを作成します。
-
[Trials] タブをクリックしてください。実験用に生成されたすべてのトライアルのリストを表示でき、各トライアルのステータス、最終メトリクス、ハイパーパラメータの組み合わせが含まれます。
関連ドキュメント
-
MaxCompute コンピューティングリソース上でハイパーパラメータチューニング実験を送信することもできます。詳細については、「MaxCompute k-means のベストプラクティス」をご参照ください。
-
AutoML の使用方法とその仕組みの詳細については、「AutoML」をご参照ください。