Spec-Zone.ru › PyTorch 2.14

Справочник API квантования

Создано: 25 июля 2020 г. | Последнее обновление: 11 мая 2026 г.

torch.ao.quantization

Этот модуль содержит API квантования в eager-режиме.

API верхнего уровня

quantize

Квантует входную вещественную модель с помощью статического квантования после обучения.

quantize_dynamic

Преобразует вещественную модель в динамически квантованную модель (то есть модель только с квантованными весами).

quantize_qat

Выполняет обучение с учетом квантования и создает квантованную модель

prepare

Подготавливает копию модели к калибровке квантования или обучению с учетом квантования.

prepare_qat

Подготавливает копию модели к калибровке квантования или обучению с учетом квантования и преобразует ее в квантованную версию.

convert

Преобразует подмодули входного модуля в модули другого типа согласно mapping, вызывая метод from_float у целевого класса модуля.

Подготовка модели к квантованию

fuse_modules.fuse_modules

Объединяет список модулей в один модуль.

QuantStub

Вспомогательный модуль квантования. До калибровки он эквивалентен наблюдателю; в convert он будет заменен на nnq.Quantize.

DeQuantStub

Вспомогательный модуль деквантования. До калибровки он эквивалентен тождественному преобразованию; в convert он будет заменен на nnq.DeQuantize.

QuantWrapper

Класс-обертка, который оборачивает входной модуль, добавляет QuantStub и DeQuantStub и окружает вызов модуля вызовами модулей квантования и деквантования.

add_quant_dequant

Оборачивает конечный дочерний модуль в QuantWrapper, если у него есть допустимый qconfig. Обратите внимание: эта функция изменяет дочерние элементы модуля на месте и также может вернуть новый модуль, который оборачивает входной модуль.

Вспомогательные функции

ObserverOrFakeQuantize

Создает именованные параметризованные псевдонимы типов.

swap_module

Заменяет модуль, если для него существует квантованный аналог и к нему прикреплен observer.

propagate_qconfig_

Распространяет qconfig по иерархии модулей и назначает атрибут qconfig каждому конечному модулю

default_eval_fn

Определяет функцию оценки по умолчанию.

torch.ao.quantization.utils

Вспомогательные функции, общие для разных режимов квантования (eager/graph)

activation_is_dynamically_quantized

По заданному qconfig определяет, нужно ли динамически квантовать активацию; сюда входит динамическое квантование в quint8, qint8 и float16

activation_is_int32_quantized

По заданному qconfig определяет, нужно ли квантовать активацию в int32

activation_is_int8_quantized

По заданному qconfig определяет, нужно ли квантовать активацию в int8; сюда входит квантование в quint8 и qint8

activation_is_statically_quantized

По заданному qconfig определяет, нужно ли квантовать активацию; сюда входит квантование в quint8, qint8, qint32 и float16

calculate_qmin_qmax

Вычисляет фактические qmin и qmax на основе диапазона квантования, типа данных наблюдателя и того, уменьшен ли диапазон.

check_min_max_valid

Проверяет, допустимы ли заданные минимальное и максимальное значения: существуют ли они и меньше ли минимальное значение максимального.

determine_qparams

Вычисляет параметры квантования по тензорам минимальных и максимальных значений.

get_combined_dict

Объединяет два словаря.

get_fqn_to_example_inputs

По модели и ее примерам входных данных возвращает словарь, сопоставляющий полные имена подмодулей с example_inputs для соответствующего подмодуля, например {"linear1": (tensor1,), "linear2": (tensor2,), "sub": (tensor3,), "sub.linear1": (tensor4,), ...}.

get_qconfig_dtypes

Возвращает кортеж qconfig для qconfig: (activation_dtype, weight_dtype, activation_is_dynamic)

get_qparam_dict
get_quant_type
get_swapped_custom_module_class

Получает класс наблюдаемого/квантованного пользовательского модуля, на который нужно заменить custom_module.

getattr_from_fqn

Для объекта obj и полного имени fqn, например "foo.bar.baz", возвращает gm.foo.bar.baz.

NodePattern

Создает именованные параметризованные псевдонимы типов.

Pattern

Создает именованные параметризованные псевдонимы типов.

validate_qmin_qmax

Проверяет, правильно ли инициализирован заданный пользователем диапазон квантования и находится ли он в пределах, поддерживаемых типом данных наблюдателя.

torch.ao.quantization.quantize_fx

Этот модуль содержит API квантования в графовом режиме FX (прототип).

torch.ao.quantization.quantize_fx.attach_preserved_attrs_to_model(model, preserved_attrs) [исходный код]

Сохраняет атрибуты в model.meta, чтобы они сохранились при глубоком копировании

