このトピックでは、GPUトポロジとトポロジ認識GPUスケジューリングの利点について説明します。
GPUトポロジ
次の図は、8 基の Tesla V100 GPU が NVLink を通して相互通信するトポロジを表しています。 各Tesla V100 GPUには6つのNVLinkが割り当てられます。 ただし、2つのテスラV100 GPUごとにNVLinkを確立することはできません。 2つのTesla V100 GPU間で、最大2つのNVLinkを確立できます。 この例では、GPU 0 と GPU 3 の間に 2 つの NVLink が確立されています。 また、GPU 0 および GPU 4 の間に 2 つの NVLink が確立されています。 さらに GPU 0 と GPU 1 の間に 1 つの NVLink が確立されます。 GPU0とGPU6は、NVLinkではなくPCIe (Peripheral Component Interconnect Express) を介して互いに通信します。
トポロジ対応GPUスケジューリングの利点
各NVLinkの一方向帯域幅および双方向帯域幅は、25ギガバイト/秒および50ギガバイト/秒である。 PCIeリンクの帯域幅は16ギガバイト/秒です。 さまざまなGPUモデルを組み合わせて、トレーニングジョブに最適なGPUアクセラレーションを実現できます。
Kubernetesは、ノード上のGPUリソースのトポロジを認識していません。 したがって、Kubernetes による GPU リソースのスケジューリングはランダムな方法で行われます。 その結果、トレーニングジョブのGPUアクセラレーションは、GPUリソースのスケジューリング結果に基づいて大きく異なります。 Container Service for Kubernetes (ACK) は、スケジューリングフレームワークに基づくトポロジ対応GPUスケジューリングをサポートしています。 この機能は、GPUアクセラレーションノードからGPUの組み合わせを選択して、トレーニングジョブに最適なGPUアクセラレーションを実現します。