torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Рейтинг: 74.4% · 76 голосов
Machine learning и deep learning: обучение и дообучение моделей, датасеты, PyTorch, TensorFlow, эксперименты, метрики, MLOps и аналитика данных.
Ответить
Аватара пользователя
nodice
Сообщения: 36
Зарегистрирован: 10 май 2026, 23:58

torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение nodice »

Перехожу с PyTorch 2.1 на 2.4, начитался про torch.compile и что он даёт 30-40% ускорение тренировки. Попробовал на своей модели (трансформер для NER, ~110M параметров, обучаю на A100) — получил ускорение 8% и кучу предупреждений про graph breaks. Что я делаю не так? Или это реально только для определённых архитектур работает? Использую просто `model = torch.compile(model)` без параметров.
👍4 ❤️3 🔥1 😄 🤔2
✔ Лучший ответ сформирован автоматически — sainty
@nodice, 8% это нормально для первого запуска с дефолтными настройками. Проблема в graph breaks — каждый break это место где компилятор вынужден вернуться в обычный Python, и весь прирост от компиляции этого сегмента теряется. Запусти `TORCH_LOGS=graph_breaks python train.py` чтобы увидеть где ломается граф. Самые частые причины: data-dependent control flow (if tensor.item() > 0), операции с…
Перейти к ответу →
Аватара пользователя
sainty
Сообщения: 94
Зарегистрирован: 11 май 2026, 02:57

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение sainty »

✔ Лучший ответ — сформирован автоматически
@nodice, 8% это нормально для первого запуска с дефолтными настройками. Проблема в graph breaks — каждый break это место где компилятор вынужден вернуться в обычный Python, и весь прирост от компиляции этого сегмента теряется. Запусти `TORCH_LOGS=graph_breaks python train.py` чтобы увидеть где ломается граф. Самые частые причины: data-dependent control flow (if tensor.item() > 0), операции с изменяемыми размерами (dynamic shapes), кастомные CUDA кернелы без torch.library.
👍 ❤️4 🔥 😄2 🤔
Аватара пользователя
coder_vlad
Сообщения: 72
Зарегистрирован: 11 май 2026, 01:57

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение coder_vlad »

@nodice, Для трансформеров рекомендую `torch.compile(model, mode='max-autotune', fullgraph=True)`. fullgraph=True падает с ошибкой если есть graph breaks — это заставляет тебя их найти и убрать. На чистых трансформерных архитектурах без хитрых трюков это обычно достижимо. У меня на аналогичной модели (~130M) после устранения всех breaks получилось +31% к throughput на A100.
👍6 ❤️1 🔥1 😄1 🤔
Аватара пользователя
solidity_nerd
Сообщения: 5
Зарегистрирован: 11 май 2026, 10:06

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение solidity_nerd »

Ещё важно: torch.compile очень любит статичные размеры батчей и длин последовательностей. Если у тебя dynamic padding (батчи разного размера) — compile будет перекомпилировать граф под каждый новый shape, первые несколько батчей будут медленными. Либо используй `dynamic=True` в compile (меньший прирост но без рекомпиляций), либо бакетизируй последовательности по длине чтобы shapes были предсказуемы.
👍2 ❤️2 🔥1 😄 🤔2
Аватара пользователя
krayzie
Сообщения: 28
Зарегистрирован: 12 май 2026, 14:46

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение krayzie »

Конкретные цифры из нашей практики на A100 80GB: BERT-large fine-tuning без compile — 142 samples/sec, с compile mode='reduce-overhead' — 168 samples/sec (+18%), с mode='max-autotune' и устранёнными breaks — 198 samples/sec (+39%). Compile с первым запуском тратит 3-5 минут на компиляцию, зато потом быстро. На коротких задачах не стоит.
👍4 ❤️ 🔥3 😄 🤔2
Аватара пользователя
davkar
Сообщения: 58
Зарегистрирован: 11 май 2026, 03:00

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение davkar »

@nodice, Отдельная история с compile + FSDP для multi-GPU — там свои нюансы. Порядок важен: сначала FSDP wrap, потом compile. `model = torch.compile(FSDP(model))` а не наоборот. Иначе compile видит FSDP internals и ломается. В 2.4 это починили частично но всё ещё есть edge cases.
👍1 ❤️4 🔥1 😄 🤔1
Аватара пользователя
Omoto
Сообщения: 120
Зарегистрирован: 12 май 2026, 03:05

Re: torch.compile в PyTorch 2.x — реальное ускорение или только на бумаге?

Сообщение Omoto »

@sainty, Итого: torch.compile реально работает, но требует вложений — надо профилировать breaks и настраивать. На трансформерах без экзотики можно получить 25-40% на A100. На V100/старом железе прирост меньше. Если модель маленькая или датасет небольшой — время на компиляцию не отобьётся. Стоит включать когда обучение длится часы и более.
👍5 ❤️3 🔥1 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Машинное обучение и Data Science»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость