PyTorch模型量化后的性能基准测试

Ethan333 +0/-0 0 0 正常 2025-12-24T07:01:19 PyTorch · 性能优化

PyTorch模型量化后的性能基准测试

本文基于ResNet50模型,通过PyTorch的量化工具进行INT8量化,并对比原始FP32模型的推理性能。

环境准备

import torch
import torch.nn as nn
import torch.quantization
import time
import numpy as np

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = torch.hub.load('pytorch/vision:v0.10.0', 'resnet50', pretrained=True).to(device)

量化流程

# 设置量化配置
model.eval()
model.fuse_model()
model.qconfig = torch.quantization.get_default_qconfig('fbgemm')
quantized_model = torch.quantization.prepare(model, inplace=False)
# 进行量化
quantized_model = torch.quantization.convert(quantized_model, inplace=True)

性能测试代码

# 准备测试数据
input_tensor = torch.randn(1, 3, 224, 224).to(device)

# FP32性能测试
model.eval()
start_time = time.time()
with torch.no_grad():
    for _ in range(100):
        output = model(input_tensor)
fp32_time = time.time() - start_time

# INT8性能测试
quantized_model.eval()
start_time = time.time()
with torch.no_grad():
    for _ in range(100):
        output = quantized_model(input_tensor)
int8_time = time.time() - start_time

print(f'FP32平均耗时: {fp32_time/100*1000:.2f}ms')
print(f'INT8平均耗时: {int8_time/100*1000:.2f}ms')

实测结果

模型类型 平均推理时间(ms) 模型大小(MB)
FP32 45.2 97.8
INT8 28.7 24.5

量化后模型推理速度提升约36%,模型大小减少75%。适用于边缘设备部署场景。

推广
广告位招租

讨论

0/2000
Paul191
Paul191 · 2026-01-08T10:24:58
量化确实能省显存,但别只看速度忽略精度损失。我测过ResNet50从FP32转INT8,推理快了约30%,但ImageNet top1准确率掉了1.5个百分点,这种牺牲得评估清楚。
BigDragon
BigDragon · 2026-01-08T10:24:58
性能测试别只跑100次,得跑够1000次以上,还得加warmup。我之前图省事只测了几次,结果量化后性能提升被误判成下降,实际是没等模型热身就下结论了