注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

トラブルシューティングガイド

カスタム環境の初期化が遅い

初期化が遅い場合、一般的には環境定義が大きすぎるか、複雑すぎることを示しています。初期化時間は、環境内のパッケージ数に対して線形以上の割合で増加する傾向があります。また、Foundry では、よく使用される環境を事前に初期化していることが多いため、デフォルトのプロファイルに基づいてカスタム環境を作成した場合、初期化が遅いのは、事前に初期化された環境が使われなくなり、新しい環境が作成されるまで待つ必要があるためと考えられます。環境の作成プロセスの詳細については、環境作成の概要を参照してください。

次の方法を試してください。

  1. 元に戻す - 設定を変更した後に環境の初期化が遅くなった場合は、その変更を元に戻してみてください。場合によっては、パッケージを1個追加するだけでも、初期化時間が大幅に増加することがあります。
  2. 簡素化する - 環境定義から不要なパッケージを削除します。小規模で特定の用途に特化した環境は、大規模で汎用的な環境よりもはるかに高いパフォーマンスを発揮します。
  3. バージョンを固定する - 環境を選択するで説明されているように、環境設定パネルで一部のパッケージにバージョン制約を追加します。これは、python のように選択可能なバージョンが多いパッケージや、scipy のように依存関係グラフが複雑なパッケージに対して最も効果的です。特定のパッケージを追加したことで環境の初期化が遅くなった場合は、そのパッケージのバージョンを固定してみてください。
    • 注意点:バージョンを固定すると、環境の制約を満たせなくなることがあります。環境の初期化に失敗する場合は、バージョンの固定条件を緩めてみてください。たとえば、python=3.6.10 はそのバージョンにのみ一致しますが、python=3.6 は python 3.6.x のどのバージョンにも一致するため、制約を満たせる可能性が高くなります。
    • 1つの方法として、バージョンを固定せずに環境の解決が完了するのを待ち、選択されたバージョンを確認できます(解決済みの環境を表示するを参照)。その後、初期化のパフォーマンスが十分に速くなるまで、選択された特定のバージョンに固定していくことができます。通常は、依存関係が多いパッケージのバージョンを固定し、それ以外のすべてのパッケージは固定しないことが最適です。

環境の初期化に失敗する

環境の初期化に失敗した場合は、環境の起動エラーログを表示して、問題の詳細を確認できます。

environment_error_dialog

ログの最初の行には、Execution failed with non-zero exit code: に続いて整数のエラーコードが表示されます。このエラーコードは、具体的な失敗の種類を示します。

コード1 - 環境の解決エラー

このエラーは、指定したパッケージ(またはその依存関係)の一部に互換性がないか、インストールできなかったことを示します。環境設定パネルでの最近の変更によって初期化に失敗するようになった場合は、その変更を元に戻してみてください。以下に、一般的な環境の解決エラーを示します。

新しい Mamba エラーメッセージ

Palantir は、環境の初期化エラーメッセージの書式設定を改善することで、オープンソースの Mamba コミュニティに貢献しました ↗。2023年2月以降、Foundry サービスでは、環境の初期化に失敗する原因となった依存関係ツリーの問題を、より正確に表すエラーメッセージが利用されています。

これらの新しいメッセージの理解と解釈、および対処方法については、新しいエラーメッセージを参照してください。

レガシー Mamba エラーメッセージ

新しい Mamba エラーメッセージが導入される前のレガシーエラーメッセージのうち、一般的なものを以下に示します。

パッケージが見つからない

この場合、設定済みのどのチャネルからも、依存関係であるパッケージ A が提供されていません。

Copied!
1 Problem: nothing provides requested A.a.a.a

これは、固定したパッケージのバージョンが存在しない場合に発生することがあります。この場合は、meta.yml 内のパッケージのバージョン指定を緩和するか、削除してみてください。たとえば、matplotlib 1.1.1 を matplotlib に変更します。また、指定したバージョンをインストールするために必要なパッケージを環境マネージャーが見つけられなかったことを意味する場合もあります。

依存関係が見つからない

この場合、パッケージ A には必須の依存関係 B が含まれていますが、どのチャネルからも提供されていません。

Copied!
1 Problem: nothing provides B-b.b.b needed by A-a.a.a:

B は、ユーザーが明示的に要求したパッケージ(meta.yml/foundry-ml/vector プロファイル内)、または推移的依存関係の場合があります。

これは、エンロールメントで B をインストールできない場合に発生することがあります。たとえば、B の公開が停止されているため、インストールできない場合があります。

この場合は、すべての依存関係が利用可能な A のバージョンが存在する可能性があるため、A のバージョン固定を解除してみてください。または、必要なパッケージを Foundry にインポートするために、Palantir の担当者にお問い合わせください。

