我很高興與大家分享 LakeFS Mount 現已推出。 LakeFS Mount 允許將儲存庫(或儲存庫中的特定路徑)安裝為本機檔案系統。
為什麼選擇lakeFS山?
在本地處理大型資料集可以對執行和工作流程進行更多控制。
然而,這可能會帶來一些需要 LakeFS Mount 幫助解決的權衡:
Git 整合– 在 Git 儲存庫中安裝路徑會自動追蹤資料版本,並將其與您的程式碼連結。檢查較舊的程式碼版本時,您將獲得相應的資料版本,從而防止僅本地成功。
速度——保證資料一致性和效能。 LakeFS 預取會在亞毫秒內將元資料提交到本機快取中,讓您可以立即運作,而無需等待大型資料集下載。
智慧型-lakeFS Mount 有效率地
利用緩存,準確預測哪些物件將被存取。這樣可以在處理開始之前對元資料和資料檔案進行精細預取。
一致性-在本地工作存在使用過時或不正確的資料版本的風險。透過 Mount,您可以使用一致、不可變的版本,確保您確切地知道正在使用的資料版本。
讓我們探討一下促使我們開發lakeFS Mount 的技術細節。
什麼是坐騎?
檔案系統掛載是將本機裝置或遠端位置呈現為本機目錄的能力。它是所有作業系統都提供的基本功能,並被系統管理員和開發人員廣泛使用。
掛載物件存儲
將物件儲存位置安裝為 POSIX 目錄並不是新概念(請參閱S3 Mountpoint、gcs-fuse和blobfuse)。這些
工具在物件儲存之上提供了一個
抽象層,使其能夠在電腦上顯示為目錄。讀取和寫入物件的行為與從本機磁碟機讀取和寫入檔案完全相同。這樣做的好處有幾個原因:
易於整合:通常,與物件 土耳其 WhatsApp 號碼數據 儲存互動需要 SDK 和自訂程式碼來處理網路呼叫、身份驗證和配置。另一方面,讀取和寫入本機檔案無所不在,幾乎所有框架、工具或語言都支持
相容性:這種方法允許開發人
員實作一次邏輯,使用本機目錄,然後在需要時將該目錄切換到已安裝的物件儲存。
關注點分離:資料科學家可以擔心業務邏輯,而不必擔心 IO 可擴展性,而軟體開發人員和操作員可以透過簡單地用掛載替換輸入目錄來採用該邏輯並進行更大規模的應用。
然而,雖然這些好處是真實的,但現有的物件儲存掛載解決方案在效能和一致性方面往往存在不足,尤其是在機器學習和深度學習環境中使用時。在本文中,我們將回顧現有物件儲存掛載解決方案的不足,以及
為何lakeFS作為資料版本控制系
統最適合提供高效能且一致的物件儲存掛載。
為什麼安裝對象儲存通常會導致效能不佳
應用程式(和庫)期望 的男孩正在修剪草坪 割草 檔案系統元資料操作非常便宜
以下是一個簡單的範例:請參閱在 ML 應用程式中常見的一小段程式碼:
讓我們運行一下strace看看它的作用:
複製程式碼
請參閱下面的摘要,我們發現一行 Python 實際上觸發了 64,344 個檔案系統操作,只是為了查找元資料。
現在,假設每個此類操作都必 人工智慧數據 須轉換為具有約 10-50 毫秒延遲的HTTP 呼叫(目前平均延遲為 31 微秒)。即使在我們讀取單一位元組的實際資料之前,這也會大大減慢我們的腳本速度。
一些實作(例如S3 Mountpoint)透過允許使
用者透過快取元資料回應犧牲一些一致性來提高效能,從而克服了這個問題。
這減輕了部分延遲,但不是全部 – 許多應用程式仍然會嘗試stat每個檔案(或readdir每個目錄),期望此操作非常便宜 – 快取將有助於每個檔案只執行一次此操作,但每個第一次遇到的文件仍然會產生不可避免的往返。
(深度學習)應用程式通常會讀取多次相同文件
訓練深度神經網路需要在訓練網路時多次傳遞相同的輸入,因此實際上它的瓶頸通常是 I/O,而不是那些昂貴的 GPU。實際上,這意味著相同的文件在相對較快的連續時間內被訪問數千次。最佳地為 GPU 提供資料不僅取決於整體吞吐量(物件儲存在這方面表現出色),還取決於延遲。