Claude Info
AI и агенты

GPU Perf Playbook

phtphtpht/gpu-perf-playbook

Практическое руководство и Claude-скилл для отладки медленного обучения, OOM-ошибок, плохого масштабирования на несколько GPU и узких мест LLM-инференса. Включает чеклисты, деревья решений и профилировочные команды.

Установка

terminal
bash
git clone https://github.com/phtphtpht/gpu-perf-playbook.git

README

GPU Perf Playbook для PyTorch и LLM-нагрузок

Исправляй медленное обучение, низкую утилизацию GPU, OOM, плохое масштабирование на несколько GPU и узкие места LLM-инференса.

English | 中文

GPU Perf Playbook banner

License: MIT Claude Skill PyTorch LLM Inference

Этот репозиторий предназначен для инженеров, которые уже знают, что их модель должна работать быстрее, но нуждаются в практическом пути к поиску и устранению узкого места.

Используй двумя способами:

  • Читай плейбук, когда нужен приоритизированный чеклист оптимизации GPU.
  • Установи включённый Claude-скилл, когда хочешь, чтобы Claude автоматически рассуждал на основе того же плейбука.

Если это сэкономит тебе время на отладку — поставь звезду репозиторию, чтобы больше людей его нашли.


Что это помогает исправить

  • Циклы обучения, которые медленны несмотря на топовые GPU
  • GPU, ожидающие CPU или DataLoader
  • OOM из-за активаций, состояния оптимизатора или вариативности форм тензоров
  • Многогпу-задачи с плохой эффективностью масштабирования
  • LLM-инференс-стеки с плохой задержкой, пропускной способностью или стратегией KV-кэша
  • Код-ревью, где баги производительности скрываются за «корректным» кодом

Философия: сначала измерь, классифицируй узкое место, примени наименьшее значимое исправление, затем проверь результат.


Что входит в репозиторий

МатериалЗачем нужен
Оптимизация обученияP0/P1-дефолты для PyTorch-обучения: AMP/bf16, torch.compile, пайплайны данных, память, чекпоинтинг
Оптимизация инференсаTTFT/ITL, KV-кэш, непрерывная батчинг, квантизация, компромиссы при сервинге
Распределённое обучениеDDP, FSDP/ZeRO, перекрытие коммуникаций, топологическая осведомлённость, тюнинг NCCL
Ядра и низкий уровеньTriton, FlashAttention, фьюжн, доступ к памяти, roofline-анализ
Профилирование и инструментыNsight Systems, Nsight Compute, PyTorch Profiler, MFU, диагностика
Антипаттерны и чеклист12 распространённых ошибок, промпты для ревью PR, pre-commit проверки
Claude-скиллЗагружаемый пакет скилла для Claude.ai

Установка в Claude за 60 секунд

  1. Скачай skill/best-gpu-perf.skill.
  2. Открой Claude.ai -> Settings -> Skills.
  3. Нажми Add Skill и загрузи файл.

Затем попробуй такие промпты:

  • My training is slow on A100. Give me the highest-ROI things to check first.
  • Review this PyTorch training loop for GPU performance issues.
  • I'm hitting OOM on a 7B model. Walk me through the memory budget and likely fixes.
  • My multi-GPU scaling falls off after 4 GPUs. What should I profile?
  • Help me optimize LLM inference latency and throughput for a vLLM-style stack.

Если хочешь кастомизировать скилл, исходник находится в skill/SKILL.md. Пересобери упакованный артефакт командой:

./scripts/build_skill.sh

С чего начать

Если твоя проблема...Читай сначала
Медленное обучениеdocs/training.md
Медленный инференс / низкая пропускная способностьdocs/inference.md
Плохое масштабирование DDP/FSDPdocs/distributed.md
Горячие точки ядер / вопросы фьюжнаdocs/kernel.md
Нужны команды профилировщика и помощь с интерпретациейdocs/profiling.md
Нужен быстрый чеклист для ревьюdocs/checklist.md

Для кого это

  • PyTorch-инженеры, которым нужно ускорить обучение без переписывания всего с нуля
  • LLM-инфра и сервинг-инженеры, отлаживающие задержку, пропускную способность или поведение KV-кэша
  • Исследователи, которым нужен дефолтный чеклист оптимизации перед написанием кастомных ядер
  • Ревьюеры, которые хотят отлавливать регрессии производительности в PR

Структура репозитория

  • docs/: тематические справочные руководства
  • skill/SKILL.md: исходник Claude-скилла
  • skill/best-gpu-perf.skill: упакованный артефакт скилла для загрузки
  • scripts/build_skill.sh: пересобирает упакованный скилл из исходников репозитория

⚡ Быстрый старт: чеклист P0

Прежде чем делать что-либо ещё, убедись, что в твоём коде есть всё перечисленное. Это низкорисковые, высокодоходные практики, применимые почти к каждому PyTorch-проекту:

py
import torch, os
from torch.utils.data import DataLoader

# 1. Enable TF32 (free speed on Ampere+)
torch.set_float32_matmul_precision("high")

# 2. DataLoader: don't let GPU wait for data
loader = DataLoader(
    dataset,
    batch_size=batch_size,
    num_workers=4,                # NOT 0
    pin_memory=True,              # Faster CPU→GPU transfer
    persistent_workers=True,      # Don't re-fork every epoch
)

# 3. Compile the model
model = torch.compile(model.cuda())

# 4. Fused optimizer
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, fused=True)

# 5. Training loop with AMP + best practices
for batch in loader:
    batch = {k: v.cuda(non_blocking=True) for k, v in batch.items()}
    optimizer.zero_grad(set_to_none=True)         # Not zero_grad()

    with torch.autocast("cuda", dtype=torch.bfloat16):  # 6. Mixed precision
        loss = model(**batch)

    loss.backward()
    optimizer.step()
    # ❌ Don't: print(loss), loss.item() every step, loss.cpu()

Также проверь:

  • Скрытые размерности / размер словаря кратны 64
  • Attention использует F.scaled_dot_product_attention, а не ручное QK^TV
  • Eval использует @torch.inference_mode()
  • Нет .item() / .cpu() / print(tensor) в горячем пути обучения

👉 Полный чеклист с 12 антипаттернами и шаблоном PR → docs/checklist.md


🧭 Деревья решений

Моё обучение медленное

ГПУ утилизация < 50%? ├─ CPU на 100%? → ...

(полное дерево решений доступно в репозитории)

Похожие скиллы