移动端AI模型量化:核心技术、实践指南与未来趋势——从理论到部署的全链路优化

关键词

移动端AI, 模型量化, 低比特量化, 量化感知训练, TensorRT, TFLite, 部署优化

摘要

随着智能手机、IoT设备的普及,移动端AI应用已成为日常生活的核心场景(如图像识别、语音助手、AR/VR),但设备的计算能力、存储资源、功耗限制严重阻碍了大型AI模型的部署。模型量化作为一种高效的模型压缩技术,通过将浮点数权重与激活值转换为整数(如8位、4位),可实现模型大小减少75%以上、推理速度提升2-4倍、功耗降低50%,成为移动端AI开发的关键突破口。

本文从概念基础出发,深入剖析模型量化的理论框架(数学原理、误差分析),详细介绍架构设计(流程、组件、可视化)与实现机制(代码优化、边缘情况处理),结合实际应用案例(Android/iOS部署)探讨高级考量(安全、伦理、未来趋势),为开发者提供从理论到部署的全链路优化指南。

一、概念基础:移动端AI与模型量化的背景与定义

1.1 领域背景化:移动端AI的崛起与约束

移动端设备(智能手机、智能手表、IoT传感器)是AI应用的主要载体,但硬件资源有限:

  • 计算能力:iPhone 15的A17 Pro GPU浮点性能约10 TFLOPS,仅为数据中心NVIDIA A100(312 TFLOPS)的3%;
  • 存储资源:移动端RAM通常为4-16GB,无法容纳大型模型(如GPT-3的1750亿参数模型约700GB);
  • 功耗限制:未优化的AI推理会使手机续航减少30%(如运行FP32图像识别模型)。

这些约束使得直接部署大型浮点模型不可行,必须通过模型压缩技术(剪枝、量化、蒸馏)优化模型的大小与性能。其中,模型量化因能在保持较高精度的同时,显著提升推理速度与降低功耗,成为移动端AI开发的首选技术。

1.2 历史轨迹:模型量化的发展历程

模型量化的研究可追溯至20世纪90年代,但真正普及始于深度学习兴起后:

  • 2016年:Google发布《Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》,提出量化感知训练(QAT),通过训练过程模拟量化误差,提升量化模型精度;同年,TensorFlow推出TFLite,支持移动端量化部署。
  • 2018年:NVIDIA发布TensorRT 5,支持8位量化推理,GPU上的INT8模型推理速度比FP32快2-4倍。
  • 2020年至今:低比特量化(4位、2位)成为研究热点,如Google的《4-bit Quantization of Transformer Models for Deployment》提出针对Transformer的4位量化方法,模型大小减少至1/8,精度下降小于2%。

1.3 问题空间定义:模型量化的目标与挑战

核心目标:在保持模型精度的前提下,实现存储优化(减少模型大小)、速度优化(加速推理)、功耗优化(降低能耗)
主要挑战

  • 量化误差:浮点数映射到整数导致信息丢失,降低模型精度;
  • 硬件兼容性:不同设备(CPU/GPU/NPU)对量化的支持不同(如旧款Android手机仅支持INT8);
  • 流程复杂度:量化需要调整训练流程(如QAT),增加开发成本。

1.4 术语精确性:模型量化的关键概念

  • 量化(Quantization):将浮点数(FP32)转换为整数(如INT8、INT4)的过程,分为权重量化(模型参数)与激活量化(中间输出);
  • 低比特量化(Low-bit Quantization):将浮点数转换为小于8位的整数(如4位、2位);
  • 对称量化(Symmetric Quantization):量化范围以0为中心(如INT8的[-128, 127]),适用于权重(分布对称);
  • 非对称量化(Asymmetric Quantization):量化范围不以0为中心(如UINT8的[0, 255]),适用于激活值(分布非对称);
  • 量化感知训练(QAT):训练过程中模拟量化误差,通过反向传播调整参数,提升量化后精度;
  • 训练后量化(PTQ):训练完成后对模型进行量化,无需重新训练,适用于快速部署。

二、理论框架:模型量化的数学原理与方法分类

