デフォルト構成を使用する GKE クラスタで NCCL を実行する

このページでは、GKE クラスタで NCCL/gIB テストを実行する方法について説明します。マシンタイプの手順を選択します。

A4X

  1. クラスタに接続します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=COMPUTE_REGION
    

    次の変数を置き換えます。

    • CLUSTER_NAME: クラスタの名前。Cluster Toolkit で作成されたクラスタの場合、DEPLOYMENT_NAME に基づいています。
    • COMPUTE_REGION: コンピューティング リージョンの名前。
  2. gke-a4x/nccl-jobset-example.yaml ファイルを使用して、TAS を有効にして all-gather NCCL パフォーマンス テストをデプロイします。

    1. テストでは、デフォルトで特定の数のノードが使用されます。ノードの数を変更する場合は、YAML ファイルを変更して、次の値を必要なノード数に変更します。

      • numNodes
      • parallelism
      • completions
      • N_NODES
    2. テストを実行するリソースを作成します。

      kubectl create -f ~/cluster-toolkit/examples/gke-a4x/nccl-jobset-example.yaml
      
  3. すべての nccl-test Pod が Completed 状態になったことを確認します。

    kubectl get pods
    

    出力例を以下に示します。

    nccl-all-worker-0-0-ft8jm   0/1     Completed   0          13m
    nccl-all-worker-0-1-prpvw   0/1     Completed   0          13m
    
  4. パターン nccl-all-worker-0-0-* に一致する Pod 名を見つけます。この Pod のログには、NCCL テストの結果が含まれています。

    この Pod のログを取得するには、次のコマンドを実行します。

     
    kubectl logs $(kubectl get pods -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | grep nccl-all-worker-0-0) 

    出力例を以下に示します。

    #                                                              out-of-place                       in-place
    #       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
    #        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
            1024            32     float    none      -1    19.60    0.05    0.05      0    19.00    0.05    0.05      0
            2048            64     float    none      -1    19.63    0.10    0.09      0    19.47    0.11    0.09      0
            4096           128     float    none      -1    19.88    0.21    0.18      0    19.61    0.21    0.18      0
            8192           256     float    none      -1    20.31    0.40    0.35      0    19.82    0.41    0.36      0
           16384           512     float    none      -1    20.30    0.81    0.71      0    20.17    0.81    0.71      0
           32768          1024     float    none      -1    20.70    1.58    1.39      0    20.36    1.61    1.41      0
           65536          2048     float    none      -1    20.94    3.13    2.74      0    20.88    3.14    2.75      0
          131072          4096     float    none      -1    21.12    6.20    5.43      0    20.96    6.25    5.47      0
          262144          8192     float    none      -1    21.24   12.34   10.80      0    21.01   12.48   10.92      0
          524288         16384     float    none      -1    21.28   24.63   21.55      0    21.07   24.88   21.77      0
         1048576         32768     float    none      -1    21.95   47.77   41.80      0    21.72   48.28   42.24      0
         2097152         65536     float    none      -1    24.15   86.85   76.00      0    23.75   88.30   77.26      0
         4194304        131072     float    none      -1    31.50  133.13  116.49      0    30.75  136.39  119.34      0
         8388608        262144     float    none      -1    47.42  176.88  154.77      0    46.47  180.51  157.95      0
        16777216        524288     float    none      -1    48.72  344.39  301.34      0    47.85  350.63  306.80      0
        33554432       1048576     float    none      -1    75.08  446.91  391.05      0    73.89  454.10  397.34      0
        67108864       2097152     float    none      -1    178.7  375.47  328.53      0    179.1  374.67  327.84      0
       134217728       4194304     float    none      -1    211.1  635.86  556.37      0    211.3  635.21  555.81      0
       268435456       8388608     float    none      -1    413.2  649.68  568.47      0    414.9  646.95  566.08      0
       536870912      16777216     float    none      -1    820.1  654.64  572.81      0    814.9  658.81  576.46      0
      1073741824      33554432     float    none      -1   1566.5  685.43  599.76      0   1567.9  684.82  599.22      0
      2147483648      67108864     float    none      -1   3025.3  709.83  621.10      0   3017.2  711.74  622.77      0
      4294967296     134217728     float    none      -1   5898.8  728.11  637.10      0   5784.0  742.57  649.74      0
      8589934592     268435456     float    none      -1    11541  744.31  651.28      0    11293  760.67  665.58      0
    # Out of bounds values : 0 OK
    # Avg bus bandwidth    : 236.839
    

