pytorch的官网提供的三种量化方式详解

pytorch的三种量化方式详解

这篇博客详细介绍了pytorch官方教程提到的三种量化方式的原理,详细解释了三种量化方式的区别;

1. 静态量化 :torch.quantize_per_tensor

  • scale (标度)和 zero_point(零点位置)需要自定义。量化后的模型,不能训练(不能反向传播),也不能推理,需要解量化后,才能进行运算
    详细的解释,参考这篇博客: 静态量化

2. 动态量化 : torch.quantization.quantize_dynamic

  • 系统自动选择最合适的scale (标度)和 zero_point(零点位置),不需要自定义。量化后的模型,可以推理运算,但不能训练(不能反向传播)
  • 详细的解释,参考这篇博客: 动态量化

3. 量化意识训练

  • 系统自动选择最合适的scale (标度)和 zero_point(零点位置),不需要自定义。但这是一种伪量化,量化后的模型权重仍然是32位浮点数,但大小和8位定点数权重的大小相同。伪量化后的模型可以进行训练。虽然是以32位浮点数进行的训练,但结果与8位定点数的结果一致。
  • 示例程序: 量化意识训练

pytorch量化官方教程:

中文教程
English Tutorial

  • 9
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
PyTorch 量化是指将模型中的浮点数参数和操作转换为定点数参数和操作,以减少模型的存储空间和计算量,从而提高模型的推理速度和效率。PyTorch 量化支持多种量化方法,包括对称量化、非对称量化、动态量化等。 在 PyTorch 中,可以使用 torch.quantization 模块进行量化。具体来说,可以通过以下步骤进行 PyTorch 量化: 1. 定义模型并加载预训练权重; 2. 对模型进行微调,以便更好地适应量化; 3. 构建数据集并进行训练; 4. 对模型进行量化,并保存量化后的模型。 以下是一个简单的 PyTorch 量化示例: ```python import torch import torchvision # 加载预训练模型 model = torchvision.models.resnet18(pretrained=True) # 定义数据集 dataset = torchvision.datasets.ImageFolder('path/to/dataset', transform=torchvision.transforms.ToTensor()) # 定义数据加载器 data_loader = torch.utils.data.DataLoader(dataset, batch_size=32) # 对模型进行微调 model.eval() model.qconfig = torch.quantization.get_default_qconfig('fbgemm') model_fused = torch.quantization.fuse_modules(model, [['conv1', 'bn1', 'relu'], ['layer1.0.conv1', 'layer1.0.bn1']]) model_prepared = torch.quantization.prepare(model_fused) model_prepared(data_loader) # 训练模型 optimizer = torch.optim.SGD(model_prepared.parameters(), lr=0.001, momentum=0.9) criterion = torch.nn.CrossEntropyLoss() for epoch in range(10): for inputs, labels in data_loader: optimizer.zero_grad() outputs = model_prepared(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() # 对模型进行量化 model_quantized = torch.quantization.convert(model_prepared) # 保存量化后的模型 torch.save(model_quantized.state_dict(), 'quantized_model.pt') ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮宽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值