Spec-Zone.ru › PyTorch 2.14

torch.fx.passes.runtime_assert.insert_deferred_runtime_asserts

torch.fx.passes.runtime_assert.insert_deferred_runtime_asserts(gm, shape_env, name, export=False) [исходный код]

Во время трассировки мы могли обнаружить, что для некоторых значений, зависящих от данных, выполняется проверка во время выполнения; например, torch.empty(x.item()) подразумевает проверку во время выполнения, что x.item() >= 0. Эти проверки могут возникать непредсказуемо при распространении фиктивных тензоров, поэтому мы не можем удобно вставлять их в граф FX в момент возникновения. Вместо этого мы накапливаем их в ShapeEnv и на этом этапе вставляем в граф как полноценные проверки.

Этот этап также устраняет дублирование вычислений, связанных с размерностями, выполняя CSE для операций, которые создают символьные значения и/или участвуют в проверках во время выполнения. Кроме того, вызовы для получения формы (size/stride/storage_offset) по возможности преобразуются в вычисления на основе размеров входных данных, что позволяет раньше освобождать промежуточные тензоры. Например, здесь dynamo удалит вызовы cat и repeat:

z = torch.cat([x, x], dim=0) # 2*s0 w = z.repeat(y.shape[0]) # 2*s0*s1 _w = w.shape[0] # something with _w, but not w …

# turns into -> _w0 = 2 * s0 _w = _w0 * s1

# where s0, s1 are either SymInt graph inputs, or the result of added size calls

Также устраняются дублирующиеся проверки, сгенерированные компилятором и проверяющие одно и то же выражение, а также дублирующиеся вызовы constrain_range. Кроме того, поскольку проверки границ для отдельных символов (например, u0 >= 0, u0 <= 5) накапливают информацию в ShapeEnv, ShapeEnv содержит минимальные и максимальные границы для каждого символа, и в конце этого этапа мы добавляем проверки границ, если в графе ещё нет эквивалентной явной проверки.

Примечание

Обратная совместимость этого API гарантируется.

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.fx.passes.runtime_assert.insert_deferred_runtime_asserts.html

Spec-Zone.ru

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