Spec-Zone.ru › PyTorch 2.14

Проблема специализации для нуля и единицы

Создано: 22 сен. 2025 | Последнее обновление: 03 дек. 2025

Перед чтением этого раздела необходимо ознакомиться с основами динамических форм. Убедитесь, что вы прочитали следующие разделы:

  • Динамические формы
  • torch.export
  • Что такое специализация?

В torch.compile мы автоматически выполняем специализацию для входных данных с размером 0 или 1 и предполагаем, что размеры любых остальных входных данных не равны 0 или 1. Это упрощает такие задачи, как проверка непрерывности и широковещательного распространения, поскольку позволяет не добавлять дополнительные проверки. Однако это может создавать проблемы для разреженных моделей с большим количеством символьных целых чисел, где на практике встречаются тензоры размером 0, 1 или 2. Например, рассмотрим задачу, связанную со сбором отметок «Нравится» на странице.

Хотя можно заранее отключить специализацию для 0 и 1, выполнение обычного кода PyTorch часто снова приводит к появлению проверок для 0 и 1, поскольку многие условия в PyTorch проверяют, равны ли значения 0 или 1. Модели, работающие для N > 2, часто обобщаются на N = 1, но это не гарантировано, особенно при использовании символьных переменных. Например, при отслеживании движений рук размерность N = 0, 1 или 2 может приводить к различному поведению графа. Простая надежда на то, что модель N > 2 обобщается, может выявить проблемы с корректностью.

См. также

  • Динамические формы
  • torch.export
  • Что такое специализация?
  • Подкреплённые и неподкреплённые SymInt

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/user_guide/torch_compiler/compile/dynamic_shapes_zero_one_specialization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API