维护一个大型开源项目是怎样的体验?AutoKeras作者亲述心路历程

新闻 前端
近日 AutoKeras 项目的作者讲述了自己维护大型开源项目的体验。

我是 AutoKeras 项目的作者金海峰,是 Keras 团队的一名工程师,同时负责开发和维护 KerasTuner 项目。没时间听故事的同学,可以直接下拉至「干货部分」。

项目简介

KerasTuner 可以在 Keras 模型构建过程中定义一些超参数的取值范围,并对他们的取值进行搜索,找到一个相对优的值,以构建一个好模型。

AutoKeras 则是提前为几种常见的任务定义好了一系列模型和超参数范围,用户无需自己定义模型。只需输入训练数据,即可完成建模和训练。

背后的故事

这还要从我博士第二年说起,当时找暑期实习,拿到了微软的 offer。但导师说有个项目想让我参与,暑假就要开始,和实习有冲突。我决定放弃实习,来做这个项目。

这是一个有关自动化机器学习(AutoML)的项目,有几十家高校和公司参与,试图打造一个能胜任所有机器学习任务的 AutoML 平台,还要有友好的人机交互界面。这个项目带我进入了 AutoML 这个领域。

在一次学术会议上,我突发奇想,既然有传统机器学习模型的机器学习库(如:Auto-WEKA 和 Auto-Sklearn),为什么没有人做一个深度学习的同类产品呢?想到这里我立即冲出了会场,打开笔记本电脑,开始了调研。

我记得以前看罗振宇在一期《罗辑思维》中讲述什么样的人适合创业。其中一条就是行动力极强,也许有一百个人同时能想到一个想法,但只有那个行动最快的人能把果实摘走。他说一次和一个朋友吃饭聊天,聊起自己的一个好想法,他的朋友在吃饭这会儿功夫就安排人把相关的域名都注册好了。可见行动力之强。

我的行动也刻不容缓。经过调研,我决定把名字定为 AutoKeras,因为 Keras 的易用性是受到广泛认可的,而我们就是要做一个傻瓜式的产品,名字就能让用户 get 到这个信息。

没想到这个软件还真的没有人做,我在第一时间把能注册的平台都注册了,比如 PyPI 和 GitHub repo。

我感觉我这个想法实在是太容易被想到了,随时有可能有一个团队跳出来把我想到的名字抢了,把东西提前做出来。

于是,接下来我做了两件事,一是找合作伙伴,加快开发进度。在我联系了一圈我认识的牛人小伙伴之后,只有一个北邮的学弟愿意参与。于是,我们开始了开发。二是决定这个开源软件从第一天起就是开源的,因为如果我们先开发再开源,很可能在开发过程中就被别人先做出来把名字抢了。

我在当天找到了一篇陈天奇的论文 Net2Net,感觉可以作为解决方案的一部分。加上一个搜索算法就能用了。

我开完了学术会议之后,回到学校,跟导师说了这个想法,得到了导师的支持。

这个开源软件,做了半年多,陆续有实验室的同学参与开发,基本完成,其中的方法创新还发表了论文。没想到,我们都没进行宣传,就受到了大量的媒体报道。

而后还与谷歌 Keras 团队达成合作,作为其官方 AutoML 软件进行开发。

[[410756]]

博士毕业后我加入了谷歌公司,继续对该项目进行维护和开发。

干货部分

对工作的影响

对于个人开发者来讲,可以分为三种情况。

1、大多数人只是将运营开源项目当做业余爱好。这也许会和开发者的正式工作产生冲突。

2、对于一少部分,较成功的项目,开发者可以把开源项目作为全职工作。我就处于这个阶段。基本上可以全身心地投入其中,但也会担心自己因为太专注于一个项目,而在很多通用技术上有所欠缺。

3、最成功的开发者会把开源软件变成人人都需要学的通用技术。这样也就彻底没有了后顾之忧。例如:Linux 和 VUE.js。

抢占先机很重要

我觉得我做的项目虽说有技术含量,但远没有达到无人能做的难度。回头来看,能受到认可最关键的因素还是抢占了先机。

合作才是王道

当你手中的资源有限的时候,唯有合作并合理地分配功劳和利益,才能把项目的规模最大化。包括和同学、朋友以及大公司的合作。千万别因为怕别人分走了你的功劳和利益就作茧自缚。在此特别感谢所有参与了项目的同学们,尤其是原论文二作,宋清全。

别小瞧任何人或作品

我学到了很重要的一课,就是不要随意小看人。如果有人有一件不错的作品,即使作品看上去很简单,也不要轻易地小看了作者。一是因为作品的难度不等同于作者的全部实力。也许作者厨艺高深莫测,而这部作品不过是做个蛋炒饭罢了。二是因为要把蛋炒饭做到世界知名,那也是需要世界级的厨艺的。

运气是不可或缺的

从起名,到接受报道,到和大公司合作,任何一环都有很大的运气成分。运气差一点点可能影响力就要大打折扣。

上手难度决定用户量

如果你的技术或者用户体验没有牛到独一无二的程度,那么用户选不选你可能主要取决于你的东西好不好上手。一个完整详细的教程,就能轻松解决这个问题。

好的上层管理也是必要条件

我导师,胡侠老师,在这个项目里起的作用是决定性的。看似我枪出如龙,抢占了先机,实则导师在我想到这个点子的两三年之前要拿到这个前沿领域的科研经费,并参与到这个多校合作的 AutoML 项目中来。这才是从根本上抢占了先机。所以,这个开源项目离不开导师在大方向上高屋建瓴的眼光。

也许许多人觉得我们的项目很多实验室都能做,但其实这背后是雄厚的科研经费的支持。当时导师把我身上别的杂活都拿掉了,让我专心做这一个项目,才得以把项目做好。如果实验室没有足够的经费来支持足够多的人手,又怎么能做到这样的调度。

而且,懂得且愿意让学生专注于一个项目以提升产出质量,也是很难能可贵的。

「百亩之田,勿夺其时,数口之家可以无饥矣。」——《寡人之于国也》

农民勤勤恳恳固然重要,但若是上层管理者总是耽误农时,也是无法获得丰收的。

 

责任编辑:张燕妮 来源: 机器之心
相关推荐

2016-11-14 10:00:29

hadooplinux大数据

2011-11-16 10:49:56

Windows 8系统

2009-01-05 10:06:24

草根站长网站心路历程

2020-12-04 17:21:18

前端开发技术

2015-04-16 16:35:47

2009-03-28 09:42:02

Windows 7微软操作系统

2013-07-24 10:55:51

2012-11-23 10:09:19

2012-01-04 10:04:13

App Store开发者

2012-09-19 14:25:52

苹果大型数据中心

2022-01-28 08:47:25

软件系统重构

2020-03-09 17:23:38

Python数据模型

2011-09-22 09:52:31

2019-07-26 15:45:50

技术经理项目管理

2021-03-08 15:42:54

数据库Apache Iceb开源

2009-05-20 09:49:15

2016-11-02 12:26:51

数据分析大数据大数据圈子

2021-06-10 10:32:09

Redis开源项目维护

2014-10-21 10:25:50

程序员

2015-07-29 10:00:16

开源项目
点赞
收藏

51CTO技术栈公众号