量化压缩kernal分析

Posted by franztao on November 28, 2024

子任务:

•1. 采用常见深度学习框架实现一个经典模型

•框架可以选:tensorflow/pytorch/caffe

•经典模型可以从前文算法模型中选择一个

•最好是从0开始搭建,不要直接将网上模型下载下来,理解深度学习模型中的基本元素,包括节点,边,层,图等。

•2. 基于训练集设计预处理、loss并训练到收敛

•设计图像预处理逻辑,理解预处理对训练收敛的意义

•自行设计loss,理解loss含义及在训练任务中的作用

•采用mnist训练集将模型训练到收敛,且精度达到95%以上,越高越好

子任务:

•3. 导出fp32推理模型,将fp32推理模型转换为onnx fp32模型

•采用开源的模型转换工具,将训练框架的模型转换为onnx模型

•4. 编写onnxruntime测试程序

•采用cmake搭建测试工程的编译方法

•采用git管理测试代码

•5. 基于onnxruntime cuda EP,测试模型延迟(latency)和吞吐(throughput)

•采用NVIDIA docker搭建cuda测试环境

•测试fp32模型在NV GPU上的延迟和吞吐

•6. 通过onnxruntime量化得到int8 qdq模型,测试模型在cuda EP上的精度、延迟和吞吐

•与fp32模型比较精度、延迟和吞吐

子任务:

•7. 对比onnxruntime不同优化级别,模型结构区别及执行区别

•测试onnxruntime在不同优化级别下,经过图优化后的模型结构区别

•8. 采用TensorRT执行fp32模型,并量化到int8模型,跟onnxruntime对比精度、延迟和吞吐

•9. 通过nsight systems分析以上各种情况下模型结构区别和GPU层面的执行区别:kernel数量、kernel融合、kernel耗时、整体耗时等