每個(gè)環(huán)節(jié)的數(shù)據(jù)處理需求都是不同的,而且這個(gè)過程在今天仍然沒有一個(gè)統(tǒng)一的范式,數(shù)據(jù)工程師仍在不斷實(shí)驗(yàn)。
所以,對(duì)于數(shù)據(jù)工程師,一個(gè)全功能的 POSIX 文件系統(tǒng)是數(shù)據(jù)處理、清洗環(huán)節(jié)的最佳拍檔。JuiceFS 完全兼容 POSIX ,同時(shí)也支持 HDFS、S3 API 的訪問方式,在數(shù)據(jù)處理、清洗的整個(gè)流程中能很好地支持各種各樣的計(jì)算負(fù)載。
關(guān)于 POSIX 兼容性在 AI 訓(xùn)練中的重要作用,可參考案例,韓國國民搜索 NAVER:為 AI 平臺(tái)引入存儲(chǔ)方案 JuiceFS。
無論是訓(xùn)練或是推理的需求,單一數(shù)據(jù)中心或單一云區(qū)域內(nèi)的 GPU 資源往往無法滿足用戶的全部需求。特別是對(duì)于面向 C 端消費(fèi)者的應(yīng)用,為了提供更佳的用戶體驗(yàn),常常需要在多個(gè)地理區(qū)域進(jìn)行部署。在這種情況下,用戶面臨的挑戰(zhàn)包括數(shù)據(jù)集和模型在多區(qū)域之間的分發(fā)、同步及一致性管理等。
下圖是某用戶在最初使用多云架構(gòu)時(shí)的數(shù)據(jù)管理方案示意圖。用戶需要面對(duì)的挑戰(zhàn)有:
手工維護(hù)上述這套數(shù)據(jù)架構(gòu),運(yùn)維負(fù)擔(dān)可想而見,如果不止兩個(gè)區(qū)域,上面所有的問題將更加復(fù)雜。能否讓上面這些問題自動(dòng)化?JuiceFS 使用鏡像功能滿足了這樣的需求,目前已經(jīng)成了大模型訓(xùn)練和推理業(yè)務(wù)中的必備功能。
在 JuiceFS 數(shù)據(jù)鏡像方案中,所有主站點(diǎn)的數(shù)據(jù)變動(dòng)都會(huì)自動(dòng)同步到各個(gè)鏡像站點(diǎn)。元數(shù)據(jù)同步在確定的時(shí)間窗口內(nèi)完成,同城可以達(dá)到毫秒級(jí)延遲,跨城市在國內(nèi)約為 10-30 毫秒,跨大洲則為亞分鐘級(jí)。在指定時(shí)間窗口中,鏡像站點(diǎn)保證數(shù)據(jù)一致性。
數(shù)據(jù)同步完成的時(shí)間基本上與在網(wǎng)絡(luò)環(huán)境中傳輸一個(gè) 4MB 文件所需的時(shí)間相同。如果數(shù)據(jù)尚未完成同步,從鏡像站訪問文件時(shí),JuiceFS 會(huì)自動(dòng)處理其中的 I/O 路徑,確保文件可以被訪問。這種處理機(jī)制可能會(huì)導(dǎo)致短暫的性能下降,但不會(huì)影響程序正確執(zhí)行。而當(dāng)用戶在鏡像站產(chǎn)生新數(shù)據(jù)并寫入 JuiceFS 時(shí),數(shù)據(jù)會(huì)自動(dòng)回寫到數(shù)據(jù)源站,此時(shí)的寫入性能取決于網(wǎng)絡(luò)狀況。更多實(shí)踐案例:知乎如何在多云架構(gòu)下使用 JuiceFS 鏡像功能?
模型加載就是將模型完整讀取載入顯存的過程,在訓(xùn)練啟動(dòng)、訓(xùn)練恢復(fù)和推理服務(wù)部署時(shí)都包含模型加載過程。模型通常是一個(gè)大文件,隨著模型參數(shù)的增加,模型文件的大小也從幾十 GB 增長到 TB 級(jí)別,通常采用 pickle 或 safetensor 等格式。
加載過程需要從存儲(chǔ)系統(tǒng)中單線程順序讀取,影響速度的關(guān)鍵因素是單線程順序讀取時(shí)的吞吐量,JuiceFS 當(dāng)前版本加載模型吞吐性能為 1500MB/s。經(jīng)過為模型加載場(chǎng)景的優(yōu)化后,讀吞吐可以提升至 3GB/s。
另一方面,以 PyTorch 加載 pickle 格式模型的過程為例,在順序讀取模型文件的同時(shí)會(huì)完成 pickle 數(shù)據(jù)的反序列化,這個(gè)過程也會(huì)消耗時(shí)間。在我們的測(cè)試中,從內(nèi)存盤加載 Llama 2 7B 全精度模型,pickle 格式,26GB 大小,吞吐性能是 2.2GB/s。因?yàn)閮?nèi)存是最快的存儲(chǔ)介質(zhì),所以我們將其視為極限值。從 JuiceFS 加載同樣的模型,吞吐性能為 2.07GB/s,是極限值的 94%。
基于這樣的表現(xiàn),越來越多 AI 用戶在推理業(yè)務(wù)中使用 JuiceFS 存儲(chǔ)模型,加速模型加載,省下了可觀的 GPU 成本。這里可以參考 BentoML 的優(yōu)化經(jīng)驗(yàn),他們是一家模型部署 SaaS 服務(wù),要為客戶管理大量模型,非常關(guān)心模型加載性能。
最近兩年大語言模型(LLM,Large Language Model)飛速發(fā)展,參數(shù)規(guī)模迅速提升,這不僅意味著模型大小在增長,也意味著用于訓(xùn)練的數(shù)據(jù)規(guī)模同時(shí)在更快增加,這對(duì)于存儲(chǔ)系統(tǒng)的挑戰(zhàn)不言而喻。
JuiceFS 的幾方面能力得到了客戶的認(rèn)可:
我們將繼續(xù)與大家分享在 AI 發(fā)展過程中所觀察到的變化,和對(duì)存儲(chǔ)方案的探索,也期待與業(yè)內(nèi)同仁交流與討論。