A4

  1. クラスタに接続します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=COMPUTE_REGION
    

    次の変数を置き換えます。

    • CLUSTER_NAME: クラスタの名前。Cluster Toolkit で作成されたクラスタの場合、DEPLOYMENT_NAME に基づいています。
    • COMPUTE_REGION: コンピューティング リージョンの名前。
  2. gke-a4/nccl-jobset-example.yaml ファイルを使用して、TAS を有効にして all-gather NCCL パフォーマンス テストをデプロイします。

    1. 条件を満たす場合は、YAML ファイルを次の方法で変更します。

      • テストでは、デフォルトで特定の数のノードが使用されます。ノードの数を変更する場合は、次の値を必要なノード数に変更します。

        • parallelism
        • completions
        • N_NODES
      • Flex Start によってプロビジョニングされたノードをテストする場合は、metadata フィールドで次の操作を行います。

        • kueue.x-k8s.io/queue-name の値を dws-local-queue に置き換えます。
        • 次のアノテーションを追加します。

           annotations:
              provreq.kueue.x-k8s.io/maxRunDurationSeconds: "600"
          
    2. テストを実行するリソースを作成します。

      kubectl create -f ~/cluster-toolkit/examples/gke-a4/nccl-jobset-example.yaml
      

      このコマンドは、JobSet 名を返します。

      出力例を以下に示します。

      jobset.jobset.x-k8s.io/all-gather8t7dt created
      
  3. NCCL テストの結果を表示するには、次のコマンドを実行して、実行中のすべての Pod を表示します。

    kubectl get pods
    

    出力例を以下に示します。

    NAME                          READY   STATUS      RESTARTS   AGE
    all-gather8t7dt-w-0-0-n9s6j   0/1     Completed   0          9m34s
    all-gather8t7dt-w-0-1-rsf7r   0/1     Completed   0          9m34s
    
  4. パターン jobset-name-w-0-0-* に一致する Pod 名を見つけます。この Pod のログには、NCCL テストの結果が含まれています。

    この Pod のログを取得するには、次のコマンドを実行します。

    kubectl logs all-gather8t7dt-w-0-0-n9s6j
    

    出力例を以下に示します。

    #       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
    #        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
            1024            16     float    none      -1    54.07    0.02    0.02      0    55.80    0.02    0.02      0
            2048            32     float    none      -1    55.46    0.04    0.03      0    55.31    0.04    0.03      0
            4096            64     float    none      -1    55.59    0.07    0.07      0    55.38    0.07    0.07      0
            8192           128     float    none      -1    56.05    0.15    0.14      0    55.92    0.15    0.14      0
           16384           256     float    none      -1    57.08    0.29    0.27      0    57.75    0.28    0.27      0
           32768           512     float    none      -1    57.49    0.57    0.53      0    57.22    0.57    0.54      0
           65536          1024     float    none      -1    59.20    1.11    1.04      0    59.20    1.11    1.04      0
          131072          2048     float    none      -1    59.58    2.20    2.06      0    63.57    2.06    1.93      0
          262144          4096     float    none      -1    63.87    4.10    3.85      0    63.61    4.12    3.86      0
          524288          8192     float    none      -1    64.83    8.09    7.58      0    64.40    8.14    7.63      0
         1048576         16384     float    none      -1    79.74   13.15   12.33      0    76.66   13.68   12.82      0
         2097152         32768     float    none      -1    78.41   26.74   25.07      0    79.05   26.53   24.87      0
         4194304         65536     float    none      -1    83.21   50.41   47.26      0    81.25   51.62   48.39      0
         8388608        131072     float    none      -1    94.35   88.91   83.35      0    99.07   84.68   79.38      0
        16777216        262144     float    none      -1    122.9  136.55  128.02      0    121.7  137.83  129.21      0
        33554432        524288     float    none      -1    184.2  182.19  170.80      0    178.1  188.38  176.60      0
        67108864       1048576     float    none      -1    294.7  227.75  213.51      0    277.7  241.62  226.52      0
       134217728       2097152     float    none      -1    495.4  270.94  254.00      0    488.8  274.60  257.43      0
       268435456       4194304     float    none      -1    877.5  305.92  286.80      0    861.3  311.65  292.17      0
       536870912       8388608     float    none      -1   1589.8  337.71  316.60      0   1576.2  340.61  319.33      0
      1073741824      16777216     float    none      -1   3105.7  345.74  324.13      0   3069.2  349.85  327.98      0
      2147483648      33554432     float    none      -1   6161.7  348.52  326.74      0   6070.7  353.75  331.64      0
      4294967296      67108864     float    none      -1    12305  349.03  327.22      0    12053  356.35  334.08      0
      8589934592     134217728     float    none      -1    24489  350.77  328.85      0    23991  358.05  335.67      0
    # Out of bounds values : 0 OK
    # Avg bus bandwidth    : 120.248
    

