Проблема специализации для нуля и единицы
Создано: 22 сен. 2025 | Последнее обновление: 03 дек. 2025
Перед чтением этого раздела необходимо ознакомиться с основами динамических форм. Убедитесь, что вы прочитали следующие разделы:
В 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 обобщается, может выявить проблемы с корректностью.
© 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