パッケージの重複エラー
Copied!
1 cannot install both X.a.b.c and X.d.e.f

このエラーは、同じパッケージ X をインストールしようとして、異なる2つのバージョンを固定している場合に発生します。たとえば、meta.yml で python 3.6.* と python 3.7.* の両方を固定しようとすると、このエラーが発生することがあります。重複しているパッケージのバージョン固定のいずれかを削除すると、この問題を解決できます。

権限エラー
Copied!
1 CondaService:ReadRepositoryPermissionDenied

このエラーが発生する場合、必要なアセットやパッケージの一部がエンロールメントで利用できない可能性があります。

パッケージの競合

この場合、パッケージ A はパッケージ B のバージョンに要件がありますが、この B のバージョンがほかのパッケージと競合しています。

Copied!
1 Problem: package A-a.a.a requires B >=2.2.5,<2.3.0a0, but none of the providers can be installed

パッケージ B は、環境の要件として明示的に記載していない A の推移的依存関係を指している可能性があります。推移的依存関係の詳細については、解決済み環境のドキュメントを参照してください。

コード1のエラーに対処する

環境の初期化の失敗に対処するには、次の手順を検討してください。

  1. 環境の起動ログで STDOUT を確認します。
  2. 環境の解決に失敗する最小限の例を作成します。環境が初期化されるまでパッケージを削除し、その後、どのパッケージが妨げになっているかを特定できるまでパッケージを追加し直します。
  3. パッケージのバージョン固定を解除して、制約を緩和してみてください。
    • 複数のワークブック、または同じワークブックの複数のブランチを別々のウィンドウで開くと、この作業をより速く進められます。
    • 問題の特定には二分探索を使用することを推奨します。1つのワークブックですべての制約を削除し、別のワークブックで制約の半分を削除し、さらに別のワークブックで残りの半分を削除する、といった方法を試してみてください。

コード137 - モジュールのメモリー不足

このエラーは通常、環境の初期化に必要なメモリーが、Spark モジュールで利用可能なメモリーを超えたことを示します。環境設定パネルでの最近の変更によって初期化に失敗するようになった場合は、その変更を元に戻してみてください。それ以外の場合は、次の対処方法のうち1つ以上を試してみてください。

  • 環境から不要なパッケージを削除します。メモリー使用量は、環境内のパッケージ数に対して線形よりも速く増加するため、少数のパッケージを削除するだけでも問題を解決できる場合があります。
  • 環境の初期化が遅いセクションのステップ3に従って、一部のパッケージにバージョンの制約を追加します。パッケージのバージョンを固定するたびに、環境の解決の複雑さが低下し、その結果、環境の初期化に必要なメモリー量が減少します。

不要なパッケージをすべて削除し、残りのパッケージの一部を特定のバージョンに固定しても環境の初期化に失敗する場合は、試したすべてのデバッグ手順の詳細を添えて、Palantir の担当者にお問い合わせください。

その他のコード

上記に記載されていないエラーコードで環境の初期化に失敗し、再試行しても再び失敗する場合は、エラーログの全文を添えて、Palantir の担当者にお問い合わせください。

デフォルト環境の初期化速度が一定しない

デフォルトのプロファイルは、初期化が速い場合と時間がかかる場合があることを想定しています。時間がかかる場合は、Mamba が環境の仕様を解決し、ワークブックの基盤となる Spark モジュールにインストールするのを待っている状態です。これがデフォルトの動作です。速い場合は、初期化済みのモジュールが割り当てられたか、環境の仕様がキャッシュ内の解決済み環境と一致しており、すぐにインストールできます。多くのユーザーがほぼ同時にワークブックを開いている場合は、初期化済みのモジュールが割り当てられる可能性が低くなり、新しいモジュールが起動するまで待つ必要があります。

Conda パッケージと JAR の両方が必要なパッケージ

一部のパッケージを利用するには、Conda パッケージと JAR の両方が必要です。一般的な例として、graphframes パッケージがあります。このようなパッケージには特別なセットアップ手順が必要です。お使いのインスタンスでこのパッケージがまだ設定されていない場合、ビルド時に次のエラーが発生することがあります。

Copied!
1 o257.loadClass.: java.lang.ClassNotFoundException:<Class>

Control Panel で、Conda 環境設定タブのアドバンスドセクションから、プロファイルの設定に JAR ファイルを追加できます(Code Workbook プロファイルを設定するを参照)。このようなパッケージの設定で支援が必要な場合は、Palantir の担当者にお問い合わせください。

その他の問題

上記のガイダンスだけでは問題を解決できない場合、またはこのガイドの対象外の問題が発生した場合は、試したデバッグ手順の詳細を添えて、Palantir の担当者にお問い合わせください。