Spec-Zone.ru › PyTorch 2.14

Модель программирования torch.compile

Создано: 28 июля 2025 г. | Последнее обновление: 27 июля 2026 г.

Модель программирования torch.compile:

  1. Проясняет некоторые внутренние особенности работы torch.compile, чтобы можно было лучше предсказывать поведение компилятора на пользовательском коде, и
  2. Позволяет точнее управлять torch.compile.

Понимание модели программирования torch.compile позволяет систематически устранять проблемы, возникающие при работе с torch.compile.

  • Основные понятия Dynamo
    • Трассировка Dynamo
    • Разрывы графа
    • Защитные проверки
    • Повторные компиляции
    • Динамические формы
  • Работа с разрывами графа
    • Использование fullgraph=True для выявления и устранения разрывов графа
      • Стратегия 1: перепишите неподдерживаемый код, используя возможности, поддерживаемые Dynamo
      • Стратегия 2: чистые функции всегда можно скомпилировать с помощью обходного решения.
      • Стратегия 3: не компилируйте код
    • Распространённые разрывы графа
      • Некорректный код
      • Операции, зависящие от данных
      • Вывод и журналирование
    • Использование torch._dynamo.nonstrict_trace
    • Пользовательские операторы
    • Работа с fullgraph=False
      • Где применять torch.compile?
        • compile(model) против model.compile()
      • Отключение и подавление ошибок
      • Переключение error_on_graph_break
        • Пример error_on_graph_break(False)
        • Пример error_on_graph_break(True)
        • Поведение вложенности error_on_graph_break
        • Взаимодействие с fullgraph
        • Сравнение fullgraph=True/False и error_on_graph_break
      • Вложенные разрывы графа
      • Пропускаемые функции
        • Разрыв графа в цикле
        • Разрыв графа в менеджере контекста
        • Разрыв графа в блоке try
        • Достижение лимита повторных компиляций
        • Ошибки компилятора
        • Работа с пропускаемыми функциями
  • Модель программирования с неточной трассировкой
    • Чистые функции
      • Пример 1: без явного входного значения (например, обращение к глобальному тензору)
      • Пример 2: побочный эффект (вывод)
      • Пример 3: побочный эффект (изменение входного списка)
      • Без прямого изменения data_ptr
    • Специализация и константы
  • Работа с повторными компиляциями
    • Включены ли динамические формы?
    • Оборачивание констант в тензоры
    • Отмена специализации целочисленных атрибутов nn.Module
    • Изменение ограничения размера кэша
    • Разрывы графа для снижения затрат на повторную компиляцию
  • Сокращение времени компиляции
    • Избегайте ненужных повторных компиляций
    • Используйте динамические формы, чтобы избежать повторных компиляций из-за изменения форм
    • Региональная компиляция
    • Иерархическая компиляция с nested_compile_region
    • Измерение времени компиляции
  • Сокращение накладных расходов на защитные проверки
    • 1. Сократите время выполнения байт-кода до построения графа с помощью install_free_tensors
    • 2. Пропускайте защитные проверки для nn.Module с помощью guard_filter_fn
    • 3. Сначала попробуйте use_recursive_dict_tags_for_guards
    • 4. Пропускайте проверку защитных условий после прогрева с помощью skip_guard_eval_unsafe
    • Объединение всего вместе
    • Дополнительные материалы
  • tlparse / TORCH_TRACE
    • TORCH_LOGS
    • tlparse и TORCH_LOGS
  • Сообщение о проблемах
    • Абляция
    • Бисекция
    • Создание воспроизводимого примера

© 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/programming_model.html

Spec-Zone.ru

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