注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Code Repositories でビルドを実行するには、Foundry コンピュート(コンピュート秒で測定されるリソース)が必要です。このドキュメントでは、ビルドがコンピュートをどのように使用し、製品内でコンピュート使用量を調査および管理する方法に関する情報を提供します。
1 つ以上のデータセットの変換ビルドを実行すると、Foundry は変換ロジックをサーバーレスコンピュートクラスタに取り込み、コードを実行します。ビルドの長さとサイズは、コードの複雑さ、入力および出力データセットのサイズ、コードに設定されたSpark 計算プロファイルによって異なります。
入力データセット上でコードを実行するためには、Foundry コンピュート(Foundry コンピュート秒で測定される)が必要であり、並列コンピュートを実行して変換の出力が Foundry ストレージに書き込まれる場合には Foundry ストレージが必要です。コードを書く行為自体はコンピュート使用量を発生させません。データセットのビルドがコンピュート使用量を発生させます。
Code Repositories のトランスフォームエンジンは、バックエンドで並列コンピュートを使用し、最も一般的には Spark のスケーラブルコンピューティングフレームワークで動作します。Code Repositories の変換は、ジョブの実行中に使用される Foundry コンピュート秒 の合計数で測定されます。これらのコンピュート秒は、ジョブ全体の期間、つまり入力データセットからの読み取り時間、コードの実行時間(I/O 待ち時間などの操作を含む)、および出力データセットを Foundry に書き戻す時間を含めて測定されます。
並列計算を利用するように変換を設定することができます。コンピュート秒はコンピュートランタイムの尺度であり、ウォールクロックタイムではないため、並列変換はウォールクロック秒あたり複数のコンピュート秒を発生させます。Code Repositories のジョブに対する並列コンピュートの Foundry コンピュート秒の測定方法の詳細については、以下の例をご覧ください。
Foundry の使用料金を支払う際のデフォルトの使用料金は以下のとおりです。
vCPU / GPU | 使用率 |
---|---|
vCPU | 1 |
T4 GPU | 1.2 |
Palantir とのエンタープライズ契約がある場合は、コンピュート使用量の計算を進める前に Palantir の担当者にお問い合わせください。
使用情報は、使用メトリックのドリルダウンを許可するリソース管理アプリケーションで確認できます。
ビルドが Foundry コンピュート使用量のドライバーである一方、その使用量はそれに関連する長寿命リソースに記録されます。データセット変換の場合、リソースはジョブによって具現化されるデータセット(またはデータセットのセット)です。リソース使用メトリックの下のデータセット詳細タブで、データセットの使用量のタイムラインを表示できます。
複数の出力データセットを生成する変換では、コンピュート使用量はすべてのデータセット間で均等に分配されることに注意してください。たとえば、変換ジョブが 2 つのデータセットを作成し、1 つは 5 行で、もう 1 つは 500 万行である場合、Foundry コンピュート秒の数は両方のデータセット間で均等に分配されます。
早期にキャンセルされない限り、Code Repositories の変換は、すべてのロジックがすべてのデータで実行され、出力が Foundry に書き戻されるまで実行されます。このランタイムに影響する 2 つの主要な要素は、(1)入力データのサイズと(2)変換ロジックによって実行される計算操作の複雑さです。
5 * 5
と 5!
の間の操作数を考えてみましょう。5 * 5
は 1 つの乗算操作です。5!
は 5 * 4 * 3 * 2 * 1
(4 つの乗算操作)に相当し、これは 5 * 5
の例の 2 倍の複雑さです。ジョブが集約、結合、または機械学習アルゴリズムなどのタスクで複雑になるにつれて、ジョブがデータで完了しなければならない操作の数が増えます。各ジョブについて、パフォーマンスとコンピュート使用量をドライブした基本的なコンピュートメトリックを確認できます。詳細については、Spark の詳細を理解するを参照してください。
ジョブ内で、Foundry コンピュート秒は、サイズおよび並列化されたエグゼキュータの数によって駆動されます。これらの設定は、ジョブごとに完全に設定可能です。ジョブごとにどのように設定されるかについては、Spark 計算プロファイルのドキュメントを確認してください。エグゼキュータのサイズは、メモリと vCPU の数で制御されます。エグゼキュータごとの vCPU の増加とメモリの増加は、そのエグゼキュータによって発生するコンピュート秒を増加させます。
同時タスクの数は、設定されたエグゼキュータ数とそれに対応する vCPU 数によって駆動されます。構成オーバーライドが指定されていない場合、変換はデフォルトの Spark プロファイルを使用します。結果として得られるデータセットの Foundry ストレージは、作成されるデータセットのサイズによって駆動されます。
最後に、異なるロジックを持つジョブは、非常に異なる数の操作で同じ結果を達成することができます。
ジョブが使用するコンピュート秒を最適化および管理する方法はいくつかあります。このセクションでは、一般的に使用される最適化手法に関する詳細情報へのリンクを提供します。
この例では、標準メモリ要求を持つ静的に割り当てられたジョブの Foundry コンピュートの測定方法を示しています。
ドライバープロファイル:
vCPUs: 1
GiB_RAM: 6
エグゼキュータプロファイル:
vCPUs: 1
GiB_RAM: 6
Count: 4
合計ジョブ壁時計ランタイム:
120秒
計算
driver_compute_seconds = max(num_vcpu, GiB_RAM/7.5) * num_seconds
= max(1vcpu, 6gib/7.5gib) * 120秒
= 120コンピュート秒
executor_compute_seconds = num_executors * max(num_vcpu, GiB_RAM/7.5) * num_seconds
= 4 * max(1, 6/7.5) * 120秒
= 480コンピュート秒
total_compute_seconds = 120 + 480 = 600コンピュート秒
注釈:
このコードは、特定のジョブのコンピュート時間を計算しています。この計算は、使用されるCPUとメモリの量に基づいています。また、ジョブの合計実行時間も考慮に入れています。
'driver_compute_seconds'は、ドライバーの計算時間を計算します。これは、使用されるvCPUの数か、使用されるRAMの量(GiB)を7.5で割ったもの(これらのうち大きい方)にジョブの秒数を掛けて求められます。
'executor_compute_seconds'は、エグゼキュータの計算時間を計算します。これは、エグゼキュータの数に使用されるvCPUの数か、使用されるRAMの量(GiB)を7.5で割ったもの(これらのうち大きい方)にジョブの秒数を掛けて求められます。
'total_compute_seconds'は、ドライバーとエグゼキュータの合計の計算時間です。
この例では、大きなメモリ要求を持つ静的に割り当てられたジョブに対して、Foundry Compute の計測方法を説明します。
ドライバープロファイル:
vCPUs: 2
GiB_RAM: 6
エグゼキュータープロファイル:
vCPUs: 1
GiB_RAM: 15
Count: 4
全ジョブの壁時計ランタイム:
120秒
計算:
driver_compute_seconds = max(num_vcpu, GiB_RAM/7.5) * num_seconds
= max(2vcpu, 6gib/7.5gib) * 120秒
= 240計算秒
executor_compute_seconds = num_executors * max(num_vcpu, GiB_RAM/7.5) * num_seconds
= 2 * max(1, 15/7.5) * 120秒
= 960計算秒
total_compute_seconds = driver_compute_seconds + executor_compute_seconds
= 240 + 480 = 720計算秒
コメント:
このコードは、特定のジョブの計算時間を計算するためのものです。計算時間は、ドライバーとエグゼキューターの計算時間の合計で計算されます。ドライバーとエグゼキューターの計算時間は、それぞれのvCPU数とRAM量(7.5で除算)の大きい方を採用し、ジョブの壁時計ランタイム(この場合は120秒)で乗じます。
この例では、Foundry Compute の測定方法を、動的に割り当てられたジョブについて説明します。このジョブでは、実行時間の一部が 2 つのエグゼキュータで実行され、残りの実行時間は 4 つのエグゼキュータで実行されます。
ドライバープロファイル:
vCPUs: 2
GiB_RAM: 6
エクゼキュータプロファイル:
vCPUs: 1
GiB_RAM: 6
数量:
最小: 2
最大: 4
全体のジョブのウォールクロックランタイム:
120秒:
2エクゼキュータ: 60秒
4エクゼキュータ: 60秒
計算:
driver_compute_seconds = max(num_vcpu, GiB_RAM/7.5) * num_seconds
= max(2vcpu, 6gib/7.5gib) * 120sec
= 240 compute-seconds
# 2エクゼキュータでのジョブ時間についての計算秒を計算します
2_executor_compute_seconds = num_executors * max(num_vcpu, GiB_RAM/7.5) * num_seconds
= 2 * max(1, 6/7.5) * 60sec
= 120 compute-seconds
# 4エクゼキュータでのジョブ時間についての計算秒を計算します
4_executor_compute_seconds = num_executors * max(num_vcpu, GiB_RAM/7.5) * num_seconds
= 4 * max(1, 6/7.5) * 60sec
= 240 compute-seconds
total_compute_seconds = driver_compute_seconds + 2_executor_compute_seconds + 4_executor_compute_seconds
= 240 + 120 + 240 = 600 compute-seconds
この例では、静的に割り当てられたジョブの Foundry GPU コンピュートの計測方法を示します。
ドライバープロファイル:
T4 GPU: 1
実行者プロファイル:
T4 GPU: 1
カウント: 4
合計ジョブ壁時計ランタイム:
120秒
計算:
# ドライバー計算時間 = GPU数 * GPU使用率 * 秒数
driver_compute_seconds = num_gpu * gpu_usage_rate * num_seconds
= 1gpu * 1.2 * 120sec
= 144 計算秒
# 実行者計算時間 = 実行者数 * GPU数 * GPU使用率 * 秒数
executor_compute_seconds = num_executors * num_gpu * gpu_usage_rate * num_seconds
= 4 * 1 * 1.2 * 120sec
= 576 計算秒
# 合計計算時間 = 144 + 576 = 720 計算秒
total_compute_seconds = 144 + 576 = 720 計算秒