Azure Machine Learning CLI と Python SDK を使用して表形式データの AutoML トレーニングを設定する
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
このガイドでは、Azure Machine Learning Python SDK v2 を使用して、自動機械学習 AutoML のトレーニング ジョブを設定する方法を説明します。 自動 ML では、ユーザーに代わってアルゴリズムとハイパーパラメーターを選択し、デプロイ可能なモデルを生成します。 このガイドでは、自動 ML 実験の構成に使用できるさまざまなオプションについて詳しく説明しています。
ノーコードで行いたい場合は、Azure Machine Learning スタジオでノーコードの Auto ML トレーニングを設定することもできます。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning をお試しください。
- Azure Machine Learning ワークスペース。 お持ちでない場合は、記事「作業を開始するために必要なリソースを作成する」の手順を使用できます。
SDK 情報を使用するには、Azure Machine Learning SDK v2 for Pythonをインストールします。
SDK をインストールするには、次のいずれかを行います。
- コンピューティング インスタンスを作成し、最新の Azure Machine Learning Python SDK をあらかじめインストールし、ML ワークフロー用に事前構成します。 詳細については、「Azure Machine Learning コンピューティング インスタンスの作成」をご覧ください。
- SDK をローカル マシンにインストールします。
ワークスペースのセットアップ
ワークスペースに接続するには、サブスクリプション、リソース グループ、ワークスペース名を指定する必要があります。
ワークスペースの詳細は、必要な Azure Machine Learning ワークスペースへのハンドルを取得するために、azure.ai.ml
から MLClient
で使用されます。
次の例では、既定の Azure 認証が、既定のワークスペース構成と共に使用されるか、フォルダー構造にコピーした config.json
ファイルから使用されます。 config.json
が見つからない場合は、MLClient
を作成する際に subscription_id、resource_group および ワークスペース を手動で指定する必要があります。
from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient
credential = DefaultAzureCredential()
ml_client = None
try:
ml_client = MLClient.from_config(credential)
except Exception as ex:
print(ex)
# Enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
ml_client = MLClient(credential, subscription_id, resource_group, workspace)
データ ソースと形式
トレーニング データを SDK v2 の AutoML に提供するには、MLTable を介してクラウドにアップロードする必要があります。
MLTable にデータを読み込むための要件:
- データは表形式である必要があります。
- 予測する値、ターゲット列は、データ内にある必要があります。
トレーニング データにリモート コンピューティングからアクセスできる必要があります。 自動 ML v2 (Python SDK および CLI/YAML) は MLTable データ資産 (v2) を受け入れますが、下位互換性のために、同じ入力データセット プロパティを使用して v1 (登録済み表形式データセット) の v1 表形式データセットもサポートします。 ただし、v2 で使用可能な MLTable の使用をお勧めします。 この例では、データがローカル パス ./train_data/bank_marketing_train_data.csv
に格納されていることを前提にしています。
次の例に示すように、mltable Python SDK を使用して MLTable を作成できます。
import mltable
paths = [
{'file': './train_data/bank_marketing_train_data.csv'}
]
train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')
このコードでは、ファイル形式と読み込み手順が含まれる新しいファイル ./train_data/MLTable
を作成します。
これで、./train_data
フォルダーに MLTable 定義ファイルとデータ ファイル bank_marketing_train_data.csv
が用意されました。
MLTable の詳細については、MLTable の攻略ガイドに関する記事を参照してください。
トレーニング、検証、テストのデータ
個別のトレーニング データと検証データ セットを指定できますが、トレーニング データは、自動 ML ジョブのファクトリ関数の training_data
パラメーターに指定する必要があります。
validation_data
または n_cross_validation
パラメーターを、明示的に指定しない場合、自動 ML では、デフォルトの手法を適用して検証の実行方法を決定します。 この決定は、training_data
パラメーターに割り当てられたデータセット内の行の数によって異なります。
トレーニング データのサイズ | 検証の方法 |
---|---|
20,000 行を超える | トレーニング/検証データの分割が適用されます。 既定では、初期トレーニング データ セットの 10% が検証セットとして取得されます。 次に、その検証セットがメトリックの計算に使用されます。 |
20,000 行以下 | クロス検証アプローチが適用されます。 フォールドの既定の数は行数によって異なります。 データセットが 1,000 行より少ない場合は、10 個のフォールドが使用されます。 行数が 1,000 から 20,000 の場合は、3 個のフォールドが使用されます。 |
実験を実行するために計算する
Python SDK v2 (または CLI v2) を使用する自動 ML ジョブが現在サポートされるのは、Azure Machine Learning リモート コンピューティング (クラスターまたはコンピューティング インスタンス) のみです。
Python SDKv2 (または CLIv2) を使用したコンピューティングの作成について確認してください。
実験の設定を構成する
自動 ML 実験を構成するときは、いくつかのオプションを使用できます。 これらの構成パラメーターは、タスク メソッドに設定されます。 また、training
と limits
の設定を使用して、ジョブのトレーニング設定と終了基準を設定することもできます。
次の例は、精度をプライマリ メトリックと 5 分割交差検証として指定する分類タスクの必須パラメーターを示しています。
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input
# note that this is a code snippet -- you might have to modify the variable values to run it successfully
# make an Input object for the training data
my_training_data_input = Input(
type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)
# configure the classification job
classification_job = automl.classification(
compute=my_compute_name,
experiment_name=my_exp_name,
training_data=my_training_data_input,
target_column_name="y",
primary_metric="accuracy",
n_cross_validations=5,
enable_model_explainability=True,
tags={"my_custom_tag": "My custom value"}
)
# Limits are all optional
classification_job.set_limits(
timeout_minutes=600,
trial_timeout_minutes=20,
max_trials=5,
enable_early_termination=True,
)
# Training properties are optional
classification_job.set_training(
blocked_training_algorithms=["logistic_regression"],
enable_onnx_compatible_models=True
)
機械学習タスクの種類 (ML 問題) を選択する
自動 ML ジョブを送信する前に、解決しようとしている機械学習の問題の種類を特定する必要があります。 この問題により、自動 ML ジョブで使用される関数と、適用されるモデル アルゴリズムが決まります。
自動 ML では、表形式データに基づくタスク (分類、回帰、予測)、コンピューター ビジョン タスク (画像分類や物体検出など)、自然言語処理タスク (テキスト分類タスク、エンティティ認識タスクなど) がサポートされます。 詳細については、タスクの種類に関する記事を参照してください。 予測ジョブの設定の詳細については、時系列予測ガイドを参照してください。
サポートされているアルゴリズム
自動機械学習によって、自動化とチューニングのプロセス中にさまざまなモデルとアルゴリズムが試行されます。 ユーザーとして、アルゴリズムを指定する必要はありません。
タスク メソッドによって、適用するアルゴリズム/モデルの一覧が決まります。 使用可能なモデルを含めるか、または除外してイテレーションをさらに変更するには、AutoML ジョブの training
構成で allowed_training_algorithms
または blocked_training_algorithms
パラメーターを使用します。
次のリンクの一覧で、以下に示す機械学習タスクごとにサポートされているアルゴリズムを調べることができます。
分類 | 回帰 | 時系列予測 |
---|---|---|
ロジスティック回帰* | Elastic Net* | AutoARIMA |
Light GBM* | Light GBM* | Prophet |
勾配ブースティング* | 勾配ブースティング* | Elastic Net |
デシジョン ツリー* | デシジョン ツリー* | Light GBM |
K ニアレスト ネイバー* | K ニアレスト ネイバー* | K ニアレスト ネイバー |
Linear SVC* | LARS Lasso* | デシジョン ツリー |
サポート ベクター分類 (SVC)* | 確率的勾配降下法 (SGD)* | Arimax |
ランダム フォレスト* | ランダム フォレスト | LARS Lasso |
Extremely Randomized Trees* | Extremely Randomized Trees* | Extremely Randomized Trees* |
Xgboost* | Xgboost* | ランダム フォレスト |
単純ベイズ* | Xgboost | TCNForecaster |
確率的勾配降下法 (SGD)* | 確率的勾配降下法 (SGD) | 勾配ブースティング |
ExponentialSmoothing | ||
SeasonalNaive | ||
Average | ||
Naive | ||
SeasonalAverage |
以下のアルゴリズムが追加されています。
タスクの種類ごとのノートブックの例はこのリンクを参照してください。
主要メトリック
primary_metric
パラメーターによって、モデルのトレーニング中に最適化のために使用されるメトリックが決まります。 選択できる使用可能メトリックは、選択したタスクの種類によって決まります。
自動 ML で何を primary metric (主要メトリック) に選ぶべきかは、多くの要素に左右されます。 最優先の考慮事項としてお勧めするのは、ビジネス ニーズを最も適切に表すメトリックを選択することです。 次に、メトリックがデータセット プロファイル (データのサイズ、範囲、クラスの分布など) に適しているかどうかを考慮します。 次のセクションでは、タスクの種類とビジネス シナリオに基づいて、推奨される主要メトリックをまとめています。
これらのメトリックの具体的な定義については、「自動化機械学習の結果の概要」を参照してください。
分類の多クラス シナリオのメトリック
これらのメトリックは、表形式データ、画像/Computer Vision や NLP テキストなど、すべての分類シナリオに適用されます。
accuracy
、recall_score_weighted
、norm_macro_recall
、並びにprecision_score_weighted
などのしきい値に依存するメトリックでは、データセットが小さい場合や大きいクラス傾斜 (クラスの不均衡) がある場合、または予期されるメトリック値が 0.0 または 1.0 に非常に近い場合に、適切に最適化されないことがあります。 このような場合、主要メトリックには AUC_weighted
が適しています。 自動 ML が完了したら、業務上の必要に最も適したメトリックを基準にして、最適なモデルを選ぶことができます。
メトリック | ユース ケースの例 |
---|---|
accuracy |
画像分類、感情分析、チャーン予測 |
AUC_weighted |
不正行為の検出、画像分類、異常検出/スパム検出 |
average_precision_score_weighted |
センチメント分析 |
norm_macro_recall |
チャーン予測 |
precision_score_weighted |
分類の多ラベル シナリオのメトリック
テキスト分類の多ラベルでは、現在サポートされている唯一の主要なメトリックは 「正確性」 です。
画像分類の多ラベルでは、サポートされる主要なメトリックが ClassificationMultilabelPrimaryMetrics Enum に定義されます。
NLP テキスト NER (固有表現認識) シナリオのメトリック
- NLP テキスト NER (固有表現認識) では、現在サポートされている唯一の主要メトリックは "精度" です。
回帰シナリオのメトリック
r2_score
、normalized_mean_absolute_error
、normalized_root_mean_squared_error
は、いずれも予測誤差を最小限に抑えるためのものです。 r2_score
と normalized_root_mean_squared_error
が、どちらも平均二乗誤差を最小化するのに対して、normalized_mean_absolute_error
は誤差の平均絶対値を最小化します。 絶対値の場合、すべての大きさの誤差は同様に扱われ、二乗誤差は絶対値が大きい誤差に対してはるかに大きなペナルティがあります。 より大きな誤差をより罰する必要があるかどうかに応じて、二乗誤差と絶対値誤差のどちらを最適化するかを選ぶことができます。
r2_score
と normalized_root_mean_squared_error
の主な違いは、正規化の方法とその意味です。 normalized_root_mean_squared_error
は範囲で正規化された二乗平均平方根誤差であり、予測の平均誤差の大きさとして解釈できます。 r2_score
はデータの分散の推定値で正規化された平均二乗誤差です。 これは、モデルでキャプチャできる変動の割合です。
Note
r2_score
と normalized_root_mean_squared_error
はプライマリ メトリックと同様に動作します。 固定の検証セットが適用されている場合、これら 2 つのメトリックによって同じターゲットである平均二乗誤差が最適化され、同じモデルによって最適化されます。 トレーニング セットのみが使用可能であり、相互検証が適用される場合、normalized_root_mean_squared_error
のノーマライザーはトレーニング セットの範囲として固定されていますが、r2_score
のノーマライザーは各フォールドの変性であるため、フォールドごとに異なり、両者は若干異なります。
正確な値ではなく順位に関心がある場合は、実際の値と予測値の順位相関を測定する spearman_correlation
を選ぶことをお勧めします。
AutoML では現在、予測値と観測値の "相対" 差を測定するプライマリ メトリックはサポートされていません。 メトリック r2_score
、normalized_mean_absolute_error
、normalized_root_mean_squared_error
はすべて、絶対差の尺度です。 たとえば、予測値が観測値と 10 単位だけ異なる場合、観測値が 20 単位または 20,000 単位であるとき、これらのメトリックは同じ値を計算します。 これに対して、相対尺度である割合の差では、それぞれ 50% と 0.05% の誤差が得られます。 相対差として最適化するには、サポートされているプライマリ メトリックを使用して AutoML を実行し、mean_absolute_percentage_error
または root_mean_squared_log_error
が最適なモデルを選択できます。 すべての観測値が 0 である場合、これらのメトリックは未定義であるため、必ずしも適切な選択肢ではないことに注意してください。
メトリック | ユース ケースの例 |
---|---|
spearman_correlation |
|
normalized_root_mean_squared_error |
価格の予測 (家/製品/チップ)、レビュー スコアの予測 |
r2_score |
飛行機の遅延、給与の見積もり、バグの解決時間 |
normalized_mean_absolute_error |
時系列予測シナリオのメトリック
推奨事項は、回帰シナリオのものと似ています。
メトリック | ユース ケースの例 |
---|---|
normalized_root_mean_squared_error |
価格の予測 (予想)、在庫の最適化、需要の予測 |
r2_score |
価格の予測 (予想)、在庫の最適化、需要の予測 |
normalized_mean_absolute_error |
画像物体検出シナリオのメトリック
- 画像物体検出では、サポートされる主要なメトリックが ObjectDetectionPrimaryMetrics Enum に定義されます。
画像インスタンス セグメント化シナリオのメトリック
- 画像インスタンス セグメント化シナリオでは、サポートされる主要なメトリックが InstanceSegmentationPrimaryMetrics Enum に定義されます。
データの特徴付け
どの自動 ML 実験でも、データは数値と数値のベクトルに自動的に変換され、さらに、さまざまなスケールを持つ特徴を検知できるアルゴリズムに役立つようにスケーリングと正規化も行われます。 これらのデータ変換は、特徴量化と呼ばれます。
注意
自動化された機械学習の特徴付け手順 (機能の正規化、欠損データの処理、テキストから数値への変換など) は、基になるモデルの一部になります。 このモデルを予測に使用する場合、トレーニング中に適用されたのと同じ特徴付けの手順がご自分の入力データに自動的に適用されます。
自動 ML ジョブを構成するときに、featurization
設定を有効または無効にすることができます。
次の表は、特徴付けで許可されている設定です。
特徴付けの構成 | 説明 |
---|---|
"mode": 'auto' |
前処理の一環として、データ ガードレールと特徴付けの手順が自動的に実行されることを示します。 既定の設定です。 |
"mode": 'off' |
特徴量化の手順が自動的には実行されないことを示します。 |
"mode": 'custom' |
カスタマイズされた特徴付け手順を使用する必要があることを示します。 |
次のコードは、このケースでは回帰ジョブに対して、カスタム特徴化を提供する方法を示しています。
from azure.ai.ml.automl import ColumnTransformer
transformer_params = {
"imputer": [
ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
],
}
regression_job.set_featurization(
mode="custom",
transformer_params=transformer_params,
blocked_transformers=["LabelEncoding"],
column_name_and_types={"CHMIN": "Categorical"},
)
終了基準
ジョブの完了前に実験を終了するために、set_limits()
関数に定義できるオプションがいくつかあります。
条件 | description |
---|---|
基準なし | 終了パラメーターを定義しない場合、実験は、主なメトリックでそれ以上の進歩が見られなくなるまで続けられます。 |
timeout |
実験の実行を継続する時間を分単位で定義します。 指定されていない場合、デフォルトジョブの合計タイムアウトは 6 日(8,640 分)です。 1 時間 (60 分) 以下のタイムアウトを指定するには、データセットのサイズが 10,000,000 (行と列の積) を超えていないことを確認します。それ以外の場合、エラーが発生します。 このタイムアウトには、セットアップ、特徴量化、トレーニングの実行が含まれますが、プロセスの最後に実行されるアンサンブルとモデル説明の実行は含まれません。これらのアクションは、すべての試行 (子ジョブ) が完了した後で実行される必要があるためです。 |
trial_timeout_minutes |
各試行 (子ジョブ) が終了前に実行できる最大時間 (分)。 指定しない場合は、値として 1 か月すなわち 43200 分が使用されます。 |
enable_early_termination |
短期間でスコアが向上していない場合に、ジョブを終了するかどうか |
max_trials |
それぞれ、AutoML ジョブ中に試行するためのアルゴリズムとハイパーパラメーターの組み合わせが異なる、試行または実行の最大数。 指定しない場合、既定値は 1000 回の試行です。 enable_early_termination を使用すると、試行回数を減らすことができます。 |
max_concurrent_trials |
並列で実行される試行 (子ジョブ) の最大数を表します。 この数とクラスターのノード数を一致させるのが適切な方法です。 |
実験を実行する
注意
同じ構成設定とプライマリ メトリックを使用して実験を複数回実行した場合、各実験の最終的なメトリック スコアおよび生成されるモデルに変動が見られる可能性があります。 自動 ML のアルゴリズムには特有のランダム性があり、実験によって出力されるモデルおよび推奨モデルの最終的なメトリック スコア (精度など) にわずかな変動が生じる可能性があります。 また、同じモデル名であっても、異なるハイパーパラメーターが使用された結果が表示される可能性もあります。
警告
ワークスペースを介してファイアウォールやネットワーク セキュリティ グループに規則を設定している場合は、「受信および送信ネットワーク トラフィックの 構成」で定義されている受信および送信ネットワーク トラフィックに必要なアクセス許可が付与されていることを確認します。
実験を送信して実行し、モデルを生成します。 前提条件で MLClient
が作成された場合、ワークスペースで次のコマンドを実行できます。
# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
classification_job
) # submit the job to the backend
print(f"Created job: {returned_job}")
# Get a URL for the status of the job
returned_job.services["Studio"].endpoint
クラスターでの複数回の子実行
自動 ML での子実行の実験は、既に別の実験が実行されているクラスターで実行することができます。 ただし、タイミングは、クラスターに含まれるノード数によって、および別の実験を実行するためにそれらのノードを使用できるかどうかによって異なります。
クラスター内の各ノードは、1 回のトレーニング実行を完了できる個別の仮想マシン (VM) として機能します。自動 ML の場合、これは子実行を意味します。 すべてのノードがビジー状態である場合は、新しい実験がキューに登録されます。 ただし、空きノードがある場合は、使用可能なノードと VM で、新しい実験によって自動 ML 子実行が並行して実行されます。
子実行とそれが実行されるタイミングを管理するには、実験ごとに専用のクラスターを作成し、実験の max_concurrent_iterations
数をクラスター内のノード数と一致させることをお勧めします。 このようにして、必要な同時子実行とイテレーションの数で、クラスターのノードをすべて同時に使用します。
max_concurrent_iterations
は limits
構成で構成します。 構成されていない場合は、1 回の実験につき 1 回の同時子実行とイテレーションのみが既定で許可されます。
コンピューティング インスタンスの場合は、max_concurrent_trials
をコンピューティング インスタンス VM 上のコア数と同じに設定できます。
モデルとメトリックを探索する
自動 ML では、トレーニング結果を監視および評価するためのオプションが提供されます。
実行のたびに提供されるパフォーマンス グラフおよびメトリックの定義と例については、「自動化機械学習実験の結果を評価する」を参照してください。
特徴量化の概要を確認し、特定のモデルに追加された機能を理解するには、「特徴量化の透過性」を参照してください。
モデルのページにある Azure Machine Learning UI から、特定のモデルをトレーニングするときに使用されたハイパーパラメーターを表示したり、使用された内部モデルのトレーニング コードを表示してカスタマイズしたりすることもできます。
モデルを登録してデプロイする
モデルをテストし、運用環境で使うことを決めたら、後で使用できるようにモデルを登録することができます。
ヒント
登録済みのモデルの場合、Azure Machine Learning スタジオを使用してワンクリックでデプロイできます。 登録済みのモデルをスタジオからデプロイする方法に関するページを参照してください。
パイプラインでの AutoML
MLOps ワークフローで AutoML を利用するには、AzureML パイプラインに Azure Machine Learning ジョブ ステップを追加します。 これにより、データ準備スクリプトを AutoML にフックし、結果として得られる最適なモデルを登録して検証することで、ワークフロー全体を自動化できます。
以下に示すサンプル パイプラインには、AutoML 分類コンポーネントと、結果の AutoML 出力を示すコマンド コンポーネントが含まれています。 個々のステップで入力 (トレーニングと検証のデータ) と出力 (最適なモデル) がどのように参照されているかに注意してください。
# Define pipeline
@pipeline(
description="AutoML Classification Pipeline",
)
def automl_classification(
classification_train_data,
classification_validation_data
):
# define the automl classification task with automl function
classification_node = classification(
training_data=classification_train_data,
validation_data=classification_validation_data,
target_column_name="y",
primary_metric="accuracy",
# currently need to specify outputs "mlflow_model" explictly to reference it in following nodes
outputs={"best_model": Output(type="mlflow_model")},
)
# set limits and training
classification_node.set_limits(max_trials=1)
classification_node.set_training(
enable_stack_ensemble=False,
enable_vote_ensemble=False
)
command_func = command(
inputs=dict(
automl_output=Input(type="mlflow_model")
),
command="ls ${{inputs.automl_output}}",
environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
)
show_output = command_func(automl_output=classification_node.outputs.best_model)
pipeline_job = automl_classification(
classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)
# set pipeline level compute
pipeline_job.settings.default_compute = compute_name
# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
pipeline_job,
experiment_name=experiment_name
)
returned_pipeline_job
# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline
パイプラインに AutoML を含める方法に関するその他の例については、サンプル リポジトリを確認してください。
大規模な AutoML: 分散トレーニング
大規模なデータのシナリオの場合、AutoML では、限られたモデル セットに対する分散トレーニングがサポートされます。
分散アルゴリズム | サポートされているタスク | データ サイズの制限 (概算) |
---|---|---|
LightGBM | 分類、回帰 | 1 TB |
TCNForecaster | 予測 | 200GB |
分散トレーニングのアルゴリズムでは、モデルのトレーニングのために、データを自動的にパーティション分割し、複数のコンピューティング ノードにわたって分散させます。
注意
分散トレーニング モードでは現在、クロス検証、アンサンブル モデル、ONNX サポート、コード生成はサポートされていません。 また、AutoML で、使用可能な特徴抽出器の制限や、検証、説明可能性、モデル評価に使用されるデータのサブサンプリングなどの選択が行われる可能性もあります。
分類と回帰のための分散トレーニング
分類または回帰のための分散トレーニングを使用するには、ジョブ オブジェクトの training_mode
および max_nodes
プロパティを設定する必要があります。
プロパティ | 説明 |
---|---|
training_mode | distributed または non_distributed のトレーニング モードを示します。 既定値は non_distributed です。 |
max_nodes | 各 AutoML 試行によるトレーニングに使用するノードの数。 この設定は 4 以上である必要があります。 |
次のコード サンプルは、分類ジョブに対するこれらの設定の例を示しています。
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
classification_job.set_training(
allowed_training_algorithms=["LightGBM"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes for each trial
classification_job.set_limits(
max_nodes=4,
# other limit settings
)
注意
分類および回帰タスクに対する分散トレーニングでは現在、複数の同時実行試行はサポートされていません。 モデルの試行は、max_nodes
ノードを使用して、試行ごとに順番に実行されます。 max_concurrent_trials
の制限設定は現在、無視されます。
予測のための分散トレーニング
予測タスクに対して分散トレーニングがどのように動作するかを学習するには、大規模な予測に関する記事を参照してください。 予測のための分散トレーニングを使用するには、ジョブ オブジェクトの training_mode
、enable_dnn_training
、max_nodes
の各プロパティ、さらにオプションで max_concurrent_trials
プロパティを設定する必要があります。
プロパティ | 説明 |
---|---|
training_mode | distributed または non_distributed のトレーニング モードを示します。 既定値は non_distributed です。 |
enable_dnn_training | ディープ ニューラル ネットワーク モデルを有効にするフラグ。 |
max_concurrent_trials | これは、並列にトレーニングする試行モデルの最大数です。 既定値は 1 です。 |
max_nodes | トレーニングに使用するノードの合計数。 この設定は 2 以上である必要があります。 予測タスクの場合、各試行モデルは $\text{max}\left(2, \text{floor}(\text{max_nodes} / \text{max_concurrent_trials}) \right)$ ノードを使用してトレーニングされます。 |
次のコード サンプルは、予測ジョブに対するこれらの設定の例を示しています。
from azure.ai.ml.constants import TabularTrainingMode
# Set the training mode to distributed
forecasting_job.set_training(
enable_dnn_training=True,
allowed_training_algorithms=["TCNForecaster"],
training_mode=TabularTrainingMode.DISTRIBUTED
)
# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
max_concurrent_trials=2,
max_nodes=4,
# other limit settings
)
完全な構成コードのサンプルについては、構成とジョブの送信に関する前のセクションを参照してください。
次のステップ
- モデルをデプロイする方法と場所についてさらに詳しく学習する。
- 時系列予測モデルをトレーニングするように AutoML を設定する方法の詳細について確認します。