中國科學院計算所:從 NFS 到 JuiceFS,大模型訓推平臺存儲演進之路

中科院計算所在建設大模型訓練與推理平臺過程中,模型規模與數據集數量呈爆發式增長。最初采用簡單的裸機存儲方案,但很快面臨數據孤島、重復冗余、管理混亂和資源利用不均等問題,于是升級到了 NFS 系統。然而,隨著使用強度增加,NFS 的瓶頸日益凸顯:高峰期訓練任務嚴重延遲甚至完全停滯,多用戶并發時系統性能斷崖式下降,存儲擴容困難且缺乏有效的數據一致性保障。這些問題嚴重影響到了實驗室研究人員的使用,迫使我們尋求更先進的存儲方案。

經過對多種開源存儲系統的評估對比,我們選擇了 JuiceFS 。我們的架構采用 Redis 進行高性能元數據管理,同時構建了自有 MinIO 集群作為底層對象存儲,這一架構完美解決了模型訓練場景中的數據讀寫瓶頸、元數據訪問延遲以及計算資源之間的存儲互通問題。

01 大模型訓推平臺存儲需求

我們的平臺是面向實驗室內部的大模型訓練與推理一體化平臺,核心功能聚焦于模型、數據集和用戶代碼的統一管理。在資源調度方面,平臺通過 Kubernetes 對實驗室內所有服務器的計算資源進行集中管理與分配,提升整體算力利用效率。同時,平臺還提供模型相關的服務能力,如內置模型評估列表,并支持將模型一鍵部署為應用服務,方便實驗室內的師生共享與調用。

首先,平臺需具備存儲模型文件與數據集文件的基礎功能。在此基礎上,我們更期望能實現模型文件與數據集文件的快速使用。在項目初期,我們曾采用一種尚不成熟的方案,即在啟動容器(Pod)時,通過克隆方式將模型文件復制到容器內以啟動容器。然而,由于平臺主要面向大模型存儲,模型文件體積龐大,導致該流程效率低下。

其二,支持 Container Storage Interface(CSI),平臺底層采用 K8s 架構,若缺乏 CSI 支持,諸多 K8s 特性將無法使用,可能引發運維難題,甚至需要額外進行配置工作

此外,平臺還需支持 POSIX 協議。目前,多數深度學習處理框架,如 Transformer 和 TensorFlow,均基于 POSIX 協議構建。若平臺不支持該協議,則需自行實現存儲協議層,這將增加開發復雜度與工作量。

最后,存儲配額管理。實驗室的存儲資源有限,若不對用戶存儲進行限制,單個用戶可能過度占用存儲空間,導致資源迅速耗盡。同時,缺乏配額管理也將影響對未來存儲需求的準確評估與合理規劃。

02 平臺存儲面臨的挑戰及優化歷程

早期存儲架構及問題

項目初期,鑒于底層采用 K8s 架構,存儲版本管理借鑒了 Hugging Face 的模式,選用 Git 進行管理,涵蓋分支與版本控制。然而,實踐過程中發現,該方案存在明顯弊端。實驗室的學生與教師群體,尤其是學生,對 Git 操作不夠熟悉,導致使用過程中問題頻發。

在存儲架構設計上,最初采用了極為簡單的方案:啟動 Pod 時掛載本地磁盤,通過 K8s PVC 實現磁盤掛載。此方案的優勢在于速度快,但缺陷同樣突出。由于眾多同學同時使用,Pod 可能分布于不同節點,每個節點均需同步模型文件,造成大量資源浪費。

NFS 方案嘗試及局限

為解決上述問題,我們引入了 Network File System(NFS)替代純硬盤方案。NFS 作為成熟方案,具有搭建簡便的優點,尤其契合實驗室運營團隊規模較小的實際情況。同時,NFS 獲得了官方 K8s CSI 的支持,進一步提升了其吸引力。

在項目初期,NFS 方案表現尚可。當時平臺僅在組內小范圍使用,用戶數量少,訓練與微調任務不多,模型數據量也有限。但隨著項目逐步完善,進入全實驗室內測階段,用戶數量激增,模型與數據量大幅增加,NFS 方案的局限性逐漸顯現。

一方面,大模型文件數量增多,磁盤占用率持續攀升。由于采用本地磁盤,擴容操作繁瑣復雜。另一方面,使用 NFS 需自行管理存儲,增加了管理難度。更為關鍵的是,隨著用戶數量的增加,性能瓶頸問題凸顯,模型訓練與推理速度顯著變慢。例如,原本僅需幾十小時即可完成的模型訓練任務,在用戶數量增多后,耗時大幅延長,甚至出現一個周末過去仍未訓練完成的情況。

