首页
/
每日頭條
/
科技
/
pytorch提速方法
pytorch提速方法
更新时间:2026-06-04 09:48:06

機器之心報道

編輯:杜偉

想要了解自己的 PyTorch 項目在哪些地方分配 GPU 内存以及為什麼用完嗎?不妨試試這個可視化工具。

近日,PyTorch 核心開發者和 FAIR 研究者 Zachary DeVito 創建了一個新工具(添加實驗性 API),通過生成和可視化内存快照(memory snapshot)來可視化 GPU 内存的分配狀态。這些内存快照記錄了内存分配的堆棧跟蹤以及内存在緩存分配器狀态中的位置。

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

圖靈獎得主 Yann Lecun 也轉推了這個工具。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)1

Twitter@Zachary DeVito

下面我們來看這個工具的實現原理(以第一人稱「我們」描述)。

生成快照

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

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)2

記錄這些堆棧跟蹤的速度非常快(每次分配約 1 us,正常的 PyTorch 内核調用需要至少 8 us),但我們默認将其關閉。而啟用之後,我們可以分配一些内存并拍攝快照。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)3

快照記錄了整個分配器的狀态,如下所示。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)4

快照是具有以下結構的 Segment 字典列表。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)5

Segments 是直接從 cudaMalloc 請求并由分配器緩存的内存。因此,我們可以隻使用這些 segments 中的一部分,緩存分配器将它們分為一個或更多個 Block。所有的塊始終保持相同的分配狀态。同時,使用_record_memory_history,每個塊還将記錄一個 History 對象,該對象會記住塊中最後一次分配的位置,包括作為 Frames 列表的堆棧跟蹤。

對于 active_allocated 塊,它其中存在的内容和當前分配的内容将有一個曆史記錄。對于 inactive 塊,可能會有多個條目來記錄塊内存中最後存在的内容。可能不止一個條目的原因在于分配器在空閑時會合并分割塊,并記錄下兩次拆分的曆史。為了避免出現大量的曆史記錄,我們隻保留不與任何更新塊重合的塊的曆史記錄。

保存快照

快照因自身設計而可以之後離線查看。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)6

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

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)7

可視化快照

_memory_viz.py 工具也可以生成内存的可視化火焰圖。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)8

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

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)9

火焰圖可視化是一種将資源(如内存)使用劃分為不同類的方法,然後可以進一步細分為更細粒度的類别。

memory 視圖很好地展現了内存的使用方式。但對于具體地調試分配器問題,首先将内存分類為不同的 Segment 對象是有用的,而這些對象是分配軌迹的單個 cudaMalloc 段。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)10

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)11

比較快照

該可視化器還可以生成顯示在兩個快照之間添加和删除的段的可視化。例如,我們可以使用更大的輸入重新運行模型,并查看分配器如何為更大的臨時對象請求更多内存。

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)12

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)13

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)14

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

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

pytorch提速方法(LeCun轉推PyTorchGPU内存分配有了火焰圖可視化工具)15

原文鍊接:https://zdevito.github.io/2022/08/16/memory-snapshots.html

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
華為手機的一些使用技巧
華為手機的一些使用技巧
本文作者:木子加加2018年10月份女王大人的水果機瀕臨退役,本想給她換Xs或者是max,沒想到她竟然主動要求說想要換個華為的,理由也似乎完全無法反駁,“老娘就想要個華為的咋地吧!”那還能咋辦,說買咱就買,買了當時的華為旗艦P20pro,就...
2026-06-04
筆記本如何設置開機密碼
筆記本如何設置開機密碼
筆記本如何設置開機密碼?點擊開始菜單按鈕然後點擊“設置”,我來為大家科普一下關于筆記本如何設置開機密碼?以下内容希望對你有幫助!筆記本如何設置開機密碼點擊開始菜單按鈕。然後點擊“設置”。點開設置主頁,找到“賬戶”并點擊。在賬戶界面,找到“登...
2026-06-04
電腦開機及辦公很卡怎麼處理
電腦開機及辦公很卡怎麼處理
你是不是也有這樣的苦惱?電腦卡頓,打開個軟件卡成PPT,開機分鐘起步,電腦運行沒多久就發燙、發熱,電腦打個字,反應幾十秒?如果你也有這樣的困擾,那你的電腦也許是這樣的又或者你的電腦是這樣的又或者你也有這樣的情況同時安裝了兩套殺毒軟件,兩套殺...
2026-06-04
win8恢複默認浏覽器
win8恢複默認浏覽器
Win8系統電腦怎麼設置默認浏覽器?一般系統都是默認IE浏覽器,但是IE對于國人來說并不是很好用,那麼如何修改默認浏覽器?請看下文具體介紹。解決方法:1、右擊開始屏幕,打開控制面闆,選擇“程序-設置默認程序”。2、點擊你經常使用的浏覽器,然...
2026-06-04
西北農林科技大學為什麼是末流985
西北農林科技大學為什麼是末流985
一、西北農林科技大學簡介西北農林科技大學是一所教育部直屬、國家“985工程”和“211工程”重點建設高校,首批入選國家“世界一流大學和一流學科”建設高校。地處号稱中華農耕文明發祥地、國家級農業高新技術産業示範區——陝西楊淩。學校前身是創建于...
2026-06-04
Copyright 2023-2026 - www.tftnews.com All Rights Reserved