无法在 android 上加载量化的 pytorch 移动模型

Unable to load quantized pytorch mobile model on android

我正在努力在 android 上获得我的量化 pytorch 移动模型(自定义 MobilenetV3)运行。我遵循了本教程 https://pytorch.org/tutorials/advanced/static_quantization_tutorial.html 并且成功地量化了我的模型,没有任何问题。但是,当我尝试通过加载模型时。 module = Module.load(assetFilePath(this, MODEL_NAME)); 我得到以下异常:

Unknown builtin op: quantized::linear_unpack_fp16.

Could not find any similar ops to quantized::linear_unpack_fp16. This op may not exist or may not be currently supported in TorchScript.

为什么量化模型中还有 float16 值,我认为量化会用 qint8/quint8 替换所有 float32 值?关于如何解决这个问题有什么想法吗?

pytorch模型是这样量化保存的:

torch.quantization.get_default_qconfig(backend='qnnpack')
model.qconfig = torch.quantization.default_qconfig
torch.quantization.prepare(model, inplace=True)
torch.quantization.convert(model, inplace=True)
traced_script_module = torch.jit.trace(model,dummyInput)
traced_script_module.save("model/modelQuantized.pt")

我发现这个错误是由于用于模型量化的pytorch版本版本不匹配和pytorch_android造成的。

模型使用 pytorch 1.5.1 torchvision 0.6.1 cudatoolkit 10.2.89 进行量化,但我使用 org.pytorch:pytorch_android:1.4.0 进行构建。

切换到 org.pytorch:pytorch_android:1.5.0 解决了。