量化训练或者离线量化后的模型使用fluid加载为什么没有加速?
收藏
量化训练或者离线量化后的模型使用fluid加载为什么没有加速?怎样才能加速?
旧鸱c_
已解决
3#
回复于2021-08
这是因为量化后保存的参数是虽然是int8范围,但是类型是float。fluid并不具备加速量化模型的能力。量化模型必须配合使用预测库才能加速。 如果量化模型在ARM上线,则需要使用Paddle-Lite.Paddle-Lite会对量化模型进行模型转化和优化,转化方法见链接。 转化之后可以像非量化模型一样使用Paddle-Lite API进行加载预测。 如果量化模型在GPU上线,则需要使用Paddle-TensorRT 预测接口.和非量化模型的区别在于以下参数设置: config->EnableTensorRtEngine(1 << 20 /* workspace_size*/, batch_size /* max_batch_size*/, 3 /* min_subgraph_size*/, AnalysisConfig::Precision::kInt8 /* precision*/, false /* use_static*/, false /* use_calib_mode*/); 如果量化模型在x86上线,需要使用INT8 MKL-DNN首先对模型进行转化,可以参考脚本 转化之后可使用预测部署API进行加载。比如c++ API
0
收藏
请登录后评论
这是因为量化后保存的参数是虽然是int8范围,但是类型是float。fluid并不具备加速量化模型的能力。量化模型必须配合使用预测库才能加速。
如果量化模型在ARM上线,则需要使用Paddle-Lite.Paddle-Lite会对量化模型进行模型转化和优化,转化方法见链接。
转化之后可以像非量化模型一样使用Paddle-Lite API进行加载预测。
如果量化模型在GPU上线,则需要使用Paddle-TensorRT 预测接口.和非量化模型的区别在于以下参数设置:
config->EnableTensorRtEngine(1 << 20 /* workspace_size*/,
batch_size /* max_batch_size*/,
3 /* min_subgraph_size*/,
AnalysisConfig::Precision::kInt8 /* precision*/,
false /* use_static*/,
false /* use_calib_mode*/);
如果量化模型在x86上线,需要使用INT8 MKL-DNN首先对模型进行转化,可以参考脚本
转化之后可使用预测部署API进行加载。比如c++ API