Beam Pythonの回復不能エラー
回復不能エラーは、ジョブの起動時に発生し、ジョブが正常に実行されるのを妨げる問題です。通常、この問題は誤った設定が原因です。このページでは、一般的なエラーとそのトラブルシューティング情報を説明します。
ジョブの送信またはPythonランタイムバージョンの不一致
ジョブの送信に使用したPythonバージョンと、ワーカーコンテナの構築に使用したPythonバージョンが一致しない場合、ジョブは実行されません。ジョブはジョブの送信直後に失敗します。
この問題を解決するには、ジョブの送信に使用したPythonバージョンとPythonコンテナのバージョンが一致していることを確認します。
pipによる依存関係解決の失敗
ワーカーの起動中に、ワーカーが失敗し、ランナーによっては再起動を試行することがあります。
ワーカーが作業を受け入れる前に、依存関係がチェックされ、ワーカーコンテナにインストールされます。パイプラインでランタイム環境に存在しない依存関係が必要な場合、この時点でインストールされます。このプロセス中に問題が発生すると、依存関係の解決に失敗することがあります。
問題の例を以下に示します。
- 依存関係のバージョンが見つかりません。
- ワーカーがPyPIに接続できません。
この問題を解決するには、ジョブを送信する前に、`requirements.txt`ファイルに指定された依存関係のバージョンが存在し、ローカルにインストールできることを確認します。
依存関係のバージョンの不一致
パイプラインに依存関係のバージョンの不一致がある場合、`ModuleNotFound`エラーまたは`AttributeError`メッセージが表示される場合があります。
`ModuleNotFound`エラーは、`torch`や`transformers`などの追加の依存関係が`requirements_file`に指定されておらず、カスタムコンテナにもプリインストールされていない場合に発生します。この場合、ワーカーはユーザーコードの逆シリアライズ(アンピックル)に失敗することがあります。
依存関係はインストールされているが、そのバージョンが送信環境のバージョンと一致しない場合、パイプラインに`AttributeError`メッセージが表示される場合があります。
これらの問題を解決するには、必要な依存関係とそのバージョンがランタイムと送信環境で同じであることを確認します。これらの問題を特定するために、Apache Beam 2.52.0以降では、デバッグログが両方の段階での依存関係を指定します。詳細については、パイプラインが使用する依存関係を制御するを参照してください。