從 HPC 到 AI:探索文件系統(tǒng)的發(fā)展及性能評(píng)估

隨著 AI 技術(shù)的迅速發(fā)展,模型規(guī)模和復(fù)雜度以及待處理數(shù)據(jù)量都在急劇上升,這些趨勢(shì)使得高性能計(jì)算(HPC)變得越來(lái)越必要。HPC 通過(guò)集成強(qiáng)大的計(jì)算資源,比如 GPU 和 CPU 集群,提供了處理和分析大規(guī)模數(shù)據(jù)所需的算力。

然而,這也帶來(lái)了新的挑戰(zhàn),尤其是在存儲(chǔ)系統(tǒng)方面,包括如何有效處理大量數(shù)據(jù)、確保數(shù)據(jù)訪問的高效性以及如何控制成本和運(yùn)維管理。分布式文件系統(tǒng),作為一種高成本效益高的解決方案,正逐漸在 AI 和 HPC 場(chǎng)景中廣泛應(yīng)用。它們通過(guò)跨多個(gè)節(jié)點(diǎn)分布存儲(chǔ)資源,有效地處理和管理大數(shù)據(jù)集,滿足 HPC 對(duì)數(shù)據(jù)存取速度的高要求。

人民大學(xué)在人工智能和計(jì)算機(jī)科學(xué)領(lǐng)域進(jìn)行了多項(xiàng)研究,其高性能計(jì)算中心為科研提供了強(qiáng)有力的支持,并在結(jié)合 HPC 與 AI 應(yīng)用方面積累了一些的經(jīng)驗(yàn)。本文將為大家介紹 HPC、大數(shù)據(jù)及 AI 應(yīng)用的數(shù)據(jù)模式和特性;人大對(duì)幾款主流分布式文件系統(tǒng) Lustre、Alluxio 以及 JuiceFS 也做了初步性能測(cè)評(píng),我們將分享這些測(cè)評(píng)結(jié)果,并介紹常用的性能評(píng)測(cè)工具,希望為選擇 HPC 和 AI 存儲(chǔ)解決方案的用戶提供有價(jià)值的參考。

01 大規(guī)模數(shù)據(jù)應(yīng)用場(chǎng)景:HPC vs 大數(shù)據(jù) vs AI

高性能計(jì)算 (HPC)

高性能計(jì)算(HPC)在科學(xué)研究和工程應(yīng)用中發(fā)揮著關(guān)鍵作用,諸如氣候預(yù)測(cè)、蛋白質(zhì)折疊以及計(jì)算流體力學(xué)等領(lǐng)域均依賴于其提供的計(jì)算能力。與機(jī)器學(xué)習(xí)和人工智能采用的方法不同,HPC ?;谀M和科學(xué)公式推演來(lái)解決復(fù)雜問題。

在 HPC 中,任務(wù)可分為計(jì)算密集型和數(shù)據(jù)密集型。例如,天氣預(yù)測(cè)既需要大量計(jì)算資源模擬天氣變化,又需處理和分析龐大數(shù)據(jù)集。而如分子動(dòng)力學(xué)模擬等計(jì)算密集型任務(wù),則更側(cè)重于計(jì)算處理,對(duì)數(shù)據(jù)依賴較少。

HPC Cluster Architecture

HPC 環(huán)境通常采用高帶寬、低延遲的網(wǎng)絡(luò),如 InfiniBand,以支持快速數(shù)據(jù)傳輸。軟件配置上,多節(jié)點(diǎn)間的高效數(shù)據(jù)通信依賴于如消息傳遞接口(MPI)這樣的標(biāo)準(zhǔn)。

此外,GPU 的應(yīng)用在 HPC 中也日益增多,加速各類計(jì)算任務(wù)。HPC 集群與傳統(tǒng)數(shù)據(jù)中心相比,顯著區(qū)別在于其網(wǎng)絡(luò)配置和共享文件系統(tǒng)的使用,這些特點(diǎn)使得 HPC 能夠有效處理計(jì)算密集型任務(wù)。

大數(shù)據(jù)

區(qū)別于 HPC,大數(shù)據(jù)應(yīng)用在互聯(lián)網(wǎng)公司的運(yùn)用更為普遍,主要是因?yàn)檫@些公司可以持續(xù)收集龐大的用戶數(shù)據(jù)量,如用戶行為和上傳內(nèi)容等。這些通常是非結(jié)構(gòu)化的數(shù)據(jù),比如圖片、音頻和視頻。