2.1 第一性原理推导:量化的数学本质

模型量化的核心是线性变换,将浮点数空间映射到整数空间。假设浮点数为( x ),量化为( b )位整数( q ),则量化过程可表示为:

  1. 确定量化范围:统计( x )的取值范围( [\text{min}, \text{max}] );
  2. 计算缩放因子:( s = \frac{\text{max} - \text{min}}{2^b - 1} )(( 2^b - 1 )为( b )位整数的最大值,如8位为255);
  3. 计算零点:( z = \text{round}(-\text{min} / s) )(浮点数0对应的整数);
  4. 量化操作:( q = \text{round}(x / s + z) )(将( x )转换为整数( q ));
  5. 反量化操作:( \hat{x} = (q - z) \times s )(将( q )转换回浮点数,用于后续计算)。

示例:假设( x )的范围是([-1, 1]),( b=8 ),则( s = (1 - (-1)) / 255 = 2/255 \approx 0.00784 ),( z = \text{round}(-(-1)/0.00784) = \text{round}(127.56) = 128 )。浮点数( x=0.5 )的量化结果为( q = \text{round}(0.5/0.00784 + 128) = \text{round}(63.78 + 128) = 192 ),反量化后( \hat{x} = (192 - 128) \times 0.00784 = 64 \times 0.00784 = 0.50176 ),误差约为0.35%。

2.2 数学形式化:量化误差分析

量化误差( e = x - \hat{x} ),其中( \hat{x} = (q - z) \times s )。代入量化公式得:
[ e = s \times \delta ]
其中( \delta = x/s + z - \text{round}(x/s + z) )是rounding误差,取值范围为([-0.5, 0.5))。

结论:量化误差的大小取决于缩放因子( s ):( s )越小,误差越小,但量化范围([\text{min}, \text{max}])越小,易导致截断误差(( x )超出范围被截断);( s )越大,误差越大,但量化范围越大。

2.3 理论局限性:精度与性能的权衡

模型量化的核心矛盾是精度与性能的权衡

  • 比特数( b )的影响:( b )越大,误差越小,精度越高,但模型大小与推理速度的优化效果越差(如8位量化精度下降<1%,4位下降3-5%,1位下降>10%);
  • 量化范围的影响:若范围过小,截断误差增大;若范围过大,rounding误差增大。如何选择合适的范围是量化的关键挑战。

2.4 竞争范式分析:量化与其他压缩技术的对比

模型压缩技术主要包括剪枝、量化、知识蒸馏,三者的对比如下:

技术 原理 优点 缺点 适用场景
剪枝 移除不重要的权重 显著减少模型大小 需要重新训练,结构不规则 模型大小优先
量化 浮点数转整数 不改变结构,易部署 精度下降取决于比特数 速度与功耗优先
知识蒸馏 教师模型指导学生模型 保持较高精度 需要额外教师模型训练 高精度需求

实际应用:通常将三者结合(如先剪枝,再量化,最后蒸馏),以达到更好的压缩效果。

三、架构设计:模型量化的流程与组件设计

3.1 系统分解:量化流程的核心步骤

模型量化的全流程可分为训练前准备、量化处理、部署验证三个阶段(如图1所示):

训练前准备:收集校准数据、定义模型

选择量化方法:PTQ/QAT

是否选择QAT?

修改模型:添加FakeQuantize节点

量化感知训练:模拟量化误差,调整参数

导出量化模型:转换为INT8/INT4格式

训练后量化:用校准数据统计量化范围

部署到移动端框架:TFLite/Core ML/TensorRT

性能测试:延迟、内存、功耗

精度验证:与原始模型对比(如Top-1准确率)

上线运营:监控性能与精度

图1:模型量化全流程

3.2 组件交互模型:量化系统的核心组件

量化系统的核心组件包括模型定义、量化处理、校准、部署、验证,其交互关系如图2所示:

验证模块

部署模块

校准模块

量化处理模块

模型定义模块

选择QAT

选择PTQ

原始浮点模型(FP32)

量化方法选择(PTQ/QAT)

量化感知训练(QAT)

训练后量化(PTQ)

