Azure Databricks AutoML Python API を使用して ML モデルをトレーニングする
この記事では、API を使用して Azure Databricks AutoML でモデルをトレーニングする方法について説明します。 詳細については、「AutoML とは」を参照してください。 Python API には、AutoML で実行される分類、回帰、予測を開始する関数が用意されています。 各関数コールによって、一連のモデルがトレーニングされ、各モデルの試用版ノートブックが生成されます。
次の手順では、通常、API を使用して AutoML 実験を設定する方法について説明します。
- ノートブックを作成し、Databricks Runtime ML を実行しているクラスターにアタッチします。
- 既存のデータ ソースから使用するテーブルを特定するか、データ ファイルを DBFS にアップロードしてテーブルを作成します。
- AutoML の実行を開始するには、テーブル名を該当する API の仕様 (分類、回帰、予測) に渡します。
- AutoML の実行が始まると、コンソールに MLflow 実験の URL が表示されます。 この URL を使用して、実行の進行状況を監視します。 MLflow 実験を更新して、完了した試用版を確認します。
- AutoML の実行が完了した後、次の操作を実行できます。
- [出力の概要] のリンクを使用して、MLflow 実験に移動するか、最適な結果の生成に使用されたノートブックに移動します。
- データ探索ノートブックへのリンクを使用して、AutoML に渡されたデータに関する分析情報を取得します。 また、このノートブックを同じクラスターにアタッチし、ノートブックを再実行して結果を再現したり、追加のデータ分析を行ったりすることもできます。
- AutoML コールから返された概要オブジェクトを使用して、試用版に関する詳細を確認したり、特定の試用版でトレーニングされたモデルを読み込んだりします。 詳細については、AutoMLSummary オブジェクトに関するセクションを参照してください。
- 生成されたノートブックを試用版から複製し、同じクラスターにアタッチしてノートブックを再実行して、結果を再現します。 また、必要な編集を行い、再実行して追加のモデルをトレーニングし、同じ実験にログとして記録することもできます。
必要条件
AutoML 実験の「要件」を参照してください。
分類の仕様
次のコード例では、分類モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加パラメーターについては、「分類と回帰のパラメーター」を参照してください。
注意
max_trials
パラメーターは Databricks Runtime 10.4 ML では非推奨であり、Databricks Runtime 11.0 ML 以上ではサポートされていません。 AutoML 実行の期間を制御するには、timeout_minutes
を使用します。
databricks.automl.classify(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
data_dir: Optional[str] = None,
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
pos_label: Optional[Union[int, bool, str] = None, # <DBR> 11.1 ML and above
primary_metric: str = "f1",
time_col: Optional[str] = None,
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
回帰の仕様
次のコード例では、回帰モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加パラメーターについては、「分類と回帰のパラメーター」を参照してください。
注意
max_trials
パラメーターは Databricks Runtime 10.4 ML では非推奨であり、Databricks Runtime 11.0 ML 以上ではサポートされていません。 AutoML 実行の期間を制御するには、timeout_minutes
を使用します。
databricks.automl.regress(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
data_dir: Optional[str] = None,
exclude_cols: Optional[List[str]] = None, # <DBR> 10.3 ML and above
exclude_frameworks: Optional[List[str]] = None, # <DBR> 10.3 ML and above
experiment_dir: Optional[str] = None, # <DBR> 10.4 LTS ML and above
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 11.3 LTS ML and above
imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
max_trials: Optional[int] = None, # <DBR> 10.5 ML and below
primary_metric: str = "r2",
time_col: Optional[str] = None,
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
予測の仕様
次のコード例では、予測モデルをトレーニングするための AutoML 実行を構成します。 AutoML 実行のパラメーターの詳細については、「予測パラメーター」を参照してください。 Auto-ARIMA を使用するには、時系列の頻度が一定である必要があります (つまり、任意の 2 つのポイント間の間隔は、時系列全体で同じである必要があります)。 頻度は、API 呼び出しで指定された頻度の単位と一致する必要があります。 AutoML では、これらの値に前の値を入力して、不足している時間ステップを処理します。
databricks.automl.forecast(
dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
*,
target_col: str,
time_col: str,
country_code: str = "US", # <DBR> 12.0 ML and above
data_dir: Optional[str] = None,
exclude_frameworks: Optional[List[str]] = None,
experiment_dir: Optional[str] = None,
experiment_name: Optional[str] = None, # <DBR> 12.1 ML and above
feature_store_lookups: Optional[List[Dict]] = None, # <DBR> 12.2 LTS ML and above
frequency: str = "D",
horizon: int = 1,
identity_col: Optional[Union[str, List[str]]] = None,
output_database: Optional[str] = None, # <DBR> 10.5 ML and above
primary_metric: str = "smape",
timeout_minutes: Optional[int] = None,
) -> AutoMLSummary
分類と回帰のパラメーター
注意
分類と回帰の問題の場合のみ、次のことができます。
- トレーニングに含める列を指定します。
- カスタム補完方法を選択します。
フィールド名 | Type | 説明 |
---|---|---|
dataset | str pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame | トレーニングの特徴量とターゲットを含む入力テーブル名または DataFrame。 Unity Catalog 以外のテーブルの場合、 テーブル名の形式は ".." または “.” です |
target_col | str | 対象ラベルの列名。 |
data_dir | 形式の strdbfs:/<folder-name> |
(省略可能) トレーニング データセットを格納するために使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方から参照できます。 Databricks では、このフィールドを空のままにしておくことをお勧めします。そうすると、AutoML でトレーニング データセットを MLflow アーティファクトとして保存できます。 カスタム パスが指定されている場合、データセットは AutoML 実験のアクセス許可を継承しません。 |
exclude_cols | List[str] | (省略可能) AutoML 計算中に無視する列の一覧。 規定値: [] |
exclude_ frameworks | List[str] | (省略可能) モデルの開発時に AutoML によって考慮されないアルゴリズム フレームワークの一覧。 使用可能な値: 空のリスト、または 1 つ以上の "sklearn"、"lightgbm"、"xgboost"。 既定値: [] (すべてのフレームワークが考慮されます) |
experiment_dir | str | (省略可能) 生成されたノートブックと実験を保存するための、ワークスペース内のディレクトリへのパス。 既定値: /Users/<username>/databricks_automl/ |
experiment_name | str | (省略可能) AutoML によって作成される MLflow 実験の名前。 既定値: 名前が自動的に生成されます。 |
feature_store_ lookups | List[Dict] | (省略可能) データ拡張用の Feature Store の特徴を表すディクショナリの一覧。 各ディクショナリの有効なキーは次のとおりです。 * table_name (str): 必須。 特徴テーブルの名前。 * lookup_key (list または str): 必須。 特徴テーブルに加わるときに dataset パラメーターで渡されたデータと一緒にキーとして使用する列名。 列名の順序は、特徴テーブルの主キーの順序と一致する必要があります。* timestamp_lookup_key (str): 指定されたテーブルが時系列特徴テーブルの場合は必須。 特徴テーブルでポイントインタイム ルックアップを実行するときに dataset パラメーターで渡されたデータと一緒に使用する列名。規定値: [] |
imputers | Dict[str, Union[str, Dict[str, Any]]] | (省略可能) 各キーが列名であり、各値が補完の方法を説明する文字列または辞書である辞書。 文字列として指定した場合、値は "mean"、"median"、または "most_frequent" のいずれかである必要があります。 既知の値を使用して補完するには、値を次のように辞書として指定します。 [https://login.microsoftonline.com/consumers/]( {"strategy": "constant", "fill_value": <desired value>} ) 文字列オプションを辞書として指定することもできます。たとえば、{"strategy": "mean"} などです。列に対して補完の方法が提供されていない場合は、列の型と内容に基づいて AutoML によって既定の方法が選択されます。 既定以外の補完方法を指定した場合、AutoML ではセマンティック型の検出は実行されません。 既定値: {} |
max_trials | int | (省略可能) 実行する試用版の最大数。 このパラメーターは Databricks Runtime 10.5 ML 以下で使用できますが、Databricks Runtime 10.3 ML からは非推奨です。 Databricks Runtime 11.0 ML 以上では、このパラメーターはサポートされていません。 既定値: 20 timeout_minutes = None の場合、AutoML では最大数の試用版が実行されます。 |
pos_label | Union[int, bool, str] | (分類のみ) 正のクラス。 これは、精度や再現率などのメトリックを計算する場合に役立ちます。 二項分類の問題に対してのみ指定する必要があります。 |
primary_metric | str | モデルのパフォーマンスの評価および順位付けに使用されるメトリック。 回帰でサポートされているメトリック: "r2" (既定値)、"mae"、"rmse"、"mse" 分類でサポートされているメトリック: "f1" (既定値)、"log_loss"、"precision"、"accuracy"、"roc_auc" |
time_col | str | Databricks Runtime 10.1 ML 以降で使用できます。 (省略可能) 時間列の列名。 指定した場合、AutoML では、最も古いポイントをトレーニング データとして、最も新しいポイントをテスト セットとして使用して、データセットのトレーニング、検証、およびテスト セットへの時系列での分割が試みられます。 許容される列の型は、タイムスタンプと整数です。 Databricks Runtime 10.2 ML 以降では、文字列の列もサポートされています。 列の型が文字列の場合、AutoML ではセマンティック検出を使用してタイムスタンプへの変換が試みられます。 変換に失敗すると、AutoML の実行は失敗します。 |
timeout_minutes | int | (省略可能) AutoML 試用版が完了するまでの最大待機時間。 タイムアウトを長く設定すると、AutoML により、より多くの試用版が実行され、精度の高いモデルが識別されます。 既定値: 120 分 最小値: 5 分 タイムアウトが短かすぎて、1 つの試用版も完了できない場合は、エラーが報告されます。 |
予測パラメーター
フィールド名 | Type | 説明 |
---|---|---|
dataset | str pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame |
トレーニングの特徴量とターゲットを含む入力テーブル名または DataFrame。 Unity Catalog 以外のテーブルの場合、 テーブル名の形式は ".." または “.” です |
target_col | str | 対象ラベルの列名。 |
time_col | str | 予測の時間列の名前。 |
frequency | str | 予測対象の時系列の頻度。 これは、イベントが発生すると予想される期間です。 既定の設定は "D" または日単位のデータです。 データの頻度が異なる場合は、必ず設定を変更してください。 指定できる値 "W" (週) "D"/"days"/"day" "hours"/"hour"/"hr"/"h" "m"/"minute"/"min"/"minutes"/"T" "S"/"seconds"/"sec"/"second" 以下は、Databricks Runtime 12.0 ML 以降でのみ利用できます。 “M” / “month” / “months” “Q” / “quarter” / “quarters” “Y” / “year” / “years” 既定値: "D" |
horizon | int | 予測を返す必要がある将来の期間の数。 単位は、時系列頻度です。 既定値: 1 |
data_dir | 形式の strdbfs:/<folder-name> |
(省略可能) トレーニング データセットを格納するために使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方から参照できます。 Databricks では、このフィールドを空のままにしておくことをお勧めします。そうすると、AutoML でトレーニング データセットを MLflow アーティファクトとして保存できます。 カスタム パスが指定されている場合、データセットは AutoML 実験のアクセス許可を継承しません。 |
exclude_ frameworks | List[str] | (省略可能) モデルの開発時に AutoML によって考慮されないアルゴリズム フレームワークの一覧。 指定できる値: 空のリスト、または 1 つ以上の "prophet"、"arima"。 既定値: [] (すべてのフレームワークが考慮されます) |
experiment_dir | str | (省略可能) 生成されたノートブックと実験を保存するための、ワークスペース内のディレクトリへのパス。 既定値: /Users/<username>/databricks_automl/ |
experiment_name | str | (省略可能) AutoML によって作成される MLflow 実験の名前。 既定値: 名前が自動的に生成されます。 |
feature_store_ lookups | List[Dict] | (省略可能) データ拡張用の Feature Store の特徴を表すディクショナリの一覧。 各ディクショナリの有効なキーは次のとおりです。 * table_name (str): 必須。 特徴テーブルの名前。 * lookup_key (list または str): 必須。 特徴テーブルに加わるときに dataset パラメーターで渡されたデータと一緒にキーとして使用する列名。 列名の順序は、特徴テーブルの主キーの順序と一致する必要があります。* timestamp_lookup_key (str): 指定されたテーブルが時系列特徴テーブルの場合は必須。 特徴テーブルでポイントインタイム ルックアップを実行するときに dataset パラメーターで渡されたデータと一緒に使用する列名。規定値: [] |
identity_col | Union[str, list] | (省略可能) 複数系列予測の時系列を識別する列。 AutoML では、これらの列と予測用の時間列でグループ化されます。 |
output_database | str | (省略可能) 指定した場合、AutoML では最適なモデルの予測は、指定したデータベースの新しいテーブルに保存されます。 既定値: 予測は保存されません。 |
primary_metric | str | モデルのパフォーマンスの評価および順位付けに使用されるメトリック。 サポートされているメトリック: "smape"(既定値) "mse"、"rmse"、"mae"、または "mdape"。 |
timeout_minutes | int | (省略可能) AutoML 試用版が完了するまでの最大待機時間。 タイムアウトを長く設定すると、AutoML により、より多くの試用版が実行され、精度の高いモデルが識別されます。 既定値: 120 分 最小値: 5 分 タイムアウトが短かすぎて、1 つの試用版も完了できない場合は、エラーが報告されます。 |
country_code | str | Databricks Runtime 12.0 ML 以降で使用できます。 Prophet 予測モデルでのみサポートされます。 (省略可能) 予測モデルで使用する国の休日を示す 2 文字の国番号。 休日を無視するには、このパラメーターを空の文字列 ("") に設定します。 サポート対象の国。 既定値: US (米国の休日)。 |
返されるもの
AutoMLSummary
各試行のメトリック、パラメーター、その他の詳細を記述する、AutoML 実行の概要オブジェクト。 また、このオブジェクトを使用して、特定の試用版によってトレーニングされたモデルを読み込みます。
プロパティ | タイプ | 説明 |
---|---|---|
実験 | mlflow.entities.Experiment | 試用版をログに記録するために使用される MLflow 実験。 |
trials | List[TrialInfo] | 実行されたすべての試用版に関する情報を含むリスト。 |
best_trial | TrialInfo | プライマリ メトリックに対して最も高い加重スコアを生み出した試用版に関する情報。 |
metric_distribution | str | すべての試用版におけるプライマリ メトリックの加重スコアのディストリビューション。 |
output_table_name | str | output_database が指定されている場合にのみ、予測にのみ使用されます。 モデルの予測を含む output_database のテーブルの名前。 |
TrialInfo
個々の試用版の概要オブジェクト。
プロパティ | タイプ | 説明 |
---|---|---|
notebook_path | 省略可能[str] | ワークスペース内のこの試用版に対して生成されたノートブックへのパス。 分類と回帰の場合、この値は一番良かった試験にのみ設定され、他のすべての試験の値は None に設定されます。 予測の場合、この値はすべての試験に存在します |
notebook_url | 省略可能[str] | この試用版に対して生成されたノートブックの URL。 分類と回帰の場合、この値は一番良かった試験にのみ設定され、他のすべての試験の値は None に設定されます。 予測の場合、この値はすべての試験に存在します |
artifact_uri | 省略可能[str] | 生成されたノートブックの MLflow 成果物 URI。 |
mlflow_run_id | str | この試用版の実行に関連付けられている MLflow 実行 ID。 |
metrics | Dict[str, float] | この試用版の MLflow にログとして記録されたメトリック。 |
params | Dict[str, str] | この試用版に使用された MLflow でログとして記録されたパラメーター。 |
model_path | str | この試用版でトレーニングされたモデルの MLflow 成果物 URL。 |
model_description | str | このモデルのトレーニングに使用されたモデルとハイパーパラメーターの簡単な説明。 |
duration | str | トレーニング期間 (分単位)。 |
preprocessors | str | モデルをトレーニングする前の、プリプロセッサ実行の説明。 |
evaluation_metric_score | float | 検証データセットに対して評価されたプライマリ メトリックのスコア。 |
Method | 説明 |
---|---|
load_model() | この試用版で生成され、MLflow 成果物としてログに記録された、モデルを読み込みます。 |
ノートブックをインポートする
MLflow 成果物として保存されているノートブックをインポートするには、databricks.automl.import_notebook
Python API を使います。
def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
"""
Import a trial notebook, saved as an MLflow artifact, into the workspace.
:param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
:param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
:param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.
:return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
"""
使用例:
summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)
モデルを登録してデプロイする
AutoML トレーニング済みモデルは、MLflow モデル レジストリに登録されているモデルと同様に登録してデプロイできます。「MLflow モデルのログ、読み込み、登録、デプロイ」を参照してください。
'pandas.core.indexes.numeric' という名前のモジュールはありません
AutoML とモデル サービングを使用してビルドされたモデルを提供すると、エラー No module named 'pandas.core.indexes.numeric
が表示されることがあります。
これは、AutoML とモデル サービングのエンドポイント環境との間の互換性のない pandas
バージョンが原因です。 このエラーは、add-pandas-dependency.py スクリプトを実行することで解決できます。 このスクリプトは、ログに記録されたモデルの requirements.txt
と conda.yaml
を編集して、適切な pandas
依存関係バージョン pandas==1.5.3
を含めます。
- スクリプトを変更して、モデルがログに記録された MLflow 実行の
run_id
を含めます。 - モデルを MLflow モデル レジストリに再登録します。
- MLflow モデルの新しいバージョンをサービングしてみてください。
Notebook の例
これらのノートブックを確認して、AutoML の使用を開始します。
次のノートブックでは、AutoML で分類を処理する方法を示しています。
AutoML 分類のノートブックの例
次のノートブックでは、AutoML で回帰を処理する方法を示しています。
AutoML 回帰のノートブックの例
次のノートブックでは、AutoML を使用して予測を実行する方法を示しています。
AutoML 予測のノートブックの例
次のノートブックでは、AutoML と Feature Store の機能テーブルを使用して、ML モデルをトレーニングする方法を示しています。
Feature Store サンプル ノートブックを使用した AutoML 実験
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示