Sobes.tech
Senior

Wie man die Inferenz von LLM auf GPU profiliert (nsight, torch profiler)?

sobes.tech KI

Antwort von AI

Um die Inferenz großer Sprachmodelle (LLM) auf GPU zu profilieren, werden häufig Tools wie NVIDIA Nsight Systems und PyTorch Profiler verwendet.

NVIDIA Nsight Systems bietet detaillierte Informationen über GPU-Auslastung, Kernel-Ausführungszeit, Speichernutzung und CPU-GPU-Interaktion. Für das Profiling der LLM-Inferenz sollte man:

  1. Die Inferenz mit einem in Nsight eingebetteten Befehl starten, z.B.:
nsys profile --trace=cuda,nvtx python inference_script.py
  1. Die gesammelten Daten in der GUI von Nsight Systems analysieren, wobei auf folgende Punkte zu achten ist:
    • CUDA-Kernel-Ausführungszeit
    • Verzögerungen zwischen Aufrufen
    • GPU-Speichernutzung

PyTorch Profiler ermöglicht eine detaillierte Profilierung der Operationen im Modell:

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

Dies hilft, Engpässe bei Berechnungen zu erkennen, z.B. langsame Operationen oder ineffiziente Speichernutzung.

Kurz gesagt, durch die Kombination von Systemprofiling (Nsight) und Framework-Profiling (PyTorch Profiler) kann man ein vollständiges Bild der Leistungsfähigkeit der LLM-Inferenz auf GPU erhalten und Engpässe optimieren.