目前国内外的 AI 开源框架领域,以 TensorFlow、PyTorch、MindSpore 等为代表,正处于一种群雄林立、七国八制的状态,但也增加了 AI 应用的平台移植成本,所以 TensorLayer 的问世难能可贵,它基于各个主流的开源框架,提供了一个统一的 AI 算法模型接口,不仅稳定了 AI 应用层,也促进了各开源框架的良序竞争。同时令人称道的是,TensorLayer 也是 AI 领域为数不多的、由中国学者主导研发并获得国际认可的开源项目,它还曾经获得了 ACM Multimedia 2017 年度最佳开源软件奖。
鉴于中国 AI 开源框架实力,整体尚处于一种相对薄弱的状态,那么对于正蓄势待发、投身于 AI 开源项目的学者或从业者们来说,TensorLayer 有哪些值得学习的经验呢?为此,我们采访了 TensorLayer 的项目发起人董豪以及核心开发骨干麦络。

董豪 ,北京大学前沿计算研究中心助理教授,英国帝国理工学院博士。研究方向是生成模型。
麦络 ,爱丁堡大学信息学院助理教授。研究方向是计算机系统,机器学习和大数据。通过董豪和麦络抽丝剥茧般的独到解析,笔者发现:在 AI 框架领域,生态建设越来越重要,个人靠一套代码打天下的英雄主义时代已经过去,其背后是人工智能潮流正奔着技术和产业融合的方向滚滚向前;对于下一代 AI 开源框架,它的成功将是团队合作、国际视野、技术创新、市场落地和持之以恒的综合结果。下面,是董豪和麦络在访谈中的精彩观点。
整理:智源社区 常政

一、TenorLayer: 寻找学术界和工业界 AI 应用的平衡点
智源社区:TensorLayer 曾经获得了 ACM Multimedia 2017 年度最佳开源软件奖,截止目前为止已经有 280k 下载量,Star 超 6k,相关官方项目 Star 超 10k,你觉得它获得成功和公众关注的主要原因是什么?你自己如何定位它的意义和价值?
董豪:TensorLayer 能走到现在的一个重要原因,是早在 2016 年我们就开始做了。当时 TensorFlow 并不那么好用,需要靠 Keras 库等来给它做一些支撑。但 Keras 是属于高度封装的一个库,而我们在做量化网络的时候需要对底层做一点定制化,所以完全无从下手。所以我们最后通过研发 TensorLayer,做了简化,让大家在制定 Layer 时变得非常简单。
我们对自己的定位是面向学术界和工业界,学术界讲究的是更加透明化的编程方式,工业界追求简洁的编程方式,所以这里面需要找到一个平衡点。首先,在学术界的一个优势,便是不用象企业那样更新一个软件版本需要制定计划,今天突然得到一篇论文,可以很快地实现、迭代更新上面的算法模型,并分享给其他人使用;这样带来另外一个好处,便是工业界也可以通过我们的库发现他们没有的一些 Layer,从而能够很好地促成学术界的新进展在工业界的使用。另外一方面,是在抽象设计上,对于定制化的东西要简单,同时写出来的代码,要方便大家容易看懂。
麦络: 我补充两个点。我们在研发 TensorLayer 的时候,深度学习的开发者主要有两个选择:TensorFlow 或者 Keras。
早期的 TensorFlow 提供很多底层的 API(例如 session 和 graph),足够灵活但是难以上手。另一方面,Keras 提供高层次 API,简单上手,但是难以对模型和训练过程做定制。非常多的像董豪和我这样的 AI 研发人员在寻找一个兼顾灵活性和高层次抽象的库,从而帮助我们快速实现新型 AI 模型。因此我们设计了 TensorLayer,并将这种抽象且灵活的哲学贯穿其中。
此外,TensorLayer 还提供了很多前沿的算法复现。比如董豪在里面实现了近一、两个月才提出来的算法复现,而 Keras 注重的是经典算法复现,未必很前沿,这也使得 TensorLayer 的第一批用户很多来自顶尖大学的 PhD。这样,TensorLayer 的生态也就慢慢建立起来了。