在這些公司中,大數(shù)據(jù)工程師常常負(fù)責(zé) ETL 工作,即提取、轉(zhuǎn)換和加載數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù),在那里數(shù)據(jù)會(huì)被加工整理以供分析或機(jī)器學(xué)習(xí)使用。這與 HPC 的計(jì)算密集型任務(wù)不同,大數(shù)據(jù)應(yīng)用更側(cè)重于數(shù)據(jù)的處理和分析。

大數(shù)據(jù)分析架構(gòu)

成本是大數(shù)據(jù)應(yīng)用的一個(gè)重要考量,互聯(lián)網(wǎng)公司傾向于使用性價(jià)比高的標(biāo)準(zhǔn)硬件和開源軟件,以控制成本。例如,Hadoop 這樣的開源軟件因其強(qiáng)大的社區(qū)支持和成熟性而廣受歡迎。互聯(lián)網(wǎng)公司可以根據(jù)自身需求選擇合適的軟件解決方案,無(wú)論是采用開源版本以利用其優(yōu)勢(shì),還是選擇商業(yè)版本以獲得更多支持。

AI

近年來(lái),人工智能(AI)領(lǐng)域的發(fā)展已經(jīng)廣為人知,其工作負(fù)載主要包括訓(xùn)練和推理。特別是隨著大型模型如 GPT 和 Bert 的出現(xiàn),AI 對(duì)高性能計(jì)算(HPC)的依賴日益加深,這些復(fù)雜的模型迫切需要依靠強(qiáng)大的計(jì)算資源來(lái)縮短訓(xùn)練時(shí)間;同時(shí),它們也帶來(lái)了如何高效管理和分析海量數(shù)據(jù)的挑戰(zhàn)。

AI pipeline

在這個(gè)背景下,文件系統(tǒng)面臨特殊要求,尤其是處理眾多小型的圖片或視頻文件時(shí),這些文件通常只有幾 KB 到幾 MB 大小,對(duì) IOPS 提出了高要求。

此外,在 AI 模型的訓(xùn)練過(guò)程中,還有一個(gè)顯著特點(diǎn),即同一份數(shù)據(jù)可能會(huì)被用于多種不同參數(shù)的調(diào)優(yōu)。這意味著算法工程師會(huì)不斷地對(duì)模型結(jié)構(gòu)進(jìn)行調(diào)整和優(yōu)化,包括嘗試不同的參數(shù)設(shè)置、修改網(wǎng)絡(luò)架構(gòu),以及實(shí)驗(yàn)各種優(yōu)化技巧。

因此,AI 模型訓(xùn)練不僅是一個(gè)計(jì)算密集型的任務(wù),同時(shí)也是一個(gè)需要精細(xì)操作和細(xì)致調(diào)整的過(guò)程。這種對(duì)參數(shù)和模型結(jié)構(gòu)不斷調(diào)整的方法是實(shí)現(xiàn)高效、精準(zhǔn) AI 模型的關(guān)鍵。

正是基于這種背景,數(shù)據(jù)預(yù)處理在 AI 模型訓(xùn)練中顯得尤為關(guān)鍵。舉一個(gè)實(shí)際的例子,來(lái)自hugging face 子公司開發(fā)的大型模型展示了數(shù)據(jù)預(yù)處理的重要性。在處理大型模型的數(shù)據(jù)時(shí),他們?cè)O(shè)定了一個(gè)較長(zhǎng)的處理流程。從最初收集的原始外部網(wǎng)頁(yè)數(shù)據(jù)開始經(jīng)過(guò)多次預(yù)處理,如URL 過(guò)濾、去重等步驟,原始數(shù)據(jù)量被大幅壓縮。

通過(guò)下圖可以看到,每個(gè)步驟都在逐漸減少數(shù)據(jù)集的大小。經(jīng)過(guò)一系列處理后,最終只有不到10% 的數(shù)據(jù)量適合用于訓(xùn)練大型語(yǔ)言模型(LLM)。因此,我們看到在大型模型的訓(xùn)練過(guò)程中,數(shù)據(jù)預(yù)處理占據(jù)了大量工作,包括清洗數(shù)據(jù)、提取 HTML 標(biāo)簽、過(guò)濾廣告和文本識(shí)別等復(fù)雜任務(wù)。這些步驟雖然繁重,但對(duì)于保證數(shù)據(jù)質(zhì)量和優(yōu)化訓(xùn)練結(jié)果至關(guān)重要。

來(lái)源:https://arxiv.org/abs/2306.01116

02 AI 應(yīng)用與分布式文件系統(tǒng)的演進(jìn)

