AutoMLは、Platform for AI (PAI) によって提供される強化された機械学習サービスです。 複数のアルゴリズムと分散コンピューティングリソースを統合します。 AutoMLを使用する場合は、コードを記述する必要はありません。 モデルのハイパーパラメータを微調整し、機械学習の効率とパフォーマンスを向上させるための実験を作成できます。 このトピックでは、実験を作成する方法について説明します。
背景情報
AutoMLのしくみ:
実験は、設定されたアルゴリズムに基づいて複数のハイパーパラメータの組み合わせを生成します。 実験では、ハイパーパラメータの組み合わせごとに試行を作成します。 各トライアルは、1つのDLC (Deep Learning Containers) タスクまたは1つ以上のMaxComputeタスクに対応することができます。 タスクの種類は、実験の実行設定によって異なります。 システムは、設定されたタスクに基づいてトライアルを実行します。 実験は、複数の試行をスケジュールし、実行し、これらの試行の結果を比較して、最適なハイパーパラメータの組み合わせを見つける。 AutoMLの仕組みの詳細については、「AutoMLの仕組み」をご参照ください。
前提条件
AutoMLを使用するために必要な権限がアカウントに付与されます。 初めてAutoMLを使用する場合は、この前提条件を満たす必要があります。 詳細については、「AutoMLを使用するために必要な権限の付与」をご参照ください。
ワークスペースが作成済み。 詳細については、「ワークスペースの作成」をご参照ください。
DLCタスクを作成する前に、次の操作が実行されます。
DLCを使用するために必要な権限がアカウントに付与されます。 詳細については、「DLCを使用するために必要な権限の付与」をご参照ください。
リソースグループを作成します。 一般的なコンピューティングリソース用にパブリックリソースグループまたは専用リソースグループを準備する方法の詳細については、「専用リソースグループの作成と一般的なコンピューティングリソースの購入」をご参照ください。 Lingjunリソースグループを準備する方法の詳細については、「Lingjun resource quotas」をご参照ください。
MaxComputeリソースが準備され、作成されたワークスペースに関連付けられます。 MaxComputeタスクを作成する場合は、この前提条件を満たす必要があります。 詳細は、「MaxComputeリソースのクォータ」をご参照ください。
手順
AutoMLページに移動します。
PAIコンソールにログインします。
左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、管理するワークスペースの名前をクリックします。
左側のナビゲーションウィンドウで、
を選択します。
AutoMLページで、[実験の作成] をクリックします。
[実験の作成] ページで、パラメーターを設定します。
基本情報セクションのパラメータ
パラメーター
説明
名前
実験の名前。 このパラメーターは、プロンプトに従って指定できます。
説明
作成する実験の簡単な説明。 説明は、異なる実験を区別するために使用される。
可視性
実験の可視性。 有効な値:
Visible to Me: この実験は、現在のワークスペースのアカウントと管理者に表示されます。
現在のワークスペースに表示: ワークスペース内のすべてのユーザーに実験が表示されます。
[実行設定] セクションのパラメータ
ジョブタイプ: トライアルの実行環境。 [DLC] または [MaxCompute] を選択できます。
DLC: DLCタスクは、ハイパーパラメータの微調整のために実行される。 DLCタスクの詳細については、「トレーニングジョブの送信」をご参照ください。
MaxCompute: Machine Learning DesignerコンポーネントのSQLコマンドまたはPAIコマンドは、MaxComputeコンピューティングリソースを使用してハイパーパラメータの微調整を実行することによって実行されます。 Machine Learning Designerコンポーネントと各コンポーネントでサポートされているPAIコマンドの詳細については、「コンポーネントリファレンス: すべてのコンポーネントの概要」をご参照ください。
DLC
ジョブタイプにDLCを選択した場合、次のパラメーターを設定します。
パラメーター
説明
フレームワーク
サポートされているフレームワーク。 有効な値:
Tensorflow
PyTorch
データセット
準備したデータセット。 データセットの設定方法の詳細については、「データセットの作成と管理」をご参照ください。
コード
タスクのコードファイルが格納されるリポジトリ。 この例では、準備したコードファイルのリポジトリを指定する必要があります。 設定方法の詳細については、「コードビルド」をご参照ください。
説明DLCは、指定された作業ディレクトリにコードをダウンロードします。 したがって、コードリポジトリにアクセスするための権限が必要です。
リソースグループ
購入したパブリックリソースグループまたは専用リソースグループ。 リソースグループの準備方法の詳細については、「専用リソースグループの作成と一般的なコンピューティングリソースの購入」および「Lingjun resource quotas」をご参照ください。
[インスタンスタイプ]
タスクの実行に必要なインスタンスタイプ。 インスタンスの価格は、インスタンスのタイプによって異なります。 各インスタンスタイプの課金の詳細については、「DLCの課金」をご参照ください。
ノードイメージ
ワーカーノードによって使用されるイメージ。 有効な値:
コミュニティイメージ: コミュニティによって提供される標準イメージ。 さまざまなコミュニティイメージの詳細については、「パブリックイメージ」の「コミュニティイメージ (オープンソースの標準イメージ) 」セクションを参照してください。
PAIイメージ: Alibaba Cloud PAIが提供するイメージ。 PAIイメージは、さまざまな種類のリソース、Pythonバージョン、および深層学習フレームワーク (TensorFlowおよびPyTorch) をサポートしています。 PAIイメージの詳細については、「パブリックイメージ」をご参照ください。
カスタムイメージ: PAIに追加するカスタムイメージ。 カスタムイメージを選択する前に、カスタムイメージをPAIに追加する必要があります。 詳細については、「カスタムイメージ」をご参照ください。
画像アドレス: カスタム、コミュニティ、またはPAI画像のアドレス。 イメージアドレスを選択した場合は、インターネット経由でアクセスするDockerレジストリイメージのURLも指定する必要があります。
ノード数
DLCタスクで使用される計算ノードの数。
重要複数のノードを設定する場合、各ノードは同じインスタンスタイプに基づいて課金されるのではなく、個別に課金されます。 このパラメーターを指定するときは、各ノードのコストを決定し、コストとパフォーマンスの妥協点を考慮する必要があります。
vCPU
[リソースグループ] ドロップダウンリストから購入した専用リソースグループを選択した場合、購入したリソースの仕様に基づいてこれらのパラメーターを指定できます。
メモリ (GiB)
共有メモリ (GiB)
GPU
詳細設定
高度な設定により、トレーニングの柔軟性を高めたり、特定のトレーニングシナリオに適応したりできます。 [フレームワーク] ドロップダウンリストからPyTorchを選択すると、詳細設定を構成できます。 サポートされている高度なパラメーターとその有効な値の詳細については、「トレーニングジョブの送信」の「付録1: 高度なパラメーター」セクションを参照してください。
Node Startupコマンド
ノードを開始するために実行されるコマンド。 ハイパーパラメーター変数を設定するには、コマンドで
${Custom hyperparameter variables}
を指定する必要があります。 例:python /mnt/data/examples/search/dlc_mnist/mnist.py
-- data_dir=/mnt/data/examples/search/data -- save_model=/mnt/data /search/model=${exp_id} {trial_id /filemer} -- batch_search}
上記のコマンドでは、
${batch_size}
と${lr}
は、定義するハイパーパラメーター変数です。ハイパーパラメータ
ハイパーパラメータリストは、起動コマンドで設定されたハイパーパラメータ変数に基づいて自動的にロードされます。 ハイパーパラメータごとに制約タイプと検索スペースを指定する必要があります。
制約タイプ: ハイパーパラメータに課される制約。 制約タイプの横にあるアイコンの上にポインターを移動して、サポートされている制約タイプと関連する説明を表示できます。
Search Space: ハイパーパラメータの値の範囲。 探索空間の設定方法は、ハイパーパラメータの制約タイプに基づいて異なる。 アイコンをクリックし、プロンプトに従って値を追加できます。
MaxCompute
ジョブタイプに [MaxCompute] を選択した場合、次のパラメーターを設定します。
パラメーター
説明
コマンド
特定のMachine Learning DesignerコンポーネントのSQLコマンドまたはPAIコマンド。 ハイパーパラメーター変数を設定するには、コマンドで
${Custom hyperparameter variables}
を指定する必要があります。 例:pai -name kmeans -project algo_public -DinputTableName=pai_kmeans_test_input -DselectedColNames=f0,f1 -DappendColNames=f0,f1 -DcenterCount=${centerCount} -Dloop=10 -Daccuracy=0.01 -DdistanceType=${distanceType} -DinitCenterMethod=random -Dseed=1 -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id} -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id} -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id} -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};
上記のコマンドでは、
${centerCount}
と${distanceType}
は、定義するハイパーパラメーター変数です。その他の構成例については、このトピックの「付録: 参照」をご参照ください。
ハイパーパラメータ
ハイパーパラメータリストは、コマンドで設定されたハイパーパラメータ変数に基づいて自動的にロードされます。 ハイパーパラメータごとに制約タイプと検索スペースを指定する必要があります。
制約タイプ: ハイパーパラメータに課される制約。 制約タイプの横にあるアイコンの上にポインターを移動して、サポートされている制約タイプと関連する説明を表示できます。
Search Space: ハイパーパラメータの値の範囲。 探索空間の設定方法は、ハイパーパラメータの制約タイプに基づいて異なる。 アイコンをクリックし、プロンプトに従って値を追加できます。
トライアル设定セクションのパラメータ
特定のハイパーパラメーターの組み合わせを使用してタスクを実行する必要がある場合は、次のパラメーターを設定します。
パラメーター
説明
メトリックタイプ
トライアルの評価に使用されるメトリックのタイプ。 有効な値:
summary: 最終的なメトリック値は、Object Storage Service (OSS) から取得したTensorflowサマリーファイルから抽出されます。
table: 最終的なメトリック値は、MaxComputeテーブルから抽出されます。
stdout: 実行中のプロセスでstdoutから最終的なメトリック値が抽出されます。
json: 最終的なメトリック値はJSONファイルとしてOSSに保存されます。
移動方法
複数の中間メトリック値がタスク実行プロセス中に徐々に生成された後に最終メトリック値を決定するために使用される計算方法。 有効な値:
final: 最後のメトリック値は、トライアル全体の最終メトリック値として使用されます。
best: タスク実行プロセス中に取得された最適なメトリック値は、トライアル全体の最終メトリック値として使用されます。
avg: タスク実行プロセス中に取得されたすべての中間メトリック値の平均値が、試行全体の最終メトリック値として使用されます。
メトリック重量
複数のメトリックを同時に考慮する必要がある場合は、メトリックの名前と重みを設定できます。 次いで、システムは、重み付けされた合計値を最終メトリック値として使用する。
key: メトリックの名前。 正規表現に対応しています。
value: メトリックの重み。
説明重みは負の値とすることができ、重みの和は1以外の値とすることができる。 カスタム値を設定できます。
メトリックソース
メトリックソース。
[Metric Type] ドロップダウンリストから [summary] または [json] を選択した場合、ファイルパスを設定する必要があります。 例:
oss:// examplebucket/examples/search/pai/model/model _${ exp_id }_${ trial_id}
[メトリックの種類] ドロップダウンリストからテーブルを選択した場合、特定の結果を返すことができるSQL文を構成する必要があります。 例:
pai_ft_cluster_evaluation_out _${ exp_id }_${ trial_id} からvrcとしてGET_JSON_OBJECT(summary, '$.calinhara') を選択します
。[メトリックタイプ] ドロップダウンリストから [stdout] を選択した場合、コマンドキーワードを設定する必要があります。 このパラメーターは、
cmdx
またはcmdx;xxx (cmd1;workerなど)
に設定する必要があります。
最適化
試行結果を評価するために使用される最適化ゴール。 有効な値:
最大化
最小化
モデルストレージパス
モデルが保存されるパス。 ハイパーパラメータのさまざまな組み合わせを使用して生成されるモデルを区別するには、パスに
${exp_id }_${ trial_id}
を含める必要があります。 例:oss:// examplebucket/examples/search/pai/model/model _${ exp_id }_${ trial_id}
[Search Configurations] セクションのパラメータ
パラメーター
説明
検索アルゴリズム
自動機械学習アルゴリズム。 アルゴリズムに基づいて、システムは、ハイパーパラメータ探索空間と、完了した試行の実行結果およびメトリックとに基づいて、次の試行を実行するための最適なハイパーパラメータの組み合わせを見つける。 有効な値:
TPE
ランダム
GridSearch
進化
GP
PBT
検索アルゴリズムの詳細については、「AutoMLの制限と使用法の注意事項」の「サポートされている検索アルゴリズム」をご参照ください。
最大トライアル
実験で実行できるトライアルの最大数。
最大同時試行
実験で同時に実行できる試行の最大数。
[送信] をクリックします。
作成した実験を実験リストで表示できます。
次に何をすべきか
いつでも実験の詳細を表示して、実験の進行状況を取得できます。 各トライアルの実行結果を表示して、最適なハイパーパラメータの組み合わせを取得できます。 詳細については、「実験の詳細の表示」をご参照ください。
実験を管理できます。 詳細については、「実験の管理」をご参照ください。
付録: 参照
次の設定例は、MaxComputeタスクを使用してハイパーパラメータの微調整を実行する場合の参照用に提供されています。
Machine Learning Designerコンポーネント: K-means ClusteringおよびClustering Model Evaluation。
次のコードは、2つのコンポーネントで使用されるcmd1コマンドとcmd2コマンドの設定を示しています。 2つのコマンドは、実行シーケンスに基づいてリストされます。 詳細な手順については、「K-means Clusteringコンポーネントの実行のベストプラクティス」をご参照ください。
cmd1
pai -name kmeans -project algo_public -DinputTableName=pai_kmeans_test_input -DselectedColNames=f0,f1 -DappendColNames=f0,f1 -DcenterCount=${centerCount} -Dloop=10 -Daccuracy=0.01 -DdistanceType=${distanceType} -DinitCenterMethod=random -Dseed=1 -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id} -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id} -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id} -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};
cmd2
PAI -name cluster_evaluation -project algo_public -DinputTableName=pai_cluster_evaluation_test_input -DselectedColNames=f0,f1 -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id} -DoutputTableName=pai_ft_cluster_evaluation_out_${exp_id}_${trial_id};