快捷方式

autoquant

torchao.quantization.autoquant(model, example_input=None, qtensor_class_list=[<class 'torchao.quantization.autoquant.AQDefaultLinearWeight'>, <class 'torchao.quantization.autoquant.AQInt8WeightOnlyQuantizedLinearWeight'>, <class 'torchao.quantization.autoquant.AQInt8WeightOnlyQuantizedLinearWeight2'>, <class 'torchao.quantization.autoquant.AQInt8DynamicallyQuantizedLinearWeight'>], filter_fn=None, mode=['interpolate', 0.85], manual=False, set_inductor_config=True, supress_autoquant_errors=True, min_sqnr=None, **aq_kwargs)[source]

Autoquantization 是一个过程,它会在一组潜在的 qtensor 子类中识别出量化模型每一层的最快方法。

Autoquantization 分三个步骤进行:

1-准备模型:搜索模型中的 Linear 层,并将其权重替换为 AutoQuantizableLinearWeight。2-形状校准:用户在模型上运行一个或多个输入,记录 AutoQuantizableLinearWeight 看到的激活形状/数据类型的详细信息,以便我们知道在步骤 3 中使用什么形状/数据类型来优化量化操作。

2-形状校准:用户运行模型,激活形状/数据类型的详细信息会记录下来,以便知道在第 3 步中要使用哪些形状/数据类型来优化量化操作。

3-完成 Autoquantization:对于每个 AutoQuantizableLinearWeight,都会针对 qtensor_class_list 中的每个成员运行基准测试。会选择最快的选项,从而得到一个高性能的模型。

最快的选项被选中,从而得到一个高性能的模型。

此 autoquant 函数执行步骤 1。步骤 2 和 3 可以通过简单地运行模型来完成。如果提供了 example_input,此函数还会运行模型(这会完全完成 autoquantization,除非 manual=True)。此 autoquant API 可以处理已经应用了 torch.compile 的模型,在这种情况下,一旦模型运行并量化,torch.compile 过程通常也会继续进行。

要针对输入形状/数据类型的组合进行优化,用户可以将 manual 设置为 True,用所有期望的形状/数据类型运行模型,然后在记录了期望的输入集后调用 model.finalize_autoquant 来完成量化。

参数:
  • model (torch.nn.Module) – 要进行 autoquantization 的模型。

  • example_input (Any, optional) – 模型的示例输入。如果提供,该函数将在此输入上执行前向传播(这会完全进行 autoquantization,除非 manual=True)。默认为 None。

  • qtensor_class_list (list, optional) – 要用于量化的张量类列表。默认为 DEFAULT_AUTOQUANT_CLASS_LIST。

  • filter_fn (callable, optional) – 要应用于模型参数的过滤器函数。默认为 None。

  • mode (list, optional) – 包含量化模式设置的列表。第一个元素是模式类型(例如,“interpolate”),第二个元素是模式值(例如,0.85)。默认为 [“interpolate”, .85]。

  • manual (bool, optional) – 是否停止形状校准并在一次运行后进行 autoquant(默认 False),或者等待用户调用 model.finalize_autoquant(True)以记录具有多种形状/数据类型的输入。

  • set_inductor_config (bool, optional) – 是否自动使用推荐的 inductor 配置设置(默认为 True)。

  • supress_autoquant_errors (bool, optional) – 是否抑制 autoquantization 过程中的错误(默认为 True)。

  • min_sqnr (float, optional) – 量化层输出与非量化层输出之间可接受的最小信噪比(https://en.wikipedia.org/wiki/Signal-to-quantization-noise_ratio),用于过滤

  • impact (causes too large numerical) – 引起数值过大的量化方法。

  • resaonable (user can start with a) – 用户可以从一个合理的

  • result (number like 40 and adjust depending on the) – 数字(例如 40)开始,并根据

  • **aq_kwargs – autoquantization 过程的附加关键字参数。

返回:

autoquantized 并包装后的模型。如果提供了 example_input,则该函数执行

输入的前向传播,并返回前向传播的结果。

返回类型:

torch.nn.Module

使用示例

torchao.autoquant(torch.compile(model)) model(*example_input)

# 多个输入形状 torchao.autoquant(model, manual=True) model(*example_input1) model(*example_input2) model.finalize_autoquant()

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源