你好 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)