torch.ao.quantization.quantize_fx.convert_to_reference_fx(graph_module, convert_custom_config=None, _remove_qconfig=True, qconfig_mapping=None, backend_config=None) [исходный код]

Преобразует откалиброванную или обученную модель в эталонную квантованную модель. Подробнее см. pytorch/rfcs. Эталонная квантованная модель — это стандартное представление квантованной модели, предоставляемое квантованием в графовом режиме FX; ее можно дополнительно преобразовать для выполнения на целевом оборудовании, например на ускорителях

Параметры:
  • graph_module (*) – Подготовленная и откалиброванная/обученная модель (GraphModule)
  • convert_custom_config (*) – Пользовательские настройки для функции преобразования. Подробнее см. convert_fx().
  • _remove_qconfig (*) – Опция удаления атрибутов qconfig из модели после преобразования.
  • qconfig_mapping (*) –

    Настройки, определяющие, как преобразовать модель для квантования.

    Подробнее см. convert_fx().

    • backend_config (BackendConfig): A configuration for the backend which describes how

      Операторы следует квантовать в бэкенде. Подробнее см. convert_fx().

Возвращает:

Эталонную квантованную модель (GraphModule)

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

GraphModule

Пример:

# prepared_model: the model after prepare_fx/prepare_qat_fx and calibration/training
# TODO: add backend_config after we split the backend_config for fbgemm and qnnpack
# e.g. backend_config = get_default_backend_config("fbgemm")
reference_quantized_model = convert_to_reference_fx(prepared_model)
prepare_fx

Подготавливает модель к квантованию после обучения

prepare_qat_fx

Подготавливает модель к обучению с учетом квантования

convert_fx

Преобразует откалиброванную или обученную модель в квантованную модель

fuse_fx

Объединяет модули, например conv+bn, conv+bn+relu и т. д.; модель должна находиться в режиме eval.

torch.ao.quantization.qconfig_mapping

Этот модуль содержит QConfigMapping для настройки квантования в графовом режиме FX.

QConfigMapping

Сопоставление операций модели с torch.ao.quantization.QConfig.

get_default_qconfig_mapping

Возвращает QConfigMapping по умолчанию для квантования после обучения.

get_default_qat_qconfig_mapping

Возвращает QConfigMapping по умолчанию для обучения с учетом квантования.

torch.ao.quantization.backend_config

Этот модуль содержит BackendConfig — объект конфигурации, определяющий поддержку квантования в бэкенде. Сейчас он используется только для квантования в графовом режиме FX, но в будущем мы можем также адаптировать к нему квантование в eager-режиме.

BackendConfig

Конфигурация, определяющая набор шаблонов, которые можно квантовать в заданном бэкенде, а также способ создания эталонных квантованных моделей на основе этих шаблонов.

BackendPatternConfig

Объект конфигурации, задающий поведение квантования для заданного шаблона операторов.

DTypeConfig

Объект конфигурации, задающий поддерживаемые типы данных, передаваемые в качестве аргументов операциям квантования в спецификации эталонной модели, для входных и выходных активаций, весов и смещений.

DTypeWithConstraints

Конфигурация для задания дополнительных ограничений для определенного типа данных, таких как диапазоны значений квантования, диапазоны значений масштаба и фиксированные параметры квантования, используемая в DTypeConfig.

ObservationType

Перечисление, представляющее различные способы наблюдения за оператором или шаблоном операторов

torch.ao.quantization.backend_config.executorch.get_executorch_backend_config() [исходный код]

Возвращает BackendConfig для бэкендов, на которые PyTorch преобразует модели с помощью стека Executorch.

Тип возвращаемого значения:
BackendConfig
torch.ao.quantization.backend_config.fbgemm.get_fbgemm_backend_config() [исходный код]

Возвращает BackendConfig для собственного бэкенда FBGEMM в PyTorch.

Тип возвращаемого значения:
BackendConfig
torch.ao.quantization.backend_config.onednn.get_onednn_backend_config() [исходный код]

Возвращает BackendConfig для собственного бэкенда ONEDNN в PyTorch.

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

torch.ao.quantization.backend_config.utils

entry_to_pretty_str

По записи backend_config_dict возвращает строку с ее человекочитаемым представлением.

get_fused_module_classes
get_fuser_method_mapping
get_fusion_pattern_to_extra_inputs_getter

Получает отображение шаблонов объединения в функции, которые возвращают дополнительные входные узлы из шаблона в порядке, требуемом корневым узлом.

get_fusion_pattern_to_root_node_getter

Получает отображение шаблонов объединения в функции, которые возвращают корневой узел шаблона; например, наиболее распространенный шаблон выглядит так::.

get_module_to_qat_module
get_pattern_to_dtype_configs
get_pattern_to_input_type_to_index
get_qat_module_classes
get_root_module_to_quantized_reference_module
pattern_to_human_readable
remove_boolean_dispatch_from_name

