坚持接近一年项目,老板最终还是喊停了。并没有感到特别意外,只是在对一个东西突然有些兴趣或者说入门的时候,戛然而止,多少有些不甘心和遗憾,今后会在业余继续学习的,也希望自己在2020年能把工作逐渐聚焦到这块吧。
接触TVM到有两个原因:
一、需要支持多种优化手段的推理引擎,例如图优化、低比特量化、稀疏优化、高效算子优化等。在工作中尝试tensorflow的quantization和非结构性剪枝(no-structural pruning),加速效果非常一般,因为这些优化手段需要推理引擎的支持。再之后尝试channel pruning对模型进行剪枝,针对cnn模型能减少30%的计算量,但总体结果并不满意。TVM从编译器的角度解刨了深度学习计算图,把计算图类比成编译器中的IR,方便了图优化。与此同时,TVM通过机器学习手动搜索算子实现时需要调节的参数,能做对针对不同的输入产生特定的算子,简化了人工优化的繁琐工作。
二、需要支持多种平台的推理引擎,例如NV GPU/x86/ARM GPU等。机器学习应用越来越广泛,相应的模型也需要部署在不同的硬件环境上,包括服务器、移动端、特定芯片上等。工作中采用过tensorflow/pytorch/caffe/onnx/tflite/tensort等框架部署深度学习模型,由于组内人少,水平有限,经常踩坑,还达不到预期的效果。当时我就思考需要一个支持多种训