注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry のオントロジーは、高速アクセスに最適化されたストレージ形式であるオントロジーインデックスにオブジェクトを格納します。Foundry データセットのデータは任意のサイズや形式を取れるため、オントロジーインデックスに格納できるようにデータセットのデータを変換する必要があります。このプロセスはオントロジーのインデックス化と呼ばれ、任意のサイズのデータセットとオブジェクトに適用できます。オントロジーのインデックス化の処理コストは、コンピュート秒で測定されます。このドキュメントでは、オントロジーのインデックス化でコンピュートがどのように使用されるか、およびコンピュート使用量の管理方法を説明します。
オントロジーのインデックス化では、並列化された Spark バックエンドを使用して、任意の大きさのデータを読み取り、オントロジーの形式に変換します。インデックス化ジョブの実行に使用されるコンピュート量は、計算リソース(ドライバーとエグゼキューター)の量と、インデックス化ジョブ自体の総実経過時間に基づきます。
Spark の使用量をコンピュート秒に換算する方法の詳細については、使用量の種類のメインドキュメントを参照してください。以下に、オントロジーのインデックス化で使用されるコンピュート秒の計算例を示します。
オントロジーのインデックス化ジョブは、Foundry の Builds アプリケーションに表示され、インデックス化対象のオブジェクトにアタッチされます。オントロジーのインデックス化ジョブは Spark ジョブであり、並列化されたバッチコンピュートに分類されます。そのため、Code Repositories のトランスフォームや Contour のクエリなど、同じバックエンド上のほかのジョブと同じ方法で測定できます。
インデックス化ジョブは、トリガーされる方法に基づいて分類できます。
オントロジーのインデックス化ジョブは、インデックス化が必要なすべてのデータを読み取り、オントロジーのバックエンドで高速に格納、検索、編集できる形式に変換する必要があります。
データの読み取りとインデックス化におけるコンピュート使用量は、次の要因によって決まります。
インデックス化の頻度も、オントロジーの更新に使用されるコンピュート量に大きく影響します。上流データセットに設定されたスケジュールによって、オブジェクトの自動再インデックス化がトリガーされます。オブジェクトを最新の状態に保つことが使用量に与える影響を調べる際は、そのオブジェクトと上流データセットの更新スケジュールを考慮してください。
オントロジーのインデックス化ジョブを最適化することで、コンピュート使用量を削減できます。最初の、最も簡単な最適化方法は、インデックスへの入力データのサイズを減らすことです。これにより、ジョブの完了に必要な処理量が減ります。可能な範囲で、次のことを行います。
もう1つの最適化方法は、オントロジーのインデックス化ジョブで、インデックス化に変更履歴を利用する方式を設定することです。変更履歴を利用するインデックス化では、実行前にジョブを既存のオブジェクトと比較することで、インデックス化ジョブごとに作成または更新する必要があるオブジェクト数を大幅に減らします。変更履歴を利用するインデックス化には、より多くの設定と更新方式の遵守が必要ですが、パフォーマンスと効率が桁違いに向上する可能性があります。
インデックス化ジョブは並列化された Spark ジョブとして実行され、Builds アプリケーションで確認できます。インデックス化ジョブの例を以下に示します。オントロジーのインデックス化ジョブでは、ジョブのサイズに応じて、インデックス化ジョブのドライバーとエグゼキューターのサイズが自動的に選択されます。
Driver:
num_vcpu: 1
GiB_RAM: 6
Executors:
num_vcpu: 1
GiB_RAM: 4
num_executors: 2
Total Runtime: 10 seconds
Calculation:
driver_compute_seconds = max(num_vcpu, GiB_RAM / 7.5) * runtime_in_seconds
= max(1vcpu, 6GiB / 7.5) * 10sec
= 1 * 10 = 10 compute-seconds
executor_compute_seconds = max(num_vcpu, GiB_RAM / 7.5) * num_executors * runtime_in_seconds
= max(1vcpu, 4GiB / 7.5) * 2executors * 10sec
= 1 * 2 * 10 = 20 compute-seconds
total_compute_seconds = driver_commpute_seconds + exeucutor_compute_seconds
= 10 compute-seconds + 20 compute-seconds
= 30 compute-seconds