培訓(xùn)大型深層學(xué)習(xí)模式需要大型數(shù)據(jù)集。亞馬遜簡(jiǎn)單存儲(chǔ)服務(wù)(Amazon S3)是用于儲(chǔ)存大型培訓(xùn)數(shù)據(jù)集的可縮放云點(diǎn)存儲(chǔ)服務(wù)。 機(jī)器學(xué)習(xí)(ML)實(shí)踐者需要高效的數(shù)據(jù)管道,能夠從亞馬遜S3下載數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),并將數(shù)據(jù)輸入GPU,用于高輸送量和低潛伏度的培訓(xùn)模式。
我們?cè)诖藶槠ね袪柶嫱瞥鲂碌腟3 IO DataPipes(S3 IO DataPipes),s3 文件列表器和s3 文件加載器為了提高記憶效率和快速運(yùn)行,新的數(shù)據(jù)平臺(tái)使用C擴(kuò)展號(hào)訪問(wèn)亞馬遜S3基準(zhǔn)顯示:s3 文件加載器速度為59.8%ffspepefile 打開(kāi)器用于下載亞馬遜S3的自然語(yǔ)言處理(NLP)數(shù)據(jù)集。電子數(shù)據(jù)管道我們還表明,新的數(shù)據(jù)平臺(tái)可以將貝爾特和ResNet50培訓(xùn)時(shí)間總體減少7%。
概覽
亞馬遜 S3 是一個(gè)可縮放的云存儲(chǔ)服務(wù)系統(tǒng),沒(méi)有數(shù)據(jù)數(shù)量限制。 從亞馬遜 S3 上載數(shù)據(jù)并將數(shù)據(jù)輸入高性能的 GPU, 如 NVIDIA A100 等高性能的 GPU, 可能具有挑戰(zhàn)性。 它需要高效的數(shù)據(jù)管道, 能夠滿足 GPU 的數(shù)據(jù)處理速度 。 為此, 我們?yōu)?PyTorrch 發(fā)布了一個(gè)新的高性能工具: S3 IO DataPipes 。 DataPipes 從參考文獻(xiàn)數(shù)據(jù)庫(kù) 參考文獻(xiàn)數(shù)據(jù)庫(kù),以便他們能與宜用數(shù)據(jù)排氣管接口。開(kāi)發(fā)者可以快速建立數(shù)據(jù)平臺(tái) DAG, 以獲取、轉(zhuǎn)換和操作數(shù)據(jù),并使用打亂、分割和批量功能。
新的 DataPipes 設(shè)計(jì)成文件格式的不可知性,亞馬遜 S3 數(shù)據(jù)作為二進(jìn)制大型對(duì)象( BLOBs) 下載。它可以用作可合成的構(gòu)件塊,用于組裝一個(gè)DataPipe 圖表,該圖可以將表格、NLP和計(jì)算機(jī)視覺(jué)(CV)數(shù)據(jù)裝入培訓(xùn)管道。
在引擎蓋下,新的S3 IO DataPipes使用一個(gè)與 AWS C SDK 的 C S3 處理器。 一般來(lái)說(shuō), C 的安裝比 Python 更能提高內(nèi)存效率,并且與 Python 相比, C 的 CPU 核心使用( 沒(méi)有全球解釋器鎖 ) 更好。 新的 C S3 IO DataPipes 被推薦在培訓(xùn)大型深層學(xué)習(xí)模型時(shí)使用高輸送量、低潛伏數(shù)據(jù)。
新的S3 IO DataPipes提供兩個(gè)頭等公民API:
s3 文件列表器- 可在給定的 S3 前綴內(nèi)列出 S3 文件 URL。 此 API 的功能名稱是列表文件_by_s3.
s3 文件加載器- 從給定的 S3 前綴裝入 S3 文件的可使用性。 此 API 的功能名稱是負(fù)載文件_by_s3.
使用量
在本節(jié)中,我們?yōu)槭褂眯碌腟3 IO DataPipes提供指導(dǎo)。負(fù)載_ files_by_s3 ().
從源構(gòu)建
新建的 S3 IO DataPipes 使用 C 擴(kuò)展名。 它被嵌入點(diǎn)火數(shù)據(jù)選項(xiàng)卡。但是,如果新的數(shù)據(jù)提示在環(huán)境中不可用,例如 Conda 上的 Windows,您需要從源構(gòu)建。如果需要更多信息,請(qǐng)參見(jiàn)可迭接數(shù)據(jù)管道.
配置
亞馬遜 S3 支持全球水桶。然而,在區(qū)域內(nèi)創(chuàng)建一個(gè)水桶。您可以通過(guò)使用__init___()或者,您也可以導(dǎo)出 AWS_ REGION =us- 西向 2外殼或設(shè)置環(huán)境變量[AWS_REGION] =“我們一號(hào)” =“我們一號(hào)”在你的代碼。
要在水桶中閱讀無(wú)法公開(kāi)查閱的物品,您必須通過(guò)下列方法之一提供AWS證書:
安裝和配置排AWS 命令行界面(AWS CLLI)和(AWS CLLI)AWS 配置
設(shè)置當(dāng)?shù)叵到y(tǒng)AWS 認(rèn)證檔案檔案中的全權(quán)證書。~/.鋸/證書在 Linux, macOS 或 Unix 上
設(shè)定aws_ access_keey_id 訪問(wèn)器和aws_ secret_ access_keys 密鑰環(huán)境變量
如果您使用這個(gè)圖書館亞馬遜(Amazon EC2)實(shí)例,具體說(shuō)明AWS 身份和準(zhǔn)入管理(IMM)作用,然后讓EC2實(shí)例有機(jī)會(huì)發(fā)揮這種作用
示例代碼
下面的代碼片斷提供了一種典型的用法負(fù)載_ files_by_s3 ():
從 rch.utils. data 導(dǎo)入來(lái)自 rchdata. dataloader 從 rchdata. datapipops. iter 導(dǎo)入 IterableWrapper s3_shard_urls = IterableWrapper ([“s3://bucket/prefix/] ]).列表文件_by_s3 () s3_shards = s3_shard_urls.負(fù)載文件_by_s3 ()
基準(zhǔn)基準(zhǔn)基準(zhǔn)
在本節(jié)中,我們展示新的數(shù)據(jù)平臺(tái)如何能夠減少Bert和ResNet50的總體培訓(xùn)時(shí)間。
對(duì)照FSSpec的孤立數(shù)據(jù) Loader 業(yè)績(jī)?cè)u(píng)價(jià)
ffspepefile 打開(kāi)器是另一個(gè) PyTollch S3 DataPipe 。它使用體核和傳真/傳真: http/ asyncioS3 數(shù)據(jù)訪問(wèn) S3 數(shù)據(jù)。 以下是性能測(cè)試設(shè)置和結(jié)果(引自本地ASWDK與基于數(shù)據(jù)平臺(tái)的FSspec(boto3)之間的業(yè)績(jī)比較).
測(cè)試中的 S3 數(shù)據(jù)是一個(gè)碎片化的文本數(shù)據(jù)集。 每個(gè)碎片有大約10萬(wàn)條線, 每條線約為1.6 KB, 使每條碎片大約156 MB。 本基準(zhǔn)中的測(cè)量量平均超過(guò)1,000 批。 沒(méi)有進(jìn)行打亂、 取樣或變換 。
下圖的圖表匯報(bào)了以下表格中各種批量規(guī)模的通過(guò)量比較。num_工人=0,數(shù)據(jù)裝載器在主過(guò)程中運(yùn)行。s3 文件加載器每秒(QPS)的查詢量較高(QPS),比(QPS)高90%。纖維分批體積為512。
下圖圖表匯報(bào)了以下各項(xiàng)結(jié)果:num_工人=4,數(shù)據(jù)裝載器運(yùn)行在主進(jìn)程。s3 文件加載器高于59.8%纖維分批體積為512。
打擊Boto3的訓(xùn)練ResNet50模式
在下圖中,我們培訓(xùn)了RESNet50模型,該模型由4p3.16x大案例組成,總共32個(gè)GPUs。培訓(xùn)數(shù)據(jù)集是圖像網(wǎng)絡(luò),有120萬(wàn)張圖像,以1 000張圖像碎片組成。培訓(xùn)批量尺寸為64。培訓(xùn)時(shí)間以秒計(jì)。對(duì)于8個(gè)時(shí)代,培訓(xùn)時(shí)間以8個(gè)時(shí)代計(jì)。s3 文件加載器比Boto3還快7.5%。
a 與Boto3相比的Bert培訓(xùn)模式
對(duì)于以下的馬車,我們訓(xùn)練了一個(gè)Bert模型,在總共32個(gè)GPU的4 p3.16x大案例群中,共有1 474個(gè)文件。每個(gè)文件有大約15萬(wàn)個(gè)樣本。要運(yùn)行一個(gè)較短的時(shí)代,我們每個(gè)文件使用0.05%(大約75個(gè)樣本)。批量大小為2 048,培訓(xùn)時(shí)間以秒計(jì)。對(duì)于一個(gè)時(shí)代,我們用0.5 % (大約75個(gè)樣本)來(lái)測(cè)量。s3 文件加載器比Boto3還快7%
與原始 PyTorrch S3 插件的比較
新的PyTollch S3 DataPipes 運(yùn)行比原運(yùn)行要好得多PyTork S3 插件我們調(diào)整了內(nèi)部緩沖大小s3 文件加載器。裝載時(shí)間以秒計(jì)。
10個(gè)散亂的猜謎文件(每個(gè)約1.5GB),s3 文件加載器在我們的實(shí)驗(yàn)中 速度是3.5倍
最佳做法
培訓(xùn)大型深層學(xué)習(xí)模型可能需要一個(gè)包含數(shù)十個(gè)甚至數(shù)百個(gè)節(jié)點(diǎn)的大規(guī)模計(jì)算組。 集群中的每個(gè)節(jié)點(diǎn)都可能產(chǎn)生大量數(shù)據(jù)裝載請(qǐng)求,這些請(qǐng)求會(huì)擊中特定的 S3 碎片。 為了避免油門,我們建議在 S3 桶和 S3 文件夾上分割培訓(xùn)數(shù)據(jù)。
為了取得良好的業(yè)績(jī),它有助于擁有足夠大的文件大小,足以在特定文件上平行,但并不大,以致于我們根據(jù)培訓(xùn)工作,在亞馬遜S3上達(dá)到該物體的輸送量極限。 最佳規(guī)??赡芙橛?0-200 MB之間。
六. 結(jié)論和下一步措施
在此文章中,我們向您介紹了新的PyTorch IO DataPipes。新的 DataPipes 使用aws-sdk-cpp 縮略語(yǔ)并顯示與基于 Boto3 的數(shù)據(jù)裝載器相比的性能較好。
對(duì)于今后的步驟,我們計(jì)劃改進(jìn)可用性、性能和功能,側(cè)重于以下特點(diǎn):
S3授權(quán),由IAM擔(dān)任- 目前,S3 DataPipes支持明確的準(zhǔn)入證書、案例簡(jiǎn)介和S3桶政策。 但是,有些使用案例更偏愛(ài)IMA角色。
雙重緩沖- 我們計(jì)劃提供雙重緩沖 支持多工人下載
本地緩存- 我們計(jì)劃使示范培訓(xùn)能夠穿行培訓(xùn)數(shù)據(jù)集以通過(guò)多個(gè)傳球。 第一個(gè)時(shí)代之后的本地緩沖可以縮短亞馬遜三世的飛行延誤時(shí)間,這可以大大加快隨后時(shí)代的數(shù)據(jù)檢索時(shí)間。
可定制配置- 我們計(jì)劃披露更多參數(shù),如內(nèi)部緩沖大小、多部分塊大小、執(zhí)行人計(jì)數(shù)等,讓用戶進(jìn)一步調(diào)整數(shù)據(jù)裝載效率。
亞馬遜 S3 上傳- 我們計(jì)劃擴(kuò)大S3 DataPipes, 支持上傳檢查。
與 Fspec 合并 – 纖維用于其他系統(tǒng),例如irch. save ()我們可以將新的 S3 數(shù)據(jù) PDataPipes 與纖維這樣他們就可以有更多的使用案例。
審核編輯:彭菁
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7158瀏覽量
89666 -
gpu
+關(guān)注
關(guān)注
28文章
4783瀏覽量
129395 -
亞馬遜
+關(guān)注
關(guān)注
8文章
2680瀏覽量
83662 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13373
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論