跳轉到主要內容
工程的博客

Lakehouse複製任何東西:機器學習與數據

分享這篇文章

機器學習證明向組織和項目——添加前所未有的價值是否加速創新,個性化、需求預測和無數其他的用例。然而,機器學習(ML)利用來自各種數據源的數據不斷變化的生態係統的工具和依賴關係,使得這些解決方案不斷在變化,難以複製。

雖然沒有人能保證他們的模型是100%正確的,實驗,有一個可再生的模型和結果更有可能比那些不被信任。可再生的毫升實驗意味著我們能夠至少複製如下:

  • 培訓/驗證/測試數據
  • 計算
  • 環境
  • 模型(和相關hyperparameters等。)
  • 代碼

然而,毫升的再現性比似乎是一個更艱巨的任務。你需要訪問相同的底層數據模型訓練,但是你怎麼能保證數據沒有改變?你的版本控製數據除了源代碼?最重要的是,哪些庫(和版本),hyperparameters和模型被使用?更糟的是,代碼成功運行的端到端嗎?

在這個博客中,我們將介紹如何lakehouse架構建立在三角洲湖再加上開源庫MLflow幫助解決這些複製的挑戰。特別是,這個博客涵蓋了:

  • Lakehouse架構
  • 數據版本控製三角洲湖
  • 跟蹤實驗MLflow
  • 端到端重現性與磚

什麼是數據lakehouse(以及為什麼要關注)

數據科學家,你可能不會關心你的基礎數據來自一個CSV,關係數據庫等。但是假設您正在使用訓練數據每晚更新。你今天建立一個模型與給定組hyperparameters,但明天,你想改善這個模型和調整一些hyperparameters。嗯,沒有模型的性能改善,因為更新hyperparameters還是因為底層數據改變了?沒有能夠版本數據進行比較,沒有辦法知道!你可能會說,“好吧,我就快照數據”但這可能是非常昂貴的,馬上過期,難以維護和版本。你需要一個單身的事實來源你的數據是可伸縮的,總是最新的,沒有快照整個數據集提供了數據版本控製。

這就是lakehouse進來。Lakehouses結合數據倉庫和數據的最佳品質湖泊。現在,你可以有數據的可伸縮性和低成本的存儲與速度和湖泊事務保證數據倉庫。這使您能夠有一個單一的事實來源數據,和你永遠不需要經曆過時,不一致的數據。完成這個湖,向現有數據與元數據管理優化性能,消除了需要複製數據到數據倉庫。數據版本控製,可靠和容錯的事務,和快速查詢引擎,同時保持開放標準。現在,你可以有一個單一的解決方案工作負載——從所有主要數據流分析BI,數據科學和人工智能。這是新標準。

這在理論上聽起來不錯,不過你怎麼開始?

數據版本控製三角洲湖

三角洲湖是一個開源項目,lakehouse架構。雖然有一些開源lakehouse項目,我們讚成三角洲湖的緊密集成與Apache火花™及其支持以下特性:

  • ACID事務
  • 可擴展的元數據處理
  • 時間旅行
  • 模式演化
  • 審計的曆史
  • 刪除和更新
  • 統一的批處理和流

好毫升始於高質量的數據。通過使用三角洲湖和上述的一些特性,您可以確保您的數據科學項目開始在一個堅實的基礎(基礎,得到它,lakehouse嗎?)。不斷變化和更新數據,ACID事務確保數據完整性維護在並發的讀和寫,是否批或流。這樣,每個人都有一個一致的數據視圖。

三角洲湖隻有追蹤“δ”或以後的更改之前的提交,並將它們存儲在三角洲地區的事務日誌。因此,這使時間旅行基於數據版本,這樣你就可以保持不變而更改的數據模型,hyperparameters,等等。但是,你不鎖在一個給定的模式與δ,它支持模式演化,所以你可以添加額外的特征作為輸入到你的機器學習模型。

我們可以查看事務日誌使用的變化曆史()方法三角洲api:

三角洲曆史API

這使得很容易跟蹤所有更改底層數據的血統,確保您的模型也可以複製,它是建立在完全相同的數據。您可以指定一個特定版本或時間戳從三角洲湖當你載入數據。

version =1wine_df_delta = spark.read。格式(“δ”).option (“versionAsOf”版).load (data_path)#版本的時間戳時間戳=2021 - 03 - 02 - t15:33:29.000 + 0000的wine_df_delta = spark.read。格式(“δ”).option (“timeStampAsOf”時間戳).load (data_path)

跟蹤模型與MLflow

一旦你能夠可靠地重現你的數據,下一步是複製你的模式。的開源庫MLflow包括4毫升生命周期管理組件,大大簡化了實驗重現性。

4組件MLflow

MLflow跟蹤允許您日誌hyperparameters、指標、代碼、模型和其他構件(如文件、陰謀、數據版本,等等)到一個中央位置。這包括日誌三角洲表和相應的版本為每個運行確保數據一致性(避免需要複製或快照整個數據)。讓我們看看一個例子的一個隨機森林模型葡萄酒數據集,與MLflow日誌我們的實驗。整個代碼中可以找到這個筆記本

mlflow.start_run ()作為運行:#日誌參數n_estimators =1000年max_features =“√”params = {“data_version”:data_version,“n_estimators”:n_estimators,“max_features”:max_features}mlflow.log_params (params)#火車模型和日誌射頻= RandomForestRegressor (n_estimators = n_estimators,max_features = max_features,random_state =種子)射頻。fit (X_train y_train)mlflow.sklearn.log_model (rf,“模型”)#日誌指標指標= {“rmse”:rmse,“美”:美,r2的:r2}mlflow.log_metrics(指標)

結果記錄到MLflow跟蹤用戶界麵,您可以通過選擇實驗圖標在右上角的磚筆記本(除非你提供不同的實驗位置)。從這裏,你可以對比運行時,過濾器根據某些指標或參數等。

MLflow UI

除了手動記錄參數,指標等等autologging功能對於一些內置的味道,MLflow支持模型。例如,自動記錄一個sklearn模型,隻需添加:mlflow.sklearn.autolog ()和它將日誌參數、指標、產生混淆矩陣分類問題,當一個多了estimator.fit ()被稱為。

模型跟蹤服務器,登錄時MLflow創建一個標準模型的包裝格式。它會自動創建一個conda。yaml文件,該文件概述了必要的渠道,需要重新創建環境的依賴性和版本需要加載模型。這意味著您可以輕鬆地鏡子的環境模型MLflow跟蹤和記錄。

conda。yaml登錄MLflow UI

當使用管理MLflow磚平台上,有一個Beplay体育安卓版本“複製運行”功能,允許你複製培訓運行的點擊一個按鈕。它自動快照數據磚筆記本,集群配置和任何額外的庫你可能已經安裝了。

再生磚上運行選項

看看這個複製運行功能,看看你可以複製自己的實驗或者你的同事!

把它放在一起

現在您已經了解了Lakehouse架構與三角洲湖和MLflow地址數據,模型,代碼和環境毫升再現性挑戰,看一看這個筆記本為自己和繁殖實驗!即使有能力複製上述物品,可能仍有一些東西你的控製之外。無論如何,構建毫升解決方案與三角洲湖和MLflow磚解決絕大多數問題的人臉上當毫升繁殖實驗

想了解其他問題你可以解決數據lakehouse ?最近讀到這博客的挑戰傳統的兩層數據架構和lakehouse架構是如何幫助企業克服它們。

免費試著磚
看到所有工程的博客的帖子
Baidu
map