Spec-Zone.ru › PyTorch 2.14

torch.utils

Создано: 21 июл. 2023 | Последнее обновление: 09 июл. 2026

get_cpp_backtrace

Возвращает строку, содержащую трассировку стека C++ текущего потока.

set_module

Задаёт атрибут модуля для объекта Python, чтобы его представление было удобнее читать.

swap_tensors

Эта функция меняет местами содержимое двух объектов Tensor.

torch.utils.backend_registration

generate_methods_for_privateuse1_backend

Автоматически генерирует атрибуты и методы для пользовательского бэкенда после переименования бэкенда privateuse1.

rename_privateuse1_backend

Переименовывает устройство бэкенда privateuse1, чтобы его было удобнее использовать в качестве имени устройства в API PyTorch.

torch.utils.hooks

torch.utils.hooks.unserializable_hook(f) [исходный код]

Помечает функцию как несериализуемый хук с помощью этого декоратора.

Это подавляет предупреждения, которые в противном случае появлялись бы при попытке сериализовать тензор с хуком.

torch.utils.throughput_benchmark

torch.utils.throughput_benchmark.format_time(time_us=None, time_ms=None, time_s=None) [исходный код]

Определяет форматирование времени.

Тип возвращаемого значения:

str

torch.utils.collect_env

check_release_file
is_xnnpack_available
main
pretty_str
run

Возвращает (код возврата, stdout, stderr).

run_and_parse_first_match

Запускает команду с помощью run_lambda и возвращает первое совпадение с регулярным выражением, если оно есть.

run_and_read_all

Запускает команду с помощью run_lambda; если rc равен 0, считывает и возвращает весь вывод.

run_and_return_first_line

Запускает команду с помощью run_lambda и возвращает первую строку, если вывод не пуст.

torch.utils.flop_counter

Вспомогательные средства для подсчёта теоретического количества операций с плавающей точкой.

FlopCounterMode — менеджер контекста, который перехватывает операторы PyTorch и суммирует их зарегистрированные формулы FLOP. Результат — теоретический подсчёт FLOP для операторов, запущенных внутри контекста, основанный на формах тензоров, а не измерение производительности оборудования.

Счётчик полезен для сравнения графов моделей, планов контрольных точек активаций или изменений форм тензоров при стабильном правиле подсчёта FLOP. Не следует трактовать его как количество инструкций ядра, время выполнения, пропускную способность памяти, достигнутую производительность FLOP/с, загрузку Tensor Core или точный объём работы объединённого ядра.

Семантика подсчёта

  • Подсчёты выполняются по формулам из flop_registry. Операторы без формулы могут быть разложены на зарегистрированные операторы; в противном случае они добавляют ноль FLOP.
  • По умолчанию аргументы-тензоры в формулах заменяются их формами. Аргументы, не являющиеся тензорами, передаются без изменений. Используйте register_flop_formula(..., get_raw=True) только в том случае, если формуле нужны исходные аргументы-тензоры или метаданные.
  • Операции прямого и обратного проходов учитываются, только если они выполняются во время активности менеджера контекста.
  • В формулах по умолчанию используются плотные наивные математические определения. Например, умножение матриц учитывает 2 * m * n * k FLOP.
  • Подсчёты автоматически не корректируются с учётом пропускной способности для конкретного типа данных, Tensor Core, разреженности, квантования, маскирования, пропущенных элементов, перемещения данных или зависящих от данных досрочных выходов. Формула должна явно учитывать такую семантику. Например, встроенные формулы attention задают верхние границы для каузального или иным образом маскированного attention, если формула явно не моделирует маску.
  • Операторы высшего порядка и torch.compile могут по-разному представлять разложенные или объединённые вычисления по сравнению с eager-выполнением. Для пользовательских операторов и пользовательских ядер Triton нужна формула или разложение, если они должны учитываться в FLOP.
  • Атрибуция модуля отслеживается с помощью ModuleTracker. Итоговые значения всегда доступны в "Global"; строки для подмодулей отражают атрибуцию вызовов модулей, наблюдавшихся во время работы контекста, по принципу best effort.
  • Рабочая нагрузка по-прежнему выполняется в обычном режиме. Если важны накладные расходы или использование памяти, используйте этот режим для нескольких репрезентативных итераций, а не для длительных запусков обучения.

