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)[исходный код] -
Определяет форматирование времени.
- Тип возвращаемого значения:
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 * kFLOP. - Подсчёты автоматически не корректируются с учётом пропускной способности для конкретного типа данных, 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.
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
| tr> |
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