Реклама
Перетяжка // Коробка 3.0

PyTorch 2.14 добавил NVGEMM, backend nccl2 и сборки для Python 3.15

Релиз собран из 2 995 коммитов от 487 участников; wheels для Python 3.15 лежат не на PyPI, а на download.pytorch.org.

Обложка: PyTorch 2.14 добавил NVGEMM, backend nccl2 и сборки для Python 3.15

PyTorch Foundation 2 сентября выпустила PyTorch 2.14. Релиз собран из 2 995 коммитов от 487 участников и меняет сразу несколько слоёв: компиляцию GPU-ядер (NVGEMM с ядрами CUTLASS в Inductor), распределённое обучение (backend nccl2, перестройка process group без перезапуска), управляющие конструкции для torch.compile (torch.switch) и матрицу сборок, в которой появились wheels для Python 3.15 и free-threaded 3.15t.

Практический вопрос для тех, кто обновляется: что сломается. Удалены torch.cholesky, torch.qr и параметр профилировщика use_cuda; acc_policy="balanced" в LinearCrossEntropyOptions теперь вызывает ValueError, нужно "compact"; у скалярного clamp изменился градиент на границе. А torch.compile на Python 3.15 в этом релизе не работает и завершается явным RuntimeError.

Ключевые выводы
  • NVGEMM добавляет в Inductor ядра CUTLASS, сгенерированные CuTeDSL, с fusion эпилогов, scaled и NVFP4 GEMM.
  • Distributed: новый backend nccl2 с неблокирующими коммуникаторами и eager splitting; c10d умеет перенастраивать process group на месте; Flight Recorder работает с любым backend.
  • torch.switch обобщает torch.cond на несколько веток, torch.while_loop захватывается CUDA Graphs, @dynamic_spec единообразно описывает динамические формы для torch.compile, torch.export и make_fx.
  • Apple Silicon получил нативные SVD, eigh, QR и Cholesky; появились ROCm 7.14 wheels, захват графов на Intel XPU и цель sm_107 для NVIDIA Rubin.
  • Wheels для Python 3.15 и 3.15t собраны для Linux x86-64 и aarch64, Windows x86-64 и macOS Apple Silicon, но лежат на download.pytorch.org, а не на PyPI; torch.compile на 3.15 не поддерживается.

Что даёт NVGEMM и кому он нужен

NVGEMM, по описанию релиза, подключает к компилятору Inductor ядра матричного умножения CUTLASS, которые генерируются через CuTeDSL. Поддерживаются слияние эпилогов (операций после умножения), scaled GEMM и формат NVFP4, а также grouped-reduction epilogues. Это продолжение линии PyTorch 2.13, где CuTeDSL-путь только закладывался. Выигрыш получат те, кто гоняет обучение и инференс на современных NVIDIA GPU через torch.compile; на CPU, ROCm и Apple Silicon эта часть релиза ничего не меняет. Цифр ускорения относительно 2.13 в блоге релиза нет, поэтому эффект стоит мерить на своей модели.

Отказоустойчивость распределённого обучения

Backend nccl2 появился рядом с прежним NCCL и приносит неблокирующие коммуникаторы и eager splitting. Важнее для практики изменения в c10d: process group можно перестроить на месте, без полного перезапуска задания, когда один из узлов выпал. Добавлены односторонние окна RMA, а Flight Recorder, инструмент посмертной диагностики зависших коллективных операций, теперь работает не только с NCCL. Для кластеров на десятки GPU это означает меньше потерянных часов при сбое одного узла; для одной машины изменения не заметны.

Python 3.15: wheels есть, torch.compile нет

Python 3.15 ещё не вышел: 1 сентября появился второй релиз-кандидат, финал назначен на 1 октября. PyTorch 2.14 уже публикует сборки под 3.15 и его free-threaded вариант 3.15t для Linux, Windows и macOS на Apple Silicon, включая применимые CPU-, CUDA-, ROCm- и XPU-варианты. Две оговорки из заметок к релизу: эти wheels не лежат на PyPI, их нужно ставить с индекса download.pytorch.org, и torch.compile под 3.15 не поддерживается; попытка скомпилировать модель завершится RuntimeError, работает только eager-режим.

Что это значит на практике: проверить совместимость своего кода с 3.15 до октября можно уже сейчас, но замеры производительности с компиляцией придётся отложить до следующего релиза PyTorch. Про сам релиз-кандидат и заморозку ABI мы писали отдельно.

Несовместимые изменения

  • LinearCrossEntropyOptions(acc_policy="balanced") удалён: теперь ValueError, заменять на "compact".
  • Удалены устаревшие torch.cholesky и torch.qr (используйте torch.linalg.cholesky и torch.linalg.qr) и параметр профилировщика use_cuda.
  • Градиент скалярного clamp на границе изменён с 1 на 0; для тензорных границ градиент делится как 0,5 и 0,5. Модели, чувствительные к поведению на границе клиппинга, могут обучаться иначе.
  • Поддержка комплексных тензоров в torch.compile помечена как экспериментальная.

Как обновляться

  1. Свериться с матрицей сборок на странице релиза: версии CUDA, ROCm 7.14, XPU и Python для вашей платформы.
  2. Прогнать по коду поиск acc_policy="balanced", torch.cholesky, torch.qr и use_cuda.
  3. Если используете кастомные process group с параметром backend, проверить их на nccl2 отдельно.
  4. Для Python 3.15 ставить только с индекса download.pytorch.org и не рассчитывать на torch.compile.

Библиотека torchvision 0.29 в релизе объявлена ABI-совместимой с будущими torch 2.15 и 2.16, то есть её не придётся пересобирать под следующие два выпуска. Ограничений на загрузку wheels по регионам в источниках нет. Что ещё вышло в ML-инструментах за последние недели, смотрите в обзоре открытых моделей августа.

Источники: PyTorch 2.14 Release Blog, Release notes v2.14.0 на GitHub, Python 3.15.0rc2

Изображение на обложке: PyTorch Foundation, логотип PyTorch