校准数据收集

量化范围统计(min/max)

模型转换(如TFLite Converter)

移动端框架(TFLite/Core ML/TensorRT)

性能测试(延迟、内存、功耗)

精度验证(Top-1准确率)

图2:量化系统组件交互模型

3.3 可视化表示:量化感知训练的详细流程

**量化感知训练(QAT)**是提升量化精度的关键方法,其详细流程如图3所示:

加载原始浮点模型(FP32)

添加FakeQuantize节点:模拟量化误差

加载训练数据与校准数据

训练模型:反向传播调整参数

用校准数据统计量化范围(min/max)

移除FakeQuantize节点,生成量化模型(INT8)

导出量化模型(如.tflite格式)

部署到移动端设备

图3:量化感知训练(QAT)流程

其中,FakeQuantize节点是QAT的核心,它在训练过程中模拟量化误差(量化→反量化),使模型学习适应误差,提升量化后精度。

3.4 设计模式应用:量化系统的优化模式

为提高系统灵活性与可扩展性,通常应用以下设计模式:

  • Pipeline模式:将量化流程分解为多个步骤(模型定义→量化处理→校准→部署→验证),依次执行,流程清晰易维护;
  • 适配器模式:针对不同移动端框架(TFLite、Core ML)设计适配器,将量化模型转换为框架支持的格式(如TFLite Converter将TensorFlow模型转换为.tflite);
  • 策略模式:根据需求选择量化策略(PTQ快速部署、QAT高精度),提高系统适应性。

四、实现机制:模型量化的代码实现与优化

4.1 算法复杂度分析:量化对推理速度的影响

模型推理时间由计算时间内存访问时间组成:

  • 计算时间:整数运算的硬件效率更高(如ARM NEON的INT8矩阵乘法速度是FP32的4倍);
  • 内存访问时间:量化后模型大小减少(如INT8模型大小是FP32的1/4),内存访问次数减少75%。

理论加速比计算公式:
[ \text{加速比} = \frac{\text{FP32推理时间}}{\text{INT8推理时间}} = \frac{\text{FP32计算时间} + \text{FP32内存访问时间}}{\text{INT8计算时间} + \text{INT8内存访问时间}} ]

假设FP32计算时间占60%,内存访问时间占40%,INT8计算时间是FP32的1/4,内存访问时间是FP32的1/4,则加速比为:
[ \text{加速比} = \frac{0.6 + 0.4}{0.6/4 + 0.4/4} = 4 ]

这与实际测试结果一致(如TensorRT的INT8推理速度比FP32快2-4倍)。

4.2 优化代码实现:量化感知训练(QAT)的PyTorch示例

以下是用PyTorch实现QAT的代码示例(以简单CNN模型为例):

步骤1:定义原始浮点模型
import torch
import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 32, kernel_size=3, stride=1, padding=1)
        self.relu1 = nn.ReLU()
        self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)
        self.relu2 = nn.ReLU()
        self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2)
        self.fc1 = nn.Linear(64 * 7 * 7, 128)
        self.relu3 = nn.ReLU()
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = self.conv1(x)
        x = self.relu1(x)
        x = self.pool1(x)
        x = self.conv2(x)
        x = self.relu2(x)
        x = self.pool2(x)
        x = x.view(-1, 64 * 7 * 7)
        x = self.fc1(x)
        x = self.relu3(x)
        x = self.fc2(x)
        return x
步骤2:修改模型以支持QAT
import torch.quantization

# 定义量化配置(fbgemm适用于x86,qnnpack适用于ARM)
quant_config = torch.quantization.get_default_qconfig('fbgemm')

# 准备模型:添加FakeQuantize节点
model = Net()
model.train()
model.qconfig = quant_config
torch.quantization.prepare_qat(model, inplace=True)
步骤3:进行量化感知训练
import torch.optim as optim
from torch.utils.data import DataLoader
from torchvision import datasets, transforms

# 加载训练数据(CIFAR-10)
transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)

# 定义优化器与损失函数
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
criterion = nn.CrossEntropyLoss()

