ORT 模型部署
Deploy ORT modelonnxruntime-inference-examples/mobilenet.ipynb at main · microsoft/onnxruntime-inference-examples 详细记录YOLACT实例分割ncnn实现 真正部署模型,不应该把后处理包括在模型推理中,这会影响模型在GPU上的部署,性能也不一定会好。这里的后处理,不仅仅是model(input) 之后的,也可以是作者放在模型推理过程中,但是实际上可以归为后处理的部分。 判断函数是否在ONNX trace的过程中:torch.onnx.is_in_onnx_export() 。 ONNX to TF Torch to ONNX torch不支持F.grid_sample 算子。从ONNX支持的算子列表来看,opset=16 时,可以直接使用grid_sampler 而不需要手动设置符号函数。 12345678910111213141516171819202122232425262728# https://github.com/pytorch/pyt...
MNN GPU float16 使用原理
我观察到 MNN 在使用 GPU OpenCL 时,会默认使用 float16 的格式,导致模型评测时时间不同,如图。因此查看了 MNN 的源码,发现了一些有趣的东西。 MNN 使用 MNN::BackendConfig::Precision_Low 时,会根据 GPU 的实际情况判断是否使用 float16 的数据格式。代码随附。 当导出的模型可以使用 float32 或者 float16 保存,当权重转换到 GPU 上时,会转换格式,在代码的第19行到第22行。代码随附。 Pipeline 中保存的 tensor 指向的 opencl buffer 保存的还是 float16。但是 OpenCL::onMapTensor 和 OpenCL::onUnmapTensor 的实现保证了映射前后得到的是 float32。OpenCLBackend::onAcquire 给出了 tensor 中保存的 buffer 格式,其中调用了 isSupportedFP16 判断目前是否支持 float16,如果支持则使用 float16 的大小创建 buffer。 OpenCLBacken...