致谢
缘起
本书源于一次交谈。在 Google 学术休假期间,Pete Warden 邀请我参与一项在当时看来几乎不可能实现的 TinyML 探索项目:在微控制器上运行一个小型语音模型。围绕 TensorFlow Lite for Microcontrollers 展开的这次合作揭示了一个根本性事实:约束内存容量为 16 KB 至 256 KB 的设备的因素,与约束数据中心加速器的因素相同,尽管二者的规模截然不同。在这两种环境中,带宽、延迟、能耗和内存都遵循相同的物理规律。这一认识成为本书的起点。
TinyML 方面的工作促成了 HarvardX 上的一门在线课程,由我与 Laurence Moroney 共同讲授,后来吸引了全球超过 100,000 名学生。Brian Plancher 协助构建了 TinyML 课程体系。Marcelo Rovai 教授最初通过 TinyML 课程接触到这些内容,随后为本书开发了配套的实践实验和套件。Zach Shelby 向学生开放了 Edge Impulse 平台。Massimo Banzi 和 Arduino 团队,以及 Eric Pan 和 Seeed Studio,与我们合作开发并提供了硬件套件,使实践教学得以开展。Marco Zennaro 通过 ICTP 将这些内容带到了发展中国家,并提出这些原理值得编写成一本系统的教科书。在缺少这样一本教材的情况下开展如此大规模的教学,使这一需求变得毋庸置疑。
这一需求通过哈佛大学的 CS249r 课程转化为一本书。2023 年,贯穿整个学期的课程项目是编写课程讲义:每个学生小组负责一个主题,对其进行研究,并与我合作将其发展成一个章节。这项工作为本书的每一章奠定了基础。其出发点是,写作能够促使人进行比阅读更深入的思考。随后,我们将全部内容开放到 GitHub 上,此后每个学期都不断改写和完善,使最初粗略的课程讲义逐步成形。
下方展示了 GitHub 贡献者的头像,体现了同样的协作历程。贡献指南见 mlsysbook.ai/git。
合作者与同事
除了课堂和 GitHub 社区,我早期的合作经历也塑造了本书的思想基础。我在 Google 工作的经历,为书中许多系统层面的思考提供了启发。那段经历始于为首款 Pixel 片上系统(SoC)开展性能建模,这项工作依托于我的计算机体系结构背景。我与 Mark Hill 合作,为异构 SoC 开展 Roofline 风格的解析建模,从中学会了如何从第一性原理出发分析硬件,而这种定量思维贯穿本书的每一章。对解析建模的重视自然引向了系统性评估,而系统性评估又促成了 MLPerf。MLPerf 汇聚了 MLCommons 的众多贡献者,其中与我合作最密切的是 Peter Mattson、David Kanter、Carole-Jean Wu、Christine Cheng、Guenther Schmuelling、Cody Coleman 和 Cliff Young。这段合作经历塑造了我对如何严谨测量机器学习系统的认识。
Boris Murmann 和 Song Han 在项目早期便让我确信,这项工作值得继续推进。在写作过程中,我向产业界和学术界的同事广泛征求反馈。来自 Arm、Google、Intel、Meta、Microsoft、Qualcomm、STMicroelectronics 等机构的实践者,提供了立足于生产系统的见解;来自欧洲、亚洲和美洲各地高校的学术审阅者,则结合自身的研究与教学,对书稿内容进行了严格检验。他们共同提供的反馈使每一章都更加完善。Qualcomm 的 Evgeni Gousev 和 Edge AI Foundation 的 Pete Bernard 支持了本项目的推广工作,并帮助建立了围绕本项目的社区。
这一反馈循环还延伸到了世界各地的课堂,教师们在教材尚不成熟时便将其用于教学检验。加州大学伯克利分校的 Sophia Shao、哥伦比亚大学的 Xiaofan (Fred) Jiang、佐治亚理工学院的 Tushar Krishna 和 Divya Mahajan,以及明尼苏达大学莫里斯分校的 Wenkai Guan,都是最早采用本教材的教师。此后,印度理工学院孟买分校、巴基斯坦国立科技大学、菲律宾德拉萨大学,以及欧洲、拉丁美洲和非洲各地高校的教师,也陆续将本书用于自己的课程。他们愿意使用一本尚未完成的教材开展教学,为本书提供了宝贵的反馈,也证实了对这类内容的需求并不局限于某一所院校或某一个国家。
学生与贡献者
我在哈佛大学边缘计算实验室的学生,以许多我无法一一追溯的方式塑造了本书。其中一些人开展了奠基性工作,帮助 TinyML 确立为一个研究领域;他们的研究,以及多年合作中涌现的思想,都为本书的技术内容提供了启发。这批学生帮助推动了这一领域的发展,随后又帮助我将其写成文字:Andy Cheng、Arya Tschand、Brian Plancher、Colby Banbury、Elizabeth Suitor、Emma Chen、Ikechukwu Uchendu、Jason Jabbour、Jason Yik、Jeffrey Ma、Jessica Quaye、Mark Mazumder、Matthew Stewart、Maximilian Lam、Radhika Ghosal、Shvetank Prakash、Srivatsan Krishnan、Yu-Shun Hsiao 和 Zishen Wan。当时在哈佛大学继续教育学院的 Kai Kleinbard 构建了在线生成式 AI 辅导机器人 SocratiQ。来自哈佛大学 Kempner 研究所的 Naeem Khoshnevis 建立了包括 GitHub Actions 和文档规范在内的关键基础设施。Željko Hrček 制作了 TikZ 图,并参与了本书 PDF 版式、页面编排和最终视觉格式的完善。
一本从活跃研究领域中提炼原理的教材,也应感谢那些为其奠定研究基础的研究者。开源社区以单个作者无法企及的方式塑造了本书。数十位贡献者发现错误、改进阐述、提交问题报告和拉取请求。有些人只修正了一个拼写错误,有些人则重写了整节内容。本书之所以能够不断完善,是因为许多本无义务为它付出的人选择了让它变得更好。我感谢他们每一位。
支持
本书的完成也有赖于哈佛数据科学计划、哈佛大学继续教育学院和美国国家科学基金会的支持;Edge AI Foundation 和 ICTP 为教育推广和奖学金提供的支持;以及 Arduino、Edge Impulse、Google 和 Seeed Studio 提供的硬件、工具和基础设施,使实践实验得以开展。
在麻省理工学院出版社,Susan Hartman 始终相信这个项目,并引导它从一项开源实验发展为正式出版的教材。她的支持、编辑判断和友谊,以仅凭 GitHub 无法做到的方式,促成了本书的出版。我同样感谢麻省理工学院出版社同意让本书持续以开放获取的形式提供。一本讨论由开源社区塑造的学科的教材,理应让这个领域中的每个人都能获取。麻省理工学院出版社认同这一信念,对本书至关重要。
最后,我感谢妻子 Kari 和女儿 Nora、Maya。本书是在原本属于她们的时间里写成的:从晚上十点开始、到凌晨两三点才结束的深夜,消磨在修订中的周末,以及多年来那些我虽在身边、心却未能完全陪伴她们的清晨。除了固执,让我坚持下去的还有开源社区。GitHub 上的每一颗星标都传递着一个信号:在某个地方,有人在意,有人在学习,这项工作有其意义。付出的代价是真实的,而她们以耐心承担了这一切;我并非总是配得上这份耐心。