Для некоторых операций стандартное строковое представление имеет вид '<function boolean_dispatch.<locals>.fn at 0x7ff1106bf280>'; эта функция заменяет их на жестко заданные имена функций.

torch.ao.quantization.fx.custom_config

Этот модуль содержит несколько классов CustomConfig, используемых как в eager-режиме, так и в графовом режиме FX при квантовании

FuseCustomConfig

Пользовательская конфигурация для fuse_fx().

PrepareCustomConfig

Пользовательская конфигурация для prepare_fx() и prepare_qat_fx().

ConvertCustomConfig

Пользовательская конфигурация для convert_fx().

StandaloneModuleConfigEntry

torch.ao.quantization.fx.graph_module

QuantizedGraphModule

Этот класс создан для того, чтобы PackedParams (например, LinearPackedParams, Conv2dPackedParams) появлялись в state_dict, что позволяет сериализовать и десериализовать квантованный модуль графа с помощью torch.save(m.state_dict()) и m.load_state_dict(state_dict).

torch.ao.quantization.fx.utils

all_node_args_except_first

Возвращает индексы всех аргументов узла, кроме первого

all_node_args_have_no_tensors

Если достоверно известно, что аргументы этого узла не содержат тензоров (являются примитивами), возвращает True.

assert_and_get_unique_device

Возвращает единственное устройство для модуля или None, если устройство не найдено.

collect_producer_nodes

Начиная с целевого узла, выполняет обратный обход до входного узла или узла getattr. Это используется для извлечения цепочки операторов от getattr до целевого узла, например::.

create_getattr_from_value

Для значения любого типа создает соответствующий этому значению узел getattr и регистрирует значение в модуле как буфер.

create_node_from_old_node_preserve_meta

Создает new_node и копирует в него необходимые метаданные из old_node.

get_custom_module_class_keys

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

get_linear_prepack_op_for_dtype
get_new_attr_name_with_prefix
get_non_observable_arg_indexes_and_types

Возвращает словарь, в котором типы тензоров с нетипом float являются ключами, а значения соответствуют функции для получения списка (принимающей узел в качестве аргумента)

get_qconv_prepack_op
get_skipped_module_name_and_classes
graph_module_from_producer_nodes

Создает модуль графа из извлеченных узлов-производителей функции collect_producer_nodes :param root: корневой модуль исходного графа :param producer_nodes: список узлов, используемых для создания графа

maybe_get_next_module

Получает следующий модуль, соответствующий требованиям is_target_module_type, если такой существует

node_arg_is_bias

Возвращает, является ли аргумент узла смещением

node_arg_is_weight

Возвращает, является ли аргумент узла весом

NodeInfo
return_arg_list

Создает функцию, которая принимает узел в качестве аргумента и возвращает индексы аргументов, допустимые для node.args

torch (функции, связанные с квантованием)

Здесь описаны функции пространства имен torch, связанные с квантованием.

quantize_per_tensor

Преобразует тензор с числами с плавающей точкой в квантованный тензор с заданными масштабом и нулевой точкой.

quantize_per_channel

Преобразует тензор с числами с плавающей точкой в поканально квантованный тензор с заданными масштабами и нулевыми точками.

dequantize

Возвращает тензор fp32, выполняя деквантование квантованного тензора

torch.Tensor (методы, связанные с квантованием)

Квантованные тензоры поддерживают ограниченное подмножество методов обработки данных обычного тензора с полной точностью.

view

Возвращает новое представление с теми же данными, что и тензор self, но с другой shape.

as_strided

См. torch.as_strided()

expand

Возвращает новое представление тензора self, в котором размерность 1 увеличена до большего размера.

flatten

См. torch.flatten()

select

См. torch.select()

ne

См. torch.ne().

eq

См. torch.eq()

ge

См. torch.ge().

le

См. torch.le().

gt

См. torch.gt().

lt

См. torch.lt().

copy_

Копирует элементы из src в тензор self и возвращает self.

clone

См. torch.clone()

dequantize

Принимает квантованный тензор, выполняет его деквантование и возвращает деквантованный тензор с числами с плавающей точкой.

equal

См. torch.equal()

int_repr

Для квантованного тензора self.int_repr() возвращает тензор на CPU с типом данных uint8_t, содержащий базовые значения uint8_t заданного тензора.

max

См. torch.max()

mean

См. torch.mean()

min

См. torch.min()

q_scale

Для тензора, квантованного с помощью линейного (аффинного) квантования, возвращает масштаб используемого квантователя.

q_zero_point

Для тензора, квантованного с помощью линейного (аффинного) квантования, возвращает нулевую точку используемого квантователя.

q_per_channel_scales

Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает тензор масштабов используемого квантователя.

