アプリケーションのデプロイのトラブルシューティング

このドキュメントでは、アプリケーションをデプロイするときに発生する可能性のあるエラーを解決する方法について説明します。

事前構築テンプレートのエラー

デプロイ中に LangchainAgent テンプレートで問題が発生した場合は、このセクションで説明する問題のいずれかが原因である可能性があります。

Model Builder または Runnable Builder のエラー

問題:

次のようなエラー メッセージが表示されます。

AttributeError: 'LangchainAgent' object has no attribute '_model_builder'

または

AttributeError: 'LangchainAgent' object has no attribute '_runnable_builder'

考えられる原因:

これは、1.50.0 より新しいバージョンの google-cloud-aiplatform を使用して開発環境で LangchainAgent を定義し、requirements=1.51.0 より古いバージョンを使用してデプロイした場合に発生することがあります。開発環境で使用しているバージョンを確認するには、ターミナルで次のコマンドを実行します。

pip show google-cloud-aiplatform

推奨される解決策:

バージョン 1.51.0 より前のバージョンの google-cloud-aiplatform を使用している場合は、推論エンジンをデプロイするときに、requirements= でバージョン 1.51.0 より前のバージョンの google-cloud-aiplatform を指定します。

1.50.0 以降のバージョンの google-cloud-aiplatform を使用している場合は、推論エンジンをデプロイするときに、requirements=1.50.0 以降のバージョンの google-cloud-aiplatform を指定します。

サーバーエラー

問題:

次のようなエラー メッセージが表示されます。

InternalServerError: 500 Revision XXX is not ready and cannot serve traffic.

残念ながら、これは実行時のコンテナに関する問題に対するキャッチオール エラーであり、発生する可能性のある多くのエラーのいずれかが原因である可能性があります。

考えられる原因:

  • LangchainAgent の状態が不正です。これは、推論エンジンにデプロイする前に LangchainAgent.set_up() が呼び出された場合に発生する可能性があります。
  • パッケージ バージョンに一貫性がない。これは、開発環境にインストールされているパッケージが、推論エンジンのリモート環境にインストールされているパッケージと異なる場合に発生する可能性があります。

おすすめのソリューション:

  • LangchainAgent の状態が不正です推論エンジンにデプロイする前に、LangchainAgent の新しいインスタンスをインスタンス化するか、コードから agent.set_up() を削除します。
  • パッケージの仕様が一致しないシリアル化エラーのトラブルシューティングに関するセクションをご覧ください。

シリアル化エラー

一般に、推論エンジンにデプロイするときは、「ローカル」環境と「リモート」環境が同期していることを確認することが重要です。これを実現するには、推論エンジンにデプロイするときに requirements= を指定します。

シリアル化に関する問題が発生した場合(「pickle」または「pickling」に関連するエラーは「serialization」エラーと同義です)、このセクションで説明する問題のいずれかが原因である可能性があります。

Pydantic のバージョン

問題:

次のようなエラー メッセージが表示されます。

PicklingError: Can't pickle <cyfunction str_validator at 0x7ca030133d30>: it's
not the same object as pydantic.validators.str_validator

考えられる原因:

これは、pydantic パッケージがバージョン 2.6.4 より古い場合に発生することがあります。使用しているバージョンを確認するには、ターミナルで次のコマンドを実行します。

pip show pydantic

推奨される解決策:

ターミナルで次のコマンドを実行して、パッケージを更新します。

pip install pydantic --upgrade

ターミナルで次のコマンドを実行して、バージョン 2.6.4 以降を使用していることを確認します。

pip show pydantic

ノートブック インスタンス(Jupyter、Colab、Workbench など)を使用している場合、更新されたパッケージを使用するには、ランタイムを再起動する必要があります。

Cloudpickle のバージョン

問題:

次のようなエラー メッセージが表示されます。

AttributeError: Can't get attribute '_class_setstate' on <module 'cloudpickle.cloudpickle'
from '/usr/local/lib/python3.10/site-packages/cloudpickle/cloudpickle.py'>

考えられる原因:

これは、開発環境とデプロイ環境で cloudpickle パッケージのバージョンが異なる場合に発生することがあります。開発で使用しているバージョンを確認するには、ターミナルで次のコマンドを実行します。

pip show cloudpickle

推奨される解決策:

推論エンジンをデプロイする際に requirements= を指定して、両方の環境(ローカル開発環境とリモートでデプロイされた推論エンジン環境)に同じバージョンの cloudpickle をデプロイします。

サーバーエラー

問題:

次のようなエラー メッセージが表示されます。

InternalServerError: 500 Revision XXX is not ready and cannot serve traffic.

考えられる原因:

これは、推論エンジンにデプロイするときに、sys_version= が開発環境と異なる場合に発生する可能性があります。

推奨される解決策:

推論エンジンにデプロイする場合は、入力引数から sys_version= を削除することを検討してください。問題が解決しない場合は、バグレポートを提出してください。

Cloud Storage バケットのエラー

エージェントの収集とアップロードにデプロイ時に使用される Cloud Storage ステージング バケットで問題が発生した場合は、次のいずれかの問題が原因である可能性があります。

権限に関するエラー

推奨される解決策:

既存のバケットを使用する場合は、Vertex AI の使用を認証されたプリンシパル(ご自身またはサービス アカウント)に、バケットへの Storage Admin アクセス権があることを確認し、Google が管理する推論エンジン サービス アカウントに権限を付与します。

または、推論エンジンにデプロイするときに新しいバケットを指定すると、推論エンジンのクライアント SDK が必要な権限を持つバケットを作成します。

問題が解決しない場合は、バグレポートを提出してください。

Cloud Storage バケットのサブディレクトリが作成されない

問題:

次のようなエラー メッセージが表示されます。

NotFound: 404 Can not copy from \"gs://[LOCATION]-*/reasoning_engine/reasoning_engine.pkl\" to \"gs://*/code.pkl\", check if the source object and target bucket exist.

(404 は、存在しないフォルダにコピーしようとすると発生します)

考えられる原因:

これは、バージョン 1.49.0 より前の google-cloud-aiplatform のバージョンで文字列補間に問題があるためと考えられます。この問題は、以降のバージョンで修正されています。使用している google-cloud-aiplatform のバージョンを確認するには、ターミナルで次のコマンドを実行します。

pip show google-cloud-aiplatform

推奨される解決策:

ターミナルで次のコマンドを実行して、パッケージを更新します。

pip install google-cloud-aiplatform --upgrade

ターミナルで次のコマンドを実行して、google-cloud-aiplatform のバージョン 1.49.0 以降を使用していることを確認します。

pip show google-cloud-aiplatform

ノートブック インスタンス(Jupyter、Colab、Workbench など)を使用している場合、更新されたパッケージを使用する前にランタイムを再起動する必要があります。