優步Ludwig是一種面向低代碼機器學習的開源框架!
訓練和測試深度學習模型是個困難的過程,需要對機器學習和數據基礎架構有深入瞭解。從特徵建模到超參數優化,訓練和測試深度學習模型的方法是實際環境下數據科學解決方案面臨的最大瓶頸之一。簡化這部分有助於簡化深度學習技術的採用。雖然深度學習模型的低代碼訓練是新興領域,但我們已經看到相關的創新。解決該問題的最完整解決方案之一來自優步AI實驗室。Ludwig(https://ludwig-ai.github.io/ludwig-docs/?from=%40)是一種訓練和測試機器學習模型的框架,無需編寫代碼。最近,優步發佈了Ludwig的第二版,包括功能上的重要改進,以便為機器學習開發人員提供主流的無代碼體驗。
Ludwig的目的是使用一種聲明式無代碼體驗,簡化訓練和測試機器學習模型的過程。訓練是深度學習應用最耗費開發人員精力的方面之一。通常,數據科學家花大量時間來試驗不同的深度學習模型,以更高的性能處理特定的訓練數據集。這個過程不僅涉及訓練,還包括其他幾個方面,比如模型比較、評估和工作負載分配等。考慮到技術性很強,訓練深度學習模型是一項通常僅限於數據科學家和機器學習專家的活動,包含大量代碼。雖然該問題對任何機器學習解決方案而言具有普遍性,但在深度學習架構中變得極為嚴重,因為它們通常涉及許多層和層次。Ludwig使用易於修改和版本控制的聲明式模型,將訓練和測試機器學習程序的複雜性隱藏了起來。
功能方面,Ludwig這個框架用於簡化針對某種場景選擇、訓練和評估機器學習模型的過程。Ludwig提供了一套模型架構,可以將它們組合在一起,以創建針對一系列特定需求優化的端到端模型。從概念上講,Ludwig是基於一系列原則設計的:
數據科學家使用Ludwig,只需提供含有訓練數據的CSV文件以及帶有模型輸入和輸出的YAML文件,即可訓練深度學習模型。使用這兩個數據點,Ludwig執行多任務學習例程,同時預測所有輸出並評估結果。這種簡單的結構是支持快速製作原型的關鍵。Ludwig在底層提供了一系列深度學習模型,這些模型不斷加以評估,可以合併到最終的架構中。
Ludwig背後的主要創新基於針對特定數據類型的編碼器和解碼器這個概念。針對支持的任何一種數據類型,Ludwig使用特定的編碼器和解碼器。與其他深度學習架構中一樣,編碼器將原始數據映射到張量(tensor),解碼器將張量映射到輸出。Ludwig的架構還包括組合器概念:組合器是一種組件,用於組合來自所有輸入編碼器的張量,對它們處理後,返回供輸出解碼器使用的張量。
圖1
數據科學家將Ludwig用於兩種主要的功能:訓練和預測。假設我們在處理擁有下列數據集的文本分類場景:
圖2
我們可以開始入手Ludwig,只需使用下列命令來安裝它:
下一步是配置模型定義YAML文件,該文件指定了模型的輸入和輸出特徵。
有了這兩個輸入(訓練數據和YAML配置),我們可以使用下列命令訓練深度學習模型:
Ludwig提供了一系列可視化元素,可以在訓練和預測過程中使用這些元素。比如説,學習曲線可視化元素讓我們可以瞭解模型的訓練和測試性能。
圖3
訓練後,我們可以使用下列命令評估模型的預測:
其他可視化元素可用於評估模型的性能。
圖4
Ludwig的新增功能
最近優步發佈了Ludwig的第二版,為核心架構增添了一系列新功能,這些新功能旨在改善訓練和測試模型的無代碼體驗。Ludwig的許多新功能基於與其他機器學習架構或框架集成。以下是一些主要功能:
Ludwig的其他新增功能包括可視化API方面的改進、新的日期功能、為文本標識化更好地支持非英語語言以及更好的數據預處理功能。尤其是數據注入似乎是下一Ludwig版本重點關注的方面。
Ludwig仍是一種比較新的框架,仍需要大量改進。然而,支持低代碼模型是一個關鍵的構建模塊,可以方便更廣泛的開發人員採用機器學習。此外,Ludwig抽象並簡化了市面上一些主流機器學習框架的使用。