首先,讓我們一同簡(jiǎn)單回顧文件系統(tǒng)的演變歷程,其中每一個(gè)階段的新興需求都催生了新一代的文件系統(tǒng)。

  • Lustre 是最早期的文件系統(tǒng)之一,專為高性能計(jì)算(HPC)設(shè)計(jì),由美國(guó)政府資助并由多個(gè)國(guó)家實(shí)驗(yàn)室共同開發(fā),以支持科學(xué)研究。

  • 隨后,Hadoop S3 等文件系統(tǒng)的出現(xiàn)主要是為了應(yīng)對(duì)互聯(lián)網(wǎng)數(shù)據(jù)量的爆炸性增長(zhǎng),與此同時(shí),也出現(xiàn)了Ceph 等面向大數(shù)據(jù)處理的文件系統(tǒng)。這些系統(tǒng)旨在支持大數(shù)據(jù)應(yīng)用。Alluxio 提供了一個(gè)內(nèi)存緩存層。

  • AlexNet 神經(jīng)網(wǎng)絡(luò)等技術(shù)的發(fā)展進(jìn)一步推動(dòng)了文件系統(tǒng)的多樣化。

  • 進(jìn)入到 Kubernetes 時(shí)代,云原生數(shù)據(jù)管理和應(yīng)用逐漸成為焦點(diǎn),眾多新興的數(shù)據(jù)管理系統(tǒng)和應(yīng)用如 JuiceFS 等都是為了適應(yīng)這一環(huán)境而設(shè)計(jì)的。

主流文件系統(tǒng)發(fā)展歷史

文件系統(tǒng)作為數(shù)據(jù)存儲(chǔ)和訪問的基礎(chǔ)設(shè)施,對(duì)于 AI 模型的訓(xùn)練和推理過(guò)程有著直接的影響。將文件系統(tǒng)應(yīng)用于 AI 場(chǎng)景時(shí),往往面臨這兩個(gè)關(guān)鍵挑戰(zhàn)。

  • 對(duì) IOPS 的性能要求:首要挑戰(zhàn)是處理包含大量小文件的數(shù)據(jù)集,如圖片和視頻,這對(duì)文件系統(tǒng)的IOPS提出了高要求。當(dāng)前帶寬通常足夠,但文件系統(tǒng)的 IOPS 處理能力往往限制了性能。

  • 對(duì)兼容性的要求:AI 工作流程的復(fù)雜性和跨業(yè)務(wù)團(tuán)隊(duì)的協(xié)作要求文件系統(tǒng)必須具有高度的兼容性,以支持各種數(shù)據(jù)處理和模型訓(xùn)練工具,確保數(shù)據(jù)能夠在團(tuán)隊(duì)間順暢交換和處理。

為提高性能,一些解決方案采用了 SSD 或 NVMe 等高性能存儲(chǔ)介質(zhì),并實(shí)施本地緩存策略。這里簡(jiǎn)單介紹一下學(xué)術(shù)界的一個(gè)常見概念:Burst Buffer ,主要指通過(guò)臨時(shí)存儲(chǔ)大量數(shù)據(jù)來(lái)緩解傳統(tǒng)存儲(chǔ)系統(tǒng)在處理高速數(shù)據(jù)流時(shí)的瓶頸。在這方面,不同的文件系統(tǒng)提供了各自獨(dú)特的解決方案,會(huì)在下文逐一介紹。

同時(shí),在解決兼容性問題時(shí),提供 POSIX 接口確保了兼容性和可移植性,也能解決用戶的學(xué)習(xí)成本。POSIX 指的是 Linux 操作系統(tǒng)一系列文件接口,可以支持 POSIX 的文件系統(tǒng)可以像操作本機(jī)一樣操作分布式文件系統(tǒng)。但從開發(fā)的角度來(lái)看,實(shí)現(xiàn) POSIX 兼容性可能增加了額外的開發(fā)成本和復(fù)雜性。而 HDFS 和 S3 這類產(chǎn)品則未采用 POSIX 完全的兼容性,簡(jiǎn)化了某些方面的實(shí)現(xiàn),但它們也要求開發(fā)人員或用戶適應(yīng)新的操作模式,這可能涉及改變現(xiàn)有的使用習(xí)慣和學(xué)習(xí)新的工具。

POSIX 與 非 POSIX 文件系統(tǒng)優(yōu)劣勢(shì)對(duì)比

