優步Ludwig是一種面向低代碼機器學習的開源框架!
譯文【51CTO.com快譯】
訓練和測試深度學習模型是個困難的過程,需要對機器學習和數據基礎架構有深入了解。從特征建模到超參數優化,訓練和測試深度學習模型的方法是實際環境下數據科學解決方案面臨的最大瓶頸之一。簡化這部分有助于簡化深度學習技術的采用。雖然深度學習模型的低代碼訓練是新興領域,但我們已經看到相關的創新。解決該問題的最完整解決方案之一來自優步AI實驗室。Ludwig(https://ludwig-ai.github.io/ludwig-docs/?from=%40)是一種訓練和測試機器學習模型的框架,無需編寫代碼。最近,優步發布了Ludwig的第二版,包括功能上的重要改進,以便為機器學習開發人員提供主流的無代碼體驗。
Ludwig的目的是使用一種聲明式無代碼體驗,簡化訓練和測試機器學習模型的過程。訓練是深度學習應用最耗費開發人員精力的方面之一。通常,數據科學家花大量時間來試驗不同的深度學習模型,以更高的性能處理特定的訓練數據集。這個過程不僅涉及訓練,還包括其他幾個方面,比如模型比較、評估和工作負載分配等。考慮到技術性很強,訓練深度學習模型是一項通常僅限于數據科學家和機器學習專家的活動,包含大量代碼。雖然該問題對任何機器學習解決方案而言具有普遍性,但在深度學習架構中變得極為嚴重,因為它們通常涉及許多層和層次。Ludwig使用易于修改和版本控制的聲明式模型,將訓練和測試機器學習程序的復雜性隱藏了起來。
功能方面,Ludwig這個框架用于簡化針對某種場景選擇、訓練和評估機器學習模型的過程。Ludwig提供了一套模型架構,可以將它們組合在一起,以創建針對一系列特定需求優化的端到端模型。從概念上講,Ludwig是基于一系列原則設計的:
- 無需編程:Ludwig無需任何機器學習專業知識即可訓練模型。
- 通用性:Ludwig可用于許多不同的機器學習場景。
- 靈活性:Ludwig足夠靈活,可以供經驗豐富的機器學習從業人員和毫無經驗的開發人員使用。
- 可擴展性:Ludwig設計時就考慮到可擴展性。每個新版本都包含新功能,無需更改核心模型。
- 可解釋性:Ludwig包括可視化元素,可幫助數據科學家了解機器學習模型的性能。
數據科學家使用Ludwig,只需提供含有訓練數據的CSV文件以及帶有模型輸入和輸出的YAML文件,即可訓練深度學習模型。使用這兩個數據點,Ludwig執行多任務學習例程,同時預測所有輸出并評估結果。這種簡單的結構是支持快速制作原型的關鍵。Ludwig在底層提供了一系列深度學習模型,這些模型不斷加以評估,可以合并到最終的架構中。
Ludwig背后的主要創新基于針對特定數據類型的編碼器和解碼器這個概念。針對支持的任何一種數據類型,Ludwig使用特定的編碼器和解碼器。與其他深度學習架構中一樣,編碼器將原始數據映射到張量(tensor),解碼器將張量映射到輸出。Ludwig的架構還包括組合器概念:組合器是一種組件,用于組合來自所有輸入編碼器的張量,對它們處理后,返回供輸出解碼器使用的張量。
圖1
數據科學家將Ludwig用于兩種主要的功能:訓練和預測。假設我們在處理擁有下列數據集的文本分類場景:
圖2
我們可以開始入手Ludwig,只需使用下列命令來安裝它:
- pip install ludwig
- python -m spacy download en
下一步是配置模型定義YAML文件,該文件指定了模型的輸入和輸出特征。
- input_features:
- -
- name: text
- type: text
- encoder: parallel_cnn
- level: wordoutput_features:
- -
- name: class
- type: category
有了這兩個輸入(訓練數據和YAML配置),我們可以使用下列命令訓練深度學習模型:
- ludwig experiment \
- --data_csv reuters-allcats.csv \
- --model_definition_file model_definition.yaml
Ludwig提供了一系列可視化元素,可以在訓練和預測過程中使用這些元素。比如說,學習曲線可視化元素讓我們可以了解模型的訓練和測試性能。
圖3
訓練后,我們可以使用下列命令評估模型的預測:
- ludwig predict --data_csv path/to/data.csv --model_path /path/to/model
其他可視化元素可用于評估模型的性能。
圖4
Ludwig的新增功能
最近優步發布了Ludwig的第二版,為核心架構增添了一系列新功能,這些新功能旨在改善訓練和測試模型的無代碼體驗。Ludwig的許多新功能基于與其他機器學習架構或框架集成。以下是一些主要功能:
- 與Comet.ml集成:Comet.ml是市面上用于超參數優化和機器學習試驗的最流行平臺之一。Ludwig與Comet.ml集成的新功能帶來了超參數分析或實時性能評估等功能,而這些功能是數據科學家工具箱的必要組成部分。
- 模型服務:模型服務是機器學習程序生命周期的一個關鍵部分。Ludwig的新版本提供了API端點,使用簡單的REST查詢來提供經過訓練的模型和查詢預測。
- 音頻/語音功能:Ludwig 0.2最重要的新增功能之一是支持音頻功能。這使數據科學家可以用極少的代碼構建音頻分析模型。
- BERT編碼器:BERT是深度學習歷史上最受歡迎的語言模型之一。BERT基于Transformer架構,可以執行許多語言任務,比如問題解答或文本生成。Ludwig現在支持BERT,作為文本分類場景的原生構建模塊。
- H3功能:H3是非常流行的空間索引,用于將位置編碼成64位整數。Ludwig 0.2直接支持H3,允許使用空間數據集實施機器學習模型。
Ludwig的其他新增功能包括可視化API方面的改進、新的日期功能、為文本標識化更好地支持非英語語言以及更好的數據預處理功能。尤其是數據注入似乎是下一Ludwig版本重點關注的方面。
Ludwig仍是一種比較新的框架,仍需要大量改進。然而,支持低代碼模型是一個關鍵的構建模塊,可以方便更廣泛的開發人員采用機器學習。此外,Ludwig抽象并簡化了市面上一些主流機器學習框架的使用。
原文標題:Uber’s Ludwig is an Open Source Framework for Low-Code Machine Learning,作者:Jesus Rodriguez
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】