【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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 )关注我们。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 370 篇内容, 共 171.5 次阅读, 收获喜欢 940 次。

关注

评论

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

1.0 Go语言从入门到精通:Go语言介绍

xcbeyond

28天写作 Go 语言

诊所数字化:私域运营的本质

boshi

数字化转型 医疗 私域运营 七日更 28天写作

【LeetCode】绝对差不超过限制的最长连续子数组Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

架构师训练营 4 期 第8周

引花眠

架构师训练营 4 期

架构师训练营第七周作业 - 学习总结

阿德儿

堆栈与队列学习总结

Nick

数据结构 算法 堆栈 队列

这些面试题你会吗?月薪20k+的Android面试都问些什么?面试必问

欢喜学安卓

android 程序员 面试 移动开发

软件架构-事件驱动架构

看山

架构 事件驱动架构

SICP 习题解答 1.6

十元

【vue2 & G6】快速上手

德育处主任

大前端 可视化 数据可视化 G6 antv/g6

这些面试题你会吗?双非本科字节跳动Android面试题分享,大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

dubbo源码v2.7分析:结构、container入口及线程模型

程序员架构进阶

微服务 七日更 28天写作 2月春节不断更 dubbo源码

第7周课后练习-性能优化一

潘涛

架构师训练营 4 期

架构师训练营第七周作业 - 命题作业

阿德儿

第13周学习总结

Binary

设计模式简介

happlyfox

设计模式 28天写作

语音聊天室申请上麦的用例文档

郭郭

十二周作业&总结

胡益

一种C++中支持界面调用函数的实现方法

长不胖的Garfield

浅谈EMC电磁兼容设计—概念篇

不脱发的程序猿

28天写作 二月春节不断更 电路设计 EMC 电磁兼容

关于星座的趣谈「Day 2」

道伟

28天写作

使用 Tye 辅助开发 k8s 应用竟如此简单(四)

newbe36524

.net Docker Kubernetes .net core dotnet

LeetCode 第 46 场双周赛题解

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

LeetCode题解:198. 打家劫舍,动态规划(缓存偷盗状态),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

28天瞎写的第二百四十天:我与正念的故事

树上

冥想 28天写作 正念 焦虑 平静

管理笔记【10】十二条给管理者的人事管理经验

L3C老司机

28天写作

实战 LeetCode 15.三数之和、18.四数之和,并扩展至 N 数之和

与你一起学算法

canvas从入门到猪头

执鸢者

大前端 canvas

Eureka 部分机制记录

常清静

Spring Cloud 原理 Eureka

甲方日常 92

句子

工作 随笔杂谈 日常

第十三周课后练习

Binary

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