在当下互联网行业中,机器学习、神经网路等技术逐步在业界落地实施,而目前还是大部分集中在服务端技术。由于在移动端硬件等因素的限制,深度学习技术的应用有着诸多困难,2016年百度在客户端使用深度学习的能力做了大量工作,终于在2017年初完成所有技术障碍,并准备在手机百度中上线。 使用深度学习可以在不发起网络请求的情况下在移动客户端进行图像识别任务。目前,不管是在国内还是国外深度学习领域中,在移动客户端使用深度学习都是前沿技术,业务虽然有一些应用,但是还是有一些移动端的障碍扫清。
面向5G|AIoT|边缘计算 移动端神经网络实践首著 基于手机百度AI创新应用
深度学习技术在近两年飞速发展,对互联网的诸多方面产生了影响。各种互联网产品都争相应用深度学习技术,这将进一步影响人们的生活。随着移动设备被广泛使用,在移动互联网产品中应用深度学习和神经网络技术已经成为必然趋势。
一直以来,由于技术门槛和硬件条件的限制,在移动端应用深度学习的成功案例不多。传统移动端UI工程师在编写神经网络代码时,可以查阅的移动端深度学习资料也很少。而另一方面,时下的互联网竞争又颇为激烈,率先将深度学习技术在移动端应用起来,可以取得先发制人的优势。
移动端设备的运算能力比PC端弱很多。移动端的CPU要将功耗指标维持在很低的水平,这就给性能指标的提升带来了限制。在App中做神经网络运算,会使CPU的运算量猛增。如何协调好用户功耗指标和性能指标就显得至关重要。另外,App的体积限制也是重大考验,如果为了让用户体验一个深度学习功能而要求其下载200MB甚至更大的模型文件,想必用户是不会愉快接受的。这些都是在移动端应用深度学习技术必须解决的问题。
笔者从2015年开始尝试将深度学习技术应用在移动端,在这个过程中遇到的很多问题是关于性能和功耗的,这些问题最终被逐一解决。现在相关项目代码已经在很多App上运行,这些App有日PV达亿级的产品,也有创业期的产品。2017年9月,笔者所带领的团队在GitHub上开源了该项目的全部代码及脚本,项目名称是mobile-deep-learning,希望它在社区的带动下能够得到更好的发展。本书也是以该项目的代码作为示例进行讲解的。
我们已经在多个重要会议上分享了该方向的成果,听众非常感兴趣,会后和我们讨论了很多问题,我也感觉到这些成果值得分享给更多人,于是产生了撰写本书的想法。
目前,国内外已经有很多关于深度学习的书籍,其中一些对算法的讲述非常精辟且有深度。然而这些书籍基本上都是介绍如何在服务器端使用深度学习技术的,针对在移动端应用深度学习技术的书籍还相对较少。
本书内容
本书力求系统而全面地描绘移动端深度学习技术的实践细节和全景,对iOS和Android两个平台的神经网络实践都会详细讲述。需求不同的读者可以根据自己的情况有重点地阅读。精妙的算法必须加上良好的工业实现,才能给用户提供极致的体验,本书以代码实现为主线讲述工程实践,由浅入深,逐步增加难度,最终会将体系结构和汇编知识应用到实践案例中。
这里需要说明两点:
笔者将书中出现的Paddle-Lite代码压缩并放到了博文视点的官网,读者可以扫描“读者服务”中的二维码查看。如果想体验最新版本的Paddle-Lite,可以直接到GitHub上搜索查看。
笔者将书中的链接列在表格中并放在了博文视点的官网,读者同样可以扫描“读者服务”中的二维码查看表格,并点击其中的链接直接访问。
本书可以作为移动端研发工程师的前沿读物,读者阅读本书后,完全可以将所学知识应用到自己的产品中去;同时本书也适合对移动端运算领域感兴趣的朋友阅读。
致谢
特别感谢我的同事在本书编写过程中提供的巨大帮助,由于本书涉猎的技术方向较广——从体系结构到框架程序设计,从CPU到GPU编程,所以有些内容请教了在相关方向更资深的同事。感谢赵家英和秦雨两位同事对CPU性能优化部分提供的帮助,感谢刘瑞龙和谢柏渊两位同事对深度学习框架和GPU部分提供的帮助,有了你们的帮助,本书的内容才更完善、有深度,在此深表谢意。
李永会
2019年7月于北京