荐书:《机器学习系统:设计和实现》

911 阅读4分钟

本期推荐一本书籍,关于机器学习,又不全是机器学习。连接机器学习和底层设计的一本书籍。就像此书作者所说:

做世界上第一本全面讲述机器学习系统知识的开源书籍

图片 

前言

 书籍来源之初,是作者在爱丁堡大学信息学院期间,问了一些学生这样的一个问题:“机器学习是如何利用计算机系统来做到计算加速和大规模部署的? ”很多学生回答不出,而作者于是想找一门课程来衔接机器学习技术和计算机系统知识。起初,作者想到是找一门已有的课程借鉴学习。作者先后想到了AI Systems、Deep Learning Systems和Machine Learning Systems Design三门课程,但最后都被排除了。

  • 加州伯克利大学的AI Systems,这门课描述了机器学习系统的不同研究方向,内容以研读论文为主,许多论文已经无法经受住时间的检验。同时也缺乏对于知识的整体梳理,形成完整的知识体系架构。学习完这个课程,学生并没有明确的思路可以从头搭建起来一个机器学习框架。
  • 华盛顿大学的Deep Learning Systems,这门课程讲述了机器学习程序的编译过程,其受限于服务TVM的目的,对于机器学习系统缺乏完整的解读。
  • 斯坦福大学的Machine Learning Systems Design,因为课程设计人是数据库背景,因此课程专注数据清洗,数据管理,数据标注等数据专题。

比较合适的是微软亚洲研究院的AI Systems,但作者发现里面的知识较为浅显,不适合学习。于是作者有了著书的想法,而当时的作者是助理教授,理应像大多数人一样,一心一意搞科研搞学术。做一件吃力不讨好的事情,并非人人都想做,而写一本书,也需要花费很长时间,短则两三年,长则十来年。作者的导师希望他以学术为主。一次探亲回家,作者认识了MindSpore的架构师金雪锋,更加坚定了自己写书的动机。(全书中的机器学习实例,大多用到的是MindSpore架构,所以看这本书,想复现代码,需要到MindSpore官网安装相应的模型。官网为:*www.mindspore.cn/ *)。在这之后,作者拉着几个朋友,自己的学生和一些工程师,受到MXNet团队构建开源社区来编写的专注于深度学习算法的书籍《Deep Dive into Deep Learning》影响和启发,也做了一个社区,制作开源式书籍,也就是此书 《机器学习系统:设计和实现》 。作者专注于大规模软件系统,所以采用分布式系统的设计思路。

  • 预防单点瓶颈:
  • 迭代式改进
  • 高可用性
  • 内容中立

其中,迭代式改进,我觉得作者用的比较好,真的学以致用了。深度学习的优化算法随机梯度下降本质上是在复杂问题中利用局部梯度进行海量迭代,最终找到优秀的局部最优解。作者因此利用了同样的思路来设计书籍质量的迭代提高。首先在Overleaf<一个在线式Latex网站> 上写作好书籍的初版(类似于初始参数,Initial Weights)。接下来进一步将书籍的内容做成标准的Git代码仓库(Book as code)。建立机制鼓励开源社区和广大读者开启Issue和PR,频繁改进书籍(相当于梯度,Gradients),而设置好完善的书籍构建工具,持续集成工具,贡献者讨论会,标准化的Issue和PR合并流程等等,就可以让书籍的质量持续提高实现随机梯度下降(Stochastic Gradient Descent)一样的最终最优性。 

社区网站

 网站链接:github.com/openmlsys/

图片

markdown、 code .

图片

1.机器学习框架

图片

2.机器学习框架基本组成

图片

3.机器学习编程库发展历程****

图片

4.机器学习系统工作流

图片 

书籍链接

 机器学习系统:设计和实现 — 机器学习系统:设计和实现 1.0.0 documentation (openmlsys.github.io)

网站地址:openmlsys.github.io/index.html