検索

10.2. コンピュートノードでの仮想 GPU の設定

download PDF

クラウドユーザーが仮想 GPU (vGPU) を使用するインスタンスを作成できるようにするには、物理 GPU を持つコンピュートノードを設定する必要があります。

  1. vGPU 用のコンピュートノードを指定する。
  2. 仮想 GPU 用のコンピュートノードを設定する。
  3. オーバークラウドをデプロイする。
  4. オプション: vGPU タイプのカスタム特性を作成します。
  5. オプション: カスタム GPU インスタンスイメージを作成します。
  6. vGPU を持つインスタンスを起動するための vGPU フレーバーを作成します。
ヒント

GPU ハードウェアが制限されている場合は、ホストアグリゲートを設定して vGPU コンピュートノードでのスケジューリングを最適化することもできます。仮想 GPU を要求するインスタンスのみを仮想 GPU コンピュートノードにスケジュールするには、仮想 GPU が設定されたコンピュートノードのホストアグリゲートを作成し、Compute スケジューラーが仮想 GPU インスタンスのみをホストアグリゲートに配置するように設定します。詳細は、Creating and managing host aggregates および Filtering by isolating host aggregates を参照してください。

注記

NVIDIA GRID vGPU を使用するには、NVIDIA GRID ライセンス要件に従う共に、セルフホストライセンスサーバーの URL が必要です。詳細は、Virtual GPU License Server Release Notes の Web ページを参照してください。

10.2.1. 前提条件

  • NVIDIA の Web サイトから、GPU デバイスに対応する NVIDIA GRID ホストドライバー RPM パッケージをダウンロードしている。必要なドライバーを確認するには、NVIDIA ドライバーダウンロードポータル を参照してください。ポータルからドライバーをダウンロードするには、NVIDIA カスタマーとして登録されている必要があります。
  • NVIDIA GRID ホストドライバーがインストールされているカスタムオーバークラウドイメージをビルドしている。

10.2.2. 仮想 GPU 用コンピュートノードの指定

vGPU ワークロードのコンピュートノードを指定するには、新しいロールファイルを作成して vGPU ロールを設定し、GPU 対応のコンピュートノードのタグ付けに使用する GPU リソースクラスを使用してベアメタルノードを設定する必要があります。

注記

以下の手順は、まだプロビジョニングされていない新しいオーバークラウドノードに適用されます。すでにプロビジョニングされている既存のオーバークラウドノードにリソースクラスを割り当てるには、スケールダウン手順を使用してノードのプロビジョニングを解除してから、スケールアップ手順を使用して新しいリソースクラスの割り当てでノードを再プロビジョニングする必要があります。詳細は、オーバークラウドノードのスケーリング を参照してください。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    [stack@director ~]$ source ~/stackrc
  3. ControllerComputeComputeGpu ロールを含む、roles_data_gpu.yaml という名前の新しいロールデータファイルを、オーバークラウドに必要なその他のロールとともに生成します。

    (undercloud)$ openstack overcloud roles \
      generate -o /home/stack/templates/roles_data_gpu.yaml \
      Compute:ComputeGpu Compute Controller
  4. roles_data_gpu.yaml を開き、以下のパラメーターおよびセクションを編集または追加します。

    セクション/パラメーター現在の値新しい値

    ロールのコメント

    Role: Compute

    Role: ComputeGpu

    ロール名

    Compute

    ComputeGpu

    description

    Basic Compute Node role

    GPU Compute Node role

    HostnameFormatDefault

    -compute-

    -computegpu-

    deprecated_nic_config_name

    compute.yaml

    compute-gpu.yaml

  5. オーバークラウド用の GPU 対応コンピュートノードをノード定義のテンプレート node.json または node.yaml に追加して、そのノードを登録します。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの オーバークラウドのノードの登録 を参照してください。
  6. ノードのハードウェアを検査します。

    (undercloud)$ openstack overcloud node introspect --all-manageable \
     --provide

    詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの ベアメタルノードハードウェアのインベントリーの作成 を参照してください。

  7. GPU 負荷用に指定する各ベアメタルノードに、カスタムの GPU リソースクラスをタグ付けします。

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.GPU <node>

    <node> をベアメタルノードの ID に置き換えてください。

  8. ノード定義ファイル overcloud-baremetal-deploy.yamlComputeGpu ロールを追加し、予測ノード配置、リソースクラス、ネットワークトポロジー、またはノードに割り当てるその他の属性を定義します。

    - name: Controller
      count: 3
    - name: Compute
      count: 3
    - name: ComputeGpu
      count: 1
      defaults:
        resource_class: baremetal.GPU
        network_config:
          template: /home/stack/templates/nic-config/myRoleTopology.j2 1
    1
    既存のネットワークトポロジーを再利用するか、ロール用の新しいカスタムネットワークインターフェイステンプレートを作成できます。詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの カスタムネットワークインターフェイステンプレート を参照してください。network_config プロパティーを使用してネットワーク定義を定義しない場合、デフォルトのネットワーク定義が使用されます。

    ノード定義ファイルでノード属性を設定するために使用できるプロパティーについて詳しくは、ベアメタルノードのプロビジョニング属性 を参照してください。ノード定義ファイルの例は、ノード定義ファイルの例 を参照してください。

  9. プロビジョニングコマンドを実行して、ロールの新しいノードをプロビジョニングします。

    (undercloud)$ openstack overcloud node provision \
    --stack <stack> \
    [--network-config \]
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
    • <stack> を、ベアメタルノードがプロビジョニングされるスタックの名前に置き換えます。指定しない場合、デフォルトは overcloud です。
    • --network-config オプションの引数を含めて、cli-overcloud-node-network-config.yaml Ansible Playbook にネットワーク定義を提供します。network_config プロパティーを使用してネットワーク定義を定義しない場合、デフォルトのネットワーク定義が使用されます。
  10. 別のターミナルでプロビジョニングの進捗をモニタリングします。プロビジョニングが成功すると、ノードの状態が available から active に変わります。

    (undercloud)$ watch openstack baremetal node list
  11. --network-config オプションを指定してプロビジョニングコマンドを実行しなかった場合は、network-environment.yaml ファイルで <Role>NetworkConfigTemplate パラメーターを設定して、NIC テンプレートファイルを指すようにします。

    parameter_defaults:
       ComputeNetworkConfigTemplate: /home/stack/templates/nic-configs/compute.j2
       ComputeGpuNetworkConfigTemplate: /home/stack/templates/nic-configs/<gpu_net_top>.j2
       ControllerNetworkConfigTemplate: /home/stack/templates/nic-configs/controller.j2

    <gpu_net_top>ComputeGpu ロールのネットワークトポロジーが含まれるファイルの名前に置き換えます。たとえば、デフォルトのネットワークトポロジーを使用する場合は compute.yaml です。

