モデルサービングのデバッグガイド

この記事では、モデルサービング エンドポイントを操作するときにユーザーが遭遇する可能性のある一般的な問題のデバッグ ステップについて説明します。 一般的な問題には、エンドポイントの初期化または開始に失敗したときにユーザーが遭遇するエラー、コンテナーに関連するビルド エラー、エンドポイントでのモデルの操作または実行中の問題などがあります。

ログへのアクセスとレビュー

Databricks では、モデルサービングワークロードのデバッグとエラーのトラブルシューティングについてビルドログを確認することをお勧めします。 ログとその表示方法については、「 モデルの品質とエンドポイントの正常性の監視 」を参照してください。

ワークスペース UI でモデルのイベント ログを確認し、コンテナーのビルド メッセージが成功したかどうかを確認します。 1 時間経ってもビルド メッセージが表示されない場合は、Databricks サポートにお問い合わせください。

ビルドは成功したが、他のエラーが発生した場合は、「 コンテナのビルドが成功した後のデバッグ」を参照してください。 ビルドが失敗した場合は、「 コンテナのビルド失敗後のデバッグ」を参照してください。

インストールされているライブラリパッケージのバージョン

ビルド ログでは、インストールされているパッケージのバージョンを確認できます。

  • MLflowバージョンでは、バージョンが指定されていない場合、モデルサービングは最新バージョンを使用します。

  • カスタム GPU サービングの場合、モデルサービングは、公開されている PyTorch と Tensorflow のドキュメントに従って、cudacuDNN の推奨バージョンをインストールします。

コンテナのビルドが成功した後のデバッグ

コンテナが正常にビルドされた場合でも、モデルの実行時やエンドポイント自体の操作中に問題が発生する可能性があります。 次のサブセクションでは、一般的な問題と、トラブルシューティングとデバッグの方法について説明します

依存関係がない

An error occurred while loading the model. No module named <module-name>.のようなエラーが表示される場合があります。このエラーは、依存関係がコンテナーに存在しないことを示している可能性があります。 コンテナのビルドに含める必要があるすべての依存関係を適切に示していることを確認します。 カスタムライブラリに特に注意を払い、 .whl ファイルがアーティファクトとして含まれていることを確認してください。

サービスログのループ

コンテナのビルドが失敗した場合は、サービスログをチェックして、エンドポイントがモデルを読み込もうとしたときにループしているかどうかを確認します。 この動作が見られる場合は、次の手順を試してください。

  1. ノートブックを開き、機械学習用のDatabricks Runtimeではなく、Databricks Runtimeバージョンを使用するAll-Purposeクラスターにアタッチします。

  2. 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() 関数の問題が強調表示され、メソッド内のどこでエラーが発生しているかを確認できます。

ワークスペースがプロビジョニングされた同時実行数を超えています

Workspace exceeded provisioned concurrency quotaエラーが表示される場合があります。

コンカレンシーは、リージョンの可用性に応じて増やすことができます。 Databricks アカウント チームに連絡し、ワークスペース ID を提供して、コンカレンシーの増加をリクエストしてください。

コンテナのビルド失敗後のデバッグ

このセクションでは、ビルドが失敗したときに発生する可能性のある問題について詳しく説明します。

OSError: [Errno 28] No space left on device

No space leftエラーは、モデルと一緒に記録される大きなアーティファクトが不必要に多すぎることが原因である可能性があります。MLflow で、無関係な成果物がモデルと共にログに記録されていないことを確認し、スリム化されたパッケージの再デプロイを試みます。

GPU の可用性不足によるビルドの失敗

次のようなエラーが表示される場合があります Build could not start due to an internal error - please contact your Databricks representative.

Databricksアカウントチームに連絡して解決してください。