9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

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

发布了 376 篇内容, 共 204.8 次阅读, 收获喜欢 949 次。

关注

评论

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

低代码是在炒概念,炒得不错

Justin

低代码 28天写作

【计算机内功修炼】六:10张图让你彻底理解回调函数

码农的荒岛求生

异步 同步 异步IO 回调函数 异步编程

区块链介绍

v16629866266

区块链

架构师训练营 - 第三周作业

Mark

Redis 学习笔记 04:跳跃表

架构精进之路

redis 七日更 28天写作

像用户一样测试:别掉链子

QualityFocus

软件测试 用户体验 回归测试

听过闰年闰月,听过闰秒吗?

艾小仙

后端

Soul 网关实践 02|选择器&规则介绍

哼干嘛

Java 探索与实践 Soul网关

如何通过即构小程序组件实现直播带货功能?

ZEGO即构

小程序 直播带货

餐饮品牌资产上链,产业区块链史诗级浪潮已到来

CECBC

餐饮

如何轻松面过阿里社招Java岗,九大核心模块为你保驾护航!(知识点+面经)

Java架构追梦

Java 架构 面试

胆大无险,脚踏实地

.

28天写作

[6/28]产品业务数据分析的质量实践

L3C老司机

沉寂唯品会3年,毅然辞职冲刺阿里,我是怎么备战金三银四的?

比伯

Java 编程 架构 面试 程序人生

项目管理系列(3)-如何开好一个项目启动会

Ian哥

项目管理 28天写作

区块链赋能物流行业:“圈子文化”下,网络货运的数字化转型之路

CECBC

区块链 区块链物流

2021年“区块链+”将会如何发展?

CECBC

区块链

Java 程序经验小结:接口只用于定义类型

后台技术汇

28天写作

【CSS】文字特效(text-shadow)

德育处主任

CSS css3 html/css CSS小技巧 28天写作

深入理解nodejs中的异步编程

程序那些事

多线程 nodejs 异步编程 程序那些事 回调

架构师训练营第八周课后作业

万有引力

重学JS | 箭头函数为什么不能用做构造函数?

梁龙先森

面试 大前端 编程语言 28天写作

Soul 网关实践 03|http 请求接入网关

哼干嘛

Java 探索与实践 Soul网关

智能building之 园区

张老蔫

28天写作

电商网站商品管理(三)group by+avg+sort等聚合分析

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

Java虚拟机内存模型

xcbeyond

Java JVM Java虚拟机 28天写作

生产环境全链路压测建设历程 29:FAQ 之 评估方法论、改造、痛点

数列科技杨德华

28天写作

短视频+直播=最自然的表达方式?| 视频号 28 天 (09)

赵新龙

28天写作

早上听了一场关于财富的线上专题分享

熊斌

财富自由 28天写作

案例研究之聊聊 QLExpress 源码 (八-1)

小诚信驿站

聊聊架构 28天写作 QLExpress源码 聊聊源码

想象力,科幻与其他「关于科幻 8/28」

道伟

28天写作

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