Sobes.tech
Senior

¿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:

  1. Ejecutar la inferencia con un comando envuelto en nsight, por ejemplo:
nsys profile --trace=cuda,nvtx python inference_script.py
  1. 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.