ACK ProクラスターはGPU共有をサポートしています。 GPU共有を使用して、GPUリソースを共有し、GPUメモリを分離できます。 このトピックでは、複数GPU共有ポリシーを設定する方法について説明します。
前提条件
Introduction to multiple GPU sharing
複数のGPU共有は、コンピューティング能力がコンテナーによって共有され、GPUメモリが分離されているシナリオでのみ使用できます。 コンピューティングパワーが共有されていない場合は、複数のGPU共有を使用できません。
開発者はモデルを開発するときに複数のGPUを使用する必要がありますが、開発プラットフォームはすべてのGPUリソースを使用できません。 すべてのGPUが同じ開発プラットフォームに割り当てられている場合、リソースの浪費が発生する可能性があります。 この問題を回避するには、複数のGPU共有を使用できます。
複数のGPU共有は次のように機能します。アプリケーションは合計でN GiBのGPUメモリを要求し、要求されたメモリ量を割り当てるためにM個のGPUを必要とします。 各GPUによって割り当てられるメモリはN/Mである。N/Mの値は整数で、使用するGPUは同じノードにインストールする必要があります。 例えば、アプリケーションは、8 GiBのメモリを要求し、要求されたメモリを割り当てるために2つのGPUを必要とする。 この場合、ノードは2つのGPUをアプリケーションに割り当てる必要があり、各GPUは4 GiBのメモリを割り当てる必要があります。 単一GPU共有と複数GPU共有の違い:
単一GPU共有: ポッドは、1つのGPUによってのみ割り当てられたGPUリソースを要求できます。
複数のGPU共有: ポッドは、複数のGPUによって均等に割り当てられたGPUリソースを要求できます。
複数のGPU共有ポリシーの設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ページの右上にある [YAMLから作成] をクリックします。 次のコンテンツを [テンプレート] セクションにコピーし、[作成] をクリックします。
YAMLテンプレートの説明:
YAMLテンプレートは、TensorFlow MNISTジョブを定義します。 ジョブは、2つのGPUによって割り当てられた8 GiBのメモリを要求します。 各GPUは、4 GiBのメモリを割り当てる。
aliyun.com/gpu-count=2
ポッドラベルを追加して、2つのGPUを要求します。aliyun.com/gpu-mem: 8
リソース制限を追加して、8 GiBのメモリを要求します。
複数のGPU共有ポリシーの確認
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
tensorflow-mnist-multigpu-*** など、作成したポッドの [操作] 列で [ターミナル] をクリックして、ポッドにログインし、次のコマンドを実行します。
nvidia-smi
期待される出力:
Wed Jun 14 03:24:14 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.161.03 Driver Version: 470.161.03 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000000:00:09.0 Off | 0 | | N/A 38C P0 61W / 300W | 569MiB / 4309MiB | 2% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000000:00:0A.0 Off | 0 | | N/A 36C P0 61W / 300W | 381MiB / 4309MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+
出力は、ポッドが2つのGPUのみを使用できることを示します。 各GPUは、ポッドによって要求されるメモリの4,309のMiBを提供することができる。 各GPUの実際のメモリサイズは16,160 MiBです。
ポッドの [操作] 列で [ログ] をクリックして、ポッドのログを表示します。 次の情報が表示されます。
totalMemory: 4.21GiB freeMemory: 3.91GiB totalMemory: 4.21GiB freeMemory: 3.91GiB
デバイス情報は、各GPUが4 GiBのメモリを割り当てることを示す。 各GPUの実際のメモリサイズは16,160 MiBです。 これは、メモリ分離が実装されることを意味する。