全自動機器學習:Ludwig on Ray帶你一次解決

Find AI Tools
No difficulty
No complicated process
Find ai tools

全自動機器學習:Ludwig on Ray帶你一次解決

Table of Contents:

  1. 介紹
  2. 問題陳述
  3. 黑盒選擇問題
  4. 可延伸和自訂的解決方案
  5. 整合結構化和非結構化數據
  6. 使用混合模態訓練
  7. Ludwing和Ray的集成
  8. 分散訓練和超參數搜索
  9. 潛力與挑戰
  10. Future of Ludwig and Predabase

介紹

👋 歡迎大家參加我的演講!

嗨大家好,很高興能在這裡和各位見面。我是 Travis Adair,是一個開源項目 Horvad 和 Ludwig 的主要維護者,也是一家名為 Predabase 的創業公司的聯合維護者。今天我要向大家介紹的是 Ludwig 和 Ray 平台。

在演講開始之前,很高興能和大家應接不暇地談一下我們公司 Predabase 的一些事情。雖然我們目前還在隱秘運作階段,但是我們已經開始預演了我們要來的一些內容,並希望能在今天告訴大家一些我們目前正在進行的工作。

問題陳述

🔎 機器學習的限制和瓶頸

我們在 Ludwig 團隊中觀察到的最大問題是,當前的機器學習在很多方面都受到限制,並且進行得非常緩慢。這些限制主要與創建模型的成本有關,而這主要是由於數據科學家在大多數組織中都是一種非常有限的資源所致。他們在任何問題上能夠投入的關注度有限。

因此,大部分組織將自己的大部分資源轉向了一個非常有限的高優先級使用案例集。為了解決這個問題,那些在機器學習領域有很多問題並且缺少數據科學家和機器學習專家的組織,通常會求助於那些被稱為黑盒子自動機器學習解決方案的公司。但這些解決方案也存在一些問題,比如如果不成功,很難對解決方案進行進一步優化或自訂。這就使我們陷入了一個困境:我們需要簡單易用的解決方案,以便讓沒有無限數量數據科學家的組織能夠使用它們,同時,這些解決方案還需要具有足夠的靈活性,以便能夠根據具體業務需求定制和擴展。

黑盒選擇問題

⚖️ 自動機器學習的優點和缺點

當機構面臨許多機器學習問題,卻只有有限數量的數據科學家和機器學習專家可以對其進行處理時,大多數組織都會求助於自動機器學習解決方案。這些解決方案可以快速啟動您的項目,但同時也有所劣勢。如果您嘗試使用這些解決方案,卻無法如您預期的那樣奏效,則您在進一步優化或自訂方案方面的選擇非常有限。

優點:

  • 快速啟動:黑盒自動機器學習解決方案可以迅速讓您上手。
  • 省時省力:您無需專業的知識和技能,即可使用這些解決方案。
  • 高效性:黑盒解決方案通常在一些常見任務上具有很高的效能。

缺點:

  • 缺乏可擴展性:無法自定義和擴展黑盒解決方案,無法適應個性化要求。
  • 有限的定制選項:無法進行深入調整和優化。
  • 可能會失敗:黑盒解決方案對於某些特殊數據集和用例可能無法適用。

可延伸和自訂的解決方案

🔧 同時具備簡單和靈活性的解決方案

我們需要一種解決方案,既簡單易用以使組織能夠使用它,又具有足夠的靈活性,以便在第一次嘗試失敗時能夠對其進行自訂和擴展。

當我們開始思考這樣一個解決方案時,我們想到的一個類比是數據管理和數據基礎設施領域的發展。回顧一下2000年前後,SQL 是所有數據工程和數據基礎設施工作的通用語言。然後在2000年代初,Google 發布了一篇開創性的 MapReduce 論文,我們進入了大數據和 NoSQL 的新時代。隨之而來的是,工具必須回到起點,使用更多的低級代碼,例如 C++ 和 Java,進行數據處理。這大多數情況下導致了像 SQL 這樣的高級語言的優點的損失,因為工具尚未跟上世界的新狀態,沒有機制能滿足我們的新需求。

