TensorFlow 和 DMLC(分布式深度机器学习社区)这两个开源社区在今天围绕人工智能的计算机行业享有极大声誉。作为这两个开源项目的成员、目前任职 Uptake 数据科学家的唐源(Terry Tang)正在带领团队研发用于多个物联网垂直领域的数据科学引擎;同时,他也是开源软件社区内一位非常活跃的贡献者,是 TensorFlow、XGBoost、MXNet 等软件的 committer, 也是 Scikit Flow、ggfortify、metric-learn 等软件的作者。他曾因自己对开源社区的贡献而获得过谷歌 Open Source Peer Bonus,此外还获得过多项高校和企业编程竞赛的奖项。日前,机器之心对这位开源社区的活跃参与者进行了一次交流。他分享了自己在开源上的人生经历和经验,同时也呼吁大家能够更多地参与到开源项目的发展和建设中来。 唐源的 GitHub 主页:https://github.com/terrytangyuan
唐源 关于开源的一些想法 机器之心:你参与过 TensorFlow, XGBoost, MXNet 等软项目,同时也是 Scikit Flow, ggfortify, metric-learn 的作者,可以为大家在其中挑选几个你觉得最喜爱的项目,为大家介绍一下?为什么偏爱这几个项目? 唐源:我对自己参与过的项目都挺喜欢的,从中都学到特别多的东西,也认识了特别多的人。在这里我想简单谈谈我最近在做的 Scikit Flow,也就是现在被放在 TensorFlow.contrib 里面的 TF.Learn 模块,这是一开始我和谷歌的 Illia Polosukhin 一起建立的,现在由于被放在 TensorFlow 里面,谷歌的 TensorFlow 团队开始重视这个模块,也参与了它的发展,这个模块的目的是降低大家使用分布式机器学习和深度学习的门槛,让大家可以像使用 Python 里面的 Scikit-learn 那样很快地建立自己的机器学习和深度学习模型,比如说仅仅几行代码就能使用随机深林、深度神经网络等算法,而且可以很方便地部署到分布式的集群中,从而真正地使用到 TensorFlow 的分布式的优势。这些都是需要对低阶的 TensorFlow API 有深度的理解才能实现的一些功能。数据科学从事者没有必要为了使用最新的算法和技术又花许多时间来学习这些实现的细节,他们可以很快地直接将这些使用在工作和研究中。最近倾向于做这种能够简单易用,统一的界面,像 TensorFlow 这样的软件,有着自己独特的语法和使用方法,这迫使大家花时间学习,我觉得好的东西就应该有简单易用的使用方法。ggfortify 的构建初衷也比较类似,我们当时有太多的重复的代码来一遍又一遍实现同样的功能,比如说给聚类算法的结果用椭圆圈出集群的结果,又比如说对使用不同的 R 包生成的时间序列的分析结果进行可视化。ggfortify 达到的目的就是对比较常用的一些 R 数据分析包的结果进行可视化,避免用户花太多时间学习怎样用 ggplot2 的特殊语法来实现一个常见的可视化。我希望以后这样的软件包越来越多,让研究者和工作者能够不用担心太多实现细节,能够集中精力在他们的主要研究当中,从而在科学和技术上有着更快的实质性突破。 机器之心:可以为大家讲讲的你是从什么样的机缘巧合开始成为一位开源社区的积极贡献者吗? 唐源: 大四的时候在一家创业公司实习,公司对开源的政策特别开放,我们用到了各种各样的开源软件,用的过程中发现各种问题以及对用户体验度有着各种不满,Github 上面有地方可以提交建议,但是项目的管理者太忙,我就干脆自己对源代码进行研究然后提交修改,这样养成了一种习惯,遇到问题的第一反应是自己研究研究代码,然后直接自己去解决问题,自己独立阅读代码的能力也就这样慢慢培养出来了。很多时候由于对于某个开源软件特别熟悉,经常在做项目中会想到一些有趣的点子来对项目的性能进行改进和功能进行延伸。 机器之心:是什么让你对开源社区这么有热情? 唐源:我从参与开源软件这个过程中获得了许多帮助,学到了很多,认识了许多志同道合的人,我也希望通过我的贡献来报答社区对我的帮助。我相信给予越多,获得的回报也越多。一开始因为只是工作需要对经常使用的软件进行各种修修补补,逐渐也养成了一种看源代码的习惯,对软件的架构好奇心也越来越强,老是主动去了解某个功能是如何具体实现的,这个过程让我受益良多。比如说我一开始自学了 Python 的基础,没有任何的项目实战经验,数据科学这一行对各种开源软件需要特别熟悉,因为不可能自己有时间把需要的功能自己实现一遍,通常你需要的功能其实都已经在开源软件里面实现了,然而随着对软件的熟悉,我就开始好奇以及研读具体的实现细节,这也让我打下了很好的对编程以及软件架构的基础,对一个编程语言的了解也逐渐深入了。比较大的开源项目比如说 pandas,有许多开发者在维护以及审阅新的贡献的代码,他们很认真的审阅了我提交的每一行代码,给予了很多很好的改进建议,这让我养成了许多写软件的好习惯。 (责任编辑:本港台直播) |