[关闭]
@sambodhi 2017-03-07T16:16:26.000000Z 字数 3061 阅读 1757

Deeplearning4j:如何建设深度学习开源社区

Deeplearning4j是第一个为 Java和 Scala编写的商业级、开源、分布式神经网络库,它是 Gitter上最活跃的社区之一。 Gitter采访了 Deeplearning4j的创始人Adam和 Chris,分享了他们在开源社区建设方面的想法、经验和教训。本访谈内容可以在 Gitter上的 deeplearning4j频道观看。

Gitter的数字战略和成长顾问 Ola Kohut日前写了这篇采访录,经Gitter授权, InfoQ翻译并分享。

能否为我们介绍一下您自己和 Deeplearning4j社区?还有社区是怎么起步的?

我们在2013年年底就开始构建 Deeplearning4j。那时 Adam已经参与机器学习大约有四年左右,当时,深度人工神经网络看上去前景一片光明。 Deeplearning4j的第一个网络是受限玻尔兹曼机,这是 Geoff Hinton在2006年提出的网络,这个领域的转折点。当时我正在另一家创业公司负责公关和招聘。以前我曾做过记者,因此我负责维护文档的工作(现在仍然也在做),因为我们相信,让开源代码具有价值的关键就是适当的沟通。

他们在 Deeplearning4j频道中讨论的主要问题是什么?

以前主要问题是关于安装方面。社区的工程师教会了我们很多东西,比如关于如何编写更清晰的指令以及如何使代码和体验变得更好,如果我们没有反馈环路的话, Deeplearning4j的情况就会变得更糟。作为质量控制,开源社区真的很了不起!你解决问题越早,那么这个问题从社区被提到的要求就越少。这极大地激励着我们迅速行动。

现在主要问题是关于数据的加载和神经网络的优化。我们正在努力进行更好的沟通,并使框架做得更好,以便使 ETL和优化变得更加容易。最后,很多都是关于机器学习和深度学习的基本问题。许多软件工程师已经意识到,深度学习和机器学习是真正强大的工具,因此他们努力领会这些新想法。为此,我们编写了许多介绍性材料,并链接到解释这些想法的网页。

作为一个社区,有什么共同目标吗?

现在社区主要围绕 Deeplearning4j和我们的科学计算库( ND4J,用于神经网络的一个库)为中心目标。因此我们要回答如何使用这些库的问题,其间我们还帮助人们更多地了解深度学习。然而这并不是关于深度学习的热线,遗憾的是,有些问题我们不予回答。但我们会帮助 DL4J社区的工程师构建应用并了解神经网络如何工作

共同目标就是学习深度学习,并创造出一些酷玩意儿。深度学习能够做什么,我们只看到了冰山一角。到目前为止,人们已经目睹图像识别、机器翻译、机器转录、时间序列预测取得了巨大的进步。许多指标表明,机器感知能力或已超过人类。这将给社会带来令人难以想象的改变。只不过这些改变尚未实施。因此,社区的次要目标是将狭义上的AI带到这个世界,以期它能改变世界。

在创建和维护社区时,您已经考虑哪些最重要的因素?哪些因素有助于社区的成功?

创建和维护社区需要付诸巨大的时间和精力。你必须可以被别人联系上,还必须尝试了解其他人来自哪里。他们并不总知晓所提出问题的精准术语,因此你必须有耐心搞清楚他们想要问什么,或者他们遇到了什么困难。我们应该一直保持耐心。

保持联系,为之努力,并为强大的工具提供支持是社区建立的好方法。当大项目的创建者可以回答它如何工作的那些深奥问题时,这就得到了很多信任。因为人们知道你所言是权威的。如果事情真的坏了,它将会得到解决。社区和项目创建者之间有一条紧密的反馈环路。

管理社区的主要挑战是什么?

