华为海思曾针对视频监控设备推出过Hi3516/Hi3519等一系列的芯片。这些芯片主要针对智能视频监控,部分芯片包含了一个名为NNIE的神经网络加速单元。不过由于该系列芯片的销售市场较为封闭,开发的技术文档和支持有限且未能形成较为完善的社区环境,再加上该款芯片的习惯硬件资源调用较为复杂,鲜有业余爱好者使用该系列芯片做开发。为了改变这一局面,本文推出针对NNIE的跨平台调用解决方案及相应的Python接口,让其他设备能够通过网络,远程利用该加速单元进行运算加速。
nnie_transfer_server作为在芯片端运行的服务器端应用,将NNIE硬件调用高度封装为三个步骤:模型加载,模型调用(forward/feature map extract)以及模型卸载,对于每个TCP会话,客户端首先向服务器端传送模型,服务器端接收模型后调用NNIE分配资源完成模型加载,并向客户端返回模型基本信息(输入、输出层信息)。随后客户端可以向服务器端发送具体的数据进行forward调用,服务器端完成运算后返回结果至客户端。当会话空闲超时或被关闭时,服务器释放模型资源卸载模型。
本项目的代码以及文档仍在完善中,现阶段提供Python接口实现上述网络通讯协议,结合nnie_transfer_server可在任意设备通过python调用海思芯片的NNIE芯片&#