Sobes.tech
Senior

Kako profilisati inferencu LLM na GPU (nsight, torch profiler)?

sobes.tech АИ

Одговор од АИ

Za profilisanje inferense velikih jezičkih modela (LLM) na GPU često se koriste alati poput NVIDIA Nsight Systems i PyTorch Profiler.

NVIDIA Nsight Systems pruža detaljne informacije o opterećenju GPU-a, vremenu izvršavanja jezgra, korišćenju memorije i interakciji CPU-GPU. Za profilisanje inferense LLM potrebno je:

  1. Pokrenuti inferencu pomoću komande umotane u nsight, na primer:
nsys profile --trace=cuda,nvtx python inference_script.py
  1. Analizirati prikupljene podatke u GUI-ju Nsight Systems, obraćajući pažnju na:
    • Vreme izvršavanja CUDA jezgra
    • Kašnjenja između poziva
    • Korišćenje memorije GPU-a

PyTorch Profiler omogućava detaljno profilisanje operacija unutar modela:

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

Ovo pomaže da se identifikuju uska grla u računanjima, na primer, spore operacije ili neefikasno korišćenje memorije.

Ukratko, kombinovanjem sistemskog profilisanja (Nsight) i profilisanja na nivou okvira (PyTorch Profiler), može se dobiti potpuna slika o performansama inferense LLM na GPU i optimizovati uska grla.