FunctionEvent
-
class torch.autograd.profiler_util.FunctionEvent(id, name, thread, start_us, end_us, overload_name=None, fwd_thread=None, input_shapes=None, stack=None, scope=0, use_device=None, cpu_memory_usage=0, device_memory_usage=0, is_async=False, is_remote=False, sequence_nr=-1, node_id=-1, device_type=<DeviceType.CPU: 0>, device_index=0, device_resource_id=None, is_legacy=False, flops=None, trace_name=None, concrete_inputs=None, kwinputs=None, is_user_annotation=False, is_python_function=False, activity_type=None, metadata_json=None, flow_id=None, flow_type=None, flow_start=None, external_id=0, linked_correlation_id=0, extra_meta=None, structured_input_shapes=None, structured_input_strides=None, input_dtypes=None, python_id=-1, python_parent_id=-1, python_module_id=-1, typed_metadata=None)[исходный код] -
Информация профилирования об отдельной функции.
FunctionEvent фиксирует выполнение отдельной операции во время профилирования. Эти события поступают от профилировщика/kineto и содержат подробную информацию о времени выполнения и использовании памяти.
Примечание
Объекты FunctionEvent обычно создаются профилировщиком/kineto, и пользователям не следует создавать их напрямую. Получайте к ним доступ через выходные данные профилировщика.
- Переменные:
-
- id (int) – Уникальный идентификатор этого события.
- node_id (int) – Идентификатор узла для распределённого профилирования (-1, если не применимо).
- name (str) – Имя профилируемой функции/оператора.
- overload_name (str) – Имя перегрузки оператора (требует установки _ExperimentalConfig(capture_overload_names=True)).
- trace_name (str) – Совпадает с name, но заменяет ProfilerStep* на ProfilerStep#
- time_range (Interval) – Временной интервал, содержащий метки времени начала и окончания в микросекундах.
- thread (int) – Идентификатор потока, в котором началась операция.
- fwd_thread (int) – Идентификатор потока соответствующей операции прямого прохода.
- kernels (List[Kernel]) – Список ядер устройства, запущенных этой операцией.
- count (int) – Количество вызовов этого события (обычно 1).
- cpu_children (List[FunctionEvent]) – Непосредственные дочерние операции CPU.
- cpu_parent (FunctionEvent) – Непосредственная родительская операция CPU.
-
input_shapes (List[List[int]]) – Формы входных тензоров (требуется record_shapes=True). Для обычных тензорных входов каждая запись представляет собой список размерностей (например,
[16, 16]). Входы TensorList представлены пустым списком[]; используйтеstructured_input_shapes, чтобы получить формы отдельных элементов входов TensorList. - concrete_inputs (List[Any]) – Фактические значения входов (требуется record_shapes=true).
- kwinputs (Dict[str, Any]) – Именованные аргументы (требуется record_shapes=true).
- stack (List[str]) – Трассировка стека Python, в которой была вызвана операция (требуется with_stack=true).
- scope (int) – Идентификатор at::RecordScope (0=прямой проход, 1=обратный проход и т. д.).
- use_device (str) – Тип профилируемого устройства («cuda», «xpu» и т. д.).
- cpu_memory_usage (int) – Объём памяти CPU, выделенной в байтах.
- device_memory_usage (int) – Объём памяти устройства, выделенной в байтах.
- is_async (bool) – Является ли эта операция асинхронной.
- is_remote (bool) – Выполнялась ли эта операция на удалённом узле.
- sequence_nr (int) – Номер последовательности для операций autograd.
- device_type (DeviceType) – Тип устройства (CPU, CUDA, XPU, PrivateUse1 и т. д.).
- device_index (int) – Индекс устройства (например, GPU 0, 1, 2).
- device_resource_id (int) – Идентификатор ресурса на устройстве (например, идентификатор потока).
- is_legacy (bool) – Получено ли это событие от устаревшего профилировщика.
- flops (int) – Оценочное количество операций с плавающей точкой.
- is_user_annotation (bool) – Является ли эта область аннотацией пользователя.
-
metadata (Dict[str, Any]) – Дополнительные метаданные с ключами, соответствующими именам полей в экспортированных трассировках. Используйте
_ExperimentalConfig(expose_kineto_event_metadata=True)для доступа к метаданным активности Kineto. Доступные поля зависят от типа активности и бэкенда. - metadata_json (str) – Устарело. Используйте event_metadata.
- event_metadata (EventMetadata) – Дополнительные метаданные в структурированном формате.
-
structured_input_shapes (List[List[int] | List[List[int]]]) – Аналог
input_shapes, но с различением входов TensorList. Обычные тензорные входы представлены какList[int]; входы TensorList представлены какList[List[int]], содержащие по одной форме для каждого тензора в списке. Соответствует полю"Input Dims"в JSON трассировки Chrome. -
structured_input_strides (List[List[int] | List[List[int]]]) – Шаги входных тензоров в том же формате, что и
structured_input_shapes(требуется record_shapes=True).
- Свойства:
-
cpu_time_total (float): Общее время CPU в микросекундах. device_time_total (float): Общее время устройства (CUDA/XPU и т. д.) в микросекундах. self_cpu_time_total (float): Время CPU без учёта дочерних операций. self_device_time_total (float): Время устройства без учёта дочерних операций. self_cpu_memory_usage (int): Использование памяти CPU без учёта дочерних операций. self_device_memory_usage (int): Использование памяти устройства без учёта дочерних операций. cpu_time (float): Среднее время CPU на один вызов. device_time (float): Среднее время устройства на один вызов. key (str): Ключ для группировки событий (обычно совпадает с name).
См. также
-
torch.profiler.profile: Менеджер контекста для профилирования -
EventList: Список объектов FunctionEvent со вспомогательными методами -
FunctionEventAvg: Усреднённая статистика по нескольким объектам FunctionEvent
-
append_cpu_child(child)[исходный код] -
Добавляет дочерний элемент CPU типа FunctionEvent.
К событию следует добавлять только непосредственные дочерние элементы, чтобы корректно рассчитывалось собственное время CPU.
-
set_cpu_parent(parent)[исходный код] -
Задаёт непосредственного родителя CPU типа FunctionEvent.
У события профилирования FunctionEvent должен быть только один родитель CPU, при этом интервал дочернего события должен полностью находиться внутри интервала родительского. Эта связь используется для определения того, относится ли событие к операции верхнего уровня.
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.autograd.profiler_util.FunctionEvent.html