AI存儲(chǔ):存儲(chǔ)系統(tǒng)在優(yōu)化AI訓(xùn)練中的關(guān)鍵作用 精華
數(shù)據(jù)加載過程與性能優(yōu)化
數(shù)據(jù)加載的復(fù)雜性
數(shù)據(jù)加載并不僅限于從存儲(chǔ)讀取數(shù)據(jù),它涵蓋了解碼、格式轉(zhuǎn)換及數(shù)據(jù)增強(qiáng)等預(yù)處理環(huán)節(jié)。這些步驟通常在CPU上執(zhí)行,目的是將原始數(shù)據(jù)轉(zhuǎn)換為GPU可處理的張量格式。
數(shù)據(jù)加載的步驟
數(shù)據(jù)加載流程可以概括為:
- ?從存儲(chǔ)系統(tǒng)讀取數(shù)據(jù)到系統(tǒng)內(nèi)存。
- 解碼原始數(shù)據(jù)。
- 應(yīng)用數(shù)據(jù)變換和增強(qiáng)操作(如裁剪、尺寸調(diào)整)。
- 將處理后的數(shù)據(jù)傳輸至GPU。?
預(yù)取器的作用
預(yù)取器顯著提升數(shù)據(jù)加載效率,它在模型訓(xùn)練需要數(shù)據(jù)之前,預(yù)先加載數(shù)據(jù)到緩沖區(qū),確保GPU始終有數(shù)據(jù)可用。然而,若訓(xùn)練速度快于數(shù)據(jù)加載和預(yù)處理速度,預(yù)取緩沖區(qū)可能會(huì)被耗盡,導(dǎo)致GPU空閑等待。
性能影響因素
多個(gè)因素會(huì)影響數(shù)據(jù)加載性能,包括樣本大小、批量大小、線程數(shù)量、I/O模式、使用的協(xié)議及緩存效果等。
I/O模式的特性
I/O模式可分為順序和隨機(jī),這取決于具體工作負(fù)載及訓(xùn)練數(shù)據(jù)集的存儲(chǔ)方式。例如,3D U-Net模型的I/O軌跡顯示文件訪問為隨機(jī),而文件內(nèi)部讀取為順序。
數(shù)據(jù)預(yù)處理瓶頸
在處理非結(jié)構(gòu)化數(shù)據(jù)(如圖像、視頻)時(shí),數(shù)據(jù)預(yù)處理環(huán)節(jié)可能成為性能瓶頸。研究表明,某些情況下數(shù)據(jù)預(yù)處理的功耗可與實(shí)際訓(xùn)練功耗相當(dāng)。
解決方案
為應(yīng)對(duì)數(shù)據(jù)預(yù)處理瓶頸,出現(xiàn)了多種解決方案,如將預(yù)處理任務(wù)卸載到GPU或在訓(xùn)練前離線執(zhí)行部分預(yù)處理工作。
檢查點(diǎn)機(jī)制
檢查點(diǎn)的重要性
檢查點(diǎn)是AI模型訓(xùn)練中不可或缺的環(huán)節(jié),定期保存模型狀態(tài)(包括模型權(quán)重、優(yōu)化器狀態(tài)等),以防數(shù)據(jù)丟失并確保訓(xùn)練進(jìn)度在意外情況下不會(huì)完全丟失。此外,檢查點(diǎn)有助于模型調(diào)試和評(píng)估,研究人員可通過分析檢查點(diǎn)數(shù)據(jù)監(jiān)控模型訓(xùn)練過程。
檢查點(diǎn)大小與保存頻率
檢查點(diǎn)大小主要由模型規(guī)模決定,通常每個(gè)參數(shù)需要約4個(gè)字節(jié)。檢查點(diǎn)保存頻率需要權(quán)衡數(shù)據(jù)安全性與訓(xùn)練效率,保存過于頻繁可能增加存儲(chǔ)開銷與GPU等待時(shí)間,當(dāng)前沒有統(tǒng)一的保存頻率標(biāo)準(zhǔn),具體取決于模型規(guī)模和訓(xùn)練時(shí)長等。
保存流程與性能優(yōu)化
檢查點(diǎn)保存過程分為三個(gè)階段:
- ?訓(xùn)練暫停,模型狀態(tài)從GPU轉(zhuǎn)移至系統(tǒng)內(nèi)存。
- 模型狀態(tài)序列化。
- 序列化數(shù)據(jù)寫入持久化存儲(chǔ)。?
性能瓶頸與優(yōu)化方法
保存過程中的性能瓶頸通常在數(shù)據(jù)寫入速度上。優(yōu)化方法包括:
- ?并行化檢查點(diǎn)寫入:將檢查點(diǎn)數(shù)據(jù)分割,由多個(gè)GPU并行寫入。
- 內(nèi)存檢?查點(diǎn)保存:將數(shù)據(jù)復(fù)制至系統(tǒng)內(nèi)存后,由專用GPU異步寫入。?
存儲(chǔ)方式與壓縮
AI框架支持文件存儲(chǔ)與對(duì)象存儲(chǔ)。文件存儲(chǔ)因高吞吐量和低延遲成為主流選擇,而對(duì)象存儲(chǔ)在可擴(kuò)展性和易用性上表現(xiàn)優(yōu)異。壓縮方法(如量化與剪枝)可以有效減少存儲(chǔ)空間占用。
AI訓(xùn)練中的存儲(chǔ)系統(tǒng)
文件存儲(chǔ)與對(duì)象存儲(chǔ)
大多數(shù)AI框架支持文件存儲(chǔ)和對(duì)象存儲(chǔ)。文件存儲(chǔ)因高吞吐量、低延遲及對(duì)RDMA技術(shù)的支持,成為AI訓(xùn)練的主要選擇。對(duì)象存儲(chǔ)在可擴(kuò)展性和易用性方面具有優(yōu)勢(shì),得益于新型存儲(chǔ)連接器(如Torch.data庫、WebDataset、PyTorch S3連接器等)的出現(xiàn)。
存儲(chǔ)系統(tǒng)性能優(yōu)化
AI訓(xùn)練對(duì)存儲(chǔ)系統(tǒng)性能要求極高,特別是在數(shù)據(jù)加載和檢查點(diǎn)保存階段。緩存機(jī)制、I/O訪問模式和RDMA技術(shù)等都是提升存儲(chǔ)系統(tǒng)性能的重要手段。
其他關(guān)注點(diǎn)
- GPU直接存儲(chǔ)技術(shù)(GPUDirect Storage):允許數(shù)據(jù)直接讀取到GPU內(nèi)存,提升加載效率,但尚未廣泛支持。
- 高速網(wǎng)絡(luò):存儲(chǔ)網(wǎng)絡(luò)的速度需與存儲(chǔ)設(shè)備的寫入速度相匹配,以充分發(fā)揮存儲(chǔ)系統(tǒng)性能。
----------
在AI數(shù)據(jù)管道的各個(gè)階段,AI工作負(fù)載都需要與存儲(chǔ)系統(tǒng)進(jìn)行交互。AI生命周期始于數(shù)據(jù)采集階段。如左側(cè)框所示,系統(tǒng)從多個(gè)來源收集數(shù)據(jù)并將其存儲(chǔ)在持久化存儲(chǔ)(Persistent Storage)中。隨后是數(shù)據(jù)準(zhǔn)備階段,數(shù)據(jù)科學(xué)家將原始數(shù)據(jù)轉(zhuǎn)換為適合訓(xùn)練和推理的格式。這個(gè)階段包括數(shù)據(jù)清洗(Data Cleaning)、特征提取(Feature Extraction)和數(shù)據(jù)標(biāo)注(Data Labeling)等工作。由于每個(gè)項(xiàng)目需求不同,數(shù)據(jù)準(zhǔn)備沒有統(tǒng)一的標(biāo)準(zhǔn)流程。
在第二個(gè)框中顯示的是訓(xùn)練階段,這時(shí)需要訓(xùn)練模型并進(jìn)行驗(yàn)證。此階段性能至關(guān)重要,存儲(chǔ)系統(tǒng)主要用于向GPU提供數(shù)據(jù)讀取服務(wù)或執(zhí)行檢查點(diǎn)保存。訓(xùn)練完成后,模型即可部署用于推理。在推理階段仍需要為GPU提供數(shù)據(jù),但對(duì)計(jì)算資源的需求比訓(xùn)練階段低。此外,還需要快速讀取模型狀態(tài),以便將其加載到執(zhí)行推理的機(jī)器上。
我們將重點(diǎn)討論模型訓(xùn)練過程,特別是數(shù)據(jù)加載(Data Loading)和檢查點(diǎn)保存(Checkpoint Saving)這兩個(gè)環(huán)節(jié)。
首先,讓我們簡要回顧AI訓(xùn)練工作負(fù)載的基本概念。AI訓(xùn)練數(shù)據(jù)集由多個(gè)樣本組成,每個(gè)樣本包含模型輸入數(shù)據(jù)。這些數(shù)據(jù)集可以是文本、圖像、視頻或它們的組合形式,可以存儲(chǔ)在單個(gè)或多個(gè)文件中。訓(xùn)練初始階段需要從存儲(chǔ)系統(tǒng)讀取數(shù)據(jù)到系統(tǒng)內(nèi)存,這個(gè)過程稱為數(shù)據(jù)加載。系統(tǒng)將訓(xùn)練樣本組織成小批量(Mini-batch)輸入到模型中。這些批量數(shù)據(jù)經(jīng)過模型處理,即前向傳播(Forward Propagation)過程,并計(jì)算損失值(Loss Score)來評(píng)估模型性能。然后利用這個(gè)損失值更新模型權(quán)重。這個(gè)過程會(huì)不斷重復(fù),直到模型收斂或達(dá)到預(yù)期精度。完整處理一遍數(shù)據(jù)集被稱為一個(gè)訓(xùn)練周期(Epoch)。某些模型可能需要多個(gè)訓(xùn)練周期才能收斂,這意味著需要多次讀取整個(gè)訓(xùn)練數(shù)據(jù)集。
為防止數(shù)據(jù)丟失,系統(tǒng)會(huì)定期保存模型狀態(tài),這就是檢查點(diǎn)保存過程。在此過程中,AI框架與存儲(chǔ)系統(tǒng)交互,寫入檢查點(diǎn)數(shù)據(jù),或在發(fā)生故障時(shí)通過讀取存儲(chǔ)中的檢查點(diǎn)數(shù)據(jù)進(jìn)行恢復(fù)。
這里展示了數(shù)據(jù)路徑和訓(xùn)練工作負(fù)載的技術(shù)棧,包括數(shù)據(jù)加載和檢查點(diǎn)保存的細(xì)節(jié)。如圖所示,最上層是AI模型,最底層是存儲(chǔ)系統(tǒng)。影響訓(xùn)練效率的因素遍布各個(gè)層次。從右下角的存儲(chǔ)系統(tǒng)開始,可以是本地存儲(chǔ)或分布式存儲(chǔ)系統(tǒng),其上是操作系統(tǒng)層,再上是負(fù)責(zé)與存儲(chǔ)通信并連接AI框架的客戶端庫。
在數(shù)據(jù)加載方面,AI框架使用數(shù)據(jù)集(Dataset)的概念。訓(xùn)練基于特定數(shù)據(jù)集進(jìn)行,并提供相關(guān)API。內(nèi)部實(shí)現(xiàn)中,通過連接器(可以是工具、插件或庫)定義對(duì)底層存儲(chǔ)的訪問方式。數(shù)據(jù)集處理包括采樣(Sampling)、索引(Indexing)和數(shù)據(jù)轉(zhuǎn)換(Data Transformation),這些操作在并行引擎上執(zhí)行。在檢查點(diǎn)保存階段,如右側(cè)所示,連接器通過客戶端庫與存儲(chǔ)系統(tǒng)通信。該階段涉及GPU與CPU之間的數(shù)據(jù)復(fù)制以及格式化等任務(wù)。
深入分析數(shù)據(jù)加載階段的具體流程:數(shù)據(jù)集包含一系列樣本(例如獨(dú)立的圖像文件)。首先,系統(tǒng)通過單線程或多線程方式從存儲(chǔ)讀取數(shù)據(jù)到系統(tǒng)內(nèi)存。原始數(shù)據(jù)需要轉(zhuǎn)換為張量(Tensor)格式以供GPU處理。第一步是數(shù)據(jù)解碼,然后應(yīng)用各種變換和增強(qiáng)操作,如裁剪和尺寸調(diào)整。最后將數(shù)據(jù)傳輸?shù)紾PU。
需要強(qiáng)調(diào)的是,數(shù)據(jù)加載不僅僅是簡單的存儲(chǔ)I/O操作,而是包含了存儲(chǔ)I/O和多個(gè)處理階段的復(fù)合過程,這些階段執(zhí)行實(shí)時(shí)數(shù)據(jù)預(yù)處理。目前,大多數(shù)預(yù)處理任務(wù)都在CPU上完成。
在數(shù)據(jù)加載階段,是什么原因?qū)е翯PU等待數(shù)據(jù)而處于空閑狀態(tài)?以PyTorch為例,其內(nèi)置了預(yù)取器(Prefetcher)組件。GPU與運(yùn)行在CPU上的數(shù)據(jù)加載器協(xié)同工作。預(yù)取器在模型訓(xùn)練需要數(shù)據(jù)之前,將數(shù)據(jù)預(yù)先加載到緩沖區(qū)。這種預(yù)加載機(jī)制確保GPU始終有可用數(shù)據(jù),從而顯著減少空閑時(shí)間。用戶可以調(diào)整和監(jiān)控預(yù)取器參數(shù)以優(yōu)化系統(tǒng)性能。
訓(xùn)練開始時(shí),由于需要同時(shí)填充預(yù)取緩沖區(qū)和讀取第一批樣本,初始耗時(shí)較長。此時(shí)系統(tǒng)在等待存儲(chǔ)I/O完成。數(shù)據(jù)到達(dá)后開始預(yù)處理,在第一批樣本預(yù)處理完成之前,GPU處于空閑狀態(tài)。預(yù)處理完成后,數(shù)據(jù)被移至GPU,開始訓(xùn)練這一批數(shù)據(jù),同時(shí)數(shù)據(jù)加載器讀取下一批。這構(gòu)成了初始狀態(tài)下的工作流程。
達(dá)到穩(wěn)定狀態(tài)后,可能出現(xiàn)兩種情況。理想情況下,訓(xùn)練時(shí)間大于或等于讀取時(shí)間(包括存儲(chǔ)I/O和處理時(shí)間)。這種情況下,預(yù)取器能夠保持?jǐn)?shù)據(jù)持續(xù)供應(yīng)。但如果訓(xùn)練時(shí)間小于存儲(chǔ)和預(yù)處理的總時(shí)間,即使預(yù)取緩沖區(qū)很大,最終也會(huì)耗盡,導(dǎo)致數(shù)據(jù)饑餓(Data Starvation),使GPU處于等待狀態(tài)。
存儲(chǔ)I/O性能受多個(gè)因素影響:樣本大小、批量大小、線程數(shù)量、I/O模式、使用的協(xié)議以及緩存效果。雖然通常認(rèn)為讀取時(shí)間是主要瓶頸,但這種假設(shè)并不總是成立。例如,處理文本數(shù)據(jù)(如語言模型)時(shí),由于只需進(jìn)行分詞(Tokenization),預(yù)處理時(shí)間較短。相比之下,處理圖像或視頻數(shù)據(jù)集時(shí),預(yù)處理時(shí)間可能成為主要瓶頸。
這里是一些具體數(shù)據(jù)。左側(cè)圖表展示了ImageNet數(shù)據(jù)集解碼和轉(zhuǎn)換的成本分析,這是一篇來自MIT的研究論文。頂部柱狀圖中,深灰色區(qū)域代表總訓(xùn)練耗時(shí),包括訓(xùn)練、讀取和預(yù)處理過程。中間柱狀圖顯示了數(shù)據(jù)讀取和預(yù)處理的時(shí)間開銷。數(shù)據(jù)表明,在這個(gè)工作負(fù)載中,GPU處理并非性能瓶頸,反而是存儲(chǔ)系統(tǒng)或數(shù)據(jù)預(yù)處理成為關(guān)鍵限制。然而,底部柱狀圖顯示的實(shí)際數(shù)據(jù)讀取時(shí)間非常短,這意味著對(duì)于該特定模型,數(shù)據(jù)處理環(huán)節(jié)是主要性能瓶頸。
Meta數(shù)據(jù)中心的研究也得出類似觀察結(jié)果。右側(cè)圖表展示了三種不同推薦模型的功耗分析。在底部柱狀圖中,推薦模型三的預(yù)處理功耗(藍(lán)色區(qū)域)與實(shí)際訓(xùn)練功耗幾乎相當(dāng)。他們還報(bào)告稱GPU無法快速處理數(shù)據(jù)以滿足計(jì)算需求。這充分表明,尤其在處理圖像和視頻數(shù)據(jù)的工作流中,預(yù)處理階段可能極其消耗計(jì)算資源。在這一研究領(lǐng)域,已經(jīng)存在專業(yè)的解決方案,例如專門的數(shù)據(jù)加載器可將預(yù)處理任務(wù)卸載到GPU,或在訓(xùn)練前離線執(zhí)行部分預(yù)處理工作。
接下來分析I/O模式。訓(xùn)練工作流在數(shù)據(jù)加載階段會(huì)產(chǎn)生順序和隨機(jī)I/O模式,本次我們重點(diǎn)關(guān)注讀取模式。每個(gè)訓(xùn)練樣本都需要完整讀取,例如對(duì)于圖像數(shù)據(jù),需讀取整個(gè)圖像文件。但樣本的檢索是隨機(jī)的,這導(dǎo)致樣本間形成隨機(jī)訪問模式。訓(xùn)練通常涉及多個(gè)訓(xùn)練周期(epoch),每個(gè)周期數(shù)據(jù)加載器都會(huì)讀取整個(gè)數(shù)據(jù)集。為確保訓(xùn)練過程的隨機(jī)性,數(shù)據(jù)總是被打亂并以隨機(jī)批次讀取。如果數(shù)據(jù)集可完全載入內(nèi)存,則可直接從內(nèi)存提供數(shù)據(jù),避免冗余I/O操作。
底部圖表展示了3D U-Net模型的I/O軌跡,這是醫(yī)學(xué)圖像分割領(lǐng)域的標(biāo)準(zhǔn)基準(zhǔn)測(cè)試。每個(gè)文件存儲(chǔ)一個(gè)醫(yī)學(xué)圖像樣本,平均文件大小約150MB。Y軸顯示唯一文件標(biāo)識(shí),X軸代表時(shí)間。不同顏色表示不同文件,說明文件訪問是隨機(jī)進(jìn)行的。但若細(xì)究單個(gè)文件的訪問模式,會(huì)發(fā)現(xiàn)文件內(nèi)部讀取是順序的。
情況并非總是如此,因?yàn)橛袝r(shí)訓(xùn)練數(shù)據(jù)會(huì)將多個(gè)樣本聚合存儲(chǔ)在單一數(shù)據(jù)集中。這里我展示了來自訓(xùn)練基準(zhǔn)的推薦模型I/O訪問模式。這是一個(gè)包含大量樣本的單一訓(xùn)練文件,文件規(guī)模達(dá)3.8TB。訓(xùn)練過程中,Y軸代表文件偏移量,X軸表示時(shí)間。
工作負(fù)載讀取訓(xùn)練數(shù)據(jù)、執(zhí)行訓(xùn)練,隨后暫停以評(píng)估模型精度,如此往復(fù)。從藍(lán)色條可見,訓(xùn)練文件訪問看似順序。然而放大觀察,會(huì)發(fā)現(xiàn)工作負(fù)載實(shí)際上通過滑動(dòng)窗口(sliding window)進(jìn)行隨機(jī)數(shù)據(jù)訪問。這個(gè)基準(zhǔn)會(huì)在存儲(chǔ)系統(tǒng)中產(chǎn)生大量小規(guī)模I/O。因此,訪問模式可以是順序的,也可以是隨機(jī)的,這取決于具體工作負(fù)載和訓(xùn)練數(shù)據(jù)集的存儲(chǔ)方式。
檢查點(diǎn)(Checkpoint)保存對(duì)于大型模型訓(xùn)練至關(guān)重要,訓(xùn)練過程可能持續(xù)數(shù)天甚至數(shù)周。檢查點(diǎn)保存確保即使出現(xiàn)電力故障或系統(tǒng)崩潰等意外情況,也不會(huì)導(dǎo)致全部訓(xùn)練進(jìn)展丟失。這是一個(gè)周期性過程,用于保存模型當(dāng)前狀態(tài),包括模型權(quán)重(已學(xué)習(xí)的參數(shù))和優(yōu)化器狀態(tài)。檢查點(diǎn)還可能包含隨機(jī)狀態(tài)、調(diào)度器狀態(tài)及其他相關(guān)信息。訓(xùn)練時(shí)間越長,模型權(quán)重的價(jià)值就越高,因此避免丟失這些權(quán)重、重新開始訓(xùn)練的需求變得尤為緊迫。
檢查點(diǎn)保存有多重目的,容錯(cuò)是最主要原因,但同時(shí)也可用于模型調(diào)試和評(píng)估。通過監(jiān)控訓(xùn)練過程,研究者可以判斷模型是否正在收斂或發(fā)散。若發(fā)現(xiàn)模型性能未如預(yù)期改善,可回退到表現(xiàn)更好的先前檢查點(diǎn)。通常,檢查點(diǎn)在訓(xùn)練過程中被保留,后續(xù)模型可以還原到任何先前版本。根據(jù)故障具體情況,可從任意檢查點(diǎn)恢復(fù)模型。
檢查點(diǎn)過程的一個(gè)關(guān)鍵方面是檢查點(diǎn)大小,這取決于模型規(guī)模,而非訓(xùn)練數(shù)據(jù)集、GPU內(nèi)存或GPU數(shù)量。一般經(jīng)驗(yàn)法則是每個(gè)參數(shù)約需四個(gè)字節(jié)。假設(shè)每個(gè)模型參數(shù)使用兩個(gè)字節(jié)表示低精度值,另有十二個(gè)字節(jié)用于優(yōu)化器和其他狀態(tài)信息。以GPT-3為例,其1750億參數(shù)模型生成的檢查點(diǎn)數(shù)據(jù)約為2.4TB;Megatron-Turing NLG模型擁有5300億參數(shù),其檢查點(diǎn)存儲(chǔ)需求約為7.4TB。檢查點(diǎn)大小具有可預(yù)測(cè)性,在固定硬件帶寬下,檢查點(diǎn)保存吞吐量可精確估算。檢查點(diǎn)過程代價(jià)高昂,因?yàn)樵谕瓿杀4嬷皶?huì)暫停訓(xùn)練。
檢查點(diǎn)保存過程包括三個(gè)階段:首先,模型在GPU上運(yùn)行。訓(xùn)練被暫停,模型狀態(tài)從GPU轉(zhuǎn)移到系統(tǒng)內(nèi)存,進(jìn)行序列化,隨后保存到持久存儲(chǔ)。發(fā)生故障或需要恢復(fù)時(shí),將從存儲(chǔ)中讀取檢查點(diǎn)數(shù)據(jù)到系統(tǒng)內(nèi)存,反序列化,然后將模型狀態(tài)移回GPU內(nèi)存。
檢查點(diǎn)可以保存在單個(gè)或多個(gè)文件中,這取決于模型并行策略。AI領(lǐng)域存在兩種并行性類型:數(shù)據(jù)并行(Data Parallelism),即每個(gè)GPU持有完整模型副本并處理不同數(shù)據(jù)批次。通常由一個(gè)GPU(稱為"rank zero")負(fù)責(zé)寫入檢查點(diǎn)。在這種情況下,無需寫入所有GPU的全部內(nèi)存內(nèi)容,這也是當(dāng)前的默認(rèn)行為。
對(duì)于超大模型,如果無法裝載到單個(gè)GPU,可將模型分割到多個(gè)GPU,每個(gè)GPU寫入其模型參數(shù)部分的檢查點(diǎn)。這需要精確協(xié)調(diào)以確保模型各部分正確保存。目前也出現(xiàn)許多混合方法,結(jié)合數(shù)據(jù)和模型并行性。這種情況下,檢查點(diǎn)機(jī)制可能更為復(fù)雜,涉及多個(gè)GPU寫入模型不同部分,具體取決于并行策略。在檢查點(diǎn)場(chǎng)景中,多個(gè)GPU可參與寫入,但檢查點(diǎn)文件始終由單個(gè)線程順序?qū)懭搿;謴?fù)檢查點(diǎn)時(shí),所有GPU從存儲(chǔ)讀取檢查點(diǎn)數(shù)據(jù)。
檢查點(diǎn)保存極其重要,正如前文提到的TB級(jí)檢查點(diǎn)數(shù)據(jù)。存儲(chǔ)性能在此至關(guān)重要。觀察當(dāng)前趨勢(shì),特別是大型語言模型,模型規(guī)模持續(xù)增長,檢查點(diǎn)大小也隨之增長。更大模型需要更多GPU,故障概率也隨之提高。Meta最新研究表明,檢查點(diǎn)保存可能使訓(xùn)練速度降低43%,這一數(shù)字凸顯了高效檢查點(diǎn)對(duì)訓(xùn)練的重要性。存儲(chǔ)系統(tǒng)應(yīng)優(yōu)化以高效寫入檢查點(diǎn)數(shù)據(jù),減少檢查點(diǎn)過程中的GPU等待時(shí)間。
Meta同一研究還報(bào)告,完整恢復(fù)開銷占總訓(xùn)練時(shí)間的12%。Llama 3模型訓(xùn)練論文也強(qiáng)調(diào)了類似挑戰(zhàn),指出高突發(fā)檢查點(diǎn)寫入可能導(dǎo)致整個(gè)存儲(chǔ)系統(tǒng)飽和。阿里巴巴報(bào)告稱,在大規(guī)模語言模型訓(xùn)練作業(yè)中,43%的故障發(fā)生在檢查點(diǎn)階段。這些故障可能源于軟件問題(如bug或數(shù)據(jù)錯(cuò)誤)或硬件問題(如網(wǎng)絡(luò)故障)。研究者希望增加檢查點(diǎn)頻率,但同時(shí)也要權(quán)衡檢查點(diǎn)保存的高額成本。
檢查點(diǎn)保存性能直接影響檢查點(diǎn)頻率。低頻檢查點(diǎn)策略缺乏吸引力。因此,高效檢查點(diǎn)保存對(duì)大規(guī)模訓(xùn)練至關(guān)重要。當(dāng)前檢查點(diǎn)方法往往導(dǎo)致GPU停頓。以數(shù)據(jù)并行檢查點(diǎn)策略為例,當(dāng)使用torch.save作為默認(rèn)檢查點(diǎn)機(jī)制時(shí),訓(xùn)練會(huì)被暫停。檢查點(diǎn)數(shù)據(jù)被移動(dòng)到內(nèi)存,序列化,寫入硬盤。這一過程產(chǎn)生大量順序?qū)懭耄笹PU處于空閑等待狀態(tài)。學(xué)術(shù)界和產(chǎn)業(yè)集群已提出多種優(yōu)化方法,旨在減少檢查點(diǎn)保存期間的GPU等待時(shí)間。雖然無法詳盡列舉所有方法,但我將重點(diǎn)闡述幾種常見技術(shù)。
第一種技術(shù)是并行化檢查點(diǎn)寫入(Parallel Checkpoint Writing)。這種方法利用數(shù)據(jù)并行性,因?yàn)槊總€(gè)GPU持有相同的檢查點(diǎn)數(shù)據(jù)。它將檢查點(diǎn)創(chuàng)建分配給多個(gè)并行數(shù)據(jù)并行的GPU,使得每個(gè)GPU僅寫入檢查點(diǎn)文件的一部分,而非由單個(gè)GPU完成。因此,復(fù)制到存儲(chǔ)的數(shù)據(jù)規(guī)模和寫入量減少,您將從更多并行存儲(chǔ)I/O中受益,而不是生成單一的存儲(chǔ)I/O?;谶@些變化,檢查點(diǎn)保存的性能和效率得到提升。然而,需要注意的是,這種方法會(huì)對(duì)存儲(chǔ)產(chǎn)生大量并行I/O,因此您的存儲(chǔ)系統(tǒng)必須具備可擴(kuò)展性,并能高效處理這些并行I/O。此外,每個(gè)單獨(dú)文件生成的檢查點(diǎn)數(shù)據(jù)量也變小。
第二種優(yōu)化是內(nèi)存檢查點(diǎn)保存(In Memory Checkpointing)。這種技術(shù)解決了檢查點(diǎn)保存過程中硬盤或網(wǎng)絡(luò)I/O成為瓶頸的情況。在這種情況下,您暫停檢查點(diǎn),將數(shù)據(jù)復(fù)制到系統(tǒng)內(nèi)存中,然后繼續(xù)訓(xùn)練,而不等待檢查點(diǎn)數(shù)據(jù)寫入持久存儲(chǔ)。之后,專用GPU異步地將此檢查點(diǎn)數(shù)據(jù)寫入持久存儲(chǔ)。采用這種方法存在丟失檢查點(diǎn)數(shù)據(jù)的風(fēng)險(xiǎn),但文獻(xiàn)提供了確保持久性的方法。通常,至少確保先前的檢查點(diǎn)已寫入存儲(chǔ)。此外,還需權(quán)衡:與等待硬盤相比,丟失一個(gè)檢查點(diǎn)是否值得?
我們已討論數(shù)據(jù)加載和檢查點(diǎn)保存,現(xiàn)在聚焦存儲(chǔ)部分。大多數(shù)現(xiàn)有AI框架支持文件存儲(chǔ)(File Storage)和對(duì)象存儲(chǔ)(Object Storage)訪問,用于數(shù)據(jù)加載和檢查點(diǎn)保存。為提供高吞吐量和低延遲,存儲(chǔ)集群通常配備高性能閃存存儲(chǔ)。大多數(shù)AI訓(xùn)練工作負(fù)載使用基于文件的存儲(chǔ)系統(tǒng)來存儲(chǔ)和訪問訓(xùn)練數(shù)據(jù),以確保昂貴的GPU得以高效利用。AI框架設(shè)計(jì)為訪問文件系統(tǒng),期待使用文件樣式的API來加載和恢復(fù)檢查點(diǎn)。其主要原因在于性能。對(duì)象存儲(chǔ)由于其高且不可預(yù)測(cè)的延遲,阻礙了其在AI訓(xùn)練工作流中的直接使用。對(duì)象存儲(chǔ)的典型部署模型涉及一個(gè)更快的緩存層,可以是本地驅(qū)動(dòng)器或緩存,將數(shù)據(jù)從對(duì)象層移動(dòng)到為GPU提供支持的更快層。
盡管存在更快速的對(duì)象存儲(chǔ)解決方案,但基于文件的解決方案在為GPU提供數(shù)據(jù)時(shí)仍占主導(dǎo)地位。然而,對(duì)象存儲(chǔ)具有顯著優(yōu)勢(shì),包括可擴(kuò)展性和容量。隨著數(shù)據(jù)集規(guī)模的持續(xù)增長,許多AI應(yīng)用正在云中開發(fā),導(dǎo)致基于云的AI應(yīng)用增加。此外,對(duì)象存儲(chǔ)解決方案用戶友好,運(yùn)行在用戶空間,使數(shù)據(jù)科學(xué)家能夠避免處理遠(yuǎn)程存儲(chǔ)的復(fù)雜性。近期,我們看到許多新的存儲(chǔ)連接器,使得高效訪問對(duì)象存儲(chǔ)成為可能,表明對(duì)象存儲(chǔ)在AI訓(xùn)練工作負(fù)載中的使用案例正在增加。
如果查看PyTorch如何使用不同連接器訪問基于文件和對(duì)象的存儲(chǔ)解決方案,可以概括當(dāng)前的技術(shù)格局。所謂存儲(chǔ)連接器,是指能夠使AI框架訪問存儲(chǔ)系統(tǒng)讀寫數(shù)據(jù)的特殊工具或庫。這些連接器旨在架起AI框架與各種存儲(chǔ)解決方案之間的橋梁,確保以優(yōu)化方式訪問存儲(chǔ)。
可以看到,頂部是PyTorch框架,下方有多種連接器選項(xiàng)。選擇合適的工具可能令人困惑,因此我將重點(diǎn)介紹最新和最流行的幾種。首先,從左側(cè)的三個(gè)黃色框來看對(duì)象存儲(chǔ)連接器。
PyTorch提供Torch.data庫,包含數(shù)據(jù)加載工具??梢耘渲闷渲苯訌膶?duì)象存儲(chǔ)讀取數(shù)據(jù)并進(jìn)行流式傳輸,支持S3及其他對(duì)象存儲(chǔ)協(xié)議。Web數(shù)據(jù)集是一個(gè)示例,允許直接從云存儲(chǔ)訪問TAR文件,無需解壓。另一個(gè)選項(xiàng)是PyTorch的S3連接器,支持檢查點(diǎn)保存和數(shù)據(jù)加載。該連接器允許用戶以順序和隨機(jī)方式訪問存儲(chǔ),使用高性能庫,顯著提升標(biāo)準(zhǔn)GET操作效率。它包含各種優(yōu)化,如高級(jí)網(wǎng)絡(luò)管理和有效處理重試與超時(shí),從而加快檢查點(diǎn)計(jì)算。
第三個(gè)選項(xiàng)是基于FUSE的文件系統(tǒng)客戶端,允許用戶將S3存儲(chǔ)桶掛載為本地文件系統(tǒng)。這使應(yīng)用程序能夠使用標(biāo)準(zhǔn)文件操作(如打開和讀?。┰L問S3桶中的對(duì)象存儲(chǔ)??捎眠x項(xiàng)眾多,Mountpoint-S3是最新的之一。這些基于FUSE的客戶端在性能和POSIX兼容性間進(jìn)行平衡。值得注意的是,它們提供有限的POSIX兼容性,僅支持少數(shù)易于映射到對(duì)象協(xié)議API的文件操作。例如,大多數(shù)不支持重命名或修改現(xiàn)有文件,因?yàn)镾3和對(duì)象協(xié)議不允許。然而,其POSIX兼容性足以滿足AI框架在數(shù)據(jù)加載和檢查點(diǎn)保存方面的需求。
第二個(gè)連接器是基于文件的存儲(chǔ),這是默認(rèn)方法??蓤?zhí)行標(biāo)準(zhǔn)的POSIX文件API調(diào)用,如讀取和寫入。幾乎所有AI框架都偏好這種方法。例如,如果您使用Torch.save、Torch.load或PyTorch的分布式檢查點(diǎn)模塊,它們都與基于文件的存儲(chǔ)一起使用。此外,PyTorch提供了一整套優(yōu)化庫,用于使用這些文件API訪問不同類型的數(shù)據(jù)集,如圖像數(shù)據(jù)集和文本數(shù)據(jù)集?;谖募拇鎯?chǔ)系統(tǒng)的主要優(yōu)點(diǎn)之一是能夠使用RDMA(遠(yuǎn)程直接內(nèi)存訪問)技術(shù),這使得框架在訪問文件系統(tǒng)時(shí)能夠透明地受益于RDMA。
RDMA到GPU內(nèi)存是另一回事。在左側(cè),我展示了哪些連接器支持RDMA到GPU內(nèi)存。這項(xiàng)技術(shù)稱為GPU直接存儲(chǔ)(GPUDirect Storage),目前尚未得到像PyTorch這樣的框架廣泛支持。要啟用此功能,需要額外的配置和集成。這項(xiàng)技術(shù)僅在使用基于文件的存儲(chǔ)解決方案時(shí)存在。例如,HSDLY是一個(gè)數(shù)據(jù)加載庫,支持GPU直接存儲(chǔ),允許將數(shù)據(jù)集直接讀取到GPU內(nèi)存中。另一個(gè)支持GPU直接存儲(chǔ)的庫是Kyo。這兩個(gè)連接器都使用K文件API進(jìn)行GPU直接存儲(chǔ)。
這里展示了基于文件的連接器和基于對(duì)象的連接器之間的高層次架構(gòu)差異。以NFS作為文件表示的示例,比較對(duì)象連接器與基于文件的連接器,其中Torch Data 3連接器和Mountpoint作為對(duì)象連接器的代表。盡管存在諸多差異,但可以將它們分為三大類。
第一個(gè)是緩存。緩存是主要區(qū)別之一?;谖募拇鎯?chǔ)得益于操作系統(tǒng)頁面緩存,這避免了在數(shù)據(jù)集適合緩存時(shí)對(duì)同一數(shù)據(jù)的重復(fù)訪問。這也改善了順序訪問與讀取頭的關(guān)系。相反,對(duì)象連接器在用戶空間運(yùn)行,并繞過虛擬文件系統(tǒng)層,因此它們無法利用操作系統(tǒng)頁面緩存。因此,這些對(duì)象連接器必須部署自己的獨(dú)立緩存機(jī)制。例如,Mountpoint S3提供讀取緩存。
第二個(gè)區(qū)別在于I/O訪問模式,這非常重要,并可能影響存儲(chǔ)吞吐量。例如,通過S3連接器或Mountpoint,我們看到這兩種解決方案都得益于異步S3客戶端,生成許多小的并行I/O到存儲(chǔ)。它們不是發(fā)送單個(gè)GET請(qǐng)求,而是創(chuàng)建多個(gè)并行范圍GET請(qǐng)求。底層庫使用多部分上傳,而不是執(zhí)行單個(gè)PUT操作。我們觀察到數(shù)據(jù)以大約8 MB的部分大小被讀取或?qū)懭?,并且進(jìn)行了大量的異步I/O。這是這兩個(gè)連接器的一項(xiàng)優(yōu)化。
第三個(gè)區(qū)別是協(xié)議。這些連接器使用不同的協(xié)議。對(duì)象協(xié)議的延遲較高,認(rèn)證和授權(quán)過程在對(duì)象存儲(chǔ)中非常昂貴。對(duì)于每個(gè)請(qǐng)求,您必須執(zhí)行IAM認(rèn)證和授權(quán),這可能會(huì)產(chǎn)生高昂的成本。此外,正如前面的幻燈片提到的,基于文件的存儲(chǔ)解決方案受益于RDMA技術(shù),而對(duì)象存儲(chǔ)解決方案則不然。
總結(jié)我們今天討論的內(nèi)容:我們談到了數(shù)據(jù)加載,這不僅包括存儲(chǔ)I/O,還包括數(shù)據(jù)轉(zhuǎn)換。I/O訪問模式依賴于模型和數(shù)據(jù)集。存儲(chǔ)系統(tǒng)必須提供高吞吐量和低延遲,以確保數(shù)據(jù)盡可能快速地送入GPU。
檢查點(diǎn)保存至關(guān)重要;大型模型需要高讀寫帶寬,以高效保存和恢復(fù)檢查點(diǎn)。檢查點(diǎn)文件可以保存在一個(gè)或多個(gè)文件中,但每個(gè)檢查點(diǎn)文件由單個(gè)寫入者寫入。同時(shí),必須注意,累積的檢查點(diǎn)可能會(huì)產(chǎn)生顯著的存儲(chǔ)需求,尤其是在頻繁檢查點(diǎn)保存的情況下。因此,存儲(chǔ)解決方案必須高效處理這些需求。
我們還討論了文件存儲(chǔ)和對(duì)象存儲(chǔ);目前,AI框架期望使用類似文件的接口。然而,近年來,對(duì)訪問對(duì)象存儲(chǔ)解決方案的支持明顯增加。
----------
問題:訓(xùn)練結(jié)束后,檢查點(diǎn)(Checkpoint)是否會(huì)保留?
回答:這取決于具體情況,不能一概而論。通常,在訓(xùn)練過程中會(huì)保留檢查點(diǎn)。由于模型調(diào)試、評(píng)估等原因,您可能希望在訓(xùn)練結(jié)束后繼續(xù)保留這些檢查點(diǎn)。如果檢查點(diǎn)僅用于容錯(cuò),則可以不必長期保留。總的來說,這取決于具體用例。在模型調(diào)試、驗(yàn)證等工作中,檢查點(diǎn)往往會(huì)保留更長時(shí)間。
問題:塊存儲(chǔ)(Block Storage)真的有適用場(chǎng)景嗎?
回答:在人工智能訓(xùn)練方面,目前觀察較少。您可以使用塊存儲(chǔ),但訓(xùn)練框架通常期望類似文件系統(tǒng)的訪問方式。我尚未看到對(duì)象存儲(chǔ)(Object Storage)在訓(xùn)練過程中的廣泛使用。通常,您需要使用文件系統(tǒng)(File System)或?qū)ο蟠鎯?chǔ)。這是當(dāng)前的技術(shù)觀察。
問題:檢查點(diǎn)保存的頻率是多少?
回答:這是一個(gè)常見的問題。根據(jù)在線資源和文獻(xiàn),檢查點(diǎn)保存通常發(fā)生在每個(gè)訓(xùn)練周期(Epoch)結(jié)束后。在完成對(duì)訓(xùn)練數(shù)據(jù)集的完整遍歷時(shí)進(jìn)行檢查點(diǎn)保存。對(duì)于大型語言模型(LLMs),通常在某些訓(xùn)練步驟后進(jìn)行檢查點(diǎn)保存。例如,Meta在其研究論文中提到每30分鐘進(jìn)行一次檢查點(diǎn)保存。然而,這難以作為通用標(biāo)準(zhǔn)。檢查點(diǎn)保存頻率可能是每30分鐘一次,或每幾個(gè)小時(shí)一次。這很大程度上取決于寫入吞吐量以及根據(jù)模型規(guī)模進(jìn)行檢查點(diǎn)保存的需求。遺憾的是,很難給出一個(gè)確切的數(shù)字。
問題:檢查點(diǎn)機(jī)制在SSD和HDD之間有何差異?
回答:在人工智能場(chǎng)景中,檢查點(diǎn)保存需要盡快完成。檢查點(diǎn)保存通常產(chǎn)生順序?qū)懭耄请S機(jī)寫入。盡管HDD可以進(jìn)行順序I/O,但AI框架通常與SSD或高速NVMe驅(qū)動(dòng)器交互。HDD通常用于備份或存檔。對(duì)于即時(shí)存儲(chǔ)需求,推薦使用快速存儲(chǔ)層,如NVMe SSD。如果需要長期保存,可以將檢查點(diǎn)后續(xù)移動(dòng)到HDD,但目前觀察顯示,訓(xùn)練階段主要使用閃存存儲(chǔ)。
問題:訓(xùn)練中I/O性能的典型要求是什么,具體包括IOPS和每秒字節(jié)數(shù)?
回答:對(duì)于數(shù)據(jù)加載或文本類工作負(fù)載的LLMs,I/O性能要求遠(yuǎn)低于圖像或視頻數(shù)據(jù)集。根據(jù)MLPerf最近的基準(zhǔn)測(cè)試,訓(xùn)練用于醫(yī)學(xué)圖像分割的3D U-Net模型時(shí),每個(gè)GPU的平均讀取吞吐量約為2.7至3 GB/s。相比之下,對(duì)于LLMs或文本類數(shù)據(jù),通常約為每個(gè)GPU每秒1 MB,因?yàn)檫@類模型通常是計(jì)算密集型而非存儲(chǔ)密集型。對(duì)于圖像或視頻工作負(fù)載,存儲(chǔ)要求的每GPU帶寬可能達(dá)到數(shù)GB/s。
問題:為什么檢查點(diǎn)保存需要序列化?
回答:檢查點(diǎn)保存需要序列化,是因?yàn)樾枰獙PU上的張量(Tensor)數(shù)據(jù)提取出來,通常需要將這些數(shù)據(jù)序列化為數(shù)據(jù)流,然后以單個(gè)文件形式寫入存儲(chǔ)。這是基于當(dāng)前的技術(shù)理解,但可能需要進(jìn)一步確認(rèn)。
問題:您認(rèn)為S3對(duì)象存儲(chǔ)會(huì)采用類似RDMA的技術(shù),以便更快地直接讀寫數(shù)據(jù)到GPU內(nèi)存嗎?
回答:目前,對(duì)象存儲(chǔ)尚未支持RDMA技術(shù)。我尚未在相關(guān)文獻(xiàn)中看到相關(guān)實(shí)現(xiàn)。然而,隨著人工智能框架中對(duì)象存儲(chǔ)使用的增加,人們可能會(huì)開始優(yōu)化存儲(chǔ)和網(wǎng)絡(luò)性能。據(jù)目前所知,現(xiàn)有的對(duì)象存儲(chǔ)解決方案中尚未支持RDMA。
問題:每個(gè)GPU的存儲(chǔ)吞吐量(Storage Throughput)的經(jīng)驗(yàn)法則是什么?
回答:在數(shù)據(jù)加載階段,文本數(shù)據(jù)的存儲(chǔ)吞吐量通常在幾兆字節(jié)到更少的范圍內(nèi),具體取決于數(shù)據(jù)量。對(duì)于圖像或視頻類工作負(fù)載,吞吐量可達(dá)到幾GB。以醫(yī)學(xué)圖像工作負(fù)載為例,每個(gè)GPU的讀取吞吐量約為3 GB/s,這能使GPU利用率達(dá)到90%。醫(yī)學(xué)圖像通常對(duì)存儲(chǔ)吞吐量要求最高。在檢查點(diǎn)(Checkpoint)保存方面,存儲(chǔ)吞吐量取決于寫入存儲(chǔ)的速度需求。顯然,更高的吞吐量意味著更好的性能,但難以給出具體的吞吐量標(biāo)準(zhǔn)。
問題:由于檢查點(diǎn)文件較大,許多環(huán)境是否會(huì)集中使用磁帶存儲(chǔ)(Tape Storage)以保留多個(gè)檢查點(diǎn)副本?
回答:檢查點(diǎn)的初始寫入必須在高速存儲(chǔ)介質(zhì)上進(jìn)行,因?yàn)檎麄€(gè)檢查點(diǎn)數(shù)據(jù)需要寫入遠(yuǎn)程存儲(chǔ)并進(jìn)行冗余復(fù)制。因此,第一個(gè)檢查點(diǎn)需要存儲(chǔ)在高速存儲(chǔ)層。幾乎所有檢查點(diǎn)都會(huì)寫入這一快速存儲(chǔ)層。如遇存儲(chǔ)容量限制,有幾種處理策略:出于容錯(cuò)目的,可以刪除早期檢查點(diǎn);若用于模型調(diào)試或評(píng)估且存儲(chǔ)空間受限,可將早期檢查點(diǎn)遷移至低速存儲(chǔ)。磁帶存儲(chǔ)通常不用于訓(xùn)練階段,但訓(xùn)練完成后,可用于長期備份。
問題:存儲(chǔ)如何處理序列化(Serialization)的檢查點(diǎn)保存?是單線程還是將作業(yè)分配給單個(gè)存儲(chǔ)設(shè)備?
回答:默認(rèn)情況下為單線程模式。序列化檢查點(diǎn)數(shù)據(jù)后,單線程將其寫入存儲(chǔ)。對(duì)于內(nèi)存檢查點(diǎn)保存,數(shù)據(jù)移動(dòng)到系統(tǒng)內(nèi)存后,持久存儲(chǔ)的刷新機(jī)制可能會(huì)有所不同。如果采用異步寫入機(jī)制,處理方式可能有所變化。通常,這些框架的默認(rèn)行為是單線程寫入,每個(gè)檢查點(diǎn)文件由單獨(dú)的線程寫入。
問題:高速網(wǎng)絡(luò)是否顯著增強(qiáng)了I/O和檢查點(diǎn)保存過程?
回答:檢查點(diǎn)保存發(fā)生在GPU權(quán)重同步之后。此處討論的網(wǎng)絡(luò)是指GPU與服務(wù)器和存儲(chǔ)間的網(wǎng)絡(luò)連接。性能可能受網(wǎng)絡(luò)速度和存儲(chǔ)設(shè)備驅(qū)動(dòng)器速度的共同影響。兩者需要平衡:不能有超高速存儲(chǔ)驅(qū)動(dòng)器卻配備低速網(wǎng)絡(luò),反之亦然。因此,存儲(chǔ)網(wǎng)絡(luò)的高速確實(shí)至關(guān)重要。
問題:檢查點(diǎn)保存的頻率如何?是否可以進(jìn)行檢查點(diǎn)緩存以便快速恢復(fù)?
回答:檢查點(diǎn)緩存確實(shí)具有價(jià)值,尤其是最新的檢查點(diǎn)。通常不會(huì)頻繁讀取檢查點(diǎn),僅在發(fā)生故障時(shí)使用。除調(diào)試或驗(yàn)證模型時(shí),如發(fā)現(xiàn)模型性能不佳或未收斂,才會(huì)讀取檢查點(diǎn)。根據(jù)具體情況,檢查點(diǎn)緩存很有意義,特別是在故障恢復(fù)場(chǎng)景中??蓪⒆钚聶z查點(diǎn)保存在緩存中,需要時(shí)可快速恢復(fù)。但在選擇緩存哪個(gè)檢查點(diǎn)時(shí),需謹(jǐn)慎考慮模型準(zhǔn)確性,可能需要比較前一個(gè)、前兩個(gè)或前三個(gè)檢查點(diǎn),這取決于具體用例。
問題:檢查點(diǎn)保存中壓縮的好處是什么?
回答:傳統(tǒng)無損壓縮技術(shù)(如Gzip)在人工智能訓(xùn)練工作負(fù)載中壓縮效果有限,因?yàn)闄z查點(diǎn)數(shù)據(jù)高度隨機(jī),缺乏重復(fù)模式。但存在其他有效技術(shù):
- 量化(Quantization):將浮點(diǎn)數(shù)轉(zhuǎn)換為低精度,減少位使用和存儲(chǔ)需求。例如,從單精度轉(zhuǎn)換為半精度。
- 剪枝(Pruning):去除模型中不重要的部分,減小檢查點(diǎn)體積。
這兩種技術(shù)是常見的檢查點(diǎn)壓縮方法,能有效減少存儲(chǔ)開銷。
參考資料:Kaynar, Ugur. "AI Storage: The Critical Role of Storage in Optimizing AI Training Workloads." YouTube, October 30, 2024. https://www.youtube.com/watch?v=vycUUhlRmVs.
本文轉(zhuǎn)載自 ??Andy730??,作者: 常華Andy