此外,NFS 缺乏分布式支持,也未找到理想的分布式解決方案。若強行實現,只能復制 NFS 實例,這不僅無法解決單點故障問題,反而可能因服務器宕機導致整個集群存儲癱瘓。

03 JuiceFS 方案引入及優勢

為解決上述問題,我們對 JuiceFS 進行了深入調研,并最終選定其作為新的存儲方案。JuiceFS 采用數據與元數據分離存儲的架構。文件數據本身會被切分保存在對象存儲,而元數據則可以保存在 Redis、MySQL、TiKV、SQLite 等多種數據庫中,用戶可以根據場景與性能要求進行選擇。

在底層對象存儲選擇上,實驗室內部此前已搭建了 MinIO 集群,且運維團隊對 MinIO 較為熟悉,因此未進行過多調研,便直接采用。同時,考慮到 Redis 搭建便捷且實驗室內部已有 Redis 集群,可直接復用,故選用 Redis 作為元數據引擎。

然而,在后續使用過程中,我們發現自行維護對象存儲面臨諸多困難。運維團隊在存儲管理方面經驗不足,導致各類問題頻發。鑒于此,我們計劃在未來對存儲架構進行優化升級:將自行搭建的 MinIO 集群替換為商業對象存儲服務,以提升存儲的穩定性與可靠性;將 Redis 升級為 TiKV,以增強分布式存儲能力與性能表現。

JuiceFS 的優勢

我們之所以選擇 JuiceFS,主要基于以下幾個關鍵因素:

  • 高性能與彈性存儲:這是我們極為看重的一點。高性能存儲能夠顯著提升模型的推理與訓練速度,從而優化整體業務處理效率,滿足平臺對高效運算的需求。
  • 簡單易用與分布式架構:JuiceFS 使用簡便,降低了使用門檻與運維復雜度。作為分布式文件系統,它有效規避了單點故障風險,保障了存儲系統的穩定性和可靠性,為業務連續性提供了有力支撐。
  • K8s 支持:與底層 K8s 架構深度兼容,便于在容器化環境中進行部署與管理,提升了資源調度與應用的靈活性。
  • POSIX 支持:遵循 POSIX 協議,與大多數深度學習框架(如 Transformer、TensorFlow 等)無縫適配,避免了協議層面的適配難題,簡化了開發流程。
  • 配額管理:提供精細化的存儲配額管理功能,可對用戶存儲空間進行合理限制,防止個別用戶過度占用存儲資源,保障了存儲資源的公平分配與有效利用。

JuiceFS 的實用功能

在 JuiceFS 的實際使用過程中,我們發現了諸多超出預期的實用功能,為平臺運營與用戶體驗帶來了顯著提升:

  • 緩存預熱功能:在部署階段,我們利用 JuiceFS 的緩存預熱功能,將常用的大模型數據提前加載到常用計算節點的緩存中。如此一來,當同學使用這些計算節點進行模型推理或訓練時,能夠直接從緩存中快速讀取數據,大幅縮短數據加載時間,顯著提升任務執行效率。
  • 快速克隆功能:JuiceFS 支持通過元數據克隆實現快速數據復制。鑒于我們內部存在將存儲在文件系統中的文件克隆到實際存儲的同步機制,該功能有效滿足了快速數據復制的需求,提高了數據同步效率,降低了數據遷移成本。
  • 與 Prometheus 和 Grafana 的監控集成:JuiceFS 具備與 Prometheus 和 Grafana 監控系統的集成能力,使我們能夠輕松將其接入現有的監控體系。通過統一的監控平臺,我們可以實時、全面地掌握存儲系統的運行狀態、性能指標等關鍵信息,便于及時發現并解決潛在問題,保障系統穩定運行。
  • 回收站功能:以往使用 NFS 時,曾出現學生誤刪工作代碼且因未做異步備份而無法找回的尷尬情況。JuiceFS 的回收站功能有效解決了這一問題,當用戶誤刪文件時,文件會暫時存放在回收站中,在一定時間內可進行恢復操作,避免了因誤刪導致的數據丟失風險,保障了用戶數據的安全性與完整性。
  • 控制臺功能:JuiceFS 控制臺提供了對所有區域中與 JuiceFS 相關的 PV(持久化卷)和 PVC(持久化卷聲明)的集中管理功能。通過控制臺,運維人員可以方便地查看、監控和管理存儲資源,簡化了運維流程,提高了管理效率。
  • SDK 支持:早在 JuiceFS SDK 商業版上線之初,我們便予以關注。后續,我們計劃針對 SDK 開展相關嘗試,探索其在業務場景中的更多應用可能性,以進一步挖掘 JuiceFS 的潛力,為平臺發展注入新的動力。

