背景
深度学习已经在生活的方方面面被应用和重视。目前如何将神经网络部署到端侧,一般的模式是“云侧训练,端侧推理”。也就是说,把用户的数据传到云侧上面,云侧基于获得的多数据进行训练模型,训练好的模型直接下放到端侧,然后端侧利用训练好的模型直接进行推理。由于云端数据中心有更高的处理能力和更宽松的能耗限制,所以这种做法是更容易实践的。但这样的做法存在一个比较重要的问题:隐私问题。端设备收集的使用数据常常带有用户隐私:例如邮件App 得到的用户回复文本都可能含有用户私人信息。近几年的一系列事件唤起了用户对隐私的慎重态度:欧盟发布了GDPR 法案,限制科技公司从用户收集数据;
边缘训练
边缘训练,就是端设备上部署训练。这样做由以下几个好处。首先,它有利于保护隐私。训练过程中数据从未离开端设备,用户的接受度更高。其次,开发者可以在根据用户变化的实际数据,不断微调自己的模型,实时让模型自适应用户。除此之外,因为端设备不再需要上传数据、等待云端调度任务训练模型、下载更新后的结果这个延迟。一些数据传送的带宽限制也可以被消除。
主流深度学习框架
要说部署神经网络的训练和推理,就得依赖深度学习框架。目前已有的通用深度学习框架已不下于数十种。其中比较有影响力的如TensorFlow, PyTorch, MXNet等。此外,还有针对特定使用环境所开发出的特殊的深度学习框架,如Nvidia针对Nvidia图形处理器上执行推理任务所开发的TensorRT,谷歌针对TensorFlow模型在移动端上部署开发的推理框架TensorFlow Lite,小米和阿里巴巴分别针对移动端推理开发的MACE和MNN。分类可以根据以下几种情况来分类。