日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
LeCun轉(zhuǎn)推,PyTorchGPU內(nèi)存分配有了火焰圖可視化工具

近日,PyTorch 核心開發(fā)者和 FAIR 研究者 Zachary DeVito 創(chuàng)建了一個(gè)新工具(添加實(shí)驗(yàn)性 API),通過生成和可視化內(nèi)存快照(memory snapshot)來可視化 GPU 內(nèi)存的分配狀態(tài)。這些內(nèi)存快照記錄了內(nèi)存分配的堆棧跟蹤以及內(nèi)存在緩存分配器狀態(tài)中的位置。

蕉城網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

接下來,通過將這些內(nèi)存快照可視化為火焰圖(flamegraphs),內(nèi)存的使用位置也就能一目了然地看到了。

圖靈獎(jiǎng)得主 Yann Lecun 也轉(zhuǎn)推了這個(gè)工具。

Twitter@Zachary DeVito

下面我們來看這個(gè)工具的實(shí)現(xiàn)原理(以第一人稱「我們」描述)。

生成快照

首先,我們必須記錄每次分配的堆棧幀信息。

記錄這些堆棧跟蹤的速度非??欤看畏峙浼s 1 us,正常的 PyTorch 內(nèi)核調(diào)用需要至少 8 us),但我們默認(rèn)將其關(guān)閉。而啟用之后,我們可以分配一些內(nèi)存并拍攝快照。

快照記錄了整個(gè)分配器的狀態(tài),如下所示。

快照是具有以下結(jié)構(gòu)的 Segment 字典列表。

Segments 是直接從 cudaMalloc 請(qǐng)求并由分配器緩存的內(nèi)存。因此,我們可以只使用這些 segments 中的一部分,緩存分配器將它們分為一個(gè)或更多個(gè) Block。所有的塊始終保持相同的分配狀態(tài)。同時(shí),使用_record_memory_history,每個(gè)塊還將記錄一個(gè) History 對(duì)象,該對(duì)象會(huì)記住塊中最后一次分配的位置,包括作為 Frames 列表的堆棧跟蹤。

對(duì)于 active_allocated 塊,它其中存在的內(nèi)容和當(dāng)前分配的內(nèi)容將有一個(gè)歷史記錄。對(duì)于 inactive 塊,可能會(huì)有多個(gè)條目來記錄塊內(nèi)存中最后存在的內(nèi)容??赡懿恢挂粋€(gè)條目的原因在于分配器在空閑時(shí)會(huì)合并分割塊,并記錄下兩次拆分的歷史。為了避免出現(xiàn)大量的歷史記錄,我們只保留不與任何更新塊重合的塊的歷史記錄。

保存快照

快照因自身設(shè)計(jì)而可以之后離線查看。

文件_memory_viz.py 可以直接用作交互式命令來處理保存的快照。

可視化快照

_memory_viz.py 工具也可以生成內(nèi)存的可視化火焰圖。

可視化圖將分配器中所有的字節(jié)(byte)按不同的類來分割成段,如下圖所示(原文為可交互視圖)。

火焰圖可視化是一種將資源(如內(nèi)存)使用劃分為不同類的方法,然后可以進(jìn)一步細(xì)分為更細(xì)粒度的類別。

memory 視圖很好地展現(xiàn)了內(nèi)存的使用方式。但對(duì)于具體地調(diào)試分配器問題,首先將內(nèi)存分類為不同的 Segment 對(duì)象是有用的,而這些對(duì)象是分配軌跡的單個(gè) cudaMalloc 段。

?

比較快照

該可視化器還可以生成顯示在兩個(gè)快照之間添加和刪除的段的可視化。例如,我們可以使用更大的輸入重新運(yùn)行模型,并查看分配器如何為更大的臨時(shí)對(duì)象請(qǐng)求更多內(nèi)存。

比較視圖僅顯示新段,這有助于找出哪些代碼路徑提示分配更多內(nèi)存。

$ python _memory_viz.py compare snapshot.pickle snapshot2.pickle  -o compare.svgonly_before = []only_after = [140636932014080, 140636827156480, 140634912456704, 140634839056384, 140634843250688, 140634841153536, 140634866319360, 140634811793408, 140634845347840, $ 140636806184960, 140636778921984, 140634878902272]

網(wǎng)站標(biāo)題:LeCun轉(zhuǎn)推,PyTorchGPU內(nèi)存分配有了火焰圖可視化工具
網(wǎng)站URL:http://www.5511xx.com/article/cdchice.html