q_per_channel_zero_points

Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает тензор нулевых точек используемого квантователя.

q_per_channel_axis

Для тензора, квантованного с помощью линейного (аффинного) поканального квантования, возвращает индекс размерности, по которой применяется поканальное квантование.

resize_

Изменяет размер тензора self, задавая указанный размер.

sort

См. torch.sort()

topk

См. torch.topk()

torch.ao.quantization.observer

Этот модуль содержит наблюдатели, используемые для сбора статистики значений во время калибровки (PTQ) или обучения (QAT).

ObserverBase

Базовый модуль наблюдателя.

MinMaxObserver

Модуль наблюдателя для вычисления параметров квантования на основе текущих минимального и максимального значений.

MovingAverageMinMaxObserver

Модуль наблюдателя для вычисления параметров квантования на основе скользящего среднего минимальных и максимальных значений.

PerChannelMinMaxObserver

Модуль наблюдателя для вычисления параметров квантования на основе текущих поканальных минимальных и максимальных значений.

MovingAveragePerChannelMinMaxObserver

Модуль наблюдателя для вычисления параметров квантования на основе текущих поканальных минимальных и максимальных значений.

HistogramObserver

Модуль записывает текущую гистограмму значений тензора вместе с минимальными и максимальными значениями.

PlaceholderObserver

Наблюдатель, который ничего не делает и только передает свою конфигурацию в .from_float() квантованного модуля.

RecordingObserver

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

NoopObserver

Наблюдатель, который ничего не делает и только передает свою конфигурацию в .from_float() квантованного модуля.

get_observer_state_dict

Возвращает словарь состояния, соответствующий статистике наблюдателя.

load_observer_state_dict

Принимает модель и state_dict со статистикой наблюдателей модели и загружает эту статистику обратно в модель.

default_affine_fixed_qparams_observer

Наблюдатели по умолчанию для операций с фиксированными параметрами квантования.

default_observer

Наблюдатель по умолчанию для статического квантования, обычно используемый для отладки.

default_placeholder_observer

Наблюдатель-заполнитель по умолчанию, обычно используемый для квантования в torch.float16.

default_debug_observer

Наблюдатель по умолчанию, используемый только для отладки.

default_weight_observer

Наблюдатель весов по умолчанию.

default_histogram_observer

Наблюдатель гистограммы по умолчанию, обычно используемый для PTQ.

default_per_channel_weight_observer

Поканальный наблюдатель весов по умолчанию, обычно используемый для бэкендов, поддерживающих поканальное квантование весов, например fbgemm.

default_dynamic_quant_observer

Наблюдатель по умолчанию для динамического квантования.

default_fixed_qparams_range_0to1_observer
default_fixed_qparams_range_neg1to1_observer
default_float_qparams_observer

Наблюдатель по умолчанию для нулевой точки с плавающей точкой.

default_float_qparams_observer_4bit

Наблюдатель по умолчанию для нулевой точки с плавающей точкой и 4-битных активаций.

default_symmetric_fixed_qparams_observer
per_channel_weight_observer_range_neg_127_to_127

Поканальный симметричный наблюдатель весов, ограничивающий 8-битные значения диапазоном [-127, +127], исключая -128.

weight_observer_range_neg_127_to_127

Симметричный наблюдатель весов, ограничивающий 8-битные значения диапазоном [-127, +127], исключая -128.

AffineQuantizedObserverBase

Модуль наблюдателя для аффинного квантования (pytorch/ao)

Granularity

Базовый класс для представления гранулярности квантования.

MappingType

Способ отображения числа с плавающей точкой в целое число

PerAxis

Представляет покоординатную гранулярность квантования.

PerBlock

Представляет гранулярность квантования по блокам.

PerGroup

Представляет гранулярность квантования по группам каналов.

PerRow

Представляет построчную гранулярность квантования.

PerTensor

Представляет гранулярность квантования по тензору.

PerToken

Представляет гранулярность квантования по токенам.

TorchAODType

Заполнитель для типов данных, которые пока не существуют в ядре PyTorch.

ZeroPointDomain

Перечисление, указывающее, находится ли zero_point в целочисленной области или в области чисел с плавающей точкой

get_block_size

Получает размер блока на основе входной формы и типа гранулярности.

torch.ao.quantization.fake_quantize

Этот модуль реализует модули, используемые для выполнения фиктивного квантования во время QAT.

FakeQuantizeBase

Базовый модуль фиктивного квантования.

FakeQuantize

Имитирует операции квантования и обратного квантования во время обучения.

FixedQParamsFakeQuantize

Имитирует квантование и обратное квантование во время обучения.

FusedMovingAvgObsFakeQuantize

Определяет объединённый модуль для наблюдения за тензором.

default_affine_fixed_qparams_fake_quant
default_dynamic_fake_quant