Пример

import torch
from torch.utils.flop_counter import FlopCounterMode

model = torch.nn.Linear(16, 32)
x = torch.randn(4, 16)

with FlopCounterMode(display=False) as mode:
    model(x).sum().backward()

print(mode.get_total_flops())
print(mode.get_flop_counts()["Global"])

Регистрация формулы для пользовательского оператора

Регистрируйте пользовательские формулы FLOP до создания FlopCounterMode. При инициализации режим сохраняет снимок глобального реестра.

from math import prod

import torch
from torch.utils.flop_counter import FlopCounterMode, register_flop_formula

@torch.library.custom_op("example::scale", mutates_args=())
def scale(x: torch.Tensor) -> torch.Tensor:
    return x * 2

@register_flop_formula(torch.ops.example.scale)
def scale_flops(x_shape, *, out_shape=None) -> int:
    return prod(x_shape)

x = torch.randn(8)
with FlopCounterMode(display=False) as mode:
    scale(x)

assert mode.get_total_flops() == 8
FlopCounterMode

Подсчитывает теоретическое количество FLOP для операторов, выполняемых внутри контекста.

baddbmm_flop

Подсчитывает количество FLOP для операции baddbmm.

bmm_flop

Подсчитывает количество FLOP для операции bmm.

conv_backward_flop
conv_flop

Подсчитывает количество FLOP для свёртки.

conv_flop_count

Подсчитывает количество FLOP для свёртки.

register_flop_formula
sdpa_backward_flop

Подсчитывает количество FLOP для обратного прохода self-attention.

sdpa_backward_flop_count
sdpa_flop

Подсчитывает количество FLOP для self-attention.

sdpa_flop_count

Подсчитывает количество FLOP для self-attention.

shape_wrapper

torch.utils.hipify.hipify_python

Скрипт Python Hipify. ## # Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. # 2017-2018 Advanced Micro Devices, Inc. and # Facebook Inc. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the “Software”), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE.

tr>
add_dim3

добавляет dim3() ко второму и третьему аргументам при запуске ядра

compute_stats
extract_arguments

Возвращает список аргументов в следующей группе параметров функции.

file_add_header
file_specific_replacement
find_bracket_group

Находит первую сбалансированную пару круглых скобок.

find_closure_group

Обобщённый способ поиска сбалансированной группы скобок

find_parentheses_group

Находит первую сбалансированную пару квадратных скобок.

fix_static_global_kernels

Статические глобальные ядра в HIP приводят к ошибке компиляции.

get_hip_file_path

Возвращает новое имя файла, преобразованного в HIP

hip_header_magic

Если файл содержит вызовы встроенных функций ядра и не включает заголовок cuda_runtime.h, автоматически добавляет #include, соответствующий «магическим» включениям, предоставляемым NVCC.

hipify
is_caffe2_gpu_file
is_cusparse_file
is_out_of_place
is_pytorch_file
is_special_file
match_extensions

Вспомогательный метод для проверки, заканчивается ли имя файла заданным расширением

matched_files_iter
openf
preprocess_file_and_save_result
preprocessor

Выполняет преобразование CUDA -> HIP для указанного файла.

processKernelLaunches

Заменяет запуски ядер в стиле CUDA запусками ядер в стиле HIP.

replace_extern_shared

Находит синтаксис 'extern __shared__ type foo[];' и вместо него использует макрос HIP_DYNAMIC_SHARED().

replace_math_functions

FIXME: Временно заменяет вызовы математических функций с std:: на варианты без std::, чтобы предотвратить ошибки компоновщика NOTE: Это может привести к проблемам с корректностью при выполнении тестов, поскольку может быть вызвана неправильная версия математической функции (exp/expf).

str2bool

ArgumentParser не поддерживает type=bool.

TensorWeakRef

Обёртка над слабой ссылкой на Tensor, выполняющая вызов _fix_weakref(), необходимый при извлечении Tensor из слабой ссылки.

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

Spec-Zone.ru

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