其中的挑战是:我们关心什么问题,以及人们需要为自己回答什么问题?如果有人对 Java有一些基础问题,像 IntelliJ这样的 IDE,或者像 Maven一样的构建工具,大多时候他们需要自己去解决。我们的 Gitter频道并非讨论问题之处,但在特殊情况下还是会提供帮助,因为有时你因工作需要为神经网络扩展堆空间。

您还必须在建立社区和构建产品之间找到平衡点。理想情况下,您应有一支配备全职支持工程师的大型团队,而团队其他成员则负责代码库。但是,大多开源项目都有很小的团队。只有少数人能够提供支持,他们同时也是修复错误并添加功能的那群人。

你如何鼓励参与者对社区的承诺和贡献?

您在社区中营造一个敏捷、友好的环境。你要让他们知道你很感激他们的贡献,并要尽可能引导他们知晓需要做什么。我们创建了识别贡献者的顶层文件,展示如何做出贡献,并制定了社区的规则。我们还写了一本开发人员指南,现在,我们将所有问题标记为“错误”、“增强”或“文档”,以便人们可以快速扫视列表并探索他们可以为之添加什么。

告诉我们一些关于社区建立所需的时间承诺。社区持续发展需要多少维护?

Skymind是一支分布式团队,工程师分布在澳大利亚、欧洲和美国, Deeplearning4j社区成员几乎遍布全球。平日Skymind工程师查看 Gitter队列可能要耗上12~16个小时。这是相当认真的承诺,因为我们团队不到10个人。这不是他们的专职工作,但也许他们会在休息的时间来进行单元测试并回答 Gitter上的问题。

根据您的经验,您认为开源社区在过去几年中是否发生了改变?如果是这样,情况又如何?

开源越来越受企业青睐,因此它比以前更为重要。世界上最大的机构正在使用开源软件。 Linux赢得了操作系统 ,而Hadoop赢得了大数据存储。开源之所以取得胜利,是因为当你以正确的方式来做时,你会得到更好的代码。吸引更多的眼球意味着正常运行时间会更多。因此, OSS社区的规模以及软件工程师对开源项目的关注质量,都在逐年增加。

对于想从零开始创建在线开源社区的人们,您会给出什么建议?

首先,创建一个精良的、你所关心的项目。专注于构建一个有用的项目。然后与人们分享。他们会帮助你改进它,并可以帮助你思考接下来要做什么。在开发前期不要做太多事。尝试了解这个项目以便你在合理的时间将它推向市场。一般来说需要几个星期。开源之所以有价值,是因为它是一个会话,这个会话会引领你到正确的地方,因此,你的项目将以无法预料的方式演进。此外,在开源的早期,你提高了曝光率,因此你就获取了得到帮助的机会。我们有厉害的开发人员加入了社区和 Skymind团队。

您使用哪些数字化工具来帮助管理和壮大社区?

我们的代码存放在 Github上,会话则在 Gitter上。目前, Gitter频道大约有1360名开发人员,所以它可能是这个星球上神经网络更活跃的会话之一。我们的网站由 Github托管,因此内容也在那里。我们使用 Javadoc来生成大量的自动文档。我们要求人们使用 Maven作为他们的自动构建工具。任何软件最大的问题之一就是安装, Maven帮助人们更容易进行安装。你需要不断尝试清除障碍,好让人们可以使用你的代码,而不必担心其他东西。

因为他们参与了您的频道,您能分享一名社区成员的成功故事吗?

很多数据科学家和Java工程师都加入了社区,他们使用 DL4J开发各自的项目。之后他们表示:“当我们使用 DL4J作为推荐系统的一部分时,广告覆盖率增长了200%。”另一位开发人员表示使用 DL4J开发了一个应用,然后被投资者看上了,于是他筹集到了资金。所有这一切,都非常酷。使用开源,就好比你将一块石头扔到海里,你未必能听到石头击水的声音,甚至都看不到泛起的涟漪。因此,当人们向我们表示感谢,并告诉我们的项目为他们提供了什么样的帮助时,这一刻是令人鼓舞的,因为他们的感谢,使得这个项目的存在有了更大的意义。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注