Фиктивное динамическое квантование активаций по умолчанию.

default_embedding_fake_quant

Фиктивное квантование эмбеддингов по умолчанию.

default_embedding_fake_quant_4bit
default_fake_quant

Фиктивное квантование активаций по умолчанию.

default_fixed_qparams_range_0to1_fake_quant
default_fixed_qparams_range_neg1to1_fake_quant
default_fused_act_fake_quant

Объединённая версия default_fake_quant с повышенной производительностью.

default_fused_per_channel_wt_fake_quant

Объединённая версия default_per_channel_weight_fake_quant с повышенной производительностью.

default_fused_wt_fake_quant

Объединённая версия default_weight_fake_quant с повышенной производительностью.

default_histogram_fake_quant

Фиктивное квантование активаций с использованием гистограммы.

default_per_channel_weight_fake_quant

Фиктивное квантование весов по каналам по умолчанию.

default_symmetric_fixed_qparams_fake_quant
default_weight_fake_quant

Фиктивное квантование весов по умолчанию.

disable_fake_quant

Отключает фиктивное квантование для модуля.

disable_observer

Отключает наблюдение для этого модуля.

enable_fake_quant

Включает фиктивное квантование для модуля.

enable_observer

Включает наблюдение для этого модуля.

fused_per_channel_wt_fake_quant_range_neg_127_to_127

Объединённая версия default_per_channel_weight_fake_quant, в которой значения 8-битного диапазона ограничены интервалом [-127, +127], исключая -128.

fused_wt_fake_quant_range_neg_127_to_127

Объединённая версия default_weight_fake_quant, в которой значения 8-битного диапазона ограничены интервалом [-127, +127], исключая -128.

torch.ao.quantization.qconfig

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

torch.ao.quantization.qconfig.get_default_qat_qconfig(backend='x86', version=1) [исходный код]

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

Параметры:
  • backend (*) – строка, представляющая целевую серверную платформу. В настоящее время поддерживаются x86 (по умолчанию), fbgemm, qnnpack и onednn.
  • version (*) – версия для обеспечения обратной совместимости. Может быть None или 1.
Возвращает:

qconfig

torch.ao.quantization.qconfig.get_default_qconfig(backend='x86', version=0) [исходный код]

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

Параметры:

backend (*) – строка, представляющая целевую серверную платформу. В настоящее время поддерживаются x86 (по умолчанию), fbgemm, qnnpack и onednn.

Возвращает:

qconfig

torch.ao.quantization.qconfig.qconfig_equals(q1, q2) [исходный код]

Возвращает True, если q1 равно q2, и False в противном случае.

QConfig

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

QConfigAny

Создаёт именованные параметризованные псевдонимы типов.

default_qconfig

Конфигурация qconfig по умолчанию.

default_debug_qconfig

Конфигурация qconfig по умолчанию для отладки.

default_per_channel_qconfig

Конфигурация qconfig по умолчанию для поканального квантования весов.

default_dynamic_qconfig

Конфигурация динамического qconfig по умолчанию.

float16_dynamic_qconfig

Динамическая конфигурация qconfig с весами, квантованными до torch.float16.

float16_static_qconfig

Динамическая конфигурация qconfig, в которой и активации, и веса квантованы до torch.float16.

per_channel_dynamic_qconfig

Динамическая конфигурация qconfig с поканальным квантованием весов.

float_qparams_weight_only_qconfig

Динамическая конфигурация qconfig, в которой веса квантованы с плавающей точкой zero_point.

default_qat_qconfig

Конфигурация qconfig по умолчанию для QAT.

default_weight_only_qconfig

Конфигурация qconfig по умолчанию для квантования только весов.

default_activation_only_qconfig

Конфигурация qconfig по умолчанию для квантования только активаций.

default_qat_qconfig_v2

Объединённая версия default_qat_config с повышенной производительностью.

torch.ao.quantization.quantization_mappings

get_default_compare_output_module_list

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

get_default_dynamic_quant_module_mappings

Получить сопоставление модулей для динамического квантования после обучения.

get_default_dynamic_sparse_quant_module_mappings

Получить сопоставление модулей для динамического разреженного квантования после обучения.

get_default_float_to_quantized_operator_mappings
get_default_qat_module_mappings

Получить сопоставление модулей по умолчанию для обучения с учётом квантования.

get_default_qconfig_propagation_list

Получить список типов модулей по умолчанию, которым будет присвоен атрибут qconfig во время подготовки.

get_default_static_quant_module_mappings

Получить сопоставление модулей для статического квантования после обучения.

get_default_static_quant_reference_module_mappings

Получить сопоставление эталонных модулей для статического квантования после обучения.

get_default_static_sparse_quant_module_mappings

Получить сопоставление модулей для статического разреженного квантования после обучения.

