# mypy: 允许未类型化定义
来自
打字
导入
可调用,
可选,
联合
导入
火炬
来自
火炬
导入
张量
来自 .fake_quantize
导入 * # noqa: F403
来自 .fuse_modules
导入
模块融合,
模块融合_qat # noqa: F403
来自
.fuser 方法映射
导入 * # noqa: F403
来自
.观察者
导入 * # noqa: F403
来自
.pt2e._数字调试器
导入 ( # noqa: F401
比较结果,
自定义键,
从记录器中提取结果,
生成数字调试句柄,
NUMERIC_DEBUG_HANDLE_KEY,
准备传播比较,
)
来自 .pt2e.export_utils
导入 (
允许导出模型训练评估 as allow_exported_model_train_eval,
_移动导出模型到评估 as move_exported_model_to_eval,
将导出的模型移动到训练目录 as move_exported_model_to_train,
)
来自 .qconfig
导入 * # noqa: F403
来自 .qconfig_mapping
导入 * # noqa: F403
来自
.量类型
导入 * # noqa: F403
来自
.量化映射
导入 *
# noqa: F403 # 类型: 忽略[重新定义]
来自
.量化
导入 * # noqa: F403
来自 .quantize_jit
导入 * # noqa: F403
来自 .stubs
导入 * # noqa: F403
# 确保为公共 API 正确设置 __module__
ObserverOrFakeQuantize = 联合[
观察者基类,
模拟量化基类]
观察者或模拟量化.__module__ =
torch.ao.quantization
for _f 在 [
比较结果,
从日志中提取结果,
生成数字调试句柄,
准备进行传播比较,
]
_.__module__ =
torch.ao.quantization
全部 = [
DeQuantStub,
"伪量化",
"伪量化基",
"固定 Q 参数伪量化",
"固定 Q 参数观察者",
"融合移动平均观测器",
"直方图观察者",
"匹配所有节点",
"最小最大观察者",
移动平均最小最大观察者,
每通道移动平均最小最大观察者,
无操作观察者,
观察者基类,
"观察者或伪量化",
"模式",
"按通道最大最小观察者",
"占位符观察者",
"Q 配置",
"Q 配置任意",
"Q 配置动态",
"Q 配置映射",
"量化占位符",
"量化类型",
"量化包装器",
"录制观察者",
"重用输入观察者",
"统一量化观察者基",
"添加量化和反量化",
"转换",
"convert_dynamic_jit",
"convert_jit",
"default_affine_fixed_qparams_fake_quant",
"default_affine_fixed_qparams_observer",
"默认调试观察者",
"默认动态伪量化",
"默认动态量化观察者",
"默认嵌入伪量化",
"默认嵌入伪量化 4 位",
"默认评估函数",
"默认伪量化",
"默认固定 Q 参数范围 0 到 1 伪量化",
"默认固定 q 参数范围 0 到 1 观察者",
"默认固定 q 参数范围-1 到 1 模拟量化",
"默认固定 q 参数范围-1 到 1 观察者",
"默认浮点 q 参数观察者",
"默认浮点 Q 参数观察器 4 位",
"默认融合激活仿真实量化",
"默认融合通道权重仿真实量化",
"默认融合权重仿真实量化",
"默认直方图伪量化",
"默认直方图观察者",
"默认观察者",
"默认通道权重伪量化",
"默认通道权重观察者",
"默认占位符观察者",
"默认重用输入观察者",
"默认对称固定 Q 参数假量化",
"默认对称固定 Q 参数观察者",
"默认权重伪量化",
"默认权重观察者",
"禁用伪量化",
"禁用观察者",
"启用伪量化",
"启用观察者",
"融合卷积和归一化",
"融合卷积批量归一化算子",
"融合卷积批量归一化 ReLU",
"融合转置卷积批量归一化",
"融合线性批量归一化",
"融合模块",
"融合模块_qat",
"融合通道权重伪量化范围-127 到 127",
"融合权重伪量化范围-127 到 127",
"获取组合字典",
"获取默认比较输出模块列表",
"获取默认自定义配置字典",
"获取默认动态量化模块映射",
"获取默认动态稀疏量化模块映射",
"获取默认浮点转量化算子映射",
"获取默认 QAT 模块映射",
"获取默认 QAT Qconfig",
"获取默认 QAT Qconfig 字典",
"获取默认 QAT Qconfig 映射",
"获取默认 Qconfig",
"获取默认 Qconfig 字典",
"获取默认 Qconfig 映射",
"获取默认 Qconfig 传播列表",
"获取默认静态量化模块映射",
"获取默认静态量化参考模块映射",
"获取默认静态稀疏量化模块映射",
"获取动态量化模块类",
"获取嵌入量化 QAT 模块映射",
"获取嵌入静态量化模块映射",
get_fuser_method,
get_fuser_method_new,
get_observer_state_dict,
get_quantized_operator,
"获取静态量化模块类",
"加载观察者状态字典",
"将导出的模型移动到评估",
"将导出的模型移动到训练",
"允许导出模型训练评估",
"未设置观察者",
"每个通道权重观察者范围-127 到 127",
"准备",
"准备动态 JIT",
"准备 JIT",
"准备量化加速训练(QAT)",
"传播量化配置_",
"qconfig 等于",
"量化",
"动态量化",
"动态量化 JIT",
"量化 JIT",
"量化 QAT",
"脚本 Q 配置",
"脚本 Q 配置字典",
"swap_module",
"weight_observer_range_neg_127_to_127",
"generate_numeric_debug_handle",
"CUSTOM_KEY",
"NUMERIC_DEBUG_HANDLE_KEY",
"准备进行传播比较",
"从记录器中提取结果",
"比较结果",
torchao(应与 torchao 合并)
未来
“仿射量化观察者基”,
“粒度”,
"映射类型",
"沿轴",
"按块",
"按组",
"每行",
"每张张量",
"每个标记",
"PyTorch AOD 类型",
零点域,
获取区块大小,
]
[文档]def default_eval_fn(model, calib_data):
r"""定义默认评估函数。
默认评估函数接收一个 torch.utils.data.Dataset 或输入张量的列表,并在数据集上运行模型
在数据集上运行模型
"""
for data, _target in calib_data:
模型(data)
类
_派生观察器或伪量化(ObserverBase):
r这个观察者用于描述一个观察者,其量化参数
来自其他观察者
"""
def __init__(
self,
数据类型:
PyTorch.
数据类型,
obs_or_fqs: 列表[
观察者或伪量化
]
derive_qparams_fn: 可调用[
[列表[
观察者或伪量化]],
元组[
张量,
张量]
]
量化最小值:
可选[int] =
无,
量化最大值:
可选[int] =
无,
q 方案:
可选[
PyTorch.
q 方案] =
无,
坐标轴:
可选[int] =
无,
):
超级().__init__(
数据类型)
self.obs_or_fqs = 观测或 FQS
self.导出 Q 参数函数 =
导出 Q 参数函数
self.量化最小值 =
量化最小值
self.量化最大值 =
量化最大值
self.质量方案 =
虚拟方案
self.通道轴 =
通道轴
来自
.工具
导入
每通道
如果
是否按通道(self.
q 方案):
断言 (
self.ch 轴
是
不
无
), 如果 qscheme 是按通道,必须提供有效的 ch 轴
def 前向(self, x:
张量) ->
张量:
返回 x
def 计算 q 参数(self): # type:ignore[override]
返回 self.
导出_qparams_fn(self.
观测或_fqs)