写点什么

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:003245
用户头像

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

关注

评论

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

儿童教育有感-说话用词不当

wood

28天写作

【安全漏洞】CVE-2021-42287&CVE-2021-42278 域内提权

H

网络安全 信息安全 漏洞

从渔夫和游客说到晒太阳的狗狗派

mtfelix

28天写作

Spark-概览

xujiangniao

疫情下的圣诞节

张老蔫

28天写作

Dubbo 框架学习笔记十二

风翱

dubbo 12月日更

[架构实战营] 模块三作业

Geek_0ed632

「架构实战营」

《权力——为什么只为某些人拥有》读书笔记

圣迪

特质 权力 影响力

FFmpeg的一些使用实践

为自己带盐

ffmpeg 28天写作 12月日更

Spring核心原理之 IoC容器中那些鲜为人知的细节(3)

Tom弹架构

Java spring 源码

【Java 进阶训练营】 JVM 知识总结

wgl

git tips(qbit)

qbit

git #Github

失败与成功是一体两面

石云升

学习笔记 28天写作 12月日更

模块四-reids存储方案

撿破爛ぃ

「架构实战营」

模块三-架构文档

撿破爛ぃ

「架构实战营」

程序员做技术管理需要懂哪些方面?

Seven的代码实验室

程序员 技术管理

Netflix系统架构

俞凡

架构 微服务 netflix 大厂实践

注意:字符串substring方法在jkd6,7,8中的差异

CRMEB

2021年终总结:30多岁依然没有放弃自我成长!

王磊

HarmonyOS(鸿蒙)——双击事件

李子捌

28天写作 21天挑战 鸿蒙开发 12月日更

Code Review全面审查清单

俞凡

Code Review 生产力

Gin-Vue-Admin 使用gin+vue进行极速开发的全栈开发基础平台【gva第一节】

坚果

Go 28天写作 Vue 3 12月日更

虚拟机性能监控与故障处理

Joseph295

宏昆酒店集团携手DataPipeline打造实时数据融合平台,酒店业精益管理的新秘诀

DataPipeline数见科技

数据库 中间件 数据同步 数据融合 数据管理

kali系统之复现漏洞分析与审计

网络安全学海

黑客 网络安全 安全 信息安全 渗透测试

linux动态链接的程序如何在其他系统上运行

SkyFire

动态链接 装载器

架构实战营模块三课后作业-外包学生管理系统架构文档

Jude

架构实战营

数据管理典范!「山东城商行联盟数据库准实时数据采集系统」入选2021中国大数据应用样板案例

DataPipeline数见科技

大数据 数据同步 数据融合 数据迁移 数据管理

webpack-dev-server启动后, localhost:8080返回index.html的原理

汪子熙

JavaScript 前端开发 webpack 28天写作 12月日更

2021,中国计算产业的“攀登者勋章”

脑极体

100% 展示 MySQL 语句执行的神器-Optimizer Trace

程序员历小冰

MySQL 28天写作 12月日更

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