# 训练模型(10个epoch)
num_epochs = 10
for epoch in range(num_epochs):
    running_loss = 0.0
    for i, (inputs, labels) in enumerate(train_loader):
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
        if i % 100 == 99:
            print(f'Epoch {epoch+1}, Batch {i+1}, Loss: {running_loss/100:.4f}')
            running_loss = 0.0
步骤4:导出量化模型
# 转换为INT8量化模型
model.eval()
quantized_model = torch.quantization.convert(model, inplace=True)

# 保存量化模型(TorchScript格式)
torch.jit.save(torch.jit.script(quantized_model), 'quantized_model.pt')
步骤5:部署到移动端(TorchMobile)
# 加载量化模型
quantized_model = torch.jit.load('quantized_model.pt')

# 运行推理(输入:1x3x224x224的张量)
input_tensor = torch.randn(1, 3, 224, 224)
output_tensor = quantized_model(input_tensor)
print(output_tensor.shape)  # 输出:torch.Size([1, 10])

4.3 边缘情况处理:量化中的极端值问题

极端值(远大于或小于量化范围的值)会导致严重的截断误差,降低模型精度。处理方法包括:

  • 截断(Clipping):将超出范围的值截断到min或max(如将x>max设置为max);
  • 统计修剪(Statistical Pruning):选择分位数作为范围(如99.9%分位数作为max,0.1%作为min),去除1%的极端值;
  • 自适应量化范围(Adaptive Range):动态调整量化范围(如动态量化中,每次推理计算当前批次的min/max)。

4.4 性能考量:精度与性能的权衡

在实际应用中,需根据需求权衡精度与性能,可使用Pareto前沿选择最优方案(如图4所示):

渲染错误: Mermaid 渲染失败: Lexical error on line 1. Unrecognized text. graph scatter x-axis: -----^

图4:量化精度与性能的Pareto前沿

Pareto前沿上的点表示无法在不牺牲精度的情况下提升性能(如INT8 QAT模型比INT8 PTQ更快,但精度稍低)。

五、实际应用:移动端AI模型量化的部署实践

5.1 实施策略:选择合适的量化方法

选择量化方法的关键是平衡开发成本与精度需求

  • 训练后量化(PTQ):无需重新训练,开发成本低,适用于快速部署(如简单图像分类);
  • 量化感知训练(QAT):需要重新训练,开发成本高,但精度下降小(<1%),适用于高精度需求(如医疗图像识别);
  • 动态量化(Dynamic Quantization):动态调整量化范围,适用于激活值分布变化大的模型(如RNN、Transformer)。

5.2 集成方法论:将量化模型集成到移动端框架

以**Android平台(TFLite)**为例,展示集成步骤:

步骤1:转换模型格式(TensorFlow→TFLite)
import tensorflow as tf

# 加载原始浮点模型(MobileNetV2)
model = tf.keras.applications.MobileNetV2(input_shape=(224, 224, 3), weights='imagenet')

# 转换为INT8量化模型(使用校准数据)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.target_spec.supported_types = [tf.int8]
# 校准数据(1000张验证集图像)
def representative_dataset():
    for _ in range(1000):
        yield [tf.random.normal([1, 224, 224, 3])]
converter.representative_dataset = representative_dataset
tflite_model = converter.convert()

# 保存.tflite模型
with open('mobilenet_v2_int8.tflite', 'wb') as f:
    f.write(tflite_model)
步骤2:集成到Android应用(TFLite Java API)
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.support.common.FileUtil;
import org.tensorflow.lite.support.image.ImageProcessor;
import org.tensorflow.lite.support.image.TensorImage;
import org.tensorflow.lite.support.image.ops.ResizeOp;
import org.tensorflow.lite.support.image.ops.TransformToFloatOp;

public class ImageClassifier {
    private Interpreter tflite;
    private TensorImage inputImage;
    private float[] outputScores;

