我很困惑是否可以在 CUDA 上运行 int8 量化模型,或者只能使用 fakequantise 在 CUDA 上训练量化模型以部署在另一个后端(例如 CPU)上。
我想使用实际的 int8 指令而不是 FakeQuantized float32 指令在 CUDA 上运行模型,并享受效率提升。奇怪的是,Pytorch 文档对此没有具体说明。是否可以使用不同的框架在 CUDA 上运行量化模型,例如TensorFlow我很想知道。
这是准备量化模型的代码(使用训练后量化)。该模型是带有 nn.Conv2d 和 nn.LeakyRelu 以及 nn.MaxPool 模块的普通 CNN:
model_fp = torch.load(models_dir+net_file)
model_to_quant = copy.deepcopy(model_fp)
model_to_quant.eval()
model_to_quant = quantize_fx.fuse_fx(model_to_quant)
qconfig_dict = {"": torch.quantization.get_default_qconfig('qnnpack')}
model_prepped = quantize_fx.prepare_fx(model_to_quant, qconfig_dict)
model_prepped.eval()
model_prepped.to(device='cuda:0')
train_data = ImageDataset(img_dir, train_data_csv, 'cuda:0')
train_loader = DataLoader(train_data, batch_size=32, shuffle=True, pin_memory=True)
for i, (input, _) in enumerate(train_loader):
if i > 1: break
print('batch', i+1, end='\r')
input = input.to('cuda:0')
model_prepped(input) …Run Code Online (Sandbox Code Playgroud)