不用寫代碼,就能訓練測試深度學習模型!Uber開源AI工具箱Ludwig
乾明 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
讓代碼的歸代碼,讓AI的歸AI。
在不寫代碼就能進行AI開發的道路上,Uber今日又往前踏了一步。
剛剛,Uber宣布開源Ludwig,一個基於TensorFlow的工具箱。
有了它,不用寫代碼就能夠訓練和測試深度學習模型。
Uber表示,對於AI開發者來說,Ludwig可以幫助他們更好地理解深度學習方面的能力,並能夠推進模型快速迭代。
對於AI專家來說,Ludwig可以簡化原型設計和數據處理過程,從而讓他們能夠專註於開發深度學習模型架構。
訓練只需數據文件和配置文件
Ludwig提供了一套AI架構,可以組合起來,為給定的用例創建端到端的模型。
開始模型訓練,只需要一個表格數據文件(如CSV)和一個YAML配置文件——用於指定數據文件中哪些列是輸入特徵,哪些列是輸出目標變數。
如果指定了多個輸出變數,Ludwig將學會同時預測所有輸出。
使用Ludwig訓練模型,在模型定義中可以包含附加信息,比如數據集中每個特徵的預處理數據和模型訓練參數, 也能夠保存下來,可以在日後載入,對新數據進行預測。
靈活組合,適用多種任務
對於Ludwig支持的數據類型(文本、圖像、類別等),其提供了一個將原始數據映射到張量的編碼器,以及將張量映射到原始數據的解碼器。張量是線性代數中使用的數據結構。
內置的組合器,能夠自動將所有輸入編碼器的張量組合在一起,對它們進行處理,並將其返回給輸入解碼器。
Uber表示,通過組合這些特定於數據類型的組件,用戶可以將Ludwig用於各種任務。比如,組合文本編碼器和類別解碼器,就可以獲得一個文本分類器。
每種數據類型有多個編碼器和解碼器。例如,文本可以用卷積神經網路(CNN),循環神經網路(RNN)或其他編碼器編碼。
用戶可以直接在模型定義文件中指定要使用的參數和超參數,而無需編寫單行代碼。
基於這種靈活的編碼器-解碼器架構,即使是經驗較少的深度學習開發者,也能夠輕鬆地為不同的任務訓練模型。
比如文本分類、目標分類、圖像字幕、序列標籤、回歸、語言建模、機器翻譯、時間序列預測和問答等等。
多種功能,不斷拓展
為了讓工具變得更好用,Ludwig還提供了各種工具:
用於訓練、測試模型和獲得預測的命令行程序;
用於評估模型並通過可視化比較預測結果的工具;
用於用戶訓練或載入模型,並獲得對新數據預測的Python編程API。
此外,Ludwig還能夠使用開源分散式培訓框架Horovod,在多個GPU上訓練模型,並快速迭代。
目前,Ludwig有用於二進位值,浮點數,類別,離散序列,集合,袋(bag),圖像,文本和時間序列的編碼器和解碼器,並且支持選定的預訓練模型。
Uber表示,未來將為每種數據類型添加幾個新的編碼器,比如用於文本的Transformer,ELMo和BERT,以及用於圖像的DenseNet和FractalNet。
還將添加其他的數據類型,比如音頻、點雲和圖形,同時集成更多可擴展的解決方案來管理大數據集,如Petastorm。
來個例子,上手看看
在這個例子中, 訓練的是一個根據書名、作者、描述和封面來預測一本書的類型和價格的模型。數據集的形式如下所示:
模型使用書名、作者、描述和封面來作為輸入,類型和價格作為輸出,模型的配置文件是這樣的:
然後輸入在控制台中,輸入下列命令,開始訓練。
然後,Ludwig會在訓練、驗證和測試集中對數據進行隨機分割,進行預處理,並為四個輸入建立四個不同的編碼器,為兩個輸出目標建立一個組合器和兩個解碼器。
並在訓練集上訓練模型,直到驗證集的精確度停止提高或者達到十個訓練周期。
默認情況下,文本特徵由CNN編碼器編碼,但是也可以使用RNN編碼器,使用狀態大小為200的雙向LSTM來編碼書名。
我們只需要將書名編碼器的定義更改為下面這樣:
如果想改變訓練參數,如周期數、學習率和批尺寸(batch size),可以這樣改變模型配置:
訓練結束之後,可以將訓練的結果可視化,比如下圖這樣,顯示訓練周期中函數的損失和準確性。
也能夠使用模型去預測新數據的結果,如果數據集中有ground truth信息,還能夠進行對比,結果如下圖所示:
此外,Ludwig還會提供一個簡單的Python編程API,用戶可以用它來訓練或載入一個模型,並使用它來獲得對新數據的預測,在這個例子中,代碼如下所示:
各種操作指南,在Uber提供的Ludwig用戶指南中都有詳細介紹,請收好傳送門:
用戶指南:
https://uber.github.io/ludwig/user_guide/
GitHub項目地址:
https://github.com/uber/ludwig
—完—
加入社群
量子位現開放「AI 行業」社群,面向AI行業相關從業者,技術、產品等人員,根據所在行業可選擇相應行業社群,在量子位公眾號(QbitAI)對話界面回復關鍵詞「行業群」,獲取入群方式。行業群會有審核,敬請諒解。
此外,量子位AI社群正在招募,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式。
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
喜歡就點「好看」吧 !
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:量子位 |