10.2.3. 仮想 GPU 用コンピュートノードの設定およびオーバークラウドのデプロイ

環境内の物理 GPU デバイスに対応する仮想 GPU の種別を取得して割り当て、仮想 GPU 用コンピュートノードを設定するための環境ファイルを準備する必要があります。

手順

  1. Red Hat Enterprise Linux と NVIDIA GRID ドライバーを一時コンピュートノードにインストールし、そのノードを起動します。
  2. 仮想 GPU は、仲介デバイス、または mdev タイプのデバイスです。各コンピュートノード上の各 mdev デバイスの PCI アドレスを取得します。

    $ ls /sys/class/mdev_bus/

    PCI アドレスは、デバイスドライバーのディレクトリー名として使用されます (例: 0000:84:00.0)

  3. 各コンピュートノードで利用可能な各 pGPU デバイスでサポートされている mdev タイプを確認して、利用可能な vGPU タイプを見つけます。

    $ ls /sys/class/mdev_bus/<mdev_device>/mdev_supported_types
    • <mdev_device> を、mdev デバイスの PCI アドレス (0000:84:00.0 など) に置き換えます。

      たとえば、次のコンピュートノードには 4 つの pGPU があり、各 pGPU は 11 個の同じ vGPU タイプをサポートしています。

    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:84:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:85:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:86:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
    [root@overcloud-computegpu-0 ~]# ls /sys/class/mdev_bus/0000:87:00.0/mdev_supported_types:
    nvidia-35  nvidia-36  nvidia-37  nvidia-38  nvidia-39  nvidia-40  nvidia-41  nvidia-42  nvidia-43  nvidia-44  nvidia-45
  4. gpu.yaml ファイルを作成して、各 GPU デバイスがサポートする vGPU タイプを指定します。

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-35
          - nvidia-36
  5. オプション: 複数の vGPU タイプを設定するには、サポートされる vGPU タイプを pGPU にマップします。

    parameter_defaults:
      ComputeGpuExtraConfig:
        nova::compute::vgpu::enabled_vgpu_types:
          - nvidia-35
          - nvidia-36
        NovaVGPUTypesDeviceAddressesMapping: {'vgpu_<vgpu_type>': ['<pci_address>', '<pci_address>'],'vgpu_<vgpu_type>': ['<pci_address>', '<pci_address>']}
    • <vgpu_type> を vGPU タイプの名前に置き換えて、vGPU グループのラベルを作成します (例: vgpu_nvidia-35)。追加の vGPU タイプをマップするには、vgpu_<vgpu_type> 定義のコンマ区切りリストを使用します。
    • <pci_address> を、vGPU タイプをサポートする pGPU デバイスの PCI アドレス (0000:84:00.0 など) に置き換えます。<pci_address> 定義のコンマ区切りリストを使用して、vGPU グループを追加の pGPU にマップします。

      以下に例を示します。

      NovaVGPUTypesDeviceAddressesMapping: {'vgpu_nvidia-35': ['0000:84:00.0', '0000:85:00.0'],'vgpu_nvidia-36': ['0000:86:00.0']}

      • nvidia-35 vGPU タイプは、PCI アドレス 0000:84:00.0 および 0000:85:00.0 にある pGPU でサポートされています。
      • nvidia-36 vGPU タイプは、PCI アドレス 0000:86:00.0 にある pGPU でのみサポートされています。
  6. 更新内容を Compute 環境ファイルに保存します。
  7. その他の環境ファイルと共に新しいロールファイルおよび環境ファイルをスタックに追加して、オーバークラウドをデプロイします。

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files] \
      -r /home/stack/templates/roles_data_gpu.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/gpu.yaml \
      -e /home/stack/templates/overcloud-baremetal-deployed.yaml \
      -e /home/stack/templates/node-info.yaml
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.