Comment profiler l'inférence LLM sur GPU (nsight, torch profiler) ?
sobes.tech IA
Réponse de l'IA
Pour profiler l’inférence de grands modèles de langage (LLM) sur GPU, on utilise souvent des outils tels que NVIDIA Nsight Systems et PyTorch Profiler.
NVIDIA Nsight Systems permet d’obtenir des informations détaillées sur la charge GPU, le temps d’exécution du noyau, l’utilisation de la mémoire et l’interaction CPU-GPU. Pour profiler l’inférence LLM, il faut :
- Lancer l’inférence avec une commande enveloppée dans nsight, par exemple :
nsys profile --trace=cuda,nvtx python inference_script.py
- Analyser les données collectées dans l’interface graphique de Nsight Systems, en prêtant attention à :
- Temps d’exécution des noyaux CUDA
- Retards entre les appels
- Utilisation de la mémoire GPU
PyTorch Profiler permet de profiler en détail les opérations à l’intérieur du modèle :
import torch
from torch.profiler import profile, record_function, ProfilerActivity
def inference(model, input):
with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
with record_function("model_inference"):
output = model(input)
print(prof.key_averages().table(sort_by="cuda_time_total"))
return output
Cela aide à identifier les goulets d’étranglement dans les calculs, comme des opérations lentes ou une utilisation inefficace de la mémoire.
En résumé, en combinant la supervision système (Nsight) et la supervision au niveau du framework (PyTorch Profiler), on peut obtenir une image complète des performances de l’inférence LLM sur GPU et optimiser les goulets d’étranglement.