JuiceFS 部署實踐

在開發環境中,我們采用 Helm 進行 JuiceFS 的部署。Helm 的部署方式極為簡便,僅需修改 values.yaml 配置文件,即可實現一鍵部署,且在部署過程中基本未遭遇明顯阻礙。

不過,在部署過程中仍遇到一個小問題。由于實驗室內部服務器集群處于內網環境,禁止直接連接外網,我們搭建了內網鏡像倉庫用于存儲 JuiceFS 鏡像。然而,在修改 values.yaml 文件后進行部署時,發現部署失敗。經排查,系統在嘗試拉取 juicefs.mount 鏡像文件時出現問題,推測此鏡像拉取需要額外配置。隨后,我們在官方配置文檔中找到定制化鏡像的相關說明,通過使用定制化鏡像成功解決了部署問題。

使用 JuiceFS 的收益

緩存與模型預熱
為加速模型推理過程,我們啟用了 JuiceFS 的緩存和模型預熱功能。在模型推理任務執行前,提前將相關數據預熱至緩存中。當實際推理任務啟動時,系統可直接從緩存中讀取數據,避免了頻繁從底層存儲讀取數據帶來的性能損耗,顯著提升了推理效率。

目錄配額管理
我們為實驗室的每位學生和教師分配了獨立的目錄配額。通過這種精細化的配額管理,有效控制了每個賬號的存儲資源使用量,防止個別用戶過度占用存儲空間,確保了存儲資源的公平分配與合理利用。同時,基于目錄配額,我們計劃在內部構建類似于算力資源的計費體系,依據用戶對存儲資源的占用情況進行費用核算,以實現資源的精細化管理。

只讀模式設置
對于部分官方模型文件,為保障其完整性與安全性,我們設置了只讀模式。在該模式下,學生無法對這些模型文件進行修改操作,避免了因誤操作或惡意修改導致模型文件損壞或數據泄露的風險。

控制臺功能啟用
啟用 JuiceFS 控制臺后,運維人員能夠實時監控訓練過程中所有 PV(持久化卷)和 PVC(持久化卷聲明)的狀態。通過控制臺,運維人員可以直觀地查看存儲資源的使用情況、性能指標等信息,及時發現并解決潛在問題,為存儲系統的穩定運行提供了有力保障。

動態配置與存儲細分
在存儲架構設計上,我們首先掛載一個大的動態存儲卷,然后在底層將其細分至每個學生和教師。這種動態配置方式能夠根據實際需求靈活分配存儲資源,提高了存儲資源的利用率,同時也便于對不同用戶的存儲使用情況進行獨立管理和監控。

04 未來展望

當前存儲架構中,底層采用對象存儲,并劃分為兩個 S3 桶:S3 桶 1 和 S3 桶 2。其中,git 和 git lfs 文件存儲在 S3 桶 1 中。JuiceFS 會定期從 S3 桶 1 同步文件,以確保數據的實時性和一致性。

這樣的架構我們也是遇到了一些問題:

  • 存儲冗余:由于采用上述同步機制,同一個大文件可能會在存儲系統中保存兩份,導致存儲空間被大量占用,增加了存儲成本。
  • Git 倉庫可拓展性弱:實驗室使用的開源 GitLab 倉庫在可拓展性方面存在不足。例如,在創建 Git 用戶時,不僅需要在自身的用戶表中創建用戶信息,還需在開源 GitLab 中再次創建用戶,操作流程繁瑣,增加了管理成本。
  • 大文件同步效率低:以往架構中,JuiceFS 從 Git 倉庫同步大文件時采用 git 克隆方式,這種方式在處理大模型文件時效率極低,導致同步過程緩慢,影響了整體業務處理效率。

未來我們準備去做一些優化以解決上述問題和優化我們的平臺使用:

