Справочник API torch.compiler
Создано: 2 июн. 2023 | Последнее обновление: 28 июл. 2026
Краткий обзор torch.compiler см. в разделе torch.compiler.
compile
| Сведения об аргументах этой функции см. в разделе |
reset
| Сбросить состояние компилятора в текущем процессе. |
nonstrict_trace
| Декоратор, помечающий функцию как допускающую трассировку в режиме nonstrict для dynamo. |
allow_in_graph
| Указывает фронтенду компилятора (Dynamo) пропустить символьный анализ функции и вместо этого напрямую записать её в граф при обнаружении. |
substitute_in_graph
| Регистрирует обработчик-полифилл для функции, обычно функции на C из расширения C, который используется вместо исходной функции при её встраивании в граф. |
assume_constant_result
| Эта функция используется для пометки функции |
list_backends
| Возвращает допустимые строки, которые можно передать в |
disable
| Эта функция предоставляет декоратор для отключения компиляции функции. |
set_default_backend
| Задаёт бэкенд по умолчанию для |
get_default_backend
| Возвращает текущий бэкенд по умолчанию для |
set_stance
| Задаёт текущий режим работы компилятора. |
set_enable_guard_collectives
| Включает использование коллективных операций во время вычисления защитных проверок для синхронизации поведения между рангами. |
cudagraph_mark_step_begin
| Указывает, что скоро начнётся новая итерация инференса или обучения. |
cudagraph_mark_warmup_incomplete
| Запрашивает дополнительный прогрев для активной функции CUDA Graph Trees. |
is_compiling
| Указывает, выполняется ли трассировка графа или его выполнение в рамках torch.compile() либо torch.export(). |
is_dynamo_compiling
| Указывает, выполняется ли трассировка графа посредством TorchDynamo. |
is_exporting
| Указывает, выполняется ли экспорт. |
keep_portable_guards_unsafe
| Общая функция, сохраняющая только те защитные проверки, которые можно использовать как в среде Python, так и вне её. |
skip_guard_on_inbuilt_nn_modules_unsafe
| Общая функция, пропускающая защитные проверки для встроенных модулей nn, например torch.nn.Linear. |
skip_guard_on_all_nn_modules_unsafe
| Общая функция, пропускающая защитные проверки для всех модулей nn — как пользовательских, так и встроенных (например, torch.nn.Linear). |
keep_tensor_guards_unsafe
| Общая функция, сохраняющая защитные проверки для всех тензоров. |
skip_guard_on_globals_unsafe
| Общая функция, пропускающая защитные проверки для всех глобальных переменных. |
skip_all_guards_unsafe
| Функция для пропуска всех защитных проверок скомпилированной функции. |
nested_compile_region
| Указывает ``torch.compile``, что отмеченный набор операций образует вложенную область компиляции (которая часто повторяется в полной модели); её код можно скомпилировать один раз и безопасно использовать повторно. |
load_cache_artifacts
| Динамически загружает артефакты кэша, ранее сериализованные с помощью save_cache_artifacts |
load_compiled_function
| Загружает AOT-скомпилированную функцию из файла. |
save_cache_artifacts
| Сериализует все артефакты кэша, созданные во время компиляции |
wrap_numpy
| Декоратор, преобразующий функцию из |
torch.compiler.precompile
-
torch.compiler.precompile(fn, *example_inputs, backend='inductor', tracer='make_fx', decompositions=None) -
Предварительно компилирует
fnдо выполнения, используя примеры входных данных, и возвращает самодостаточную исполняемую исходную строку Python вместе с кэшем ускорения в виде(python_code, cache).fn— это вычисление целиком, принимающее модель (или модели) в качестве явных аргументов, напримерlambda model, x: model(x)или шаг обучения. У аргументовnn.Moduleпараметры и буферы выносятся во входы графа, поэтому веса не встраиваются в артефакт: во время выполнения вы снова передаёте модель вызываемому объекту после загрузки. Загрузка выполняется с помощьюtorch.compiler.precompile.load(см. ниже).Примечание
При использовании трассировщика
make_fxпо умолчанию захват выполняется в нережимном режиме. Поток управления специализируется под примеры входных данных, а формы статичны — каждый размер встраивается в артефакт. Исключение — измерение тензора, явно помеченное как не имеющее привязки (только для бэкенда inductor) с помощьюtorch._dynamo.decorators.mark_unbackedна входных данных до вызова; такое измерение захватывается как не имеющий привязки symint, поэтому один артефакт подходит для любого его размера во время выполнения, а захват завершается ошибкой, если графу требуется установить для него защитную проверку. Тип данных и устройство каждого входа также специализируются (несовпадение во время выполнения отклоняется), а бэкенд inductor дополнительно специализируется на формате памяти входных данных. См. Note [precompile programming model] вtorch/_precompile.py.torch.compiler.precompileотличается отtorch._dynamo.config.caching_precompile(режима кэшированияtorch.compile).Если
fnвыполняет обратный проход, артефакт повторно запускает прямой и обратный проходы целиком и записывает полученные градиенты параметров в поляparameters().gradмодели, переданной во время выполнения, накапливая их (p.grad += g) так же, как при обычном выполнении.backward(). Поэтому используйте привычный циклzero_grad()/optimizer.step(). Параметры, получающие градиент, фиксируются во время захвата (замороженные параметры и параметры, не вносящие вклад, остаются.grad = None). Артефакт возвращает собственный результатfn(Noneдля отдельного шага.backward()), а не градиенты.- Параметры:
-
- fn – Вычисление целиком, которое нужно захватить; принимает модели и входные данные времени выполнения в качестве позиционных аргументов.
-
example_inputs – Примеры позиционных аргументов для
fn; аргументыnn.Moduleвыносятся, остальные являются входными данными времени выполнения. -
backend –
"inductor"(по умолчанию) выполняет понижение через AOTAutograd + Inductor;"eager"сохраняет захваченный граф ATen (гибкий к формату памяти, без ядер; формы всё равно специализируются под примеры). -
tracer – Фронтенд захвата.
"make_fx"(по умолчанию) — это трассировка make_fx в нережимном режиме и единственный реализованный на данный момент трассировщик;"dynamo"запланирован и пока вызываетNotImplementedError. -
decompositions – Необязательная таблица декомпозиций (
dictизOpOverloadв функцию декомпозиции), передаваемая вmake_fx; по умолчанию —None.
- Возвращает:
-
(python_code, cache)— самодостаточную исходную строку Python (единственный источник истины для соглашения о вызове) и бинарный кэш ускорения (без весов и метаданных соглашения о вызове; содержит небольшую метку целостности формата/версии/бэкенда/code_hash, которую проверяетload). - Вызывает исключение:
-
PrecompileError — если захват, понижение или вызов во время выполнения нарушает условия (см. описание исключения ниже).
Пример:
python_code, cache = torch.compiler.precompile(lambda m, x: m(x), model, x) f = torch.compiler.precompile.load(python_code, cache) out = f(model, x) # pass the model again at runtime
-
precompile.load(python_code, cache)[исходный код] -
Восстанавливает исполняемый объект из пары
(python_code, cache), возвращённойprecompile. Соглашение о вызове считывается изpython_code(единственного источника истины);cacheлишь ускоряет загрузку — он содержит только скомпилированный артефакт бэкенда (пакет Inductor дляbackend="inductor"; пустой дляbackend="eager") и не содержит весов. Во время выполнения вы снова передаёте модели.Предупреждение
loadвыполняет артефакт как код: он исполняетpython_code(черезexec) и для бэкенда inductor предварительно заполняет кэши ядер изcache. Считайте(python_code, cache)доверенным исполняемым вводом — загружайте только пару, созданную вами или иным образом заслуживающую доверия, точно так же, как и любой другой код, который вы собираетесь запустить (см. Note [precompile programming model], инвариант 7). Перед запускомloadтакже выводит предупреждение при каждом вызове.- Параметры:
-
-
python_code – Самодостаточная исходная строка Python, возвращённая
precompile. -
cache – Бинарный кэш ускорения, возвращённый
precompile.
-
python_code – Самодостаточная исходная строка Python, возвращённая
- Возвращает:
-
Исполняемый вызываемый объект с тем же соглашением о вызове, что и у захваченного
fn. Аргументы сопоставляются позиционно как во время захвата, так и во время загрузки; соглашения о вызове с именованными аргументами не поддерживаются. - Вызывает исключение:
-
PrecompileError — если
python_codeне является допустимым артефактом предварительной компиляции (не удаётся выполнить разбор или отсутствуют метаданные соглашения о вызове), еслиcacheсопоставлен с другимpython_code(не совпадает меткаbackendилиcode_hash) либо если вызов во время выполнения нарушает условия предварительной компиляции.
-
exception torch.compiler.PrecompileError -
Тип ошибки, вызываемой
torch.compiler.precompileи его артефактами.Вызывается, когда захват, понижение,
loadили вызов во время выполнения нарушает условия предварительной компиляции — например, тензор встроен как константа (инвариант 1), используется неподдерживаемая операция или операция с побочными эффектами, выводится нетензорное значение, которое бэкенд inductor не может понизить, либо форма или формат памяти входных данных во время выполнения отличается от примера (инварианты 3 и 6). Полное описание условий см. в Note [precompile programming model] этого модуля.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/torch.compiler_api.html