torch.func
Создано: 11 июн. 2025 | Последнее обновление: 11 июн. 2025
torch.func, ранее известный как «functorch», — это похожие на JAX компонуемые преобразования функций для PyTorch.
Примечание
В настоящее время эта библиотека находится в стадии бета-тестирования. Это означает, что функции в целом работают (если в документации не указано иное), а мы (команда PyTorch) стремимся развивать эту библиотеку. Однако API могут изменяться с учётом отзывов пользователей, и мы не обеспечиваем полное покрытие всех операций PyTorch.
Если у вас есть предложения по API или варианты использования, которые вы хотели бы видеть, создайте задачу на GitHub или свяжитесь с нами. Мы будем рады узнать, как вы используете эту библиотеку.
Что такое компонуемые преобразования функций?
- «Преобразование функции» — это функция высшего порядка, которая принимает числовую функцию и возвращает новую функцию, вычисляющую другую величину.
-
torch.funcсодержит преобразования для автоматического дифференцирования (grad(f)возвращает функцию, вычисляющую градиентf), преобразование для векторизации/пакетной обработки (vmap(f)возвращает функцию, вычисляющуюfдля пакетов входных данных) и другие. - Эти преобразования функций можно произвольно комбинировать друг с другом. Например, композиция
vmap(grad(f))вычисляет величину, называемую градиентами для отдельных примеров, которую стандартный PyTorch сегодня не может эффективно вычислить.
Зачем нужны компонуемые преобразования функций?
В настоящее время в PyTorch есть ряд задач, решение которых затруднительно:
- вычисление градиентов для отдельных примеров (или других величин для отдельных примеров)
- запуск ансамблей моделей на одном компьютере
- эффективная пакетная обработка задач во внутреннем цикле MAML
- эффективное вычисление матриц Якоби и Гессе
- эффективное пакетное вычисление матриц Якоби и Гессе
Комбинация преобразований vmap(), grad() и vjp() позволяет реализовать описанные выше возможности без создания отдельной подсистемы для каждой из них. Идея компонуемых преобразований функций взята из фреймворка JAX.
Подробнее
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/func.html