报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

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

关注

评论

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

比电脑屏保还酷?在电脑桌面实时显示当前时间。

彭宏豪95

效率 效率工具 时间 应用 桌面时钟

智慧物流迎利好,当代电商倒逼传统产业链变革升级

一只数据鲸鱼

物联网 数据可视化 供应链 智慧城市 智慧物流

php in_array的低性能

架构精进之路

php 3月日更

315曝光的侵犯个人信息行为可以用区块链来规范吗?

CECBC

区块链

万象:百度的海量多媒体信息处理系统

百度开发者中心

#富媒体# #信息系统#

JDBC—配置SQLyog

打工人!

MySQL JDBC SQLyog

JDBC—连接数据库工具类(JDBC_Utils)

打工人!

Java JDBC java工具类 操作数据库

高效使用Chrome浏览器,你可能不知道的10个技巧。

彭宏豪95

chrome 效率 浏览器 使用技巧

《Out of Tar Pit》总结

陈皓07

BI掌柜系统开发案例详情丨BI掌柜开发源码功能

系统开发咨询1357O98O718

阿里P8大牛手把手教你!这是一份面向Android开发者的复习指南,快来收藏!

欢喜学安卓

android 程序员 面试 移动开发

编译android源码!2021年Android面试心得,学习路线+知识点梳理

欢喜学安卓

android 程序员 面试 移动开发

JDBC—对数据库的通用增删改查

打工人!

Java 数据库事务 MySQ JDBC crud

数仓集群管理:单节点故障RTO机制分析

华为云开发者联盟

GaussDB 集群 GaussDB(DWS) RTO 单节点故障

B2B 产品市场中「价值营销」的 8 个关键词

To B Park

java String长度有限制吗?

ddww

2021年技术预测:从云计算到边缘以及两者之间的一切

云计算 边缘计算

孤寡程序猿找女朋友的方法论

不脱发的程序猿

程序员 找对象 28天写作 3月日更 脱单

算法喜刷刷之1021删除最外层的括号

Kylin

算法 28天写作 3月日更 21天挑战

【LeetCode】翻转链表Java题解

Albert

算法 LeetCode 28天写作 3月日更

登顶GLUE榜单的文心又开课了,一站式教学搞懂信息抽取

百度大脑

百度大脑 GLUE 信息抽取 EasyDL

Serverless 时代 DevOps 的最佳打开方式

阿里巴巴云原生

Serverless DevOps 微服务 运维 云原生

京东M-PaaS平台之Android组件化系统私有化部署改造实践

京东科技开发者

系统架构 mPaaS

告别交通拥堵和数据孤岛,区块链成智慧交通发展新基石

旺链科技

区块链应用 智慧交通

霸榜Git!2021年阿里巴巴Java面试权威指南(泰山版)

Java架构追梦

Java 架构 面试 泰山版

《Redis 核心技术与实战》学习笔记 03

escray

redis 学习 28天写作 3月日更 Redis 核心技术与实战

Linkis 1.0.0-RC1 版本发布

康月牙

化蛹成蝶,华为云DevCloud助力互联网+转型,重构钢铁产业链

华为云开发者联盟

Scrum 代码 华为云 devcloud 敏捷管理

Github上2021最新最全面的面试题库(Java岗)程序员不容错过

比伯

Java 编程 程序员 架构 面试

网络编程及通信三要素

五分钟学大数据

大数据 网络编程 28天写作 3月日更

智汇华云 | ArcherOS Stack共享存储虚拟化技术剖析

华云数据

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