モデルサービングでカスタム Python ライブラリを使用する
プレビュー
Mosaic AI Model Serving は パブリック プレビュー 段階にあり、 us-east1
と us-central1
でサポートされています。
この記事では、モデルをログに記録するときにカスタムライブラリまたはプライベートミラーサーバーからのライブラリを含めて、 それらを Mosaic AI Model Serving モデルのデプロイで使用できるようにする方法を学びます。 このガイドで詳しく説明されている手順は、トレーニング済みの ML モデルをデプロイする準備ができた後、Databricksモデルサービングエンドポイントを作成する前に完了する必要があります。
モデル開発では、多くの場合、前処理または後処理の関数、カスタム モデル定義、およびその他の共有ユーティリティを含むカスタム Python ライブラリを使用する必要があります。 さらに、多くのエンタープライズセキュリティチームは、 サプライチェーン攻撃のリスクを減らすために、NexusやArtifactoryなどのプライベートPyPiミラーの使用を推奨しています。 Databricks は、カスタム ライブラリと Databricks ワークスペースのプライベート ミラーからのライブラリのインストールを ネイティブにサポート しています。
必要条件
- MLflow 1.29 以降
ステップ 1: 依存関係ファイルのアップロード
Databricks では、依存関係ファイルを Unity Catalog ボリュームにアップロードすることをお勧めします。 または、Databricks UI を使用して Databricks File System (DBFS) にアップロードすることもできます。
ライブラリをノートブックで使用できるようにするには、 %pip%
を使用してライブラリをインストールする必要があります。 %pip
を使用すると、ライブラリが現在のノートブックにインストールされ、依存関係がクラスターにダウンロードされます。
ステップ 2: カスタム ライブラリを使用してモデルをログに記録する
このセクションのガイダンスは、カスタム PyPi ミラーを指してプライベートライブラリをインストールする場合は必要ありません。
ライブラリをインストールし、Python wheel ファイルを Unity Catalog ボリュームまたは DBFS にアップロードしたら、スクリプトに次のコードを含めます。 extra_pip_requirements
で、依存関係ファイルのパスを指定します。
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/volume/path/to/dependency.whl"])
DBFS の場合は、次を使用します。
mlflow.sklearn.log_model(model, "sklearn-model", extra_pip_requirements=["/dbfs/path/to/dependency.whl"])
カスタム ライブラリがある場合は、ログを構成するときに、モデルに関連付けられているすべてのカスタム Python ライブラリを指定する必要があります。 これは、log_model() の extra_pip_requirements
または conda_env
パラメーターを使用して行うことができます。
DBFS を使用する場合は、extra_pip_requirements
をログに記録するときに、dbfs
パスの前にスラッシュ (/
) を必ず含めてください。DBFS パスの詳細については、「 Databricks でファイルを操作する」を参照してください。
from mlflow.utils.environment import _mlflow_conda_env
conda_env = _mlflow_conda_env(
additional_conda_deps= None,
additional_pip_deps= ["/volumes/path/to/dependency"],
additional_conda_channels=None,
)
mlflow.pyfunc.log_model(..., conda_env = conda_env)
ステップ 3:MLflowPython wheel ファイルを使用してモデルを更新する
MLflowには、 ファイルとして事前にパッケージ化されたすべての依存関係とともにモデルをログに記録するためのadd_libraries_to_model() ユーティリティが用意されています。Python wheelこれにより、モデルの依存関係として指定されている 他のすべての ライブラリに加えて、カスタムライブラリがモデルと共にパッケージ化されます。 これにより、モデルで使用されるライブラリが、トレーニング環境からアクセス可能なライブラリとまったく同じであることが保証されます。
次の例では、model_uri
は構文 models:/<uc-model>/<model-version>
を使用して Unity Catalog モデルレジストリを参照します。 ワークスペース モデルレジストリ (レガシ) を参照するには models:/<model-name>/<model-version>
、.
モデルレジストリ URI を使用すると、このユーティリティは既存の登録済みモデルの下に新しいバージョンを生成します。
import mlflow.models.utils
mlflow.models.utils.add_libraries_to_model(<model-uri>)
ステップ 4: モデルを提供する
パッケージが含まれている新しいモデルバージョンがモデルレジストリで利用可能になったら、 モデルサービングを使用してこのモデルバージョンをエンドポイントに追加できます。