優化文件同步機制
針對大文件同步效率低的問題,我們計劃對開源 Git 服務端進行自定義開發,構建一個統一的文件處理中間層。在該中間層中,利用 JuiceFS 的元數據克隆功能實現文件同步。相較于傳統的 git 克隆方式,元數據克隆能夠顯著提高同步速度,快速完成模型文件的同步任務,提升整體業務流程的效率。

SDK 定制開發
為進一步提升用戶體驗,我們計劃對 SDK 進行定制開發,重點針對 Git 客戶端或 Transformer 庫進行優化。通過集成 JuiceFS 的快速克隆功能,使實驗室的老師和同學即便使用自有計算資源,也能夠快速在自己的機器上獲取并使用模型文件和數據集文件。

增強權限管理功能
目前,社區版 JuiceFS 似乎不支持存儲文件的權限管理。為滿足實驗室對數據安全和管理的嚴格要求,我們希望在未來能夠對 JuiceFS 進行二次開發,實現更完善的權限管理功能。通過精細化的權限控制,確保不同用戶對存儲資源的訪問和操作符合其權限范圍,保障數據的安全性和隱私性。

希望這篇內容能夠對你有一些幫助,如果有其他疑問歡迎加入?JuiceFS 社區與大家共同交流。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905602.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905602.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905602.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

飛牛NAS本地部署開源TTS文本轉語音工具EasyVoice與遠程使用流程

文章目錄 前言1. 環境準備2. Docker部署與運行3. 簡單使用測試4. 安裝內網穿透4.1 開啟ssh連接安裝cpolar4.2 創建公網地址 5. 配置固定公網地址總結 前言 本文主要介紹如何在fnOS飛牛云NAS使用Docker本地部署一款非常好用的開源TTS文本轉語音工具EasyVoice,并結合…

部署安裝jenkins.war(2.508)

實驗目的:部署jenkins,并與gitlab關聯bulid 所需軟件:jdk-17_linux-x64_bin.tar.gz jenkins.war apache-tomcat-10.1.40.tar.gz 實驗主機:8.10具有java環境,內存最少為4G,cpu雙核 目錄 jdk安裝 …

AEO認證的好處 ,如何快速獲取AEO認證?

AEO認證的好處及快速獲取方法 AEO(Authorized Economic Operator,經認證的經營者) 是海關對符合國際供應鏈安全標準的企業給予的認證,分為 AEO一般認證 和 AEO高級認證。獲得AEO認證可享受多項通關便利,提升企業國際貿…

(01)數字化轉型之采購管理:從計劃到退貨的精細化管控

引言:采購管理對企業運營的關鍵作用 在當今競爭激烈的商業環境中,采購管理已成為企業成本控制和供應鏈優化的核心環節。一項研究顯示,采購成本通常占企業總成本的60%-80%,而高效的采購管理可幫助企業降低5%-15%的采購成本。本文將…

技術視界 | 青龍機器人訓練地形詳解(四):復雜地形精講之斜坡

在前幾篇文章中,我們依次講解了如何創建一個地形、如何將地形添加到訓練環境中,并在上一期深入分析了復雜地形之一——臺階地形的創建方式與訓練意義。本文將繼續聚焦復雜地形訓練中另一類代表性地形——斜坡(Slope)與金字塔斜坡&…

【MySQL】多表連接查詢

個人主頁:Guiat 歸屬專欄:MySQL 文章目錄 1. 多表連接查詢概述1.1 連接查詢的作用1.2 MySQL支持的連接類型 2. 內連接 (INNER JOIN)2.1 內連接的特點2.2 內連接語法2.3 內連接實例2.4 多表內連接 3. 左外連接 (LEFT JOIN)3.1 左外連接的特點3.2 左外連接…

養豬場巡檢機器人的設計與應用研究

摘要 本論文針對傳統養豬場人工巡檢效率低、勞動強度大、數據準確性差等問題,設計了一種適用于養豬場的巡檢機器人。詳細闡述了該機器人的設計思路、技術原理、系統組成及功能特點,并通過實際應用案例分析其在養豬場中的應用效果。研究表明,養…

使用PEFT庫將原始模型與LoRA權重合并

使用PEFT庫將原始模型與LoRA權重合并 步驟如下: 基礎模型加載:需保持與LoRA訓練時相同的模型配置merge_and_unload():該方法會執行權重合并并移除LoRA層保存格式:合并后的模型保存為標準HuggingFace格式,可直接用于推…

適用于 iOS 的 開源Ultralytics YOLO:應用程序和 Swift 軟件包,用于在您自己的 iOS 應用程序中運行 YOLO

