Files
openmlsys-zh/chapter_preface/index.md
Luo Mai 4414831c72 Preface (#332)
* Preface

* Update

* Update editors.md

* Delete Pic_Templates_and_Samples.pptx

* Update index.md

* Update index.md

* Update index.md
2022-05-06 17:36:32 +08:00

10 KiB
Raw Blame History

序言

缘起

我在2020年来到了爱丁堡大学信息学院爱丁堡大学是AI研究的发源地之一很多学生慕名而来学习机器学习技术。因此我们拥有许多出色的AI课程自然语言处理计算机视觉计算神经学等同时也拥有一系列关于计算机系统的基础课程操作系统编程语言编译器计算机体系架构等。但是当我在教学的过程中问起学生机器学习是如何利用计算机系统来做到计算加速和大规模部署的许多学生都会报来疑惑的眼神。而这也促使我思考在爱丁堡大学乃至于其他世界顶尖大学的教学大纲里我们是不是缺乏了一门课程来衔接机器学习技术和计算机系统知识。

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

当时觉得比较合适的是微软亚洲研究院的AI Systems。这门课程在研读论文的同时一定程度上讲述了AI框架背后的设计理念。但是当我准备将其教授给本科生的时候我发现这门课对于机器学习系统核心设计理念讲解很浅同时也要求学生具有大量的背景知识实际上更适合给博士生授课。抛开内容不谈上述的全部课程共同的核心问题是它们给学生的阅读材料都是高深零散甚至过时的论文而不是一本全面注重基础语言通熟易懂的面向本科生和工程师的教科书这给机器学习系统相关知识的传播造成了极大的困难。

回首2020年的世界我们已经拥有了优秀的操作系统数据库分布式系统等基础性教材。在机器学习领域我们也拥有了一系列机器学习算法的教材。然而无论是英语世界还是中文世界我竟找不到任何一本系统性讲述机器学习系统的教材。而这本教材的缺乏让许多公司和高校实验室不得不花费大量的人力和物力从头培养学生和工程师对于机器学习基础架构的认识这已经制约了高校培养出符合业界学界和时代发展的人才了因此我开始思考我们学界和业界是不是需要一本机器学习系统的教科书了呢

开端

带着写书的构想我开始和身边的朋友沟通。几乎全部人都非常认可这本书的巨大价值但是现实的情况是没有人愿意做这么一件吃力不讨好的事情。我当时的博士后导师也劝我我现在处在助理教授的关键阶段追求高影响力的学术论文是当务之急写一本书要耗费3-4年的精力最后可能也无法面世。而当我和同行交流时也发现人们更愿意改进世面上已经有的教科书做有迹可循的事情而不是摸着石头过河做从无到有的事情。特别是对于机器学习系统这个快速发展依然在试错的领域能不能写出一本能够经受住时间检验的书也是一个巨大的未知数。

我因此不得不将这个想法暂时藏在了心里了数月直到一次探亲回国和朋友聊天。这个朋友就是MindSpore的架构师金雪锋。和雪锋的相识是在疫情前的最后一个圣诞节左右雪锋来伦敦访问他正在领导MindSpore的开发当时1.0还没有发布。而在世界的另一端我在2018年也和好友一起试图从头搭建一个AI框架虽然最终资源不足无疾而终不过许多的思考成就了我之后发表的多篇AI系统论文。和雪锋聊起来我们都对AI框架开发之难深有同感。我们共同的感慨就是找到懂AI框架开发的人太难了。现今的学生们都一心学习机器学习算法很多学生对于底层的运作原理理解很粗浅。而当他们在真实世界中应用机器学习意识到系统的重要性想去学习的时候却没有了在学校中最充沛的学习时间。我因此对雪锋苦笑到我是准备写一本机器学习系统教材的但是可能还要等个3-4年。雪锋这时候说我也有这个想法啊你要是写的话我能帮助到你吗

雪锋这句话其实点醒了我。传统的书籍写作往往是依赖于1-2个教授将学科十余年的发展慢慢总结整理出书。这种模式类似于传统软件开发的瀑布流方式。可是科技的世界已经变了软件的发展从传统的瀑布流进化到如今的开源敏捷开发。而书籍的写作为什么还要停留在传统方式呢MXNet团队构建开源社区来编写的专注于深度学习算法的书籍《Deep Dive into Deep Learning》就是一个很好的例子啊。我因此马上找到当年一起创立TensorLayer开源社区的小伙伴北京大学的董豪我们一拍即合说干就干。雪锋也很高兴我和董豪愿意开始做这件事也邀请了他的同事干志良进来帮助我们。我们终于开始书籍的写作了

经过几轮的讨论,我们将书籍的名字定为《机器学习系统:设计和实现》。我们希望这本书能教给学生经受住时间检验的机器学习系统设计原理,同时也提供大量的系统实现经验分享,让他们将来工作,科研中遇到实际问题知道该如何分析和解决。

社区的构建

考虑到机器学习系统本身就是一个依然在发展试错并且频繁孕育细分领域的学科。我从一开始就在思考如何设计一个高度可扩展Scalable的社区架构来保证这本书的可持续发展呢因为我是专注于大规模软件系统的老师我决定借鉴几个分布式系统的设计要点来构建社区

  • 预防单点瓶颈现代分布式系统往往采用控制层和数据层分离的设计来避免单点故障和瓶颈。那么我们在设计高度可扩展的写作社区的时候也要如此。因此我们设计了如下分布式机制编辑类似于分布式系统的Leader决定花最大的时间来寻找每个章节最优秀主动负责任的章节负责人(Local leader)。而章节负责人可以进一步寻找其他作者Follower共同协作。而章节负责人和章节作者进行密切的沟通按照给定时间节点全速异步推进。而编辑和章节负责人设定了每隔1周的讨论来同步Synchronise写作的进展确保并行完成的章节质量能够持续符合编辑和社区的整体预期。

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

  • 高可用性我们要有7x24小时在线的平台让书籍可以在全球任何时区任何语言平台下都能参与开发倾听社区的反馈。因此我们将Git仓库放置在Github上并准备之后在Gittee做好镜像。这样我们就搭建了一套高可用的写作平台了。

  • 内容中立:一个分布式系统要能长久运行,其中的每一个节点我们要同等对待,遇到故障才能用统一的办法来进行故障恢复。考虑到书籍写作中的故障(设计无法经受时间检验,写作人中途不得不退出等等)可以来源于方方面面,我们让不同背景的参与者共同完成每一个章节,确保写出中立,客观,包容各类型观点的书籍内容,并且写作不会因为故障而中断。

现状和未来

机制一旦建立好写作就自动化地跑起来了同行人也越来越多我带过的学生袁秀龙、丁子涵、符尧也很用心参与董豪邀请了鹏城实验室的韩佳容和赖铖志良邀请了许多MindSpore的小伙伴进来贡献许多资深的AI框架的设计者也和我们在各个渠道展开讨论提供了非常多宝贵的写作建议。另外学界的教授Peter Pietzuch老师陈雷老师等也持续给我们内容提供详细的反馈。

充分发动了“分布式系统”的力量后书籍的内容得以持续高质量的合并了进来。当我们开源了书籍以后书籍的受众快速增长GitHub上的关注度增长让我们受宠若惊。在社区的推动下书籍的中文版英文版阿拉伯语版都已经开始推进。这么多年来我第一次意识到我在分布式系统和机器学习里面学习到的知识在解决现实复杂问题的时候是如此的有用

很多时候,当我们面对未知而巨大的困难,个人的力量真的渺小。而和朋友,社区一起,就变成了强大的力量,让我们鼓起勇气,走出了最关键的第一步!希望我的一些思考,能给其他复杂问题的求解带来一些小小的启发。

最后我们非常欢迎新成员的加入来帮助书籍提升质量扩展内容。感兴趣的读者可以通过书籍的GitHub社区https://github.com/openmlsys/ 联系到我们,我们非常期待和大家一起努力,写出世界上第一本机器学习系统的书籍!

麦络

写于英国爱丁堡

2022年5月4日