现代框架移植到移动端问题不大,caffe2在支持facebook应用需要的layer以及全protobuf情况下小于1MB,核心大概在100多kb,看起来和mdl一致。
移动端最重要问题是如何优化。绝大多数数学库优化是针对server或者GPU来做的,移动端可以跑但是跑不快。
需要着重考虑的点:
1、是否有CPU优化?是否使用NEON?是否有为mobile设计的thread pool?是否有针对CPU框架做超参数的调整(thread number)?
2、算法上是否采用了正确的path, 比如用Winograd来做卷积, 对小矩阵做特殊优化(类似xsmm)等?
3、GPU上是否有高效的kernel implementation?如OpenCL/GL, Metal等。
4、是否有在mobile上非常有用的功能,如reduced precision。
深度学习系统的重量级优化和轻量级部署如何平衡融合?
编译优化和执行端分离,直接在优化端进行内存的分配部署,直接把方案保存下来。执行端不再进行内存分配算法,直接按照保存的方案执行即可。在编译优化端打包所需op,舍弃不需要的op,使得执行端更加轻量。