Sobes.tech
Senior
29

Как профилировать инференс LLM на GPU (nsight, torch profiler)?

Компании, где спрашивали
Альфа-БанкАльфа-Банк
AvitoAvito
ДомкликДомклик

Ответ от нейросети

sobes.tech 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 и оптимизировать узкие места.