接下來(lái)將分別介紹幾款適用于 AI 場(chǎng)景的文件系統(tǒng),希望能夠幫助用戶更好地理解各個(gè)文件系統(tǒng)在 AI 應(yīng)用的優(yōu)勢(shì)和局限。

Lustre

Lustre 在 HPC 場(chǎng)景中表現(xiàn)出色的原因在于,它從設(shè)計(jì)之初就是為了滿足超級(jí)計(jì)算機(jī)的需求,特別是它對(duì) POSIX 協(xié)議的支持以及使用 C 和 C++ 進(jìn)行開發(fā),這些特性使得 Lustre 非常適合于處理大規(guī)模并行計(jì)算任務(wù)。

Lustre 架構(gòu)圖

Lustre 的架構(gòu)特別適用于典型的超算集群環(huán)境,其中包括使用 InfiniBand 網(wǎng)絡(luò)進(jìn)行高速數(shù)據(jù)傳輸。集群中包含了多個(gè)計(jì)算節(jié)點(diǎn)(Computation)和存儲(chǔ)節(jié)點(diǎn)(Data Management),用于處理元數(shù)據(jù)的 Metadata server,而實(shí)際的數(shù)據(jù)則存儲(chǔ)在對(duì)象存儲(chǔ)(object storage)上。這種設(shè)計(jì)優(yōu)化了對(duì) MPI 應(yīng)用的支持,特別是 MPI-IO,即多個(gè)進(jìn)程同時(shí)對(duì)一個(gè)文件進(jìn)行讀寫的能力,這對(duì)于并行計(jì)算和科學(xué)研究應(yīng)用尤為重要。

雖然在 AI 和機(jī)器學(xué)習(xí)應(yīng)用中,MPI-IO 的直接應(yīng)用可能較少,主要因?yàn)檫@些應(yīng)用的文件操作主要寫入 checkpoint,而不涉及分布式進(jìn)程的直接寫入。然而,對(duì)于需要并行處理和復(fù)雜數(shù)據(jù)交互的科學(xué)計(jì)算應(yīng)用,MPI-IO 這樣的特點(diǎn)仍然極其重要。

在緩存方面,Lustre 文件系統(tǒng)近期提供了一個(gè)功能叫做 PCC(Lustre Persistent Cache on Client)。但實(shí)際操作中,它需要運(yùn)維人員進(jìn)行大量的配置。

Alluxio

我們嘗試部署了Alluxio 作為數(shù)據(jù)緩存層。Alluxio 的設(shè)計(jì)理念主要是作為底層存儲(chǔ)系統(tǒng)(例如 HDFS 或 S3 )之上的緩存,以此加速數(shù)據(jù)訪問的速度,Alluxio 特別適用于大數(shù)據(jù)場(chǎng)景,如配合 Spark 等大數(shù)據(jù)處理系統(tǒng)使用。

在 AI 和機(jī)器學(xué)習(xí)應(yīng)用場(chǎng)景下的測(cè)試表明,性能未達(dá)到預(yù)期。在 AI 場(chǎng)景中,特別是當(dāng)首次請(qǐng)求包含大量小文件的數(shù)據(jù)集時(shí),這一過(guò)程極為緩慢。以 ImageNet 數(shù)據(jù)集為例,我們注意到首次將數(shù)據(jù)加載到 Alluxio 可能需要幾個(gè)小時(shí),這對(duì)性能造成了嚴(yán)重影響。據(jù)最新消息,Alluxio 也針對(duì)這個(gè)問題做了優(yōu)化,提供了專門為 AI 設(shè)計(jì)的存儲(chǔ)方案,目前為商業(yè)版,沒有開源。

Alluxio 架構(gòu)圖

JuiceFS

我們對(duì) JuiceFS 社區(qū)版進(jìn)行了初步的 POC 測(cè)試,尚未在在我們的生產(chǎn)系統(tǒng)中全面部署。

JuiceFS 是一款高性能的云原生分布式文件系統(tǒng)。它的設(shè)計(jì)目標(biāo)是在云環(huán)境下提供高效的數(shù)據(jù)存儲(chǔ)和訪問能力。

在 JuiceFS 中,數(shù)據(jù)被分塊存儲(chǔ)在如 S3 等對(duì)象存儲(chǔ)中;元數(shù)據(jù)則存儲(chǔ)在如 Redis、MySQL 或 PostgreSQL 這樣的數(shù)據(jù)庫(kù)系統(tǒng)中。這種設(shè)計(jì)使得元數(shù)據(jù)管理既高效又靈活??蛻舳送ㄟ^(guò)掛載 FUSE(Filesystem in Userspace)接口來(lái)訪問 JuiceFS,這使得它能夠在多種操作系統(tǒng)上無(wú)縫運(yùn)行。同時(shí),JuiceFS 還為用戶提供了一個(gè)熟悉的文件系統(tǒng)接口 POSIX。另外,JuiceFS 的緩存功能可以直接支持 burst buffer。