    public ImageClassifier(Context context) throws IOException {
        // 加载.tflite模型
        byte[] modelBuffer = FileUtil.loadMappedFile(context, "mobilenet_v2_int8.tflite");
        Interpreter.Options options = new Interpreter.Options();
        options.setNumThreads(4);  // 设置线程数(提升并行计算速度)
        tflite = new Interpreter(modelBuffer, options);

        // 初始化输入输出(INT8模型的输入是UINT8)
        int[] inputShape = tflite.getInputTensor(0).shape();
        inputImage = new TensorImage(tf.lite.DataType.UINT8);
        outputScores = new float[tflite.getOutputTensor(0).shape()[1]];
    }

    public float[] classify(Bitmap bitmap) {
        // 预处理输入图像(resize到224x224,转换为UINT8)
        ImageProcessor processor = new ImageProcessor.Builder()
                .add(new ResizeOp(224, 224, ResizeOp.ResizeMethod.BILINEAR))
                .add(new TransformToFloatOp(1.0f / 255.0f, 0.0f))  // 归一化到[0,1]
                .build();
        inputImage.load(bitmap);
        inputImage = processor.process(inputImage);

        // 运行推理
        tflite.run(inputImage.getBuffer(), outputScores);

        // 返回输出结果(分类概率)
        return outputScores;
    }
}

5.3 部署考虑因素:设备兼容性与框架支持

  • 设备硬件支持:不同设备的硬件(CPU/GPU/NPU)对量化的支持不同(如iPhone A17 Pro支持INT8/INT4,旧款Android手机仅支持INT8);
  • 框架版本支持:TFLite 2.0及以上支持INT8量化,TensorRT 5及以上支持INT8;
  • 输入数据格式:INT8模型的输入通常是UINT8(0-255)或INT8(-128-127),需将输入图像转换为对应格式;
  • 模型大小限制:Google Play要求APK大小不超过150MB,需控制量化模型的大小(如INT8模型大小是FP32的1/4)。

5.4 运营管理:模型更新与性能监控

  • 模型更新:当原始浮点模型更新时,需重新量化,并确保量化后模型与原始模型的精度差异在可接受范围内;
  • 性能监控:监控推理延迟、内存占用、功耗等指标(如使用Android的Systrace工具),及时发现性能下降问题;
  • 精度监控:定期使用验证集测试量化模型的精度(如Top-1准确率),确保精度没有下降;
  • 用户反馈:收集用户反馈(如应用崩溃、结果不准确),及时排查问题(如量化模型的边缘情况处理不当)。

六、高级考量:模型量化的扩展与未来趋势

6.1 扩展动态:低比特量化的最新进展

低比特量化(4位、2位)是当前研究热点,最新进展包括:

  • 4位量化:Google的《4-bit Quantization of Transformer Models for Deployment》提出分组量化(将权重分为多个组,每个组使用不同的缩放因子),将Transformer模型大小减少到1/8,精度下降小于2%;
  • 2位量化:Meta的《2-bit Quantization of Neural Networks with High Accuracy and Low Latency》提出自适应2位量化(动态调整量化范围),精度下降控制在3%以内,推理速度比INT8快2倍;
  • 1位量化:MIT的《Binary Neural Networks》提出二进制神经网络(BNN),将权重与激活值量化为1位(+1或-1),模型大小减少到1/32,推理速度比FP32快30倍,但精度下降较大(如ImageNet准确率从75%下降到60%)。

6.2 安全影响:量化模型的对抗攻击 vulnerability

量化模型比浮点模型更容易受到对抗攻击(向输入添加微小扰动,导致模型输出错误)。研究表明,INT8量化模型的对抗攻击成功率比FP32高20%以上(参考《Adversarial Robustness of Quantized Neural Networks》)。

解决方法

  • 对抗训练(Adversarial Training):在训练过程中添加对抗扰动,使模型学习抵抗攻击;
  • 量化感知对抗训练(QAT+Adversarial Training):将对抗训练与QAT结合,提升量化模型的对抗 robustness;
  • 鲁棒量化(Robust Quantization):使用区间量化(将浮点数映射到区间,而非单点),减少量化误差对对抗扰动的敏感性。

6.3 伦理维度:量化导致的公平性问题

模型量化可能导致公平性问题(对某些群体的精度下降更严重)。例如,在facial recognition应用中,量化模型可能对深色皮肤人群的识别精度下降比浅色皮肤人群更严重。

