近日,InfoQ 从 Apache 官网获悉,知名深度学习技术专家李沐的开源学习框架项目 MXNet 已被移至 Apache Attic,原因是这个项目不活跃。
Apache Attic(阿帕奇阁楼)是 Apache 软件基金会的一个项目,为已终止的 Apache 项目提供解决方案。Attic 项目成立于 2008 年 11 月。已退休的项目也可以被保留。
从 Apache 孵化器毕业后不久,就进入“退役”阶段
Apache MXNet 是一款开源的轻量级深度学习框架,支持多种语言,包括 Python、Scala、R、Julia、Perl 等等,这使得它可以被各种人群使用,包括开发人员和数据科学家。其核心代码是用 C++编写的,但它提供了一个灵活的界面,允许用户使用他们喜欢的语言编写代码。MXNet 于 2022 年 9 月从 Apache 孵化器毕业成为顶级项目。
MXNet 的另一个重要特性是它支持混合符号编程和命令式编程,从而能最大限度提高效率和生产力。其核心是一个动态的依赖调度,它能够自动并行符号和命令的操作。它还具备一个图形优化层,使得符号命令执行速度更快,内存使用更高效。它也是一款便携框架,能够扩展到多个 GPU 和多台机器。
MXNet 支持超大规模云厂商 AWS 和 Azure。2016 年,亚马逊选择 MXNet 作为 AWS 的深度学习框架,亚马逊首席技术官 Werner Vogels 亲自撰文解释并进行了大力推广。经过多年的发展,MXNet 得到了英特尔、Dato、百度、微软、Wolfram Research 以及卡耐基梅隆大学、MIT、华盛顿大学和香港科技大学等研究机构的支持。
但 MXNet 的发展并非一路高歌猛进,在最近几年 MXNet 逐渐走向没落。
早在去年 6 月,MXNet 项目核心成员 Sheng Zha 就曾给社区发了封声明坦陈了项目面临的艰难处境,声明中称,“自 2022 年底以来,代码开发大部分已停止,社区参与度放缓。尽管生成式人工智能和相关技术蓬勃发展,深度学习框架和分布式训练等空间解决方案,但该项目目前的定位还不够维持项目的增长,特别是考虑到开源深度学习框架空间的开发。为此,社区需要做出一些选择,包括通过找到关键的大型项目的路径继续维护该项目;讨论 MXNet 可以转向哪些替代位置;退休到 Apache Attic 中。”
遗憾的是,社区最终选择了最后一条路。去年 9 月,MXNet 正式进入 Apache Attic,自此退休。
10 月份,Apache 还给社区发出“警告”通知,表示项目进入“只读“阶段。
到了 11 月 17 日,项目又再次发出邮件,提醒用户 MXNet 已经成功移入 Attic。
但值得一提的是,退休一个项目并不是关闭一切那么简单,因为现有用户需要保留对自己开发工作必要信息的访问权。也就是既需要让现有用户知道该项目正在退役,又要保留获取必要信息以进行自身开发的机会。具体来说,Apache Attic 机制的目的是:不影响用户、对代码库提供受限制的监督、在没有项目管理委员会(PMC)的情况下对活动用户列表进行监督;但它将不再重建社区、修正 bug、发布新版本。
一个项目可以通过两种机制进入 Attic:管理项目管理委员会(PMC)决定要该项目迁移进入 Attic,或者 Apache 软件基金会的董事会解散 PMC 并选择迁移该项目。
而什么样的项目应该进入 Attic ?“PMC 无法召集 3 票进行版本发布、没有积极的提交者或无法履行其向董事会报告的项目都是 Attic 的良好候选者”。
据悉,MXNet 社区共有 875 名贡献者、87 名提交者和 51 名 PMC 成员。许多社区成员在 MXNet 之外继续发挥重要作用生成式人工智能和深度学习系统空间。
MXNet 的发展历史
MXNet 由 DMLC(Distributed ‘Deep’ Machine Learning Community)打造,DMLC 的大部分成员目前大部分是华人,以陈天奇、李沐、解浚源等为代表,创建了这个世界上目前排名第四的深度学习框架:MXNet。
作为 Apache MXNet 的作者,李沐本科就读于上海交大,博士毕业于美国卡内基梅隆大学,并先后在港科大、伯克利担任教职,2016 年加入亚马逊成为首席科学家。
2014 年在 NIPS 上的相遇之后,陈天奇与李沐等人决定组建 DMLC 分布式深度机器学习社区联盟(Distributied Deep Machine Learning Community),号召大家一起合作开发 MXNet,分别发挥各自的特长,共同解决机器学习门槛高的问题。
该联盟前期成员主要来自于CXXNet团队, 核心成员十人左右。其中张铮老师指导的 Minerva 团队主要负责后端引擎,陈天奇进行接口设计,李沐负责分布式。
经过了一年的发展,2015 年 9 月,MXNet 的初代版本就已经开源出来并在GitHub上发布。在一众技术大佬背书下,项目开源就受到了极大的关注。在李沐等人的不断努力下,MXNet 在多个机器学习和计算机视觉竞赛中取得了优异的成绩。与此同时,MXNet 持续增加了对新颖算法的支持,并逐渐被学术界和工业界广泛采用。
2016 年,越来越多的开源贡献者参与到了开发及维护 MXNet 的工作中,对 MXNet 进行了大量的扩展、优化和修复工作,截止 2016 年 11 月,该项目已经拥有 200 多位贡献者。也是这一年,MXNet 的发展迎来了重要的里程碑。
同年年底,亚马逊宣布将 MXNet 作为官方使用的深度学习框架,这一决定让外界哗然。因为当时的深度学习市场上已经有了TensorFlow、Theano、Torch 或 Caffe 等知名度较高的深度学习框架,MXNet 作为新兴的后起之秀,为何会被亚马逊这样的超级巨头选中?
在接受媒体采访时,时任亚马逊 CTO 的 Werner Vogels 给出了答案。Vogels 表示之所以选择 MXNet 作为深度学习框架,是因为它的扩展性和运行性能比几乎任何其他产品都要好开发,此外,技术人员还可以在该框架中使用多种语言,包括 Python、C++、R、Scala、Julia、Matlab 和 JavaScript。
Vogels 发布了使用 Inception v3 图像分析算法的 MXNet 训练吞吐量基准,并声称通过在多个 GPU 上运行该算法获得的加速是高度线性的。在 128 个 GPU 上,MXNet 的执行速度比单个 GPU 快 109 倍。
同时,AWS 还表示将会通过增加源代码贡献、改进文档以及支持来自其它框架的可视化、开发以及迁移工具,为实现 MXNet 成功的长远目标做出贡献,AWS 的大力驰援进一步推动了 MXNet 的发展和推广。
2017 年 1 月 23 日,MXNet 被 Apache 软件基金会接纳,成为其孵化项目之一。这一举措为 MXNet 的开发和社区生态注入了新的活力,吸引了众多大公司的支持和贡献,包括亚马逊、微软、英特尔等。到 2017 年底, MXNet 贡献力量的人员达到 400 多名。
2017 年,MXNet 0.11 是 MXNet 正式加入 Apache 以后的第一个版本。这次最大的改进是加入了动态图接口 Gluon,Gluon 同时支持灵活的动态图和高效的静态图,既保留动态图的易用性,也具有静态图的高性能。随后,在 MXNet 1.0 版本中,引入了动态图计算和 TensorFlow 兼容接口等重要更新,进一步提升了 MXNet 的性能和灵活性。这使得 MXNet 在与其他深度学习框架的竞争中更具优势。
在随后的几年中,MXNet 持续发展和壮大。它推出了多项新功能和技术创新,包括混合精度训练、模型量化、自动混合推理等。这些创新使得 MXNet 在处理大规模数据集和复杂模型时更加高效。此外,MXNet 还提供了更加灵活且直观的接口,方便用户使用。
2022 年 9 月,MXNet 项目作为顶级项目从孵化器毕业。
MXNet 的一路发展和李沐个人的职业选择深度绑定。2019 年,InfoQ 有幸对李沐进行了一次专访,了解到了他从学术界到工业界的精彩故事。
硅谷华人 AI 大神李沐的开挂人生
上海交通大学 ACM 班, 取名源于国际科学教育计算机组织——美国计算机学会(Association of Computing Machinery),ACM 是世界上第一个、也是最有影响的计算机组织,计算机领域最高奖——图灵奖是由该组织设立和颁发的。
李沐的大学本科,就是在这样一个被寄予厚望的“特色班”里度过的。
有意思的是,他当时只是对数学很感兴趣,高中的时候虽然参加过一些数学竞赛,可几乎没有接触过计算机。进到了这么一个培养计算机科学家的班里,他自己也有些拿不准:到底能不能搞定这个复杂的机器?
ACM 班最大的特点在于注重实践,即使是在本科阶段,学生也需要手写大量的代码来练习,至少也是其他院校同院系实践量的四五倍。此外,ACM 班非常注重数学能力,这也给了李沐发挥所长的机会。
不过,可不要觉得李沐的生活就此陷入了无边无际的“代码海洋”之中,“学霸”的生活并不枯燥,反而还充满了不少乐趣。据李沐的室友透露:那时的李沐不仅学习成绩好,还是篮球场上的一把好手,更是电竞场上的“大神级”人物。
然而不久之后,戏剧性的一幕出现了:虽然踌躇满志进入了 ACM 班,并且报名参加了计算机竞赛,但是李沐最终因为训练的成绩不合格被刷了下来。
这个时候,李沐遇到了他的导师:吕宝粮教授,也正是从那时起,李沐正式推开了人工智能的大门。
初识 AI
吕宝粮,上海交通大学计算机系教授、博士生导师,IEEE 高级会员。主要研究方向有:仿脑计算机理论与模型;机器学习理论与应用;神经网络理论与应用;生物特征识别;自然语言处理;脑与计算机界面。
李沐第一次接触人工智能,就是被吕宝粮教授的一个案例震撼到了。
“当时教授展示了一张他们实验室人员的合照,并用人脸识别系统把每一个人的名字都对应显示了出来,当时我们就被这个 demo 吸引住了,也就这样选择加入了这个实验室。”
李沐的人工智能之路也就由此正式开始了。“本科阶段还有时间打球、打游戏,后来真的是一年比一年累,回想起来,在 ACM 班的经历就像是一个过渡期。”
“过渡期”之后,李沐没有去找工作,而是选择到香港科技大学继续深造。李沐的选择是受到了 ACM 班定位的影响——培养计算机科学家,ACM 班也更鼓励人才去从事学术研究。
“除此之外,当时的大环境也是影响我选择的一个原因。那是大概 2008 年左右,虽然当时计算机已经成了热门专业,但是当时的 IT 公司并没有那么厉害,尤其在 AI 方面的技术并没有那么强。”
在港科大又修炼了一年多的内功之后,李沐开始了“初入江湖”的旅程。
在正式进入工业界之前,2007 年夏天,李沐已经在微软亚洲研究院“小试牛刀”了三个月左右真正开始与工业界亲密接触,是 2011 年 4 月,那一年李沐进入了百度。
在百度,李沐的主要工作是广告预测,利用广告数据有效地训练一个模型,使得该模型能够准确的预测用户会不会点某个广告。
在百度的一年时间里,李沐积累了大量的经验,他也坦言,这些经验是在学校里学不到的:“学校的实验环境里,也许只能用到几块 GPU,跑几个 G 的数据。而在企业里,你面对的是几个 T 的数据量和上百台机器,在这种情况下,你不得不去考虑如何做分布式,或者如何让代码和系统变得更快、更简洁。”
2013 年,在百度工作了一年后,李沐再次踏上了求学之路。“在百度的经历让我学到了很多,也更清楚地发现了自己的短板。但是当时国内做系统方向的人比较少,所以我还是选择了去美国继续攻读博士。”
从百度到亚马逊, MXNet 和李沐深深绑定
2012 至 2017 年间,李沐在 CMU 攻读博士学位,在读博期间,他也在百度担任首席架构师一职,也正是在这期间他牵头创办了 MXNet 项目,并伴随着项目的发展选择了不同的职业道路。
2017 年,MXNet 项目被亚马逊选中,李沐在博士毕业后也开始了他在亚马逊的职业之旅。
李沐初到亚马逊时,人工智能部门刚刚成立,正是需要深度学习框架来支持的时候,李沐的经验正好派上了用场。
除了 MXNet,李沐也参与了一些别的项目。“框架只是一个工具,更重要的是要知道如何用好工具来服务客户。”分布式系统出身的李沐感慨道:“分布式系统最难的不是如何让每个机器计算的多快,而是机器之间的通讯问题,如何减少通讯提升交互效率,这对系统来说也是至关重要的。”
已经有过多年工作经验的李沐在面对项目的时候会比刚毕业时考虑得更多。他需要考虑项目组之间的交互问题,如他所言:亚马逊也像是一个巨大的分布式系统,部门与部门之间的交互就像机器之间的通讯一样。但是人之间的联系并不像机器那么好优化,一旦协作不畅,很容易使项目陷入瓶颈。这些都是李沐之前不曾考虑过的问题,也是他需要努力的方向。
2022 年年底,大模型爆火,许多 AI 领域大佬也都纷纷从原公司离职自己创业,李沐也成为了这场浩浩荡荡 AI 创业潮的一员。
从亚马逊离职,MXNet 走向迟暮
2023 年 3 月,据媒体曝出,李沐已从亚马逊离职,加入了导师 Alex Smola 的创业项目,并且有消息称新公司融资情况良好。
同年 2 月,“参数服务器之父” Alex Smol 教授从亚马逊云科技(AWS)离职,创办了一家名为 Boson.ai 的人工智能公司。同月,Alex Smol 教授在领英宣布成立了新公司并担任 CEO。“
关于 Boson.ai,目前网上的资料还很少。Boson.ai 的官网还在建设中,目前仅显示:适用于所有人的大模型,并配文:“我们正在做一件大事。敬请期待!”
虽然李沐并没有在官宣加入 Boson.ai 的消息,但他已经出现在了 Boson.ai 的 GitHub 项目主页中,据悉,Boson.ai 的 GitHub 仓库页面由李沐亲自编写。
李沐的悄然离职,也映衬着 MXNet 的陨落。
李沐解释没落原因:保技术,舍推广
MXNet 的没落多少让人有些意外。知乎上有篇热帖也讨论了“MXNet 明明很好,为何没有人用”的话题。值得一提的是,在留言回复中,我们发现了李沐的回答。
李沐表示:“简单来说就是我们没有足够的人手能够在短时间内同时技术上做出足够的深度而且大规模推广,所以我们前期是舍推广保技术。”
MXNet 虽然是一个非常好的框架,但是由于背景不够,开发人员忙于版本迭代却忽视了文档的重要性,导致新用户难以上手,导致 MXNet 的用户群体一直无法扩大,错过了关键的竞争窗口,在与 TensorFlow,Pytorch 的竞争中一直处于绝对下风。
对于李沐保技术舍推广才导致项目没落的解释网友却有着不同的观点。在这篇帖子下方,有网友经过一番调研,分析了造成 MXNet 火不起来的几点原因:
推广太强,而对应的效果可能还没发挥出来,毕竟有着 Amazon、Nvidia 以及余凯等一众大佬站台不能算推广不够强;
社区人员经历严重不足,同时又有点避重就轻。像 TensorFlow 核心集中于 C++ 和 Python 的支持,核心人员重点解决主要问题,其他的主要依赖于强大的社区贡献;而 MXNet 却重点宣扬多语言支持,把核心成员本来就较少的精力分散到各语言去了,造成的结果就是看着样样有,但是样样不精;
框架本身属于开始容易,入门难:简单跑个样例还好,但是文档缺乏和混乱问题很严重;
实验效果上有差距,部分模型跑不出state-of-art的效果,这个是致命伤;
其他问题还包括比如 TensorFlow 吸引力太强,部分实验室已经绑定在以往用的比较称手的框架上,这一问题可能是无解的。
参考链接:
https://www.zhihu.com/question/52498007/answer/132137595
https://www.infoworld.com/article/3144025/why-amazon-picked-MXNet-for-deep-learning.html
https://lists.apache.org/thread/otf22vzk99hn1h9558s5sq4h757ccptk
https://lists.apache.org/thread/7oz6mglh8ck9xtzs2oopl168vvknyw30
评论