get_dynamic_quant_module_class

Получить класс динамически квантованного модуля, соответствующий классу модуля с плавающей точкой.

get_embedding_qat_module_mappings

Получить сопоставление модулей для обучения с учётом квантования. Оно включает значения по умолчанию и позволяет включить QAT для эмбеддингов.

get_embedding_static_quant_module_mappings

Получить сопоставление модулей, включающее сопоставление для QAT эмбеддингов.

get_quantized_operator

Получить квантованный оператор, соответствующий оператору с плавающей точкой.

get_static_quant_module_class

Получить класс статически квантованного модуля, соответствующий классу модуля с плавающей точкой.

no_observer_set

Для этих модулей наблюдатели не могут быть вставлены по умолчанию.

torch.ao.nn.intrinsic

Этот модуль реализует комбинированные (объединённые) модули conv + relu, которые впоследствии можно квантовать.

ConvReLU1d

Это последовательный контейнер, вызывающий модули Conv1d и ReLU.

ConvReLU2d

Это последовательный контейнер, вызывающий модули Conv2d и ReLU.

ConvReLU3d

Это последовательный контейнер, вызывающий модули Conv3d и ReLU.

LinearReLU

Это последовательный контейнер, вызывающий модули Linear и ReLU.

ConvBn1d

Это последовательный контейнер, вызывающий модули Conv 1d и Batch Norm 1d.

ConvBn2d

Это последовательный контейнер, вызывающий модули Conv 2d и Batch Norm 2d.

ConvBn3d

Это последовательный контейнер, вызывающий модули Conv 3d и Batch Norm 3d.

ConvBnReLU1d

Это последовательный контейнер, вызывающий модули Conv 1d, Batch Norm 1d и ReLU.

ConvBnReLU2d

Это последовательный контейнер, вызывающий модули Conv 2d, Batch Norm 2d и ReLU.

ConvBnReLU3d

Это последовательный контейнер, вызывающий модули Conv 3d, Batch Norm 3d и ReLU.

BNReLU2d

Это последовательный контейнер, вызывающий модули BatchNorm 2d и ReLU.

BNReLU3d

Это последовательный контейнер, вызывающий модули BatchNorm 3d и ReLU.

torch.ao.nn.intrinsic.qat

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

LinearReLU

Модуль LinearReLU объединяет модули Linear и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBn1d

Модуль ConvBn1d объединяет Conv1d и BatchNorm1d и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBnReLU1d

Модуль ConvBnReLU1d объединяет Conv1d, BatchNorm1d и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBn2d

Модуль ConvBn2d объединяет Conv2d и BatchNorm2d и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBnReLU2d

Модуль ConvBnReLU2d объединяет Conv2d, BatchNorm2d и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvReLU2d

Модуль ConvReLU2d объединяет Conv2d и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBn3d

Модуль ConvBn3d объединяет Conv3d и BatchNorm3d и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvBnReLU3d

Модуль ConvBnReLU3d объединяет Conv3d, BatchNorm3d и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

ConvReLU3d

Модуль ConvReLU3d объединяет Conv3d и ReLU и оснащён модулями FakeQuantize для весов; используется при обучении с учётом квантования.

update_bn_stats
freeze_bn_stats

torch.ao.nn.intrinsic.quantized

Этот модуль реализует квантованные версии объединённых операций, таких как conv + relu. Варианты с BatchNorm отсутствуют, поскольку при инференсе BatchNorm обычно сворачивается в свёртку.

BNReLU2d

Модуль BNReLU2d объединяет BatchNorm2d и ReLU

BNReLU3d

Модуль BNReLU3d объединяет BatchNorm3d и ReLU

ConvReLU1d

Модуль ConvReLU1d объединяет Conv1d и ReLU

ConvReLU2d

Модуль ConvReLU2d объединяет Conv2d и ReLU

ConvReLU3d

Модуль ConvReLU3d объединяет Conv3d и ReLU

LinearReLU

Модуль LinearReLU объединяет модули Linear и ReLU

torch.ao.nn.intrinsic.quantized.dynamic

Этот модуль реализует динамически квантованные версии объединённых операций, таких как linear + relu.

LinearReLU

Модуль LinearReLU объединяет модули Linear и ReLU и может использоваться для динамического квантования.

torch.ao.nn.qat

Этот модуль реализует версии ключевых модулей nn Conv2d() и Linear(), которые работают в FP32, но с округлением для имитации эффекта квантования INT8.

Conv2d

Модуль Conv2d с подключёнными модулями FakeQuantize для весов, используемый для обучения с учётом квантования.

Conv3d

Модуль Conv3d с подключёнными модулями FakeQuantize для весов, используемый для обучения с учётом квантования.

Linear

