Sobes.tech
Senior

Come profilare l'inferenza LLM sulla GPU (nsight, torch profiler)?

sobes.tech AI

Risposta dell'AI

Для профилирования инференса больших языковых моделей (LLM) на GPU часто используют инструменты, такие как NVIDIA Nsight Systems и PyTorch Profiler.

NVIDIA Nsight Systems позволяет получить подробную информацию о загрузке GPU, времени выполнения ядра, использовании памяти и взаимодействии CPU-GPU. Для профилирования инференса LLM нужно:

  1. Запустить инференс с помощью команды, обернутой в nsight, например:
nsys profile --trace=cuda,nvtx python inference_script.py
  1. Анализировать собранные данные в GUI Nsight Systems, обращая внимание на:
    • Время выполнения CUDA-ядр
    • Задержки между вызовами
    • Использование памяти GPU

PyTorch Profiler позволяет детально профилировать операции внутри модели:

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

Это помогает выявить узкие места в вычислениях, например, медленные операции или неэффективное использование памяти.

В итоге, комбинируя системное профилирование (Nsight) и профилирование на уровне фреймворка (PyTorch Profiler), можно получить полную картину производительности инференса LLM на GPU и оптимизировать узкие места.