當前位置:
首頁 > 科技 > 不用寫代碼,就能訓練測試深度學習模型!Uber開源AI工具箱Ludwig

不用寫代碼,就能訓練測試深度學習模型!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)對話界面,回復「招聘」兩個字。

喜歡就點「好看」吧 !


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

手把手教你用Python玩轉時序數據,從採樣、預測到聚類

TAG:量子位 |