解决方法

  • 公平性量化(Fair Quantization):在量化过程中考虑不同群体的精度差异,调整量化范围或比特数,使差异均衡;
  • 公平性验证(Fairness Validation):使用公平性指标(如Equal Opportunity Difference)测试模型对不同群体的精度差异,确保差异在可接受范围内;
  • 偏见缓解(Bias Mitigation):在训练原始浮点模型时,使用重新加权、对抗去偏等技术,减少模型的偏见。

6.4 未来演化向量:模型量化的发展方向

  • 自动量化(Auto Quantization):使用AutoML工具自动选择量化方法、比特数、量化范围,减少人工干预;
  • 硬件-软件协同设计(Hardware-Software Co-Design):设计专门的硬件(如NPU、TPU)支持低比特量化,同时优化软件框架(如TFLite、TensorRT),提升量化模型的性能;
  • 多模态量化(Multimodal Quantization):针对多模态模型(如文本-图像生成模型),设计专门的量化方法,处理不同模态的数据(如文本的离散特征、图像的连续特征);
  • 终身量化(Lifelong Quantization):针对持续学习模型(如在线学习模型),设计动态量化方法,适应模型参数的变化,保持量化后的精度。

七、综合与拓展:模型量化的跨领域应用与开放问题

7.1 跨领域应用:模型量化在其他领域的应用

  • 边缘计算(Edge Computing):边缘设备(如路由器、摄像头)资源有限,量化模型可减少模型大小与推理时间,适合边缘计算场景;
  • 物联网(IoT):IoT设备(如智能传感器、智能家电)功耗限制严格,量化模型可降低功耗,延长电池寿命;
  • 数据中心(Data Center):数据中心服务器需要处理大量推理请求,量化模型可提升推理速度,减少服务器数量,降低能耗。

7.2 研究前沿:模型量化的开放问题

  • 低比特量化的精度保持:如何在4位、2位量化下保持较高的精度(如ImageNet准确率>90%);
  • 动态量化的效率提升:如何减少动态量化的计算 overhead,使其适用于实时应用;
  • 量化模型的可解释性:如何解释量化模型的决策过程,提高模型的可信度;
  • 量化模型的鲁棒性:如何提高量化模型对对抗攻击、噪声、数据分布变化的鲁棒性。

7.3 战略建议:移动端AI开发者的量化实践指南

  1. 早期规划:在模型设计阶段考虑量化需求,选择适合量化的模型结构(如MobileNet、EfficientNet);
  2. 数据驱动:使用真实的移动端数据进行校准和测试,确保量化模型的性能符合实际需求;
  3. 工具选择:选择成熟的量化工具(如TFLite、TensorRT),减少开发成本;
  4. 迭代优化:通过多次迭代(调整量化方法、比特数、量化范围),找到精度与性能的最佳平衡点;
  5. 持续监控:部署后持续监控模型的性能和精度,及时解决问题。

八、结论

模型量化作为移动端AI开发的关键技术,通过将浮点数转换为整数,显著解决了移动端设备的资源约束问题。本文从理论到实践,全面剖析了模型量化的核心技术与部署流程,为开发者提供了全链路的优化指南。

随着低比特量化、自动量化、硬件-软件协同设计等技术的发展,模型量化将在移动端AI应用中发挥更重要的作用。未来,移动端AI开发者需要不断学习最新的量化技术,结合实际应用需求,优化模型的精度与性能,为用户提供更好的AI体验。

参考资料

  1. 《Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》(Google, 2016);
  2. 《4-bit Quantization of Transformer Models for Deployment》(Google, 2020);
  3. 《Binary Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1》(MIT, 2016);
  4. 《Adversarial Robustness of Quantized Neural Networks》(ICLR, 2021);
  5. TensorFlow Lite 量化文档(https://www.tensorflow.org/lite/performance/quantization);
  6. PyTorch 量化指南(https://pytorch.org/docs/stable/quantization.html);
  7. NVIDIA TensorRT 量化文档(https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#quantization)。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