注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry のオントロジーは、オブジェクトを高速アクセスに最適化されたストレージ形式であるオントロジーインデックスに保存します。Foundry データセット内のデータは任意のサイズや形式であるため、データセットのデータをオントロジーインデックスに保存するためのデータ変換が必要となります。このプロセスはオントロジーインデックス化と呼ばれ、任意のサイズのデータセットとオブジェクトに適用できます。オントロジーインデックス化の処理コストは、コンピュート秒で測定されます。このドキュメンテーションでは、オントロジーインデックス化がコンピュートをどのように使用するか、およびコンピュート使用量をどのように管理するかについて説明します。
オントロジーインデックス化は、並列化されたSparkバックエンドを使用して、任意の大きさのデータセットを読み込み、それらをオントロジー形式に変換します。インデックス化ジョブを実行するために使用されるコンピュートの量は、使用される計算リソース(ドライバーとエグゼキューター)の量と、インデックス化ジョブ自体の全体的な壁掛け時間に基づいています。
Spark使用量がどのようにコンピュート秒に変換されるかについての詳細は、主要な 使用タイプ のドキュメンテーションを参照してください。以下では、オントロジーインデックス化によって使用されるコンピュート秒の計算例を見つけることができます。
オントロジーインデックス化ジョブは Foundry の Builds アプリケーションで公開され、インデックス化されているオブジェクトに関連付けられています。オントロジーインデックス化ジョブは Spark ジョブであり、並列化されたバッチコンピュートとして分類されるため、Code Repositories の変換や Contour のクエリなど、同じバックエンド上の他のジョブと同じ方法で測定することができます。
インデックス化ジョブは、それらがトリガーされる方法に基づいてカテゴライズすることができます。
オントロジーインデックス化ジョブは、インデックス化する必要があるすべてのデータを読み込み、それをオントロジーバックエンドが迅速に保存、検索、編集できる形式に変換する必要があります。
データの読み取りとインデックス化時のコンピュート使用量は、以下の要素によって引き起こされます:
インデックス化の頻度も、オントロジーの更新に使用されるコンピュートの量に大きな影響を与えます。上流のデータセットに設定されたスケジュールは、オブジェクトの自動再インデックス化をトリガーします。オブジェクトを最新の状態に保つための使用量の含意を調べるときは、そのオブジェクトとその上流のデータセットに対する更新スケジュールを考慮に入れてください。
オントロジーインデックス化ジョブは最適化してコンピュート使用量を減らすことが可能です。最適化の最初の方法であり最も簡単な方法は、インデックスの入力データのサイズを減らすことで、ジョブを完了するために必要な作業量を減らすことです。これには、可能な場合に以下のことを行うことが含まれます:
別の最適化方法は、オントロジーインデックスジョブをインデックス化のためのチェンジログ戦略を使用するように設定することです。チェンジログインデックス化は、ジョブを実行する前に既存のオブジェクトと比較することで、作成または更新する必要があるオブジェクトの数を大幅に減らします。チェンジログインデックス化にはより多くの設定と更新戦略への準拠が必要ですが、パフォーマンスと効率性の向上をもたらすことができます。
インデックス化ジョブは並列化された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