デル eカタログサイト | デル製品 販売支援サイト
情報ガイドステーションメニュー
 |  AI環境でGPUリソースを有効活用
  他ソフトウェアと連携してBitfusionをもっと便利に

   
       
   
       






こんにちは。デル・テクノロジーズでAI関連ソリューションを担当している山口です。
前回の記事ではBitfusionのコマンドでの実行方法とメモリ分割の方法について紹介しましたが、今回は一歩進んで他のソフトウェアとの連携についてご紹介します。



Slurm連携

前回の記事では“-p”や“-m”オプションでGPUメモリ分割を行い、1枚のGPUを複数ユーザで共有できると紹介いたしました。ですが複数ユーザで利用した場合にはGPUが割り上げ済みで必要な分が確保できない場合があります。


<図1>


図1はBitfusionサーバ1台に4枚のGPUがアタッチされている環境で、Job1でGPUを3枚利用しています。その状況で別のBitfusionクライアントからJob2としてGPU2枚の要求があった場合、GPUの空きは1枚だけなので要求された2枚のGPUが確保できず、待ち状態となります。その後Job1が完了した時点でJob2が実行されます。

では次に図1のJob2が待ち状態でJob3の要求があった場合です。


<図2>


Job2までは図1と同じなので待ちとなり、Job3も待ちになります。その後にJob1が完了するとGPUがすべて空き状態となるのですが、次に実行されるJobはJob2とは限らず、Job2またはJob3のいずれかが実行されます。Bitfusionではジョブのプライオリティを設定することができないため他製品との組み合わせが必要です。

私が利用しているデモ環境ではHPC環境で使われることの多いSlurmとBitfusionを連携しジョブの制御を行っています。


SlurmはHPCのTop500のうち60%程度のシステムで利用されていて実績も多くあるワークロードマネージャで、主要な機能は次の3つです。

1. 排他・非排他的なアクセス割り当て
2. ジョブの開始、実行、モニタリング
3. 待機中のジョブキュー管理


SlurmはControllerとWorkerで構成され、Bitfusionと連携する場合は図3の構成になります。



<図3>


コントローラノードでジョブを実行すると指定したワーカーノードにジョブが渡され、ワーカーノード内のBitfusion Clientのサービスを経由してBitfusionサーバのGPUリソースを利用します。

ジョブのプライオリティを指定する場合にはSlurm側で制御するため、コントローラノードでジョブを実行する際にniceやpriorityオプションでプライオリティを設定することにより、待ち状態となったジョブの実行順序を指定することができます。




Jupyter Notebook/Lab連携

AI/ML環境ではJupyter NotebookやJupyter Labを利用することが多いですが、BitfusionはコマンドだけではなくJupyterと連携して利用することもできます。

Jupyter Notebookを利用したことのある方はご存じかと思いますが、通常構築直後は図4のようにPython3の環境でデータ分析やディープラーニングのモデルを作成します。



このKernelにBitfusionを組み込むことによりJupyterでBitfusionのコマンドを意識することなく利用することができます。
Jupyter LabとBitfusionを連携したデモ動画を用意いたしましたので見ていただければイメージがつかめると思います。



デモ動画内ではカーネルを指定することによって同じコードでもBitfusionあり/なしを簡単に変更できることがご覧いただけたかと思います。また、このデモ動画ではNVIDIA T4のGPUメモリ50%をカーネルに割り当てて利用していますが、サイズは柔軟に設定することもできます。


今回はBitfusionをもっと便利に使うために、SlurmとJupyterLabと連携についてご紹介いたしました。これ以外にも事前にBitfusionでGPUリソースを割り当てることによって、コマンドラインで“Bitfusion run”のコマンドを省略する方法などもあり、ユーザや環境に合わせてBitfusionを利用することができますので、利用用途や方法など不明点があれば弊社まで相談ください。



デル・テクノロジーズ
製品本部
シニアシステムエンジニア
山口 泰亜
2021/01/27


関連記事はこちら

情報ガイドステーション ソリューションページ
NVIDIA GPUとコンテナでAI環境作ってみた
DockerでJupyterlab使ってコード実行してみた
GPUのために設計されたサーバー 「PowerEdge C4140」 の実績と実力!
AI環境でGPUリソースを有効活用 BitfusionでGPUをプール化(概要編)
AI環境でGPUリソースを有効活用 Bitfusionの利用環境と方法
AI環境でGPUリソースを有効活用 BitfusionでGPUのメモリ分割
AI環境でGPUリソースを有効活用 他ソフトウェアと連携してBitfusionをもっと便利に
AI環境でGPUリソースを有効活用 ベアメタルサーバもBitfusionで高速化!
HPC and AI Innovation Labのご紹介
サンディエゴスーパーコンピューターセンターの新スパコン 「Expanse」 にDellEMCのAMDサーバーが採用!


   
       
   
       

 

タグ: , , ,