写点什么

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

  • 2017-03-07
  • 本文字数:2982 字

    阅读完需:约 10 分钟

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 开发了一个应用,然后被投资者看上了,于是他筹集到了资金。所有这一切,都非常酷。使用开源,就好比你将一块石头扔到海里,你未必能听到石头击水的声音,甚至都看不到泛起的涟漪。因此,当人们向我们表示感谢,并告诉我们的项目为他们提供了什么样的帮助时,这一刻是令人鼓舞的,因为他们的感谢,使得这个项目的存在有了更大的意义。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-07 18:003075
用户头像

发布了 375 篇内容, 共 189.5 次阅读, 收获喜欢 945 次。

关注

评论

发布
暂无评论
发现更多内容

C++系列:Visual Studio(VS)2019登录不上?

Bob

c++ 踩坑经历 编程经验 4月日更

算法突击营毕业总结

韩儿

GaussDB(for openGauss)让数据“存得下、算得快、算得准”

华为云开发者联盟

GaussDB(for openGauss) 华为云数据库 数据分布方式 计算下推 数据强一致

数据库存取策略对比

小舰

4月日更

每天学一个 Linux 命令(5):passwd

民工哥

Linux 程序员 运维 后端

只要你不敢以MySQL专家自诩,又岂敢错过这本神书?

Java架构师迁哥

算法思考:红包金额生成

程序员架构进阶

Java 28天写作 算法解析 4月日更 微信红包

第一个 Go 程序

escray

学习 极客时间 Go 语言 4月日更 Go100

被应用商店下架的应用,该如何下载?

彭宏豪95

效率 App 苹果 4月日更

VueRouter源码解读:三大核心模块构成

梁龙先森

源码分析 大前端 vue-router

ES9的新特性:异步遍历Async iteration

程序那些事

JavaScript ecmascript 程序那些事 es9

每天学一个 Linux 命令(3):ls

民工哥

程序员 linux运维

使用Harbor搭建Mirror Registry

xcbeyond

Harbor 4月日更 镜像仓库

SQL 性能优化的几条建议

U2647

sql 4月日更

Zabbix Linux 下源码安装

耳东@Erdong

zabbix 4月日更

智慧公安重点人员管控系统搭建,实现重点人员动态管控

13828808769

智慧公安

区块链特色农产品溯源平台解决方案

13828808769

溯源 #区块链#

小程序支持MQTT协议

风翱

小程序 websocket mqtt 4月日更

分页场景慢?MySQL迷惑行为解读~

Java架构师迁哥

中寰卫星导航卜钢采访:IT年轻人怎么工作、学习和生活(采访提纲)

老猿Python

学习 采访 IT年轻人

Github Star 11.5K项目再发版:AAAI 2021 顶会论文开源,80+多语言模型全新升级

百度大脑

飞桨

每天学一个 Linux 命令(4):useradd/userdel

民工哥

Linux 程序员 运维

树莓派4B搭建Pytorch环境

IT蜗壳-Tango

IT蜗壳教学 4月日更

计算机原理学习笔记 Day5

穿过生命散发芬芳

计算机原理 4月日更

喜欢回忆过去的人,没有未来

小天同学

成长 自我思考 个人感悟 突破瓶颈 4月日更

他人方寸间,山海几千重

清秋

随笔 4月日更 1 周年盛典 我和写作平台的故事

Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

梦想橡皮擦

Python OpenCV 4月日更

每天学一个 Linux 命令(6):cp

民工哥

Linux 程序员 运维

小心,别被eureka坑了

好好学习,天天向上

Java spring 信息安全 springboot Eureka

工厂模式还不懂?看这里!

IT皮皮蟹

Java 设计模式

OCR 技术如何促进 PDF 文档的数字化转型

Geek_b33b8e

数字化转型 PDF OCR 文件操作

Deeplearning4j:如何建设深度学习开源社区_语言 & 开发_Ola Kohut_InfoQ精选文章