バッチ推論と予測用のモデルをデプロイする
この記事では、オフライン (バッチおよびストリーミング) 推論用に MLflow モデルをデプロイする方法について説明します。 Databricks では、MLflow を使用して、バッチ推論またはストリーミング推論用の機械学習モデルをデプロイすることをお勧めします。 MLflow モデルの操作の概要については、「MLflow モデルのログ、読み込み、登録、デプロイ」を参照してください。
Azure Databricks で提供されるリアルタイム モデルの詳細については、「Azure Databricks でのモデルの提供」を参照してください。
モデル推論に MLflow を使用する
MLflow は、バッチ推論またはストリーミング推論のコードを生成するのに役立ちます。
- MLflow モデル レジストリでは、Delta Live Tables を使用してバッチまたはストリーミング推論用にノートブックを自動的に生成できます。
- モデルの MLflow 実行ページでは、pandas または Apache Spark DataFrames で推論するために生成されたコード スニペットをコピーできます。
上記のいずれかのオプションで生成されたコードをカスタマイズすることもできます。 例については、次のノートブックを参照してください。
- モデル推論の例では、scikit-learn でトレーニングされ、以前に MLflow にログ記録されたモデルを使用して、モデルを読み込み、それを使用してさまざまな形式のデータに対する予測を行う方法を示します。 このノートブックは、モデルを scikit-learn モデルとして pandas DataFrame に適用する方法と、モデルを PySpark UDF として Spark DataFrame に適用する方法を示しています。
- MLflow モデル レジストリの例では、モデル レジストリを使用してモデルをビルド、管理、デプロイする方法を示しています。 そのページで、
.predict
を検索してオフライン (バッチ) 予測の例を確認できます。
Azure Databricks ジョブを作成する
バッチ予測またはストリーミング予測をジョブとして実行するには、予測の実行に使用されるコードを含むノートブックまたは JAR を作成します。 次に、ノートブックまたは JAR を Azure Databricks ジョブとして実行します。 ジョブは、すぐに実行することも、スケジュールに従って実行することもできます。
ストリーミング推論
MLflow モデル レジストリから、MLflow PySpark 推論 UDF と Delta Live Tables を統合するノートブックを 自動的に生成できます。
生成された推論ノートブックを変更して、Apache Spark 構造化ストリーミング API を使用することもできます。
ディープ ラーニング モデルを使用した推論
Azure Databricks のディープ ラーニング モデル推論の詳細と例については、以下の記事を参照してください:
MLlib モデルと XGBoost4J モデルを使用した推論
MLib と XGBoost4J モデルを使用したスケーラブルなモデル推論では、ネイティブの transform
メソッドを使用して、Spark データ フレームに対して直接推論を実行します。 MLlib ノートブックの例には、推論手順が含まれます。
モデル推論のカスタマイズと最適化
MLflow API を使用して Spark DataFrames で推論を実行する場合は、Spark UDF としてモデルを読み込み、分散コンピューティングを使用して大規模に適用できます。
モデルをカスタマイズして、前処理または後処理を追加したり、大規模なモデルのために計算パフォーマンスを最適化したりできます。 モデルをカスタマイズするための適切なオプションは、カスタム ロジックでモデルをラップできる MLflow pyfunc API です。
さらにカスタマイズする必要がある場合は、Pandas UDF または pandas 反復子 UDF で機械学習モデルを手動でラップできます。 ディープ ラーニングの例を参照してください。
小規模なデータセットでは、ライブラリによって提供される、ネイティブのモデル推論ルーチンを使用することもできます。