Как профилировать инференс LLM на GPU (nsight, torch profiler)?
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 и оптимизировать узкие места.