モデルサービングのデバッグガイド
この記事では、モデルサービング エンドポイントを操作するときにユーザーが遭遇する可能性のある一般的な問題のデバッグ ステップについて説明します。 一般的な問題には、エンドポイントの初期化または開始に失敗したときにユーザーが遭遇するエラー、コンテナーに関連するビルド エラー、エンドポイントでのモデルの操作または実行中の問題などがあります。
ログへのアクセスとレビュー
Databricks では、モデルサービングワークロードのデバッグとエラーのトラブルシューティングについてビルドログを確認することをお勧めします。 ログとその表示方法については、「 モデルの品質とエンドポイントの正常性の監視 」を参照してください。
ワークスペース UI でモデルのイベント ログを確認し、コンテナーのビルド メッセージが成功したかどうかを確認します。 1 時間経ってもビルド メッセージが表示されない場合は、Databricks サポートにお問い合わせください。
ビルドは成功したが、他のエラーが発生した場合は、「 コンテナのビルドが成功した後のデバッグ」を参照してください。 ビルドが失敗した場合は、「 コンテナのビルド失敗後のデバッグ」を参照してください。
コンテナのビルドが成功した後のデバッグ
コンテナが正常にビルドされた場合でも、モデルの実行時やエンドポイント自体の操作中に問題が発生する可能性があります。 次のサブセクションでは、一般的な問題と、トラブルシューティングとデバッグの方法について説明します
依存関係がない
An error occurred while loading the model. No module named <module-name>.
のようなエラーが表示される場合があります。このエラーは、依存関係がコンテナーに存在しないことを示している可能性があります。 コンテナのビルドに含める必要があるすべての依存関係を適切に示していることを確認します。 カスタムライブラリに特に注意を払い、 .whl
ファイルがアーティファクトとして含まれていることを確認してください。
サービスログのループ
コンテナのビルドが失敗した場合は、サービスログをチェックして、エンドポイントがモデルを読み込もうとしたときにループしているかどうかを確認します。 この動作が見られる場合は、次の手順を試してください。
ノートブックを開き、機械学習用のDatabricks Runtimeではなく、Databricks Runtimeバージョンを使用するAll-Purposeクラスターにアタッチします。
MLflow を使用してモデルを読み込み、そこからデバッグを試みます。
また、モデルをPCにローカルに読み込み、そこからデバッグすることもできます。 以下を使用してモデルをローカルに読み込みます。
import os
import mlflow
os.environ["MLFLOW_TRACKING_URI"] = "databricks://PROFILE"
ARTIFACT_URI = "model_uri"
if '.' in ARTIFACT_URI:
mlflow.set_registry_uri('databricks-uc')
local_path = mlflow.artifacts.download_artifacts(ARTIFACT_URI)
print(local_path)
conda env create -f local_path/artifact_path/conda.yaml
conda activate mlflow-env
mlflow.pyfunc.load_model(local_path/artifact_path)
エンドポイントにリクエストが送信されるとモデルが失敗する
モデルで predict()
が呼び出されると、Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference.
のようなエラーが表示される場合があります。
predict()
関数にコードの問題があります。Databricks では、MLflow からモデルをノートブックに読み込んで呼び出すことをお勧めします。 これにより、 predict()
関数の問題が強調表示され、メソッド内のどこでエラーが発生しているかを確認できます。