トレーニングする 機械学習 models with Databricks Auto機械学習 Python API
この記事では、API を使用して Databricks AutoML でモデルをトレーニングする方法について説明します。 詳細については、「 AutoML とは」を参照してください。 Python API には、AutoML の実行の分類、回帰、予測を開始する関数が用意されています。 各関数は、一連のモデルをトレーニングし、モデルごとに試用版ノートブックを生成します。
次のステップ では、API を使用して AutoML エクスペリメントを設定する一般的な方法について説明します。
ノートブックを作成し 、機械学習 Databricks Runtime を実行しているクラスターにアタッチします。
既存の DATA から使用するテーブルを特定するか 、データ ファイルを DBFS にアップロード してテーブルを作成します。
AutoML の実行が開始されると、MLflow エクスペリメント URL がコンソールに表示されます。 この URL を使用して、実行の進行状況を監視します。 MLflow エクスペリメントを更新して、完了した試用版を確認します。
AutoML の実行が完了したら、次の操作を行います。
出力の概要のリンクを使用して、MLflow エクスペリメントまたは最良の結果を生成したノートブックに移動します。
データ探索ノートブックへのリンクを使用して、AutoML に渡されるデータに関する知識を取得します。 このノートブックを同じクラスターにアタッチし、ノートブックを再実行して結果を再現したり、追加のデータ分析を行ったりすることもできます。
AutoML 呼び出しから返されたサマリー オブジェクトを使用して、トライアルの詳細を調べたり、特定のトライアルによってトレーニングされたモデルをロードしたりします。 AutoMLSummary オブジェクトの詳細については、こちらを参照してください。
試用版から生成されたノートブックを複製し、同じクラスターにアタッチしてノートブックを再実行し、結果を再現します。 また、必要な編集を行って再実行し、追加のモデルをトレーニングし、同じエクスペリメントに記録することもできます。
要件
「AutoML エクスペリメント の要件 」を参照してください。
分類仕様
次のコード例では、分類モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加のパラメーターについては、「分類パラメーター と回帰パラメーター」を参照してください。
注
max_trials
パラメーターは Databricks Runtime 10.4 機械学習では非推奨となり、 Databricks Runtime 11.0 機械学習以降ではサポートされていません。 timeout_minutes
を使用して、AutoML の実行時間を制御します。
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,
split_col: Optional[str] = None,
) -> AutoMLSummary
回帰仕様
次のコード例では、回帰モデルをトレーニングするための AutoML 実行を構成します。 AutoML の実行をさらにカスタマイズするための追加のパラメーターについては、「分類パラメーター と回帰パラメーター」を参照してください。
注
max_trials
パラメーターは Databricks Runtime 10.4 機械学習では非推奨となり、 Databricks Runtime 11.0 機械学習以降ではサポートされていません。 timeout_minutes
を使用して、AutoML の実行時間を制御します。
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,
split_col: Optional[str] = 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
分類と回帰のパラメーター
注
分類と回帰の問題に対してのみ、次のことができます。
トレーニングに含める列を指定します。
カスタム補完方法を選択します。
フィールド名 |
タイプ |
説明 |
---|---|---|
データセット |
str pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame |
トレーニングの特徴とターゲットを含む入力テーブル名または DataFrame 。 テーブル名は、 Unity Catalog 以外のテーブルの場合は ".." または "." の形式にすることができます。 |
target_col |
str |
ターゲット ラベルの列名。 |
data_dir |
フォーマットのstr
|
(オプション)トレーニング データセットの格納に使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方に表示されます。 Databricks では、AutoML でトレーニング データセットを MLflow 成果物として保存できるように、このフィールドを空のままにすることをお勧めします。 カスタム パスが指定されている場合、データセットは AutoML エクスペリメントのアクセス権限を継承しません。 |
exclude_cols |
リスト[str] |
(オプション)AutoML の計算中に無視する列のリスト。 デフォルト: [] |
exclude_フレームワーク |
リスト[str] |
(オプション)AutoML がモデルを開発する際に考慮してはならないアルゴリズム フレームワークのリスト。 可能な値: 空のリスト、または "sklearn"、"lightgbm"、"xgboost" の 1 つ以上。 デフォルト: [] (すべてのフレームワークが考慮されます) |
エクスペリメント |
str |
(オプション)生成されたノートブックとエクスペリメントを保存するためのワークスペース内のディレクトリへのパス。 デフォルト: |
エクスペリメント |
str |
(オプション)AutoML によって作成される MLflow エクスペリメントの名前。 デフォルト: 名前が自動的に生成されます。 |
feature_store_ルックアップ |
リスト[辞書] |
(オプション)データ拡張のための Feature Store の特徴を表すディクショナリのリスト。 各ディクショナリで有効なキーは次のとおりです。
デフォルト: [] |
インピュータ |
Dict[str, Union[str, Dict[str, Any]]] |
(オプション)各キーが列名で、各値が補完戦略を説明する文字列またはディクショナリであるディクショナリ。 文字列として指定する場合、値は "mean"、"median"、または "most_frequent" のいずれかである必要があります。 既知の値で代入するには、値を辞書 列に補完方法が指定されていない場合、AutoML は列の型と内容に基づいて既定の方法を選択します。 既定以外の補完方法を指定した場合、AutoML は セマンティック タイプの検出を実行しません。 デフォルト: {} |
max_trials |
整数 |
(オプション)実行する試行の最大数。 このパラメーターは Databricks Runtime 10.5 機械学習以前で使用できますが、 Databricks Runtime 10.3 機械学習以降は非推奨です。 Databricks Runtime 11.0 機械学習以降では、このパラメーターはサポートされていません。 デフォルト: 20 timeout_minutes=None の場合、AutoML は最大数の試行を実行します。 |
pos_label |
Union[int, bool, str] |
(分類のみ)ポジティブクラス。 精度や再現率などのメトリクスを計算する場合に便利です。 二項分類の問題に対してのみ指定する必要があります。 |
primary_metric |
str |
メトリクス モデルのパフォーマンスを評価およびランク付けするために使用されます。 回帰でサポートされるメトリクス: "r2" (デフォルト), "mae", "rmse", "mse" サポートされている分類メトリクス: "f1" (デフォルト), "log_loss", "精度", "精度",ROC" |
split_col |
str |
(オプション)分割列の列名。 API ワークフローでは、Databricks Runtime 15.2 ML 以降でのみ使用できます。 指定されている場合、 AutoMLトレーニングする/検証/テスト セットをユーザー指定の値で分割しようとし、この列はトレーニング機能から自動的に除外されます。 受け入れられる列タイプは文字列です。 この列の各エントリの値は、「トレーニングする」、「validate」、または「test」のいずれかである必要があります。 |
time_col |
str |
Databricks Runtime 10.1 機械学習以降で使用できます。 (オプション)時間列の列名。 指定した場合、AutoML は、最も古いポイントをトレーニング データとして使用し、最新のポイントをテスト セットとして使用して、データセットをトレーニング セット、検証セット、テスト セットに時系列で分割しようとします。 受け入れられる列の型は、タイムスタンプと整数です。 Databricks Runtime 10.2 機械学習以降では、文字列列もサポートされています。列の型が文字列の場合、AutoML はセマンティック検出を使用してタイムスタンプに変換しようとします。 変換が失敗した場合、AutoML の実行は失敗します。 |
timeout_minutes |
整数 |
(オプション)AutoML トライアルの完了を待機する最大時間。 タイムアウトを長くすると、AutoML はより多くのトライアルを実行し、より正確にモデルを識別できます。 デフォルト: 120分 最小値: 5 分 タイムアウトが短すぎて少なくとも 1 つの試行を完了できない場合は、エラーが報告されます。 |
予測パラメーター
フィールド名 |
タイプ |
説明 |
---|---|---|
データセット |
str pandas.DataFrame pyspark.DataFrame pyspark.sql.DataFrame |
トレーニングの特徴とターゲットを含む入力テーブル名または DataFrame 。 テーブル名は、 Unity Catalog 以外のテーブルの場合は ".." または "." の形式にすることができます。 |
target_col |
str |
ターゲット ラベルの列名。 |
time_col |
str |
予測の時間列の名前。 |
周波数 |
str |
予測の時系列の頻度。 これは、イベントが発生すると予想される期間です。 デフォルト設定は「D」または日次データです。 データの頻度が異なる場合は、必ず設定を変更してください。 可能な値: "W" (週) "D" / "日" / "日" "時間" / "時間" / "時間" / "h" "m" / "分" / "分" / "分" / "T" "S" / "秒" / "秒" / "秒" 以下は、 Databricks Runtime 12.0 機械学習以降でのみ使用できます。 "M" / "月" / "月" "Q" / "四半期" / "四半期" "Y" / "年" / "年" デフォルト: "D" |
地平線 |
整数 |
予測を返す必要がある将来の期間の数。 単位は時系列頻度です。 デフォルト: 1 |
data_dir |
フォーマットのstr
|
(オプション)トレーニング データセットの格納に使用される DBFS パス。 このパスは、ドライバー ノードとワーカー ノードの両方に表示されます。 Databricks では、AutoML でトレーニング データセットを MLflow 成果物として保存できるように、このフィールドを空のままにすることをお勧めします。 カスタム パスが指定されている場合、データセットは AutoML エクスペリメントのアクセス権限を継承しません。 |
exclude_フレームワーク |
リスト[str] |
(オプション)AutoML がモデルを開発する際に考慮してはならないアルゴリズム フレームワークのリスト。 可能な値: 空のリスト、または "預言者"、"arima" の 1 つ以上。 デフォルト: [] (すべてのフレームワークが考慮されます) |
エクスペリメント |
str |
(オプション)生成されたノートブックとエクスペリメントを保存するためのワークスペース内のディレクトリへのパス。 デフォルト: |
エクスペリメント |
str |
(オプション)AutoML によって作成される MLflow エクスペリメントの名前。 デフォルト: 名前が自動的に生成されます。 |
feature_store_ルックアップ |
リスト[辞書] |
(オプション)データ拡張のための Feature Store の特徴を表すディクショナリのリスト。 各ディクショナリで有効なキーは次のとおりです。
デフォルト: [] |
identity_col |
ユニオン[str, list] |
(オプション)複数系列予測の時系列を識別する列。 AutoML は、これらの列と予測用の時間列でグループ化されます。 |
output_database |
str |
(オプション)指定した場合、AutoML は最適なモデルの予測を指定されたデータベースの新しいテーブルに保存します。 デフォルト: 予測は保存されません。 |
primary_metric |
str |
メトリクス モデルのパフォーマンスを評価およびランク付けするために使用されます。 サポートされているメトリクス: "smape"(デフォルト) "mse"、"rmse"、"mae"、または "mdape"。 |
timeout_minutes |
整数 |
(オプション)AutoML トライアルの完了を待機する最大時間。 タイムアウトを長くすると、AutoML はより多くのトライアルを実行し、より正確にモデルを識別できます。 デフォルト: 120分 最小値: 5 分 タイムアウトが短すぎて少なくとも 1 つの試行を完了できない場合は、エラーが報告されます。 |
country_code |
str |
Databricks Runtime 12.0 機械学習以降で使用できます。預言者の予測モデルでのみサポートされます。 (オプション)予測モデルで使用する国の休日を示す 2 文字の国コード。 休日を無視するには、このパラメーターを空の文字列 ("") に設定します。 サポートされている国。 デフォルト: 米国 (米国の祝日)。 |
収益
AutoMLSummary
各試行のメトリクス、パラメーター、およびその他の詳細を記述する AutoML 実行の概要オブジェクト。 また、このオブジェクトを使用して、特定の試行によってトレーニングされたモデルを読み込みます。
財産 |
タイプ |
説明 |
---|---|---|
エクスペリメント |
mlflow.entities.エクスペリメント |
トライアルのログ記録に使用される MLflow エクスペリメント。 |
試験 |
リスト[トライアル情報] |
実行されたすべての試行に関する情報を含むリスト。 |
best_trial |
トライアル情報 |
プライマリメトリクスの最高加重スコアをもたらした試験に関する情報。 |
メトリクス |
str |
すべての試行にわたるプライマリメトリクスの加重スコアの分布。 |
output_table_name |
str |
予測でのみ使用され、output_databaseが指定されている場合にのみ使用されます。 モデルの予測を含むoutput_database内のテーブルの名前。 |
TrialInfo
個々の試行ごとの要約オブジェクト。
財産 |
タイプ |
説明 |
---|---|---|
ノートブック |
オプション[str] |
ワークスペース内のこの試用版用に生成されたノートブックへのパス。 分類と回帰の場合、この値は最適な試行に対してのみ設定され、他のすべての試行の値は |
ノートブック |
オプション[str] |
この試用版用に生成されたノートブックの URL。 分類と回帰の場合、この値は最適な試行に対してのみ設定され、他のすべての試行の値は |
artifact_uri |
オプション[str] |
生成されたノートブックの MLflow アーティファクト URI。 |
実行 |
str |
このトライアル実行に関連付けられている MLflow 実行 ID。 |
メトリクス |
ディクショナリ[str, float] |
メトリクスは、このトライアルのために MLflow にログインしました。 |
パラメータ |
Dict[str, str] |
この試用版で使用された MLflow に記録されたパラメーター。 |
model_path |
str |
このトライアルでトレーニングされたモデルの MLflow 成果物 URL。 |
model_description |
str |
モデルの簡単な説明と、このモデルのトレーニングに使用されるハイパーパラメーター。 |
期間 |
str |
トレーニング時間 (分単位)。 |
プリプロセッサ |
str |
モデルをトレーニングする前に実行されるプリプロセッサの説明。 |
evaluation_metric_score |
浮く |
検証データセットに対して評価されたプライマリメトリクスのスコア。 |
方式 |
説明 |
---|---|
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)
登録してモデルを デプロイする
MLflow モデルレジストリ内の登録するモデルと同様に、AutoML トレーニング済みモデルを登録してデプロイできます (「 MLflow モデルのログ記録、読み込み、登録する、デプロイ」を参照してください)。
'pandas.core.indexes.numeric という名前のモジュールはありません
AutoML を使用してビルドされたモデルを Model Servingで提供すると、次のエラーが発生する可能性があります: 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 モデルを提供してみてください。