Comparteix:

Eina de monitorització de recursos de treballs (Grafana)

Esteu treballant amb potents recursos de computació d'alt rendiment (HPC) gestionats per SLURM, i teniu accés a un quadre de comandament de Grafana que proporciona mètriques detallades sobre els vostres treballs, gràcies a un exportador nvitop.

Aquesta guia us ajudarà a entendre aquestes mètriques i utilitzar-les per fer que les vostres càrregues de treball d'Intel·ligència Artificial (IA) i Aprenentatge Automàtic (ML) s'executin de manera més eficient.

Tingueu en compte que els treballs només de CPU també es mostren, però sense cap informació de GPU.

Després de l'execució de cada treball, obtindreu una URL amb els detalls específics del treball. També podeu accedir al quadre de comandament aquí.

Seleccionant la partició (grup de recerca) i l'usuari, podeu ajustar l'interval de temps per visualitzar els treballs en execució:

Aleshores, podem buscar un ús detallat dels recursos del treball si seleccionem l'ID del treball SLURM i una de les GPU implicades en el treball. A la secció inferior apareixeran aquestes mètriques:

Explicació de les mètriques:

Càrrega de la CPU (Central Processing Unit)

  • Què és: La càrrega de la CPU indica com de ocupats estan els nuclis de la CPU assignats al vostre treball. Una càrrega d'1.0 en un sol nucli significa que està completament utilitzat. Si el vostre treball té 8 nuclis, una càrrega de 8.0 significa que els 8 nuclis estan completament ocupats.
  • Per què és important per a la IA:
    • Preprocessament de dades: Tasques com carregar dades, augmentar imatges, tokenitzar text i transformar característiques sovint depenen de la CPU.
    • DataLoaders: En frameworks com PyTorch o TensorFlow, els treballadors de DataLoader utilitzen nuclis de CPU per preparar lots de dades per a la GPU.
    • Orquestració general: Encara que el càlcul principal sigui a la GPU, la CPU gestiona el procés general.
  • Què cal observar a Grafana:
    • Càrrega de CPU baixa amb càrrega de GPU baixa: Podria indicar un coll d'ampolla en un altre lloc (per exemple, E/S de disc lenta) o una canalització de dades ineficient.
    • Càrrega de CPU alta amb càrrega de GPU baixa: La vostra CPU podria ser el coll d'ampolla, incapaç d'alimentar dades a la GPU prou ràpidament.
    • Càrrega de CPU que coincideix amb els nuclis sol·licitats: Ideal si la CPU està fent un treball significatiu.

Càrrega de la GPU (Graphics Processing Unit)

  • Què és: La càrrega de la GPU (sovint mostrada com "GPU Utilization" o "SM Activity") mesura quanta capacitat de càlcul de la GPU s'està utilitzant. Això reflecteix principalment l'activitat dels Streaming Multiprocessors (SMs) que realitzen càlculs paral·lels.
  • Per què és important per a la IA: Les GPU són els cavalls de batalla de l'aprenentatge profund, destacant en les multiplicacions de matrius i les operacions de tensors fonamentals per a l'entrenament i la inferència.
  • Què cal observar a Grafana:
    • Càrrega de GPU baixa: Aquest és un senyal comú d'ineficiència. La vostra costosa GPU no s'està utilitzant al màxim del seu potencial! Això podria ser degut a:
      • Coll d'ampolla de la CPU (les dades no arriben prou ràpid).
      • Mides de lots petites.
      • Codi o operacions de GPU ineficients.
      • Colls d'ampolla d'E/S.
    • Càrrega de GPU alta (per exemple, >90%): Generalment bo, indica que la vostra GPU està ocupada. No obstant això, assegureu-vos que sigui un treball productiu i no, per exemple, que estigui constantment esperant transferències de memòria de la GPU.

Ús de la memòria (RAM)

  • Què és: Aquesta és la memòria d'accés aleatori principal del node de càlcul on s'està executant el vostre treball (línia verda). El vostre treball sol·licita (línia groga) una certa quantitat d'aquesta memòria a SLURM.
  • Per què és important per a la IA:
    • Emmagatzemar conjunts de dades: Els conjunts de dades petits o mitjans es poden carregar completament a la RAM.
    • Contenir el codi i les variables del programa: El vostre script Python, les biblioteques i les variables intermèdies consumeixen RAM.
    • Buffers de dades: Les dades sovint s'emmagatzemen en un buffer a la RAM abans de ser enviades a la GPU.
  • Què cal observar a Grafana:
    • Ús de memòria que s'acosta al límit de la vostra sol·licitud de SLURM (línia groga): Si el vostre treball supera la memòria sol·licitada, SLURM podria acabar-lo (error Out-Of-Memory).
    • Ús de memòria molt baix en comparació amb la sol·licitud: Podríeu estar sol·licitant massa memòria, fent-la no disponible per a altres usuaris.
    • Ús de memòria en augment constant (Memory Leak): Si l'ús de memòria augmenta amb el temps sense estabilitzar-se, el vostre codi podria tenir una fuita de memòria.

  • Què és: Cada GPU té la seva pròpia memòria dedicada d'alta velocitat (VRAM). Cada model de GPU té el seu propi límit (línia groga). Aquesta és una memòria separada de la RAM del sistema.
  • Per què és important per a la IA:
    • Paràmetres del model: Els pesos i els bias de la vostra xarxa neuronal s'emmagatzemen aquí.
    • Activacions: Les sortides intermèdies durant els passos d'avanç i de retrocés s'emmagatzemen a la memòria de la GPU.
    • Lots de dades (Data Batches): El lot de dades actual que s'està processant es transfereix a la memòria de la GPU.
  • Què cal observar a Grafana:
    • Memòria de la GPU plena (o gairebé): Aquest és un coll d'ampolla comú. Si intenteu encaixar massa (model gran, mida de lot gran), obtindreu un error de memòria insuficient (OOM) a la GPU.
    • Ús baix de la memòria de la GPU amb càrrega de la GPU baixa: Podria indicar que la mida del lot és massa petita, o que el model en si és petit, i no esteu aprofitant la capacitat de la GPU.

Rendiment PCIe Rx/Tx (Peripheral Component Interconnect Express)

  • Què és: PCIe és la interfície d'alta velocitat que connecta la GPU a la placa base (i, per tant, a la CPU i a la RAM del sistema).
    • PCIe Tx (Transmissió): Dades enviades des de la CPU/RAM del sistema a la memòria de la GPU (per exemple, lots de dades d'entrada, paràmetres del model si encara no hi són).
    • PCIe Rx (Recepció): Dades enviades des de la memòria de la GPU a la CPU/RAM del sistema (per exemple, resultats, gradients per a certes configuracions d'entrenament distribuït).
  • Per què és important per a la IA: Les dades han de moure's entre la CPU/RAM i la GPU. Aquesta transferència porta temps i pot ser un coll d'ampolla si no es gestiona de manera eficient.
  • Què cal observar a Grafana: 
    • Activitat PCIe Tx/Rx alta i sostinguda amb càrrega de la GPU baixa: Això pot ser un coll d'ampolla important. Vol dir que la vostra GPU està passant molt de temps esperant que arribin les dades o que es retornin els resultats, en lloc de calcular. Això sovint passa si esteu transferint dades amb massa freqüència en trossos petits.
    • Activitat PCIe "spiky" (amb pics): Les ràfegues són normals (per exemple, quan es carrega un lot nou). L'objectiu és fer que aquestes transferències siguin el més ràpides i infreqüents possible en relació amb el temps de càlcul.