複数 GPU の設定

ごく限定された状況を除いて、1 つのシステムで複数の GPU を使用しても、Deep Learning ツールの学習時間または処理時間は短縮されません。複数の GPU の役割は以下のとおりです。

  • アプリケーションで複数のスレッドを使用して画像を同時に処理する場合に、システムのスループットを向上させる。
  • 複数のツールを同時に学習させることによって、学習の生産性を向上させる。

複数の GPU を設定する場合、すべて同じタイプかつ同じ仕様の GPU で構成されている必要があります。たとえば、1 つの RTX 3080 10GB を含む GPU を 3 つ設定する場合、このセットの GPU は RTX 3080 10GB / RTX 3080 10GB / RTX 3080 10GB である必要があります。これは、すべての NVIDIA GeForce® シリーズに適用されます。

 

複数の GPU 用にホストシステムを設定する場合は、次の点に注意してください。

  • シャーシから最大 2KW の電力を提供しなければならない場合があります。
  • 複数のカードを取り付ける場合は、NVIDIA RTX / Quadro® カードと Tesla カードでは優れた冷却構成が提供されます。
  • PCIe 構成には各 GPU に使用可能な 16 の PCIe レーンがあることを確認してください。
  • スケーラブルリンクインタフェース (SLI) を有効にしないでください。

 

複数の GPU の使用

VisionPro Deep Learning3.0 では、学習と処理に複数の GPU の使用をサポートしています。このトピックでは、2 つの基本的な操作モードと複数の GPU の使用について説明します。このページの説明の便宜上、ここでは、High Detail モードとフォーカスモードそれぞれに次のツールを含めるものとします。この「High Detail Quick モードを High Detail モードファミリに含める」という定義は、このドキュメントだけのものです。

 

High Detail モード

  • 解析 (赤) High Detail

  • 分類 (緑) High Detail

  • 分類 (緑) High Detail Quick

 

フォーカスモード

  • 解析 (赤) フォーカススーパーバイズド

  • 解析 (赤) フォーカスアンスーパーバイズド

  • 読み取り (青)

  • 位置決め (青)

  • 分類 (緑) フォーカス

 

操作モード

VisionPro Deep Learning で 1 つ以上の GPU を使用する場合、操作に使用できる GPU モードは次のとおりです。

  • SingleDevicePerTool (デフォルト設定) – 画像の学習と処理に 1 つの GPU を使用します。
  • NoGPUSupport – GPU を使用しないことを指定します。
Tip: 複数のデバイスで画像を処理することを目的とした MultipleDevicesPerTool は、VisionPro Deep Learning 1.0.0 以降ではサポートされていません。

 

これらの GPU モードは、C API と .NET API によるライブラリ初期化時に指定することも、ライブラリ初期化の開始時に VisionPro Deep Learning GUI で使用できるコマンドライン引数で指定することもできます。

 

学習に複数の GPU を使用する

学習に複数の GPU を使用する場合、フォーカスモードまたは High Detail モードを使用するかどうかに関係なく、1 つのツールは 1 つの GPU で学習されます。

次のことが可能です。

  • N 個の GPU がある場合、N 個の学習ジョブを同時に実行できます。

  • N 個の GPU がある場合、N 個のツールを同時に学習できます。

つまり、N 個の GPU と N 個の学習ジョブ (学習対象の N 個のツール) がある場合、1 個の学習ジョブは 1 個の GPU で実行されます。言い換えれば、1 個の GPU で一度に 1 つのツール (学習対象のツールのすべての画像) を学習できます。

別のストリームまたは別のワークスペースの学習ジョブに、システムに登録されている複数の GPU からアクセスできるため、これらを複数の GPU で同時に実行することもできます。

 

処理に複数の GPU を使用する

処理に複数の GPU を使用する場合、状況は多少異なります。

  • フォーカスモード

    • 1 つのツールを、システムに登録されている使用可能なすべての GPU で同時に処理します。

  • High Detail モード

    • 1 つのツールを 1 つの GPU でのみ処理します。

 

これは、いくつかの重要なことを示唆しています。

  • フォーカスモードでの処理の場合

    • N 個の GPU があり、1 つの処理ジョブ (1 つのフォーカスモードツールの処理) を実行する場合、N 個の GPU でこのジョブを分散させて実行できます。

    • N 個の GPU があり、N 個の処理ジョブ (N 個のフォーカスモードツールの処理) を実行する場合、N 個の GPU で N 個のジョブを並列で実行できます。

  • High Detail モードでの処理は、基本的に学習の場合と同じです。次のことが可能です。

    • N 個の GPU がある場合、N 個の処理ジョブを同時に実行できます。

    • N 個の GPU がある場合、N 個のツールを同時に処理できます。

 

フォーカスモードツールの処理では、このツールのすべての画像を N 個の GPU に分散できることを意味します (1 つの GPU で 1 つの画像を 1 つずつ処理する)。N 個のフォーカスモードツールと N 個の GPU がある場合でも同じように動作するため、N 個の GPU を使用すると、各 GPU が一度に 1 つの画像 (ツールではない) を処理します。

 

High Detail モードツールの処理では、このツールの画像を N 個の GPU に分散できず、このツールのすべての画像を 1 つの GPU で処理します (1 つの GPU で 1 つのツールを 1 つずつ処理する)。ただし、N 個の High Detail モードツールと N 個の GPU がある場合は、N 個の GPU を同時に使用して、各 GPU が 1 つのツール (1 つの画像ではなく、1 つのツールのすべての画像) を一度に処理できます。

繰り返しになりますが、フォーカスモードと High Detail モードの両方で、別のストリームまたは別のワークスペースの処理ジョブには、システムに登録されている複数の GPU からアクセスできるため、これらを複数の GPU で同時に実行することもできます。