Команда PyTorch выкатила новую версию своего ML-фреймворка, которая включает более 3400 свежих коммитов от 434 контрибуторов. Также разработчики представили бета-версии двух библиотек — это TorchData, предназначенная для создания производительных конвейеров данных, и functorch, добавляющая составные преобразования в PyTorch.
В Pytorch 1.11 пофиксили некоторые баги, «задепрекейтили» устаревшие методы, а некоторые и вовсе удалили. Например, отключили torch.hub.import_module, который когда-то по ошибке стал общедоступным.
Теперь в Python API можно копировать все атрибуты объектов Tensor, а не только простые свойства:
Аргумент Steps в torch.linspace и torch.logspace стал обязательным:
Разработчики расширили возможности по работе с Python API, CUDA и инструментами линейной алгебры.
Python API. Добавили set_deterministic_debug_mode и get_deterministic_debug_mode, n-мерный эрмитов БПФ, распределения Уишарта. Теперь модули torch и torch.linalg поддерживают более 90% операторов Python Array API, включая torch.from_dlpack для поддержки стандарта DLPACK.
CUDA. Появился Jiterator, который позволяет компилировать редко используемые ядра CUDA в рантайме. Добавили дескриптор cuSPARSE и обновили CSR addmm, addmv_out и nvidia-smi.
Autograd. В PyTorch 1.11 появилась реализация torch.utils.checkpoint, которая не использует повторно используемый autograd. Прямой режим AD (дифференциации алгоритмов) теперь поддерживает большинство операций и включает функцию ctx.save_for_forward, а метод autograd.forward_ad.unpack_dual теперь возвращает именованный кортеж вместо обычного кортежа.
Линейная алгебра. Добавили поддержку прямой дифференциации алгоритмов в torch.linalg.{eig, inverse, householder_product, qr} и torch.*_solve, поддержку прямой и обратной AD в torch.linalg.lstsq, а также расширили диапазон входных данных для linalg.pinv.
Узнать больше о PyTorch 1.11 и новых библиотеках можно в репозитории PyTorch на GitHub.