¿Cómo perfilar la inferencia de LLM en GPU (nsight, torch profiler)?
sobes.tech AI
Respuesta de la IA
Para perfilar la inferencia de grandes modelos de lenguaje (LLM) en GPU, a menudo se utilizan herramientas como NVIDIA Nsight Systems y PyTorch Profiler.
NVIDIA Nsight Systems permite obtener información detallada sobre la carga de la GPU, el tiempo de ejecución del núcleo, el uso de memoria y la interacción CPU-GPU. Para perfilar la inferencia de LLM, se debe:
- Ejecutar la inferencia con un comando envuelto en nsight, por ejemplo:
nsys profile --trace=cuda,nvtx python inference_script.py
- Analizar los datos recopilados en la interfaz gráfica de Nsight Systems, prestando atención a:
- Tiempo de ejecución de los núcleos CUDA
- Retardos entre llamadas
- Uso de memoria de la GPU
PyTorch Profiler permite perfilar detalladamente las operaciones dentro del modelo:
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
Esto ayuda a identificar cuellos de botella en los cálculos, como operaciones lentas o uso ineficiente de la memoria.
En resumen, combinando la supervisión del sistema (Nsight) y la supervisión a nivel de marco (PyTorch Profiler), se puede obtener una visión completa del rendimiento de la inferencia de LLM en GPU y optimizar los cuellos de botella.