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

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

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

一、故事的开头

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

https://github.com/awslabs/djl

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

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

https://github.com/kingyuluk/FlappyBird

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

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

二、他不理我了

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

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

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

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

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

三、办法总比困难多

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

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

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

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

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

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

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

四、故事的结尾

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

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

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

五、HG 想说的话

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

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

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

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

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

GitHub 上的大佬们打完招呼,会聊些什么?的更多相关文章

  1. Github上fork的项目如何merge原Git项目

    问题场景 小明在Github上fork了一个大佬的项目,并clone到本地开发一段时间,再提交merge request到原Git项目,过了段时间,原作者联系小明,扔给他下面这幅截图并告知合并处理冲突 ...

  2. 在github上搭建个人博客并在线更新

    换博客比更博还勤的我终于决定写一篇博客搭建教程了.. FAQ Q:\(hexo\)需要本地编译.\(jekyll\)虽然可以直接上传\(md\)..但是如果在github上直接编译也太难受了叭,毕竟不 ...

  3. GitHub 上的 12306 抢票神器,助力回家过年

    又到周末了,不过本周末有些略微的特殊. 距离每年一次的全球最大规模的人类大迁徙活动已经只剩下一个多月了,各位在外工作一年的小伙伴大多数人又要和小编一样摩拳擦掌的对待史上最难抢的抢票活动. 然鹅,身为一 ...

  4. 推荐一些github上的免费好书

    本文转载自公众号:跟着小一写bug.  熬夜等于慢性自杀,那熬夜和喜欢的人说话,算不算是慢性殉情?        晚上好 小一来啦 有木有想哀家 其实今晚小一有个拳击课 可是 由于项目明天要演示 调一 ...

  5. 在github上优雅的搭建个人博客

    前言 啊啊啊---,经过差不多两天的持续摸索优化,个人博客算是初步完成了,现在自己看的效果还是非常不错的.这篇文章就是讲我怎么搭建一个这样的博客的.早在17年的时候就用hexo 结合github搭建过 ...

  6. 如何在GitHub上大显身手?

    推荐一篇良许大佬的文章,如何在github上大显身手.拥有自己的github,且有所贡献,这是一件很有意义的的事情,在面试上也是加分项哦,赶紧搞起来. 转载至http://uee.me/aHAfN 这 ...

  7. 开源字体不香吗?五款 GitHub 上的爆红字体任君选

    作者:HelloGitHub-ChungZH 在编程时,用一个你喜欢的字体可以大大提高效率,越看越舒服.这篇文章就推荐 5 个在 GitHub 上优秀的字体供大家选择吧! 1. Iosevka 网站: ...

  8. 「newbee-mall新蜂商城开源啦」GitHub 上最热门的 Spring Boot 项目,我也要做一次靓仔!

    没有一个冬天不可逾越,也没有一个春天不会到来. 介绍一下新蜂商城的近况,同时,新蜂商城 Vue 版本目前也在开发中,在这篇文章里我也向大家公布一下新蜂商城 Vue 版本的开发进度,和大家同步一下,在不 ...

  9. 保姆级教程,如何发现 GitHub 上的优质项目?

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

随机推荐

  1. word-流程图

    将 业务洽谈 签订合同 客户付费 发货 收获 信息反馈 制作成流程图: 插入-SmartArt-根据需要选择图形,如下图所示 点击红框选中部分,变成如下图所示,将要编辑的内容选中复制粘贴进去,一般最后 ...

  2. yii2.0 关于 ActiveForm 中 checkboxList 的使用

    在视图中创建复选框,列出复选框内的内容其中$id 为 列出在复选框中的数组 //$ids:所有要显示的checkbox(Array)<?=$form->field($model, 'id' ...

  3. Idea中如何导入jar包

    1.首先在idea左上角找到" File ",然后找到 "Project structure" 2.接着选择 " java ",选择后接着会 ...

  4. npm,pm2等相关知识的学习

    现在开始接手node端测试,有好多知识点,比如启动进程的命令,查看进程的命令都不是很清晰,现在具体来学习下- npm由来 前端最大的社区是GitHub,大家在这里分享代码,讨论问题,收集学习资源.大家 ...

  5. java Base64算法

    Base64算法并不是加密算法,他的出现是为了解决ASCII码在传输过程中可能出现乱码的问题.Base64是网络上最常见的用于传输8bit字节码的可读性编码算法之一.可读性编码算法不是为了保护数据的安 ...

  6. tar解压提示:tar (child): 无法连接至 xxxx: 解析失败

    如图提示: 错误原因:由于压缩文件中含有冒号导致 解决办法: 使用tar命令的–force-local选项

  7. 创建topic

    sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic ...

  8. Django 的反向解析与有无名分组

    无名分组(将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数) url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字 def test(reque ...

  9. Kafka速度为什么那么快

    记录一下 Kafka速度为什么那么快 Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率. 即使是普通 ...

  10. 使用Docker快速部署各类服务

    使用Docker快速部署各类服务 一键安装Docker #Centos环境 wget -O- https://gitee.com/iubest/dinstall/raw/master/install. ...