Модуль Linear с подключёнными модулями FakeQuantize для весов, используемый для обучения с учётом квантования.

torch.ao.nn.qat.dynamic

Этот модуль реализует версии ключевых модулей nn, например Linear(), которые работают в FP32, но с округлением для имитации эффекта квантования INT8 и динамически квантируются во время инференса.

Linear

Модуль Linear с подключёнными модулями FakeQuantize для весов, используемый для динамического обучения с учётом квантования.

torch.ao.nn.quantized

Этот модуль реализует квантованные версии слоёв nn, таких как ~torch.nn.Conv2d и torch.nn.ReLU.

ReLU6

Применяет поэлементную функцию:

Hardswish

Это квантованная версия Hardswish.

ELU

Это квантованный эквивалент ELU.

LeakyReLU

Это квантованный эквивалент LeakyReLU.

Sigmoid

Это квантованный эквивалент Sigmoid.

BatchNorm2d

Это квантованная версия BatchNorm2d.

BatchNorm3d

Это квантованная версия BatchNorm3d.

Conv1d

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

Conv2d

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

Conv3d

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

ConvTranspose1d

Выполняет операцию одномерной транспонированной свёртки над входным изображением, состоящим из нескольких входных плоскостей.

ConvTranspose2d

Выполняет операцию двумерной транспонированной свёртки над входным изображением, состоящим из нескольких входных плоскостей.

ConvTranspose3d

Выполняет операцию трёхмерной транспонированной свёртки над входным изображением, состоящим из нескольких входных плоскостей.

Embedding

Квантованный модуль Embedding с квантованными упакованными весами на входе.

EmbeddingBag

Квантованный модуль EmbeddingBag с квантованными упакованными весами на входе.

FloatFunctional

Класс для сбора состояния операций с плавающей точкой.

FXFloatFunctional

Модуль для замены модуля FloatFunctional перед квантованием в режиме графа FX, поскольку activation_post_process будет вставлен непосредственно в модуль верхнего уровня

QFunctional

Класс-обёртка для квантованных операций.

Linear

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

LayerNorm

Это квантованная версия LayerNorm.

GroupNorm

Это квантованная версия GroupNorm.

InstanceNorm1d

Это квантованная версия InstanceNorm1d.

InstanceNorm2d

Это квантованная версия InstanceNorm2d.

InstanceNorm3d

Это квантованная версия InstanceNorm3d.

torch.ao.nn.quantized.functional

Функциональный интерфейс (квантованный).

Этот модуль реализует квантованные версии функциональных слоёв, таких как ~torch.nn.functional.conv2d и torch.nn.functional.relu. Примечание: torch.nn.functional.relu~torch.nn.functional.relu поддерживает квантованные входные данные.

avg_pool2d

Выполняет операцию двумерного усредняющего пулинга в областях размером kH×kWkH \times kW с шагом sH×sWsH \times sW.

avg_pool3d

Выполняет операцию трёхмерного усредняющего пулинга в областях размером kDtimeskH×kWkD \ times kH \times kW с шагом sD×sH×sWsD \times sH \times sW.

adaptive_avg_pool2d

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

adaptive_avg_pool3d

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

conv1d

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

conv2d

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

conv3d

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

interpolate

Уменьшает или увеличивает размер входных данных до заданного size или до заданного scale_factor

linear

Применяет линейное преобразование к поступающим квантованным данным: y=xAT+by = xA^T + b.

max_pool1d

Выполняет одномерный максимальный пулинг над квантованным входным сигналом, состоящим из нескольких квантованных входных плоскостей.

max_pool2d

Выполняет двумерный максимальный пулинг над квантованным входным сигналом, состоящим из нескольких квантованных входных плоскостей.

celu

Поэлементно применяет квантованную функцию CELU.

leaky_relu

Квантованная версия функции.

hardtanh

Это квантованная версия hardtanh().

hardswish

Это квантованная версия hardswish().

threshold

Поэлементно применяет квантованную версию пороговой функции:

elu

Это квантованная версия elu().

hardsigmoid

Это квантованная версия hardsigmoid().

clamp

float(input, min_, max_) -> Tensor

upsample

Увеличивает размер входных данных до заданного size или до заданного scale_factor

upsample_bilinear

Увеличивает размер входных данных с помощью билинейной интерполяции.

upsample_nearest

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

torch.ao.nn.quantizable

Этот модуль реализует квантуемые версии некоторых слоёв nn. Эти модули можно использовать вместе с механизмом пользовательских модулей, передав аргумент custom_module_config функциям prepare и convert.

LSTM

Квантуемая сеть долгой краткосрочной памяти (LSTM).

MultiheadAttention

torch.ao.nn.quantized.dynamic

Динамически квантованные Linear, LSTM, LSTMCell, GRUCell и RNNCell.

Linear

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

LSTM

Динамически квантованный модуль LSTM, принимающий и возвращающий тензоры с плавающей точкой.

GRU

Применяет к входной последовательности многослойную рекуррентную нейронную сеть с управляемыми рекуррентными блоками (GRU).

RNNCell

Ячейка рекуррентной нейронной сети Элмана с нелинейностью tanh или ReLU.

LSTMCell

Ячейка долгой краткосрочной памяти (LSTM).

GRUCell

Ячейка с управляемыми рекуррентными блоками (GRU)

Квантованные типы данных и схемы квантования

Обратите внимание, что реализации операторов в настоящее время поддерживают поканальное квантование только для весов операторов conv и linear. Кроме того, входные данные линейно отображаются в квантованные данные и обратно следующим образом:

Квантование:Qout=clamp(xinput/s+z,Qmin,Qmax)Деквантование:xout=(Qinput−z)∗s\begin{aligned} \text{Quantization:}&\\ &Q_\text{out} = \text{clamp}(x_\text{input}/s+z, Q_\text{min}, Q_\text{max})\\ \text{Dequantization:}&\\ &x_\text{out} = (Q_\text{input}-z)*s \end{aligned}

где clamp(.)\text{clamp}(.) — то же, что и clamp(), а масштаб ss и нулевая точка zz вычисляются, как описано в MinMaxObserver, а именно:

Если квантование симметричное:s=2max⁡(∣xmin∣,xmax)/(Qmax−Qmin)z={0если тип данных — qint8128в противном случаеВ противном случае:s=(xmax−xmin)/(Qmax−Qmin)z=Qmin−round(xmin/s)\begin{aligned} \text{if Symmetric:}&\\ &s = 2 \max(|x_\text{min}|, x_\text{max}) / \left( Q_\text{max} - Q_\text{min} \right) \\ &z = \begin{cases} 0 & \text{if dtype is qint8} \\ 128 & \text{otherwise} \end{cases}\\ \text{Otherwise:}&\\ &s = \left( x_\text{max} - x_\text{min} \right ) / \left( Q_\text{max} - Q_\text{min} \right ) \\ &z = Q_\text{min} - \text{round}(x_\text{min} / s) \end{aligned}

где :math:[x_\text{min}, x_\text{max}] обозначает диапазон входных данных, а :math:Q_\text{min} и :math:Q_\text{max} — соответственно минимальное и максимальное значения квантованного типа данных.

Обратите внимание, что выбор :math:s и :math:z означает, что ноль представляется без ошибки квантования, если он входит в диапазон входных данных или используется симметричное квантование.

Дополнительные типы данных и схемы квантования можно реализовать с помощью custom operator mechanism <https://pytorch.org/tutorials/advanced/torch_script_custom_ops.html>_.

  • torch.qscheme — тип, описывающий схему квантования тензора. Поддерживаемые типы:

    • torch.per_tensor_affine — потензорное асимметричное квантование
    • torch.per_channel_affine — поканальное асимметричное квантование
    • torch.per_tensor_symmetric — потензорное симметричное квантование
    • torch.per_channel_symmetric — поканальное симметричное квантование
  • torch.dtype — тип, описывающий данные. Поддерживаемые типы:

    • torch.quint8 — 8-разрядное беззнаковое целое число
    • torch.qint8 — 8-разрядное знаковое целое число
    • torch.qint32 — 32-разрядное знаковое целое число

Модули QAT.

Этот пакет постепенно выводится из употребления. Вместо него используйте torch.ao.nn.qat.modules.

Динамические модули QAT.

Этот пакет постепенно выводится из употребления. Вместо него используйте torch.ao.nn.qat.dynamic.

Этот файл переносится в torch/ao/quantization и сохранён здесь для обеспечения совместимости на время переноса. Если вы добавляете новую запись или функциональность, добавьте её в соответствующие файлы в torch/ao/quantization/fx/ и добавьте сюда оператор импорта.

Динамические модули QAT.

Этот пакет постепенно выводится из употребления. Вместо него используйте torch.ao.nn.qat.dynamic.

Квантованные модули.

Примечание::

Пространство имён torch.nn.quantized постепенно выводится из употребления. Вместо него используйте torch.ao.nn.quantized.

Динамические квантованные модули.

Этот файл переносится в torch/ao/nn/quantized/dynamic и сохранён здесь для обеспечения совместимости на время переноса. Если вы добавляете новую запись или функциональность, добавьте её в соответствующий файл в torch/ao/nn/quantized/dynamic и добавьте сюда оператор импорта.

torch.quantization.default_eval_fn(model, calib_data) [исходный код]

Функция оценки по умолчанию принимает torch.utils.data.Dataset или список входных тензоров и запускает модель на наборе данных

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

Spec-Zone.ru

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