10

GitHub 上的大佬们打完招呼,会聊些什么?

 3 years ago
source link: https://www.cnblogs.com/xueweihan/p/14166350.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

你好 GitHub!每一位开源爱好者的好朋友「HelloGitHub」

759200-20201220210050922-1184006771.jpg

大家好,今儿 HG 有幸邀请到:Lanking 一位亚马逊 AI 软件工程师、开源爱好者和贡献者。他是亚马逊开源的 Java 深度学习框架 DJL 的核心维护者、Apache MXNet 的 Committer(提交者),一枚喜欢滑雪的大佬程序员。

759200-20201220210102020-1111767450.png

下面就让这位大佬聊聊他在 GitHub 和一个开源项目的作者互道“你好”后聊了些什么、搞出了什么好玩的东西~

一、故事的开头

我是 Lanking 一位 AI 软件工程师、《HelloGitHub 月刊》的读者,故事的开始是我们 DJL 项目:

https://github.com/awslabs/djl

正在找增强学习的例子,然后目前全网提供的方案也没什么 Java 的实现和实战项目。

偶然间,在程序员都爱看的《HelloGitHub 月刊》最近的一期,看到了一个仅用 Java 基础类库写的愤怒小鸟开源游戏项目。

https://github.com/kingyuluk/FlappyBird

该项目结构十分清晰,代码也很规范,我感觉自己的某些东西被触动了。于是乎,我就给这个项目提了一个 issue:

759200-20201220210113667-1934317372.png

如上图,我打完招呼就直切主题,说明我的来意:您有没有兴趣用 DJL 做一个 RL 的愤怒小鸟,就是用深度学习框架 DJL 赋予这个小鸟“永生”,做个“不死鸟”。

二、他不理我了

FlappyBird 项目的作者叫:kingyuluk(后面就叫他“K”)

Issue 是开发者之间有效的沟通手段,但我发完 issues 后,虽然 K 当时说感兴趣,然后就没然后了...过了差不多三个月,突然有一天,他回复了这个 issue:

759200-20201220210123660-1986853196.png

K 说他在用 DJL 实现的过程中遇到了问题。原来他自己闷头去搞了,现在遇到问题才想起我!

哼~虽然等待有些难熬,但我还是开心地开始帮他看代码,最开始只是在这个项目里开了一个分支,但是后来越做改的东西越多,于是作者 K 就开了一个新的项目来做这件事情。

https://github.com/kingyuluk/RL-FlappyBird

三、办法总比困难多

我和 K 开始在新的项目进行正式开发,期间出现了各种波折和奇奇怪怪的问题:

从一开始项目跑不起来,到中间连续跑两天都没好效果,到最后在 GPU 上做性能优化改进。

眨眼两个月时间过去了,我很多次都担心 K 会半途而废,放弃不做了。因为这些对于一个大三刚接触 Java 半年的本科学生来说真的有些困难。

让我们继续开发下去的动力就是经过多次改动和优化之后,这个“笨”鸟终于能稍微变得聪明些了,但是离“不死”还差很远。然后我就拉来了同为 DJL 维护者的 Zach 他比我更懂 RL,来帮我们:

759200-20201220210133276-2145318036.png

通过他的鼓励,并按照他的建议修改后,我们在 CPU 上训练的小鸟可以玩到 6-7 分。然后我们决定试试看 GPU,就开了一台带 T4 显卡的机器,然后跑了几个小时,感觉训练速度还是不够快。这可不行,我就想到了 HelloGitHub 的 Java 技术群的小伙伴们,他们甩了个表情后:

759200-20201220210144666-1665138611.png

开始帮我解决相关的性能问题并提供了一些解决思路,在他们的认真回答和热心指导下,问题总算解决了!然后训练就变得快的飞起,几个小时就跑了 300 万步,最后这个不死鸟就诞生了!

759200-20201220210153421-1113693428.png

详细的实现过程,会在本周的另外一篇文章《用 Java 训练出“不死鸟”》细细道来~

四、故事的结尾

这个故事起于一个 “Say hi” 的 issue,结束的时候我和项目的作者成为了朋友。开源都是用课余和休息时间,真的很容易半途而废。

契而不舍的精神是开源必备的精神,花几天、几周、几个月拼命的想把自己的开源项目做好,过程虽然很难,但是看到有人用、能够把自己想法展示在大家面前,就会感觉很开心,便觉得一切值了。

DJL 一直致力于发掘 Java 在深度学习领域的应用。我们会经常去思考,如何更好的将深度学习和 Java 结合在一起,希望我们的付出能够给开源社区带来不一样的东西!

五、HG 想说的话

“做开源项目很难,做好更难,HG 愿陪你一起变好。“

我问 K 在收到 Lanking 大佬的 issue 时的感受,他说出乎意料,因为他觉得自己的 FlappyBird 只是一个很基础的项目,竟然收到来自亚马逊大佬的关注。

其实只要你的项目能让其它开源爱好者(大佬)看到闪光点和爱❤️,那么他们就愿意给出建议、贡献和指导,如此以往你的技术提高只是时间问题。

当然 HelloGitHub 月刊的收录和推荐也是很重要的一个原因呀!HelloGitHub 是每一位开源爱好者的好朋友,帮助优秀的开源项目被更多人发现和喜爱。

欢迎开源项目的作者们来 HG 分享自己做开源项目的故事,和 HG 互道“你好”后,会碰撞出什么样的火花呢?加微信:xueweihan(备注:你的 GitHub id)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK