Article

PyTorch Profiler: Einsteiger-Guide für torch.profiler

PyTorch Profiler Performance Deep Learning Tutorial

Was du nicht profilieren kannst, kannst du nicht optimieren

Profiling ist der Schlüssel zur Performance-Optimierung – egal ob du mehr Tokens pro Sekunde aus einem LLM pressen willst, Millisekunden von der Inferenz scheren oder einfach verstehen möchtest, warum dein Training langsamer läuft als erwartet.

Aber Profiling hat eine steile Lernkurve. Die Traces sind dichte Wände aus farbigen Rechtecken. Die Events tragen einschüchternde Namen. Die meisten Tutorials setzen voraus, dass du sie schon lesen kannst.

Die neue Serie von HuggingFace

Dieser Artikel ist der erste Teil einer Serie über Profiling in PyTorch:

  1. Teil 1 (dieser Post): Einfachste Operation – Matrix-Multiplikation plus Bias-Add
  2. Teil 2: Skalierung auf nn.Linear und kleine MLPs, Blick auf Kernel
  3. Teil 3: Alles zusammen mit LLMs und transformers

Was du lernen wirst

  • Wie man torch.profiler einrichtet
  • Was der Profiler tatsächlich zurückgibt
  • Wie man den Trace liest und interpretiert
  • GPU-Kernel vs. CPU-Overhead verstehen

Beispiel: Einfache Matrix-Operation

import torch

def simple_op(A, B, bias):
    return torch.matmul(A, B) + bias

# Profiling Setup
with torch.profiler.profile(
    activities=[
        torch.profiler.ProfilerActivity.CPU,
        torch.profiler.ProfilerActivity.CUDA,
    ],
    on_trace_ready=torch.profiler.tensorboard_trace_handler('./logs'),
) as prof:
    result = simple_op(A, B, bias)

# Key Metrics
print(prof.key_averages().table(sort_by="cuda_time_total", row_limit=10))

Warum das wichtig ist

Wer LLMs in Produktion bringt, muss verstehen:

  • Wo Zeit verloren geht
  • Ob GPU oder CPU der Bottleneck ist
  • Welche Kernel optimiert werden können

Die Serie ist als entspannter Lesefluss konzipiert – mit “Aha!"-Momenten und praktischen Beispielen.

Link: Profiling in PyTorch (Part 1): A Beginner’s Guide to torch.profiler | HuggingFace Blog