Exécuter NCCL sur des clusters GKE qui utilisent la configuration par défaut

Cette page explique comment exécuter des tests NCCL/gIB sur des clusters GKE. Choisissez les étapes correspondant à votre type de machine :

A4X

  1. Connectez-vous à votre cluster :

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

    Remplacez les variables suivantes :

    • CLUSTER_NAME : nom de votre cluster. Pour les clusters créés avec Cluster Toolkit, il est basé sur DEPLOYMENT_NAME.
    • COMPUTE_REGION : nom de la région de calcul.
  2. Déployez un test de performances NCCL all-gather avec TAS activé à l'aide du fichier gke-a4x/nccl-jobset-example.yaml :

    1. Le test utilise un certain nombre de nœuds par défaut. Si vous souhaitez modifier le nombre de nœuds, modifiez le fichier YAML pour remplacer les valeurs suivantes par le nombre de nœuds requis :

      • numNodes
      • parallelism
      • completions
      • N_NODES
    2. Créez les ressources pour exécuter le test :

      kubectl create -f ~/cluster-toolkit/examples/gke-a4x/nccl-jobset-example.yaml
      
  3. Vérifiez que tous les pods nccl-test ont atteint l'état Completed :

    kubectl get pods
    

    La sortie devrait ressembler à ce qui suit :

    nccl-all-worker-0-0-ft8jm   0/1     Completed   0          13m
    nccl-all-worker-0-1-prpvw   0/1     Completed   0          13m
    
  4. Recherchez un nom de pod correspondant au modèle nccl-all-worker-0-0-*. Les journaux de ce pod contiennent les résultats du test NCCL.

    Pour extraire les journaux de ce pod, exécutez la commande suivante :

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

    La sortie devrait ressembler à ce qui suit :

    #                                                              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. Connectez-vous à votre cluster :

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

    Remplacez les variables suivantes :

    • CLUSTER_NAME : nom de votre cluster. Pour les clusters créés avec Cluster Toolkit, il est basé sur DEPLOYMENT_NAME.
    • COMPUTE_REGION : nom de la région de calcul.
  2. Déployez un test de performances NCCL all-gather avec TAS activé à l'aide du fichier gke-a4/nccl-jobset-example.yaml :

    1. Modifiez le fichier YAML comme suit si vous remplissez les conditions :

      • Les tests utilisent un certain nombre de nœuds par défaut. Si vous souhaitez modifier le nombre de nœuds, remplacez les valeurs suivantes par le nombre de nœuds requis :

        • parallelism
        • completions
        • N_NODES
      • Si vous souhaitez tester les nœuds provisionnés par flex-start, procédez comme suit dans le champ metadata :

        • Remplacez la valeur kueue.x-k8s.io/queue-name par dws-local-queue.
        • Ajoutez l'annotation suivante :

           annotations:
              provreq.kueue.x-k8s.io/maxRunDurationSeconds: "600"
          
    2. Créez les ressources pour exécuter le test :

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

      Cette commande renvoie un nom JobSet.

      La sortie devrait ressembler à ce qui suit :

      jobset.jobset.x-k8s.io/all-gather8t7dt created
      
  3. Pour afficher les résultats du test NCCL, exécutez la commande suivante afin d'afficher tous les pods en cours d'exécution :

    kubectl get pods
    

    La sortie devrait ressembler à ce qui suit :

    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. Recherchez un nom de pod correspondant au modèle jobset-name-w-0-0-*. Les journaux de ce pod contiennent les résultats du test NCCL.

    Pour extraire les journaux de ce pod, exécutez la commande suivante :

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

    La sortie devrait ressembler à ce qui suit :

    #       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. Connectez-vous à votre cluster :

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

    Remplacez les variables suivantes :

    • CLUSTER_NAME : nom de votre cluster. Pour les clusters créés avec Cluster Toolkit, il est basé sur DEPLOYMENT_NAME.
    • COMPUTE_REGION : nom de la région de calcul.
  2. Déployez un test de performances NCCL all-gather avec TAS activé à l'aide du fichier gke-a3-ultragpu/nccl-jobset-example.yaml :

    1. Modifiez le fichier YAML comme suit si vous remplissez les conditions :

      • Les tests utilisent un certain nombre de nœuds par défaut. Si vous souhaitez modifier le nombre de nœuds, remplacez les valeurs suivantes par le nombre de nœuds requis :

        • parallelism
        • completions
        • N_NODES
      • Si vous souhaitez tester les nœuds provisionnés par flex-start, procédez comme suit dans le champ metadata :

        • Remplacez la valeur kueue.x-k8s.io/queue-name par dws-local-queue.
        • Ajoutez l'annotation suivante :

           annotations:
              provreq.kueue.x-k8s.io/maxRunDurationSeconds: "600"
          
    2. Créez les ressources pour exécuter le test :

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

      Cette commande renvoie un nom JobSet.

      La sortie devrait ressembler à ce qui suit :

      jobset.jobset.x-k8s.io/all-gather8t7dt created
      
  3. Pour afficher les résultats du test NCCL, exécutez la commande suivante afin d'afficher tous les pods en cours d'exécution :

    kubectl get pods
    

    La sortie devrait ressembler à ce qui suit :

    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. Recherchez un nom de pod correspondant au modèle jobset-name-w-0-0-*. Les journaux de ce pod contiennent les résultats du test NCCL.

    Pour extraire les journaux de ce pod, exécutez la commande suivante :

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

    La sortie devrait ressembler à ce qui suit :

    #       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
    

Étapes suivantes