再往前一些年,像 Hive 這樣的框架出現了,為許多 MapReduce 抽象提供了 SQL 層。Apache Spark,作為一個非常重要的技術,在提供了更低級 API 的同時,也提供了很多附加功能。過去幾年中,我們開始看到行業中的一個非常有趣的趨勢:大數據可以大致回歸結構化的數據倉庫,SQL 和基於模式的工作流程這兩者的結合。這樣,許多框架,如 dbt,從以前的 Spark ETL 開始轉向使用 SQL 進行 ELT,還有像 Arrow 和 Das 這樣統一數據轉換和表示過程的框架,進一步優化這一過程。接著,像 Fugue 這樣的框架,就可以在這之上構建高級 SQL 管道。

在機器學習生態系統中,我們看到了非常相似的趨勢。在早年的機器學習中,像 scikit-learn 這樣的框架使其對用戶來說非常高級,易於使用。然而,當深度學習革命來臨時,情況發生了變化,我們又回到了低級工具、以 Python 為主要編程語言的編碼方式,使用 TensorFlow 和 PyTorch 等工具進行更多的代碼編寫。隨後,我們又開始看到一個有趣的趨勢:回到高級框架的趨勢。我要提到的是兩個重要的時刻,這些時刻對此起到了很大的推動作用。第一個是 Horovod 這樣的框架出現,標準化了深度神經網絡訓練的抽象。對於大多數採用隨機梯度下降的系統,Horovod 提供了一個非常通用的接口,可以用於分佈式訓練。然後,出現了「Attention is All You Need」這篇論文,介紹了一種名為 Transformer 的架構和注意力機制。而 Transfomer 目前已成為塊內最具代表性的技術之一,它不僅在 NLP 模型中被廣泛使用,還延伸到了表格數據和視覺模型中。出現了像 Hugging Face 這樣的框架,將 Transformer 架構封裝成了一個非常高級的、易於使用的 API。還有像 PyTorch Lightning 和 Fastai 這樣的現代訓練框架,它們在訓練循環、分佈式訓練和其他方面都提供了很好的抽象。

在 Ludwig 中,我們將這些趨勢結合起來,結合結構化數據和非結構化數據,並使用多對多的數據模式進行訓練。我們將 Ludwig 集成到了 Ray 平台,這樣就能進行分散訓練和超參數搜索。這樣一來,我們可以同時解決之前提到的問題:缺乏靈活性以及在處理大數據問題時的效率問題。

整合結構化和非結構化數據

💻 混合模態訓練的優勢

Ludwig 的優越之處在於它的可擴展性,它不僅能處理傳統的結構化數據,還能處理非結構化數據,同時在一個模型中用於執行多任務學習。Ludwig 是一個低代碼的聲明性框架,用於構建深度神經網絡。它是開源的,GitHub 上有超過七千顆星星的流行框架,並且擁有60多位貢獻者。

在 Ludwig 中,我們側重於這種混合模態訓練的方式。我們不僅僅關注 NLP、表格或計算機視覺等單一領域,而是以抽象的數據類型方式來訓練模型。這使我們能夠將不同的數據類型混合到單個模型中,執行多任務學習,例如二進制預測、回歸和文本生成等。

Ludwig 在 Uber 的生產環境中經過了實戰測試,現在更是成為 Linux 基金會人工智能和數據基金會的一員。在 Ludwig 的核心,我們有一種稱為編碼器-解碼器架構的方法,簡稱 ECD。它的工作方式是,不再關注不同層次的維度,而是專注於數據輸入和輸出。Ludwig 會根據您的數據集提供的信息,對數據進行預處理,將其編碼成深度學習框架能理解的表示形式,然後使用結合器層將所有不同的輸入結合在一起,進行一些處理,最後將它們解碼成您想要預測的模型輸出。