A3 Ultra

  1. クラスタに接続します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=COMPUTE_REGION
    

    次の変数を置き換えます。

    • CLUSTER_NAME: クラスタの名前。Cluster Toolkit で作成されたクラスタの場合、DEPLOYMENT_NAME に基づいています。
    • COMPUTE_REGION: コンピューティング リージョンの名前。
  2. gke-a3-ultragpu/nccl-jobset-example.yaml ファイルを使用して、TAS を有効にして all-gather NCCL パフォーマンス テストをデプロイします。

    1. 条件を満たす場合は、YAML ファイルを次の方法で変更します。

      • テストでは、デフォルトで特定の数のノードが使用されます。ノードの数を変更する場合は、次の値を必要なノード数に変更します。

        • parallelism
        • completions
        • N_NODES
      • Flex Start によってプロビジョニングされたノードをテストする場合は、metadata フィールドで次の操作を行います。

        • kueue.x-k8s.io/queue-name の値を dws-local-queue に置き換えます。
        • 次のアノテーションを追加します。

           annotations:
              provreq.kueue.x-k8s.io/maxRunDurationSeconds: "600"
          
    2. テストを実行するリソースを作成します。

      kubectl create -f ~/cluster-toolkit/examples/gke-a3-ultragpu/nccl-jobset-example.yaml
      

      このコマンドは、JobSet 名を返します。

      出力例を以下に示します。

      jobset.jobset.x-k8s.io/all-gather8t7dt created
      
  3. NCCL テストの結果を表示するには、次のコマンドを実行して、実行中のすべての Pod を表示します。

    kubectl get pods
    

    出力例を以下に示します。

    NAME                          READY   STATUS      RESTARTS   AGE
    all-gather8t7dt-w-0-0-n9s6j   0/1     Completed   0          9m34s
    all-gather8t7dt-w-0-1-rsf7r   0/1     Completed   0          9m34s
    
  4. パターン jobset-name-w-0-0-* に一致する Pod 名を見つけます。この Pod のログには、NCCL テストの結果が含まれています。

    この Pod のログを取得するには、次のコマンドを実行します。

    kubectl logs all-gather8t7dt-w-0-0-n9s6j
    

    出力例を以下に示します。

    #       size         count      type   redop    root     time   algbw   busbw #wrong     time   algbw   busbw #wrong
    #        (B)    (elements)                               (us)  (GB/s)  (GB/s)            (us)  (GB/s)  (GB/s)
            1024            16     float    none      -1    54.07    0.02    0.02      0    55.80    0.02    0.02      0
            2048            32     float    none      -1    55.46    0.04    0.03      0    55.31    0.04    0.03      0
            4096            64     float    none      -1    55.59    0.07    0.07      0    55.38    0.07    0.07      0
            8192           128     float    none      -1    56.05    0.15    0.14      0    55.92    0.15    0.14      0
           16384           256     float    none      -1    57.08    0.29    0.27      0    57.75    0.28    0.27      0
           32768           512     float    none      -1    57.49    0.57    0.53      0    57.22    0.57    0.54      0
           65536          1024     float    none      -1    59.20    1.11    1.04      0    59.20    1.11    1.04      0
          131072          2048     float    none      -1    59.58    2.20    2.06      0    63.57    2.06    1.93      0
          262144          4096     float    none      -1    63.87    4.10    3.85      0    63.61    4.12    3.86      0
          524288          8192     float    none      -1    64.83    8.09    7.58      0    64.40    8.14    7.63      0
         1048576         16384     float    none      -1    79.74   13.15   12.33      0    76.66   13.68   12.82      0
         2097152         32768     float    none      -1    78.41   26.74   25.07      0    79.05   26.53   24.87      0
         4194304         65536     float    none      -1    83.21   50.41   47.26      0    81.25   51.62   48.39      0
         8388608        131072     float    none      -1    94.35   88.91   83.35      0    99.07   84.68   79.38      0
        16777216        262144     float    none      -1    122.9  136.55  128.02      0    121.7  137.83  129.21      0
        33554432        524288     float    none      -1    184.2  182.19  170.80      0    178.1  188.38  176.60      0
        67108864       1048576     float    none      -1    294.7  227.75  213.51      0    277.7  241.62  226.52      0
       134217728       2097152     float    none      -1    495.4  270.94  254.00      0    488.8  274.60  257.43      0
       268435456       4194304     float    none      -1    877.5  305.92  286.80      0    861.3  311.65  292.17      0
       536870912       8388608     float    none      -1   1589.8  337.71  316.60      0   1576.2  340.61  319.33      0
      1073741824      16777216     float    none      -1   3105.7  345.74  324.13      0   3069.2  349.85  327.98      0
      2147483648      33554432     float    none      -1   6161.7  348.52  326.74      0   6070.7  353.75  331.64      0
      4294967296      67108864     float    none      -1    12305  349.03  327.22      0    12053  356.35  334.08      0
      8589934592     134217728     float    none      -1    24489  350.77  328.85      0    23991  358.05  335.67      0
    # Out of bounds values : 0 OK
    # Avg bus bandwidth    : 120.248
    

次のステップ