參與啟智社區(qū)開源項(xiàng)目心得分享——方維

作為開源脈沖神經(jīng)網(wǎng)絡(luò)框架驚蟄(SpikingJelly)的開發(fā)者之一,我有幸參加了12月初在北京舉辦的2020年OpenI開發(fā)者大會(huì),并獲獎(jiǎng)成為首批啟智社區(qū)優(yōu)秀開源開發(fā)者。借此機(jī)會(huì),我想分享一下我的開源經(jīng)歷和感悟。

參與開發(fā)

第三代人工神經(jīng)網(wǎng)絡(luò)脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Network, SNN)具有事件驅(qū)動(dòng)、低功耗、高仿生的特點(diǎn),一直是神經(jīng)科學(xué)領(lǐng)域的研究熱點(diǎn)。近年來機(jī)器學(xué)習(xí)方法逐漸應(yīng)用于SNN并取得了突破性的性能提升,使用SNN進(jìn)行深度學(xué)習(xí)成為新的前沿交叉研究熱點(diǎn)。我對(duì)于這一新興的研究方向充滿興趣,但在研究中發(fā)現(xiàn):

  1. 傳統(tǒng)的深度學(xué)習(xí)框架并不直接支持SNN,因此許多研究者不得不從零開始實(shí)現(xiàn)所需的SNN模塊,造成了大量的重復(fù)勞動(dòng)

  2. SNN從生物神經(jīng)元簡化而來,不同開發(fā)者對(duì)SNN的實(shí)現(xiàn)方式不同,造成了定義的混亂,代碼難以復(fù)用

  3. 絕大多數(shù)代碼都沒有配套的文檔,給學(xué)習(xí)和使用帶來了麻煩

這些問題是包括我在內(nèi)的所有SNN深度學(xué)習(xí)的研究者面臨的難題。目前這個(gè)領(lǐng)域還沒有一個(gè)成熟的框架,如果有一個(gè)類似于ANN中Caffe、PyTorch那樣的深度學(xué)習(xí)框架則可以解決上述問題。為了我們自己研究的有序進(jìn)行、實(shí)驗(yàn)的順利開展,以及方便其他研究者的使用,避免重復(fù)勞動(dòng),實(shí)驗(yàn)室的老師和博士生們討論后決定,自行開發(fā)一款全新的開源SNN深度學(xué)習(xí)框架,即驚蜇(SpikingJelly)。

 我個(gè)人參與驚蜇的開發(fā),主要原因是:

  1. 研究方向與框架的應(yīng)用背景完全契合,在學(xué)習(xí)該領(lǐng)域的前沿知識(shí)時(shí),可以同時(shí)在框架中進(jìn)行代碼實(shí)現(xiàn),理論和實(shí)際實(shí)驗(yàn)可以順利結(jié)合,互為補(bǔ)充

  2. 一個(gè)完善的框架有助于我順利進(jìn)行各種實(shí)驗(yàn)、與他人分享我的研究成果,并確保我的研究成果的可復(fù)現(xiàn)性

  3. 希望能夠繼續(xù)為開源社區(qū)做出更多貢獻(xiàn),減少開發(fā)者的重復(fù)勞動(dòng),提升科研效率

驚蟄框架的開發(fā),在2019年11月正式開始,早期主要是由包括我在內(nèi)的北京大學(xué)的幾位博士生,在老師們指導(dǎo)下進(jìn)行開發(fā)。開發(fā)之初,我們就將此框架完全開源在GitHub上,希望能夠吸引其他感興趣的開發(fā)者參與貢獻(xiàn)、共同推進(jìn)。

社區(qū)支持

驚蟄框架在開發(fā)過程中逐漸受到脈沖神經(jīng)網(wǎng)絡(luò)領(lǐng)域研究者的關(guān)注,并得到了許多開發(fā)者和開源社區(qū)的支持,主要包括:

  1. 一些用戶通過issue的方式提供建議

  2. 開發(fā)者報(bào)告bug,或提交pull request來修復(fù)bug

  3. 鵬城實(shí)驗(yàn)室的開發(fā)者提供了CUDA性能優(yōu)化的建議、補(bǔ)充CUDA代碼、補(bǔ)充文檔教程翻譯

  4. OpenI社區(qū)提供了鏡像服務(wù)器,在國內(nèi)擁有更快的訪問速度;提供了無限存儲(chǔ)空間的公網(wǎng)存儲(chǔ)服務(wù)器,驚蟄框架據(jù)此建立了部分?jǐn)?shù)據(jù)集的下載鏡像

  5. 鵬城云腦提供了強(qiáng)大的算力支持,驚蟄框架在云腦上進(jìn)行了大量性能實(shí)驗(yàn)和代碼調(diào)試

最后,驚蟄項(xiàng)目還成功申請(qǐng)成為首批啟智社區(qū)優(yōu)秀開源項(xiàng)目,作為開發(fā)者之一,我也很榮幸地參加了2020年OpenI開發(fā)者大會(huì),獲益匪淺。

 

開源心得

在開源社區(qū)的支持下,經(jīng)過一年的開發(fā),驚蟄框架已經(jīng)頗具規(guī)模,開發(fā)者可以通過使用驚蟄框架迅速搭建起高性能脈沖神經(jīng)網(wǎng)絡(luò)并進(jìn)行深度學(xué)習(xí)。回顧這一年的開源經(jīng)歷,我的總結(jié)如下:

  1. 積極擁抱開源。眾人拾柴火焰高,個(gè)人的能力終究有限,而開源社區(qū)的力量是無窮的。開源的項(xiàng)目可以吸引廣大開發(fā)者參與貢獻(xiàn),共同開發(fā);開源的代碼接受所有用戶的審查,有助于敦促開發(fā)者提升代碼質(zhì)量;好的項(xiàng)目還能成為新項(xiàng)目的基石,衍生出更為豐富的功能

  2. 注重教程和文檔的編寫。好的開源項(xiàng)目要吸引用戶的使用和開發(fā)者的參與,就必須注重易用性,不能有太高的上手和開發(fā)門檻,因此需要注重教程和文檔的編寫。條理清晰、通俗易懂的教程和文檔是對(duì)用戶和開發(fā)者的尊重,只有真心尊重用戶和開發(fā)者,他們才會(huì)樂于使用并為項(xiàng)目做出貢獻(xiàn)

 

Share this article:

Facebook
Twitter
LinkedIn
WhatsApp

More articles