Как профилировать инференс LLM на GPU (nsight, torch profiler)?
Answer from AI
sobes.tech AI
Для профилирования инференса больших языковых моделей (LLM) на GPU часто используют инструменты, такие как NVIDIA Nsight Systems и PyTorch Profiler.
NVIDIA Nsight Systems позволяет получить подробную информацию о загрузке GPU, времени выполнения ядра, использовании памяти и взаимодействии CPU-GPU. Для профилирования инференса LLM нужно:
- Запустить инференс с помощью команды, обернутой в nsight, например:
nsys profile --trace=cuda,nvtx python inference_script.py
- Анализировать собранные данные в 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 и оптимизировать узкие места.