Model Serving のデバッグ ガイド

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

ログへのアクセスと確認

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

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

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

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

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

依存関係がない

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

サービス ログのループ

コンテナーのビルドが失敗した場合は、エンドポイントがモデルを読み込もうとしたときにループしていないか、サービス ログを調べます。 この挙動が見つかった場合は、次の手順を試してください。

  1. ノートブックを開き、Databricks Runtime for Machine Learning ではなく 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 で、無関係なアーティファクトがモデルと共にログに記録されていないことを確認し、スリム化されたパッケージを再デプロイしてみてください。

Unity Catalog からのモデルの提供に関する Azure Firewall の問題

Build could not start due to an internal error. If you are serving a model from UC and Azure Firewall is enabled, this is not supported by default. のようなエラーが表示される場合があります。

解決のお手伝いが必要な場合は、Databricks アカウント チームにお問い合わせください。

GPU の可用性がないためにビルドが失敗する

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

解決のお手伝いが必要な場合は、Databricks アカウント チームにお問い合わせください。