JuiceFS 社區(qū)版架構(gòu)圖

從成本角度來(lái)看,JuiceFS 的運(yùn)營(yíng)成本遠(yuǎn)低于傳統(tǒng)的磁盤陣列。這主要得益于其云原生的設(shè)計(jì),能夠有效利用云存儲(chǔ)資源,減少物理硬件的依賴。

03 測(cè)評(píng)工具和 PoC 結(jié)果

在評(píng)估文件系統(tǒng)性能時(shí),iozone, mdtest 和 fio 等 benchmark 工具被廣泛用于測(cè)試 IOPS 和帶寬。然而,標(biāo)準(zhǔn)的 benchmark 工具無(wú)法完整地反映真實(shí)業(yè)務(wù)場(chǎng)景下的需求和負(fù)載特性,為了得到更接近實(shí)際工作負(fù)載的性能評(píng)估,MLPerf 這樣的工具被設(shè)計(jì)出來(lái)。

MLPerf 模擬了真實(shí)的 AI 工作負(fù)載進(jìn)行評(píng)估,提供了一系列的測(cè)試。在計(jì)算機(jī)視覺領(lǐng)域,它可采用 ResNet 模型進(jìn)行測(cè)試;而在文本處理領(lǐng)域,可能會(huì)使用 GPT-3 或 BERT 模型,并在維基百科或 C4 數(shù)據(jù)集上進(jìn)行測(cè)試。

下面這張圖表概述了在不同領(lǐng)域中 AI 性能基準(zhǔn)測(cè)試的標(biāo)準(zhǔn),包括視覺、語(yǔ)言處理和推薦系統(tǒng)等。它指定了每個(gè)測(cè)試所用的數(shù)據(jù)集,旨在達(dá)到的性能目標(biāo)(如準(zhǔn)確率、錯(cuò)誤率等),以及各個(gè)測(cè)試的參考模型(如 ResNet、BERT、GPT-3等)。這為評(píng)估和比較 AI 模型的性能提供了一套統(tǒng)一的框架。

AI 基準(zhǔn)測(cè)試和參考模型

PoC 結(jié)果

以下是我們的初步測(cè)試結(jié)果。我們使用 fio 進(jìn)行了測(cè)試,比較了 Lustre 、JuiceFS 和 XFS。

  • 在 IOPS 和帶寬讀取性能上,配置了全 NVMe 閃存的 Lustre 表現(xiàn)出了非常高的性能。

  • 在 PyTorch 上運(yùn)行 ImageNet 數(shù)據(jù)集的測(cè)試中,所有文件系統(tǒng)完成任務(wù)的時(shí)間都相近,JuiceFS + S3 和 xfs + local SSD 共享最低。

  • 在進(jìn)行大型語(yǔ)言模型(LLM)的 checkpoint 測(cè)試時(shí),Lustre + all flash 只用了1分鐘,遠(yuǎn)快于 Lustre + HDD 的 10 分鐘。

fio 基準(zhǔn)測(cè)試:Lustre vs XFS vs JuiceFS 社區(qū)版

04 小結(jié)

本文分享了 HPC、大數(shù)據(jù)和 AI 等需要處理大規(guī)模數(shù)據(jù)的場(chǎng)景及其數(shù)據(jù)特性。介紹了適用于 AI 場(chǎng)景的常見文件系統(tǒng)及其優(yōu)缺點(diǎn),并展示了人大高性能計(jì)算中心的內(nèi)部測(cè)試結(jié)果。

企業(yè)在選擇文件系統(tǒng)時(shí),不僅要參考 benchmark 結(jié)果,還需考慮實(shí)際業(yè)務(wù)需求和成本。對(duì)于運(yùn)維能力有限的企業(yè),像 Lustre 這樣有著完善支持的文件系統(tǒng)更加合適。而有運(yùn)維能力的公司可能會(huì)傾向于成本效益更高的開源解決方案。最終的選擇需要綜合考慮成本、運(yùn)維能力和其他因素。

希望這篇內(nèi)容能夠?qū)δ阌幸恍椭绻衅渌蓡枤g迎加入 JuiceFS 社區(qū)與大家共同交流。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容