?一、軟件介紹 文末提供程序和源碼下載 該項目利用 Ultralytics 最先進的 YOLO11 模型將您的 iOS 設備轉變為用于對象檢測的強大實時推理工具。直接從 App Store 下載該應用程序,或瀏覽我們的指南,將 YOLO 功能集成到您自己的 Swift 應用程序中。 二、…

js關于number類型的計算問題

js中關于number類型的計算 因:在js中,number類型是用于表示數值的基本類型,它遵循 IEEE 754 雙精度浮點數(64 位)標準。這導致在某些計算中可能出現精度問題。 例:console.log(0.1 0.2); // 0.300000000…

RAG之大規模解析 PDF 文檔全流程實戰

PDF 文檔在商業、學術和政府領域無處不在,蘊含著大量寶貴信息。然而,從 PDF 中提取結構化數據卻面臨著獨特的挑戰,尤其是在處理數千甚至數百萬個文檔時。本指南探討了大規模解析 PDF 的策略和工具。 PDF解析挑戰 PDF 的設計初衷是為了提供一致的視覺呈現,而非數據提取。這…

TypeScript:類

一、基本概念 TypeScript 類是基于 ES6 類的語法擴展,增加了類型注解和訪問修飾符等特性,提供了更強大的面向對象編程能力。 二、基本語法 class Person {name: string;age: number;constructor(name: string, age: number) {this.name name;this.ag…

搶購Python代碼示例與技術解析

引言:搶購系統的技術挑戰 在當今電子商務高度發達的時代,搶購活動已成為各大電商平臺吸引用戶的重要手段。然而,高并發、低延遲的搶購場景對系統設計提出了嚴峻挑戰。本文將提供一個完整的Python搶購代碼示例,并深入分析其技術實…

實戰分析Cpython逆向

Cpython逆向 Python代碼轉換為C代碼的時候,將會大大增加框架代碼量。 1、正向py->c 先有正向,再有逆向 pip install cython 寫一個簡單的pyx文件 .pyx 文件是由 Cython 編程語言 "編寫" 而成的 Python 擴展模塊源代碼文件 print(&qu…

Modbus轉IEC104網關(三格電子)

產品概述 Modbus轉IE104網關型號SG-TCP-IEC104,是三格電子推出的工業級網關(以下簡稱網關),主要用于Modbus RTU/TCP/ASCII數據采集、DLT645-1997/2007數據采集,可接多功能電力儀表、溫控儀、電表等,將采集…

智能工具協同賦能STEM教育科研|探索LLM大語言模型和數學軟件Maple的創新實踐

LLM 與 Maple:開啟 STEM 教育科研新范式 在當今數字化浪潮下,教育與科研領域正面臨著前所未有的變革機遇。大語言模型(LLM)的橫空出世,為知識生成、問題求解等帶來了全新思路;而數學軟件 Maple 以其強大的…

專項智能練習(定義判斷)_DA_01

1. 單選題 熱傳導是介質內無宏觀運動時的傳熱現象,其在固體、液體和氣體中均可發生。但嚴格而言,只有在固體中才是純粹的熱傳導,在流體(泛指液體和氣體)中又是另外一種情況,流體即使處于靜止狀態&#xff0…

pandas讀取pymysql和解析excel的一系列問題(版本不匹配)

pandas讀取pymysql和解析excel的一系列問題,大部分都是版本不匹配導致的 尤其是pandas,numpy,pymysql,openpyxl不匹配導致 from sqlalchemy import create_engine import numpy as np import pandas as pd conncreate_engine("mysqlpymysql://user:passhost:3…

【中級軟件設計師】網絡攻擊(附軟考真題)

【中級軟件設計師】網絡攻擊(附軟考真題) 目錄 【中級軟件設計師】網絡攻擊(附軟考真題)一、歷年真題二、考點:網絡攻擊1、拒絕服務攻擊(DoS攻擊)2、重放攻擊3、特洛伊木馬4、網絡監聽5、SQL注入…

20250515配置聯想筆記本電腦IdeaPad總是使用獨立顯卡的步驟

20250515配置聯想筆記本電腦IdeaPad總是使用獨立顯卡的步驟 2025/5/15 19:55 百度:intel 集成顯卡 NVIDIA 配置成為 總是用獨立顯卡 百度為您找到以下結果 ?要將Intel集成顯卡和NVIDIA獨立顯卡配置為總是使用獨立顯卡,可以通過以下步驟實現?&#xff…