按:繼Facebook、Google之后,亞馬遜也宣布開源其深度學習工具,Open AI成為主流?本文由新智元翻譯自Github、Hacker News,介紹了亞馬遜DSSTNE的深度學習工具到底是什么,以及和其他開源工具相比有何不同?
另外,今年夏天,雷鋒網(搜索“雷鋒網”公眾號關注)將在深圳舉辦一場盛況空前的“全球人工智能與機器人創新大會”,并發布“人工智能&機器人Top25創新企業榜”榜單。如果你也是人工智能、機器人領域的相關公司,想經過層層曬選最終入選榜單,可聯系:[email protected]。
亞馬遜也被吹上“flow”的風口:繼Facebook公開其深度學習訓練平臺FBLearner Flow細節后,亞馬遜昨日下午突然宣布開源其深度學習和機器學習工具DSSTNE,并表示與相比其他深度學習工具,DSSTNE尤其擅于訓練稀疏數據。近年來,谷歌,FB和OpenAI先后搭建平臺,亞馬遜也宣布工具開源,人工智能系統未來開源趨勢已成,國內公司何時跟上國際潮流?
2016年5月11日下午,亞馬遜在GitHub網站將其深度學習和機器學習工具DSSTNE開源(譯注:DSSTNE與英語“destiny”諧音)。亞馬遜方面稱,與其他開源工具相比,DSSTNE尤其擅長訓練稀疏數據。新智元第一時間搜集信息,并獲得內部核心開發人員對這款工具的詳解。
向來在開源上不那么積極的亞馬遜有了新動作。難道最近在科技巨頭間掀起了一股“開源”的浪潮?我們能否期待接下來蘋果也會把它家的深度學習來個開源?玩笑說到這里,下面我們就一起來看看,亞馬遜這個DSSTNE深度學習工具到底有什么用處。
|DSSTNE是什么?
根據GitHub網站消息,DSSTNE是英文“Deep Scalable Sparse Tensor Network Engine”的簡寫,即“深度可伸縮的稀疏張量網絡工具”。亞馬遜相關研究團隊對DSSTNE的描述是 “一個使用GPU訓練和部署深度神經網絡的開源工具”。
亞馬遜的工程師最初創建DSSTNE是用于解決在亞馬遜平臺上需要處理的深度學習難題,建立的目標是解決現實中深度學習應用的產品部署問題,在試驗靈活性以外,還強調速度和規模。團隊希望把深度學習的潛力從語音、語言理解和物體識別領域擴展到搜索和推薦等其他領域,激發更多創意。
每一天,有上億人在亞馬遜購物。亞馬遜希望DSSTNE能幫助消費者從眾多的商品中發現想找的東西。而想要做到好的推薦,就需要神經網絡。即便是簡單的3層自動編碼器,加上一個有上億節點的輸入層(每一個節點代表一件商品),以及一個包含1000節點的隱藏網絡,還有一個能反映輸入層的輸出層,所需要學習的參數就可以達到10億以上。利用目前的硬件,這是很難實現的。即使把神經網絡的大小局限在單一商品目錄和身處美國的用戶,也幾乎要觸及當下GPU的能力上限了。
舉例來說,一個3層的自動編碼加權矩陣,加上輸入時的800萬個界定,以及輸出層和隱藏層的256個節點,運行一次簡單的計算就需要消耗8G的內存。使用開放資源軟件以及上千萬用戶的消費數據來訓練這樣的網絡,用市場上最快的GPU也得花上數周才能得到結果。亞馬遜意識到,如果不能寫出軟件,然后在多個GPU中分配這些計算的話,他們是不會有大的進步的。
DSSTNE有一系列的特征:
多GPU伸縮:訓練和預測擴展到使用多GPUs,在每一層平行模型拓展計算和存儲。
多層:模式平行伸縮,讓更大型的網絡成為可能。
稀疏數據:在稀疏數據集中,DSSTNE經過了優化,可以有更快速的表現。特殊的GPU核心程序在GPU中運行稀疏計算。
| DSSTNE與其他深度學習工具有何不同之處?
在一些數據稀疏(幾乎所有的數值都為零)的任務中,DSSTNE的表現要遠優于當下的一些開放資源深度學習工具。
DSSTNE是從無到有的一個工具,用于訓練數據稀疏條件下的模型,其他的數工具,比如Caffe,Tensorflow,Theano和Torch都擁有大型的功能集以及網絡支持。
DSSTNE在氣質上跟Caffe很像,強調產品應用的表現。在涉及稀疏數據的問題中,DSSTNE比其他仍和深度學習工具都要快(2.1x compared to Tensorflow in 1 g2.8xlarge),其中就包括推薦難題和許多自然語言理解(NLU)任務。單個服務器內,多GPU運行的情況,DSSTNE的表現也比其他的數據庫表現要好。DSSTNE能夠在所有可用的GPU中自動分配計算任務,加速所有的計算過程,并能建立更大的模型。
從實際上來看,這意味著它能建立起推薦系統,把上千萬種商品囊括到模型中,而不是上萬種,或者能處理包含大量詞匯的自然語言理解任務。對于這種等級的難題,其他的工具可能會需要轉化到CPU來計算稀疏數據,這會將效果降低一級。另外,DSSTNE的網絡定義語言會比Caffe的簡單得多,只需要33行代碼來表示通用的AlexNet圖像識別模型,而Caffe語言要求超過300行代碼。
但是,DSSTNE還不支持圖像識別所需要的卷積層,在一些自然語言理解和語音識別任務所需要的復發層中,支持也很有限。
| 該怎么用DSSTNE訓練神經網絡模型?
亞馬遜在GitHub網站上給出了使用DSSTNE訓練神經網絡模型的實例,包含3個基本步驟:轉換數據、訓練、預測。
1. 轉換數據:
下載數據后,把數據轉換到NetCDF格式。然后在指定數據集中嘗試運行一個自動編碼器。
1.1 生成輸入數據集:
1.2 生成輸出數據:
2. 訓練:3層神經網絡的隱藏層有128個節點
3. 預測:
總結
| 內部人員神吐槽
亞馬遜開源DSSTNE的消息發布后不久,一位前DSSTNE核心開發成員就在hackernews網站上透露,DSSTNE創建于2年前,專用于在亞馬遜商品目錄中進行產品推薦。他表示:當時Tensorflow還沒誕生,只有Theano和Torch;DSSTNE通過稀疏數據和多GPU跨神經網絡進行優化,跟Theano和Torch都不一樣;現在DSSENE還不支持Alex、VGG或者GoogleNet等,但是如果有需要,只用500行代碼就能實現。
那位前DSSTNE核心開發員還透露,DSSTNE現在還不明確支持RNN,但它支持分享加權。而雖然CuDNN 5使用幾百行代碼就能支持LSTM,但他認為CuDNN中的LSTM是一個黑盒子(Black Box),所以不能擴展到多重GPU。
那位程序員還表示,亞馬遜并不完美,但這家公司讓他們從頭開始搭建了這一平臺,然后現在對外開源。據這位不愿意透露姓名的程序員表示,加入亞馬遜之前,谷歌把他從Nvidia挖去(這是他難以拒絕的幾個offer之一),但2011年卻把他分配到搜索團隊,不讓其再涉及GPU的工作,完全沒有考慮到他是Nvidia CUDA團隊的創始成員之一,因此他認為谷歌完全沒有認識到GPU的作用。在谷歌他沒有待太久,如果他還留在亞馬遜,他認為亞馬遜會讓他從事開源編碼相關工作。
這位選擇匿名的程序員表示,在DSSTNE這個項目中自己是唯一的GPU編碼員,在接受了又一份難以拒絕的offer后,他在4個月前離開了亞馬遜。在他離開時,DSSENE的工作人員不到10人,并且其中大部分都已經到別處進行深度學習引擎開發去了。
在hackernews網站寫下這些文字的時候,那位不愿意透露姓名的程序員表示,他正在等飛機,在接下來的幾天中將持續跟進這件事。最后,他寫了一點劇透:
DSSTNE的每一個GPU,處理的都是近乎完美伸縮的,具有1000個以上隱藏單元的隱藏層以及高效的自由稀疏輸入層,因為激活和加權梯度計算有特定的稀疏核心;此外,雖然基于JavaScript輕量級的數據交換格式(JavaScript Object Notiation)在2014年獲得認可,但DSSTNE需要一個類似TensorFlow圖像輸入才能達到100%的兼容。