你好 GitHub!每一位開源愛好者的好朋友「HelloGitHub」
大家好,今兒 HG 有幸邀請到:Lanking 一位亞馬遜 AI 軟件工程師、開源愛好者和貢獻者。他是亞馬遜開源的 Java 深度學習框架 DJL 的核心維護者、Apache MXNet 的 Committer(提交者),一枚喜歡滑雪的大佬程序員。
下面就讓這位大佬聊聊他在 GitHub 和一個開源項目的作者互道“你好”后聊了些什么、搞出了什么好玩的東西~
一、故事的開頭
我是 Lanking 一位 AI 軟件工程師、《HelloGitHub 月刊》的讀者,故事的開始是我們 DJL 項目:
正在找增強學習的例子,然后目前全網提供的方案也沒什么 Java 的實現和實戰項目。
偶然間,在程序員都愛看的《HelloGitHub 月刊》最近的一期,看到了一個僅用 Java 基礎類庫寫的憤怒小鳥開源游戲項目。
該項目結構十分清晰,代碼也很規范,我感覺自己的某些東西被觸動了。於是乎,我就給這個項目提了一個 issue:
如上圖,我打完招呼就直切主題,說明我的來意:您有沒有興趣用 DJL 做一個 RL 的憤怒小鳥,就是用深度學習框架 DJL 賦予這個小鳥“永生”,做個“不死鳥”。
二、他不理我了
FlappyBird 項目的作者叫:kingyuluk(后面就叫他“K”)
Issue 是開發者之間有效的溝通手段,但我發完 issues 后,雖然 K 當時說感興趣,然后就沒然后了...過了差不多三個月,突然有一天,他回復了這個 issue:
K 說他在用 DJL 實現的過程中遇到了問題。原來他自己悶頭去搞了,現在遇到問題才想起我!
哼~雖然等待有些難熬,但我還是開心地開始幫他看代碼,最開始只是在這個項目里開了一個分支,但是后來越做改的東西越多,於是作者 K 就開了一個新的項目來做這件事情。
三、辦法總比困難多
我和 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)