智源社区:TensorLayer 和目前业界的主流 AI 框架是一种什么关系,能否做到兼容?
董豪: 我们在这方面的思路是,使得 TensorLayer 在上层定义出 AI 模型的一套规范,也就是说 AI 算法上层的模型都可以拿 TensorLayer 的基本 API 定义出来。而对于底层,我们会尝试做到 TensorLayer 的模型定义是可以运行在 MindSpore、TensorFlow 和 PyTorch 等上面。这里面我们可以利用的一个契机是,这些主流框架现在都在尝试做出一套中间表达,比如 MLIR、TBM。所以,TensorLayer 可以通过在中间做好转接,让很多应用运行在不同的 AI 框架上面。
智源社区:TensorLayer 目前它的产业应用情况如何?有没有令你印象深刻的几个行业应用?
董豪: 首先是垃圾文本,它主要应用于视频直播。TensorLayer 开发了文本垃圾分类程序,可以自动屏蔽视频中的脏话文本等。此外还有视觉识别中的人体姿态估计,影响力也很大,在 TensorLayer 的 Github 上,人体姿态估计获得了 700、800 个 Star,而且经常收到全球各地的来信探讨商业化事宜。我们的强化学习库也有量化对冲基金团队在使用。
麦络: 还有就是超分辨率复原有很多落地的案例,比如有某家美国上市公司用 TensorLayer 研发 PCB 复原。我们这方面的项目获得了 2,000 多个 Star。TensorLayer 的应用之所以集中在上述几个领域,其中一个原因是它在视觉和生成对抗网络方面,有很多独有或者比较好的例子。最近一年 TensorLayer 开始重点支持强化学习,这方面的例子也将会越来越多。
二、通过 AI 框架看人工智能:生态建设和团队合作
智源社区:我看到 TensorLayer 目前的版本是 2020 年 4 月的 V2.2.2,在近几年 TensorLayer 的版本更新中,主要经历了哪些重要变化?TensorLayer 的下一个版本预计在什么时候发布,将有哪些新特点?
董豪: 深度学习框架如 TensorFlow、PyTorch 近几年的一个主要变化往支持动态网络的方向发展。TensorLayer 也基于这个大趋势,不断更新,目前已经做了针对 RL、NLP、CV 及其它工业界需求的具体应用库;此外我们还出版了相关的中英文教程、书籍,包括 2017 年出版了一本深度学习教程,今年还会出版两本关于强化学习的书籍。
在北大和鹏城实验室的支持下,TensorLayer 的下一个版本预计在今年年底发布,其重要特色是将会兼容华为的 MindSpore 框架。众所周知,华为在 AI 硬件领域实力雄厚,拥有 AI 训练芯片,也拥有嵌入式推断芯片等。如果能将华为 MindSpore 兼容进来,那我们就将 GPU、TPU、华为昇腾系列等各类硬件都兼容了,这会使得 TensorLayer 用户的代码将具有更大的兼容性。比如可以将 GPU 上训练出来的内容,通过同一套代码打通国内外的产品。
麦络:MindSpore 目前 AI 模型的生态仍然在建立之中。因此,MindSpore 本身也需要像 TensorLayer 这样的高层次库帮它将生态构建起来,完善强化学习,自然语言处理,生成对抗学习等相关应用。
智源社区:通过 TensorLayer 的历年升级变化,我们可以从中看到人工智能技术或产业的哪些发展趋势?
董豪: 现在开发人工智能基础软件的门槛已经降低,很多前人的工作可以参考,但开发工作量变得越来越大,特别是生态建设要求也越来越高,所以以往那种一两个人写出一个库已经很难成功了,现在好的 AI 框架基本上都是由大企业来维护,以前来自高校的一些优秀框架如 Caffe、Theano、Lasagne 等正渐渐退出历史舞台。
另外一个趋势是,国内各类 AI 硬件、芯片等出得越来越多,但相对以前来说,现在做 AI 芯片的难度不大,关键在于能否有生态的支持。所以现在 AI 基础软件也更加看重如何构建生态。
麦络: 人工智能产业正在从算法井喷期,慢慢进入全面应用期。在这个期间,我们的 AI 基础架构会迎来很大的发展。
首先,在 AI 框架的架构方面,我们会慢慢看到基于模块化设计的 AI 框架的出现。计算机乃至芯片的发展也有相似的脉络。例如说,从大型机的整体设计到今天的家用机模块化设计。芯片行业从一开始的大包大揽,到如今的芯片设计和生产的分工。在 AI 框架的发展上,我们也能看到类似的风格。TensorFlow 自上而下全部包揽设计的模式,在行业早期是非常有好处的,能快速发展。但是行业成熟以后,又会阻碍整个产业的健康发展。因此,AI 框架最近在开始模块化的尝试,相关标准组织也在慢慢出现。例如说,JAX,MLIR 和 ONNX 等。而模块化架构一旦成熟,会引领下一波 AI 框架的出现。
同时,AI 技术会沉淀到我们日常使用的软件里面。非常多的传统软件(例如说办公软件,数据库,集群管理,芯片设计等)会进行重构,从而高效支持 AI 算法参与软件运行中的决策。另外,软件开发工具也会更好的支持 AI 算法。例如说设计对 AI 友好的编程语言,原生支持异构硬件和自动差分等。Swift 和 Julia 等语言已经开始积极的探索。理论基础方面,2019 年底,谷歌和爱丁堡大学在 POPL 这个顶级编程语言会议上首次提出了一种原生支持自动差分的编程语言。
最后,就是隐私保护会很大程度影响 AI 产业的发展。现在世界各国对数据安全非常看重。各大互联网公司的推荐系统高度依赖用户数据,而且数据保护法出现后,为了保证互联网广告和推荐系统的可持续发展,也必须要开始思考如何平衡对于数据的利用和保护。今年 Google 已经第一次在产品上部署基于隐私保护的联邦学习技术。Facebook 和阿里巴巴也快速推进,开始了大量隐私保护的预研和产品研发。我觉得这类技术将影响下一代 AI 框架的研发。例如,新的框架要更好支持云 - 边 - 端的统一训练和推断,从而避免数据上传。又或者利用起来新型的加密 AI 芯片。
智源社区:从长远的角度,TensorLayer 将有哪些发展规划?
董豪:TensorLayer 的定位是提供一个 AI 编程标准,再基于此来兼容不同的计算引擎和训练芯片等,不仅对工业界应用提供一些库支持,同时也支持好科学研究。短期来看,我们目前计划先支持好谷歌 TensorFlow、华为 MindSpore,因为这两个计算引擎覆盖了国外的 GPU 和 TPU,以及我们华为的训练和推理 AI 芯片。长期来看,我们的规划主要是根据现有的资源来制定,如果将来有资金、团队等,我们也可以开发下一代商用级的底层计算引擎。这方面,请麦络来谈一下。
麦络: 在计算引擎这块,我们作为一个开源软件团队,受限于人力和计算资源的限制,因此我们决定 TensorLayer 接下来会在差异性,独特性上进一步推进。如果需要做到 AI 框架的整体突破,就需要像华为 MindSpore 和英国的 GraphCore 公司那样做到硬件和软件两手抓,利用硬件成本和性能优势吸引使用者,并且集中大量的开发人员持续对 AI 框架的各个模块提出创新设计。
聚焦细分领域也给了 TensorLayer 一个很大的优势就是:我们可以集中力量做大跨步创新,做精品。特别是在“AI 新型算法”和“分布式执行”这两个方面。超大 NLP 模型,深度强化学习,图神经网络,联邦学习正在快速崛起。这些 AI 算法的多样性会催生出非常多的开源 AI 软件。例如说,我们最近主推的强化学习方面的 RLzoo 和实时视觉计算的 HyperPose 就得到了开源社区的良好反馈和企业用户的使用。
另外,新型 AI 计算任务往往需要大量计算资源,分布式执行。而这给使用者设立了极高的门槛。我们接下来会在分布式 AI 软件和算法设计做出创新。例如说,我们最近在重点开发的 KungFu 项目,就通过在分布式训练领域做精做细,持续攻关自适应分布式训练这一个技术难题。相关的成果已经收获不少社区和学术界关注,并且吸引到头部科技公司(华为,阿里巴巴,微软和 Google DeepMind)的大量资源支持和技术合作。同时,在 AI 趋向于全球云 - 端协同部署的大背景下,嵌入式 AI 这块企业需求也很大,我和董老师认为这一块 TensorLayer 也会有发挥空间。
三、AI 开源项目的建议: 国际性、创新性、可用性、长期主义
智源社区:能否结合 TensorLayer 社区的经验谈一谈,如何保持一个开源社区的创造性、活跃度?能否谈一下令你印象深刻的社区几个贡献者?
董豪: 首先是社区人员的构成要多样化,背景尽可能不一样,这样才能相互学习。比如我的兴趣是深度学习,但是麦络是做 AI 系统的,这样我们的交流讨论就能够有更多的创新性。下面列举几个印象比较深的贡献者,他们的年龄段、专业背景等都挺多样化的。