這種架構非常靈活,能夠擴展到各種不同的問題上。例如,如果您有一些文本輸入,並且想要預測一些數值,那就是一個典型的回歸問題。如果您有文本數據並且想要預測一個類別,那就是一個文本分類問題。同樣地,如果您有兩個不同的音訊信號並且想要確定這兩個信號是否相同,那就是一個語音驗證問題。您可以將這一思路擴展到各種不同的問題上,因為 Ludwig 的靈活性能夠解決您可能需要解決的所有問題。

Ludwig和Ray的集成

🔗 分散訓練和超參數搜索的優點

我們將 Ludwig 集成到了 Ray 平台,這樣就能夠進行分散訓練和超參數搜索。這解決了先前提到的靈活性和效率問題。

在之前的 Ludwig 實現中,我們主要關注在本地計算機上單機開發的方式。我們將數據從本地磁盤讀入內存使用 pandas 處理,在轉換爲 numpy數組後使用 TensorFlow 進行訓練和評估。這種方式有一些限制,例如數據必須放入內存中,不能進行海外處理等等。

現在,通過 Ludwig on Ray 的方式,我們可以在不更改任何代碼的情況下,使用相同的配置文件來處理大量的數據集。我們能夠進行海外執行和並行執行,這些都是基於 Ray 的功能。

使用 Ludwig on Ray,我們可以直接從遠程數據源(如 S3)或數據倉庫(如 Snowflake)讀取數據,進行數據處理,將其轉換為變換後的數據,並存儲為部分。隨後,我們可以使用 hoverbod on ray 進行分散訓練,對部分瞭模型進行訓練,最後使用dask和Ray進行分佈式TensorFlow進行批量預測。

所有這些都可以在本地機器上配置並在 Ray 上遠程執行,這得益於 Ray 提供的「無限筆記本電腦」抽象機制。

將 Ludwig 配置為使用 Ray 非常簡單,對 Ludwig 來說並沒有特殊處理,以下是在頂部添加幾行所需更改的配置示例:

from ray import tune

config = {
    # Your existing Ludwig config here...
    "trainer": {
        "type": "distributed",
        "parameters": {
            # Your trainer parameters here...
        },
    },
}
tune.run(
    "ludwig train --config your_config.yaml",
    config=config,
    stop={"training_iteration": 10},
)

這個更改只是示例,您可以根據自己的需要對它進行調整。

潛力與挑戰

💡 未來的發展和潛力

Ludwig 的未來發展仍然充滿著潛力。我們創辦了一家名為 Predabase 的新公司,旨在將 Ludwig 和 Ray 平台帶入企業。我們的重點是快速生產化,以及以最小的成本在組織中實現模型的價值。

具體來說,我們希望將 Ludwig 提供的簡單易用性和靈活性與現有的數據基礎設施相結合,創建一種我們稱之為「預測數據庫」的新型抽象機制。因為我們目前還處於隱秘運作階段,所以對於我們的計劃還沒有太多可以展示的內容,但是我們希望能在今天給大家一個快速的預覽。

通過這種「預測數據庫」,我們的目標是使機器學習過程變得像使用 SQL 這樣的查詢語言一樣簡單和快捷。我們將為您的數據庫提供一些工具,這些工具與 Ludwig 和 Horvath 能夠非常直接地集成在一起,讓您能夠以非常熟悉的 SQL 方式表達您想要預測的意圖。

這將成為一種新型的抽象機制,結合了我們的預測數據庫、您現有的數據基礎設施以及 Ludwig 和 Horvath,從而為您的組織創造價值。

目前我們仍處於隱秘運作階段,無法透露太多詳細信息。但如果您對了解更多信息感興趣,請隨時與我聯繫,我的郵箱是 travis@predabase.com。同時,如果您正在尋找新的工作機會,也歡迎隨時聯繫我們,因為我們正在招聘。

非常感謝大家今天能抽空參加我的演講!我希望您能去了解一下 Ludwig,對它有所了解,隨時隨地向我提問。再次感謝大家!

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.