Sobes.tech
Senior

Como fazer profiling da inferência de LLM na GPU (nsight, torch profiler)?

sobes.tech IA

Resposta da IA

Para fazer profiling da inferência de grandes modelos de linguagem (LLM) na GPU, frequentemente utilizam-se ferramentas como NVIDIA Nsight Systems e PyTorch Profiler.

NVIDIA Nsight Systems permite obter informações detalhadas sobre a carga da GPU, o tempo de execução do núcleo, o uso de memória e a interação CPU-GPU. Para fazer profiling da inferência LLM, deve-se:

  1. Executar a inferência com um comando envolvido em nsight, por exemplo:
nsys profile --trace=cuda,nvtx python inference_script.py
  1. Analisar os dados recolhidos na interface gráfica do Nsight Systems, prestando atenção a:
    • Tempo de execução dos núcleos CUDA
    • Atrasos entre chamadas
    • Uso de memória da GPU

PyTorch Profiler permite fazer profiling detalhado das operações dentro do 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

Isto ajuda a identificar gargalos nos cálculos, como operações lentas ou uso ineficiente de memória.

Resumindo, ao combinar o profiling do sistema (Nsight) e o profiling ao nível do framework (PyTorch Profiler), é possível obter uma visão completa do desempenho da inferência LLM na GPU e otimizar os gargalos.