张敬卿,清华大学本科,后来到我们帝国理工 DSI 实验室读 PhD,他在 NLP 上面的贡献比较多。
李国,帝国理工研究员,前伦敦 Google 高级工程师,他帮助解决了 TensorLayer 研发中的很多技术难题。
丁子涵,帝国理工研究生,即将攻读普林斯顿大学博士生,TensorLayer 强化学习库的主要贡献者,最近我们还出版了强化学习方面的图书。
下面两位是我来北大工作之后认识的吴睿海和吴润迪,都是北大 16 级本科生。睿海是高中打信息竞赛(OI)的。润迪是北大首届图灵班,计划去哥大读博,睿海准备跟我读博士了。他们对 TensorLayer 2.0 升级的贡献非常大。

国外的贡献者中,印象最深的便是 Jonathon Dekthtia,他是法国的一名 PhD,飞行爱好者,研究工业 AI,现在去英伟达做 Researcher 了。他对 TensorLayer 早期版本,尤其是规范化开源项目管理方面的贡献很大。

智源社区:通过这几年 TensorLayer 的研发和开源社区经营,对于你个人主要有哪些收获?
董豪: 对我来说主要是能认识 AI 各个领域的一些朋友,包括我的第一个博士生,正是因为开发 TensorLayer 认识的。同时开发 TensorLayer 对我来说,也是一个学习过程。比如在强化学习领域,大家在做的过程中,一起来写一个库,写一本书,这对我来说也是一种学习。
麦络: 研发 TensorLayer 的经历,让我们在 AI 开源社区具有一席之地。比如我们 2018 年被邀请到 Google 的伦敦开发者大会上做演讲,让我们在开源社区中能施加影响力,也更容易获得工业界的资源支持。同时,TensorLayer 使得我们能频繁地接触前沿的 AI 实践者,发掘出重要的 AI 系统科研问题。
智源社区:在深度学习领域,除了 TensorLayer 之外,国内外有没有令你比较关注的其它开源项目?为什么?
董豪: 除了 TensorFlow、PyTorch 这些众所周知的项目以外,我比较佩服一个项目的是日本的 Chainer,它不仅是比 PyTorch 还要早的一个库,甚至 PyTorch 的设计也很大程度上借鉴了它。日本整个国家不大,搞 AI 的人可能还不如北京市多,但日本人在做事的风格上,非常专注于自己的领域、精益求精并形成一个自己的生态。Chainer 的生态一度还是挺强的,在伦敦的时候还有很多人推荐,而且很多日本人发论文只用 Chainer 来写,并不用 TensorFlow 或者 Pytorch。当然鉴于日本国家体量的局限性,Chainer 无法竞争过后来出现的 PyTorch,但它一直能很好地维持着自己的生态。
旷视、清华 / 腾讯、一流科技等的工作也值得关注,他们进行了非常大胆的尝试,通过一些优化来提升性能。我们也参与了鹏城实验室正在开发的新一代开源项目,敬请期待。
如果说国产框架翻身的希望,大概率当推华为的 MindSpore,架构设计得非常好,而且能得到华为的强大支撑:长期的海量资金投入、国际化大团队、自主训练芯片、自主嵌入式芯片、华为云等等。
麦络: 很赞同,我平时经常关注 MindSpore,其所推崇的模型自动并行,算子自动生成,在云 - 边 - 端将训练和推理进行统一,都是我很感兴趣的技术点。框架以外,我也关注 AI 框架中的各个模块的开源项目,例如,JAX,MLIR 和 TensorFlow Swift。另外,发布不久的 OpenMinded 项目,我也很关注。他们试图在云 - 边 - 端中实现高效的隐私保护计算解决方案。
智源社区:在深度学习领域,中国学者或研发者要做出世界影响力的开源项目,在哪些方面比较有机会?
董豪: 在深度学习领域,一定要做下一代的开源项目,不能总是重复别人已经做过的。所以我建议,大家首先要研究一下 5 年之后深度学习的软件会变成什么样,这样才有可能取得突破。
麦络:AI 系统依然是我认为最有机会的。AI 是可能开启第四次工业革命的关键钥匙。我们社会中已经投入了大量的资源和人才,并且已经看到许多良好的商业和社会应用。我相信持续的投入是该领域能持续发展的关键。与此同时,大量中国企业开始产品出海,研发也开始大量的整合世界各国的研发力量,这种国际化的氛围也会让中国的研发者们更容易做出世界级的 AI 开源软件项目。
智源社区:对于深度学习领域的中国开源工作者,能否提供一些发展建议?
董豪: 我觉得分三个方面来说。
首先是项目上,开发的项目要有大幅度的创新,要有预判性。
其次是管理上,需要了解的是开源并不是为了盈利,需要长期维护,即使是有了生态之后,还是要持续投入下去。同时要重视的是,项目有人用才是关键。这一点中国的 AI 框架还是比较弱,目前我们的下载量是 280K,百度 Paddle 是 300K,均比 TensorFlow 少了很多很多。此外,还有许多其他团队开发的库,甚至总下载量都不如国外框架一个小时的下载量。总的来说,如果开源项目没有市场的话,可能刚开始的两年你会很兴奋,但如果没有人用你也坚持不了很久的。
第三,在讲究生态的时代,几个人搞定全部已经不现实了,而且也不可能几个人做一辈子。举个例子,比如 TensorLayer,我们也不可能什么都做,我们下一个版本,对于分布式的支持,我们用的是麦络帝国理工那边的 Kungfu 来实现跨平台兼容,反正都在我们社区可控的范围内就行。
麦络: 我们发现许多咱们本土的开源项目的国际化程度欠佳。我身边不少欧美的合作者会顾虑代码质量和社区文化,而不愿意使用这些项目。我们在构建开源软件中,要在文档,代码规范,集成测试,国际宣讲,社区互动和管理,等很多方向做到国际最顶尖的标准。这样,我们的开源软件才能争取大量国际用户,日后在 AI 软件发展中形成能覆盖全球的话语权。这一点在中美科技竞争的大背景下显得尤为重要。
另外,就是长期地投入也相对欠缺。一旦软件开源后,后续维护管理不足。这就形成了恶性循环:维护越不够,大家就越不敢用;越不敢用,就越没有动力维护。解决这个问题的关键是,开源软件开发者对于自身的信心,以及对于开源项目长期投入的价值认同。我和董豪在过去四年开发过程中,很多朋友都劝我们放弃,说一些功能 TensorFlow 已经做了,TensorLayer 的没必要做了。但我们觉得 Google 毕竟是一家商业公司,许多设计考量并不是对于全行业最优,这反而给了很多开源项目发挥的空间。另外,TensorLayer 不仅仅是一个软件,也是一个源源不断培养开源人才的社区,而这都让 TensorLayer 在最近几年越活越好。我相信只要认清自身项目的独特性和优势,形成良好的社区文化,很多项目坚持下去,都会最终开花。
董豪: 是的,星星之火可以燎原,慢慢来、能一直做下去就好。

关于我们
北京智源人工智能研究院 (Beijing Academy of Artificial Intelligence,简称 BAAI)成立于 2018 年 11 月,是在科技部和北京市委市政府的指导和支持下,由北京市科委和海淀区政府推动成立的新型研发机构

原文链接:https://www.bilibili.com/read/cv7540974/