0
本文作者: 汪思穎 | 2019-06-30 15:11 |
今年 6 月,由北京大學(xué)前沿計(jì)算研究中心董豪博士主導(dǎo)開源的 TensorLayer 在 GitHub 上的 Star 數(shù)突破五千,這也標(biāo)志著這一工具進(jìn)入一個(gè)全新里程碑。TensorLayer 是一款基于 TensorFlow 開發(fā)的深度學(xué)習(xí)與強(qiáng)化學(xué)習(xí)庫(kù),它提供高級(jí)別的深度學(xué)習(xí) API,非常易于修改和擴(kuò)展,可以同時(shí)用于機(jī)器學(xué)習(xí)的研究與產(chǎn)品開發(fā)。
2016 年,董豪在帝國(guó)理工讀博期間,在 Github 上開源 TensorLayer1.0,這一工具于 2017 年獲得 ACM MM 最佳開源軟件獎(jiǎng)。今年 5 月,隨著 TensorFlow 升級(jí)至 2.0,在北京大學(xué)前沿計(jì)算研究中心的大力支持下,北京大學(xué)和帝國(guó)理工的貢獻(xiàn)者們(吳睿海、吳潤(rùn)迪、董豪、張敬卿)也將 TensorLayer 升級(jí)至全新 2.0 版本,全面支持動(dòng)態(tài)訓(xùn)練模式、動(dòng)/靜態(tài)神經(jīng)網(wǎng)絡(luò)模型切換以及 TensorFlow2.0,并同時(shí)大大簡(jiǎn)化了自定義神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)。目前,TensorLayer 的下載量接近 20 萬次,并逐漸成為深度學(xué)習(xí)主流框架之一。
談及發(fā)起 TensorLayer 項(xiàng)目的契機(jī),董豪對(duì)雷鋒網(wǎng)表示,這與他的研究經(jīng)歷息息相關(guān)。博士第一年,他主要做一些醫(yī)療數(shù)據(jù)的分析研究,其間涉及到諸多深度學(xué)習(xí)研究,到了博二和博三,他的研究逐漸從醫(yī)療應(yīng)用轉(zhuǎn)換到深度學(xué)習(xí)算法。這期間,他逐漸對(duì)要不要自己做一個(gè)工具集進(jìn)行了思索,隨后所做的一個(gè)模型壓縮項(xiàng)目真正導(dǎo)向他做出 TensorLayer。在這個(gè)項(xiàng)目中,他最開始使用的工具是 Theano,在往 TensorFlow 切換的過程中,能使用的工具只有 Keras,但是 Keras 存在一個(gè)問題——透明性很差,很難進(jìn)行一些底層操作,而這對(duì)模型壓縮中的特定操作造成了困擾。因?yàn)樾枨髮?dǎo)向,他決定做出一個(gè)追求簡(jiǎn)潔和透明性的工具,滿足實(shí)驗(yàn)室的科研需求,提高研究的效率。
旅行中的奇思妙想
而將 TensorLayer 導(dǎo)向開源,則是另一則小故事。
2016 年 9 月,董豪陪同父母旅游,在從美國(guó)乘坐游輪去墨西哥的過程中,他將這一工具開源。
「本來已經(jīng)答應(yīng)了爸媽和他們一起坐船,但我一上去就后悔了。游輪看起來似乎很不錯(cuò),在船上欣賞美景,感受大自然,但真實(shí)的情況是,連續(xù) 7 天每天就是吃吃自助餐,看看表演,翻來覆去地看海景,這種感覺真的很無聊。」
在上船的次日,他租好 WiFi,花了一周時(shí)間,把過去所有的代碼整理好,發(fā)布了 TensorLayer 第一版。當(dāng)時(shí)的想法是,開源的時(shí)機(jī)已經(jīng)成熟,既然有了好的東西,就應(yīng)該拿出來給開發(fā)者群體使用,看看效果如何。而這次的游船之旅,則是讓他心無旁鷺整理 TensorLayer 的最佳催化劑。
以現(xiàn)在的眼光看來,1.0 版本略顯粗糙。但隨著這一工具的開源,陸續(xù)有更多的開發(fā)者提出意見,TensorLayer 開發(fā)者團(tuán)隊(duì)也基于此做出了更多更好的提升。這一工具不再是一個(gè)人的單打獨(dú)斗。
最初的開發(fā)團(tuán)隊(duì)以他們實(shí)驗(yàn)室為主,此外還有帝國(guó)理工大學(xué)的一些校友,隨著畢業(yè)或研究方向的轉(zhuǎn)變,有些人慢慢離開了這支隊(duì)伍。隨著開源,陸續(xù)有了許多網(wǎng)友加入這個(gè)社群,直到現(xiàn)在都還一直有新鮮血液涌入。
開源之后,他也迎來另一個(gè)收獲,2017 年,TensorLayer 獲得 ACM MM2017 最佳開源軟件獎(jiǎng)。
「無心插柳柳成蔭」的獎(jiǎng)項(xiàng)
ACM MM2017 最佳開源軟件獎(jiǎng)對(duì)董豪來說完全是預(yù)料之外的收獲。在這一工具開源之后,他的好友在一次閑談時(shí)對(duì)他說道,「既然做了,不如寫篇論文投個(gè)會(huì)議?」董豪調(diào)侃道,「嗯,那就試試吧。」
就是這樣一次不經(jīng)意的對(duì)話,沒想到促成了這次最佳開源軟件獎(jiǎng)。得知獲獎(jiǎng)時(shí),董豪正在意大利參加 ICCV,由論文的另一位共同作者在 ACM MM 現(xiàn)場(chǎng)領(lǐng)獎(jiǎng)。
彼時(shí)他們團(tuán)隊(duì)身處英國(guó),做深度學(xué)習(xí)研究的團(tuán)隊(duì),以中、美居多,他們對(duì)這一工具的宣傳也較少,唯一的傳播途徑就是,董豪會(huì)在知乎里回答一些關(guān)于 TensorLayer 的疑問。即便這樣,TensorLayer 也收獲了不少用戶群體。好用的工具大家都喜歡。
在這一工具獲得 ACM MM 最佳開源軟件獎(jiǎng)之后,熟知它的人變得更多,社群里的討論也日益熱烈。新的規(guī)劃也開始啟動(dòng)。
董豪決定,一定要好好維護(hù)這一工具,做到畢業(yè)之后繼續(xù)對(duì)用戶群體負(fù)責(zé)。從最初的以實(shí)驗(yàn)室需求為導(dǎo)向,發(fā)展到今天,他對(duì)為什么要做好 TensorLayer 又有了新的理解。
他對(duì)雷鋒網(wǎng)表示,TensorLayer 是一個(gè)沒有任何公司背景的純開放社區(qū),這樣的好處是,沒有公司之間的諸多復(fù)雜問題?!赣行┕咀龀鰜淼墓ぞ?,他們可能抱著這樣的考慮,別家的算法,我們就支持的慢一點(diǎn),本來可以這次進(jìn)行升級(jí),我們放在下一次。而 TensorLayer 則不同,如果我今天做了一個(gè)很好用的東西,或者是在哪篇論文中發(fā)現(xiàn)了很好用的方法,那我們可以馬上加進(jìn)來,讓開發(fā)者第一時(shí)間用上。」
2.0 版本全新升級(jí)
去年 9 月份,他開始考慮進(jìn)行這次升級(jí),打算做出新的設(shè)計(jì),找到自己的特色,對(duì)優(yōu)勢(shì)進(jìn)行提升。TensorLayer 的底層基于 TensorFlow,而 TensorFlow 一直因?yàn)殪o態(tài)圖的問題被廣大開發(fā)者詬病,他表示,既然 TensorFlow 決定升級(jí)至 2.0 版本,TensorLayer2.0 版本也可以提上議程。
在這次的更新中,董豪也撰文,透露了如下特征:
TensorLayer 由底層至上層可以分為三大模塊:
1. 神經(jīng)網(wǎng)絡(luò)模塊:TensorLayer 提供大量工業(yè)界和學(xué)術(shù)界需要的參考層實(shí)現(xiàn)(比如 CNN、RNN、BinaryNet 等),提供類似 Pytorch 的「動(dòng)態(tài)」聲明方式,也提供類似 Lasagne 的堆疊式「靜態(tài)」聲明方法來建立模型,并支持動(dòng)態(tài)圖和靜態(tài)圖兩種訓(xùn)練模式,以支持不同的開發(fā)需求。
2. 工作流模塊:為了支持整個(gè)深度學(xué)習(xí)開發(fā)流程,TensorLayer 提供了大量數(shù)據(jù)處理和訓(xùn)練流程所需的工具。此外,為了管理整個(gè)深度學(xué)習(xí)開發(fā),以支持項(xiàng)目的存儲(chǔ)、比較、溯源等,TensorLayer 提供了生命周期管理功能,包括模型、數(shù)據(jù)和訓(xùn)練流程的管理,以及支持任務(wù)分發(fā)以實(shí)現(xiàn)多任務(wù)并行執(zhí)行,以加快訓(xùn)練(比如超參數(shù)選取)和自動(dòng)產(chǎn)品化部署。
3. 應(yīng)用模塊:為了促進(jìn)產(chǎn)業(yè)界和學(xué)術(shù)界的交流,TensorLayer 社區(qū)提供了大量應(yīng)用和預(yù)訓(xùn)練模型,包括醫(yī)療圖像分析、圖像增強(qiáng)、人體姿態(tài)估計(jì)、文本生成、風(fēng)格遷移、各類增強(qiáng)學(xué)習(xí)算法等等。
與 Keras 和 Pytorch 相比,TensorLayer 提高了神經(jīng)網(wǎng)絡(luò)模塊的抽象化設(shè)計(jì),同時(shí)實(shí)現(xiàn)了降低使用現(xiàn)有層和開發(fā)新層的工作量,既不需要開發(fā)者編寫函數(shù)以計(jì)算層的輸出尺寸(Keras 需要),也不需要在使用層時(shí)輸入上一層的輸出尺寸(Pytorch 需要)。這些設(shè)計(jì)大大方便了框架的拓展。
此外,TensorLayer 提供了整套端到端的工作流,包括數(shù)據(jù)預(yù)處理、訓(xùn)練、服務(wù)模塊、數(shù)據(jù)庫(kù)管理,以及任務(wù)自動(dòng)發(fā)放和收集。
目前,TensorLayer 團(tuán)隊(duì)分為框架開發(fā)和應(yīng)用開發(fā)兩個(gè)分支,框架開發(fā)主要做一些底層的支持和高層抽象,應(yīng)用開發(fā)會(huì)基于這一工具做更多應(yīng)用。本次大更新的主要貢獻(xiàn)來自北京大學(xué)和帝國(guó)理工學(xué)院的核心團(tuán)隊(duì),其中,北京大學(xué)信息科學(xué)技術(shù)學(xué)院的兩位大三學(xué)生吳潤(rùn)迪和吳睿海是本次更新的最核心成員。
未來
今年六月,TensorFlow 2.0 Beta 版本發(fā)布,終版 API 基本定型,貢獻(xiàn)者團(tuán)隊(duì)搭配 TensorLayer2.0,實(shí)現(xiàn)了全套深度強(qiáng)化學(xué)習(xí)(Deep Reinforcement Learning)算法,包括 DQN 以及一系列的改進(jìn)算法,PG、TRPO、PPO 等算法,AC 算法及其一系列改進(jìn),最大熵方法和策略/值迭代等方法。他們也承諾,將持續(xù)開源最新深度學(xué)習(xí)和深度強(qiáng)化學(xué)習(xí)算法。
目前,貢獻(xiàn)者團(tuán)隊(duì)與硬件開源社區(qū) Sipeed 合作,將推出基于國(guó)產(chǎn) K210 嵌入式 AI 芯片模組及其模型轉(zhuǎn)換器。屆時(shí),TensorLayer 中的所有案例和模型都將可以直接導(dǎo)入芯片中,成本能控制在 20 元以下。他們已經(jīng)做出了實(shí)時(shí)目標(biāo)識(shí)別、人臉識(shí)別、風(fēng)格轉(zhuǎn)換等的 demo。
對(duì)于在 TensorLayer 的開發(fā)與更新這三年中的體會(huì),董豪對(duì)雷鋒網(wǎng)表示,這是一個(gè)不斷結(jié)識(shí)新朋友,自我學(xué)習(xí)的過程?!改軐W(xué)到很多工程上的東西,也會(huì)遇到各種各樣的需求。開發(fā)者提出來之后,我就知道,哇,原來世界上還有這種算法。當(dāng)然,也會(huì)認(rèn)識(shí)許多國(guó)內(nèi)國(guó)外的朋友,其中有很多很有意思的人。我們做的事情是開源,所以接觸到的很多人都極具貢獻(xiàn)精神。」
董豪還提到,TensorLayer 也創(chuàng)造了很多促進(jìn)個(gè)人事業(yè)的機(jī)會(huì),比如有一些大公司找到他,開出了在業(yè)界極具競(jìng)爭(zhēng)力的條件。不過他最后還是選擇了北京大學(xué),將繼續(xù)從事科研。社區(qū)貢獻(xiàn)者也都拿到了 OpenAI, Google Brain, Nvidia Research 等研究機(jī)構(gòu)的 offer。
他將于今年 9 月正式加入北大前沿計(jì)算研究中心,該中心在機(jī)器學(xué)習(xí)理論和應(yīng)用方面都非常強(qiáng)。在未來,他會(huì)做一些基于深度學(xué)習(xí)的理論研究,以及機(jī)器學(xué)習(xí)在視覺、醫(yī)療、圖形學(xué)方面的一些應(yīng)用,歡迎大家申請(qǐng)博士生和博士后。此外,他對(duì)非監(jiān)督學(xué)習(xí)也特別感興趣,計(jì)劃在數(shù)據(jù)的高效利用上進(jìn)行更多探索。我們期待未來他帶來更多新的研究,推動(dòng) TensorLayer 更多地助益于開發(fā)者,創(chuàng)造一個(gè)開源、共享的生態(tài)。
TensorLayer 部分貢獻(xiàn)者
董豪知乎主頁(yè):https://www.zhihu.com/people/zsdh123/activities
TensorLayer GitHub 地址:https://github.com/tensorlayer/tensorlayer
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。