亚洲免费成人av电影_日韩av免费在线看_国产精品久久久久久久久久_日韩成人在线电影网_久久精品视频播放_日本久久久a级免费_欧美午夜性色大片在线观看_国产精品69久久_黑人精品xxx一区一二区_1769国内精品视频在线播放_日韩大陆毛片av_日本久久精品视频_日韩av不卡电影_欧美性生活大片免费观看网址_91性高湖久久久久久久久_久久99_亚洲乱码国产乱码精品精

首頁(yè) 娛樂(lè) > 正文

MegEngine 使用小技巧:Profiler使用手冊(cè)

0.寫(xiě)在前面

“xx,R 那邊反應(yīng)多機(jī)訓(xùn)練速度慢,你看一下什么情況”

“xxx,為什么 MGE 更新之后,xxx 網(wǎng)絡(luò)訓(xùn)練變慢了,你看一下”

這是組內(nèi)日常對(duì)話


(資料圖)

然后有人日常背鍋

組員的狀態(tài)是:提性能,提性能,還是 TMD 提性能

據(jù)不完全統(tǒng)計(jì),有 80% 的性能問(wèn)題其實(shí)是因?yàn)橛?xùn)練代碼寫(xiě)的不夠好,讓 MGE 有力使不出來(lái)

包括但不限于以下情況

1)沒(méi)開(kāi) fast_run

2)頻繁使用 numpy 進(jìn)行同步

3)沒(méi)有用 make_allreduce_cb,讓計(jì)算通信串行

4)。。。

次數(shù)多了,就發(fā)現(xiàn)這玩意太花時(shí)間了,而且每次的步驟都千篇一律,為啥一定要我來(lái)做,所以寫(xiě)這篇文章進(jìn)行總結(jié),方便大家也方便自己

1.Profiler 介紹

首先我們要認(rèn)識(shí) Profiler 這個(gè)東西

簡(jiǎn)單來(lái)說(shuō),Profiler 以時(shí)間軸的形式記錄了所有算子的運(yùn)行時(shí)間

通過(guò) Profile 結(jié)果,我們可以很快的發(fā)現(xiàn)這段代碼為什么跑的慢

是做了多余的工作?還是計(jì)算資源的浪費(fèi)?或者是算子本身的性能很差,需要替換成別的算子

這是一個(gè)簡(jiǎn)單的 profile 結(jié)果展示

大部分情況下我們只關(guān)注 gpu thread,每一個(gè) gpu thread 對(duì)應(yīng)一個(gè) cuda stream,上面都是運(yùn)行在這個(gè) cuda stream 上的算子

2.使用方式

PS:靜態(tài)圖的統(tǒng)計(jì)信息還不夠完善(受到圖優(yōu)化影響),profile 結(jié)果相對(duì)動(dòng)態(tài)圖的不夠友好

from megengine.utils.profiler import profile, Profiler # 裝飾器寫(xiě)法@profile()def train_step(data, label, *, optimizer, gm, model)    with gm:        logits = model(data)        loss = F.loss.cross_entropy(logits, label)        gm.backward(loss)        optimizer.step().clear_grad()    return loss # with 寫(xiě)法# 訓(xùn)練過(guò)程中最好只有一個(gè)profiler實(shí)例,因?yàn)閜rofiler會(huì)在析構(gòu)時(shí)自動(dòng)dump出結(jié)果,如果有多個(gè)實(shí)例的話每個(gè)iter都會(huì)dump,非常慢profiler = Profiler() def train_step(data, label, *, optimizer, gm, model)    with profiler:       with gm:           logits = model(data)           loss = F.loss.cross_entropy(logits, label)           gm.backward(loss)           optimizer.step().clear_grad()    return loss

??注意,profiler 默認(rèn)會(huì)在析構(gòu)的時(shí)候?qū)С?profile 結(jié)果,也可以手動(dòng)調(diào)用 profiler.dump 方法手動(dòng) dump

參數(shù)說(shuō)明:

Profiler的構(gòu)造函數(shù)支持如下參數(shù):

  • path: profile 數(shù)據(jù)的存儲(chǔ)路徑,默認(rèn)為當(dāng)前路徑下的profile文件夾.
  • format: 輸出數(shù)據(jù)的格式,默認(rèn)為chrome_timeline.json,是 Chrome 支持的一種標(biāo)準(zhǔn)格式,以時(shí)間線的形式展現(xiàn) profiling 結(jié)果. 可選項(xiàng)還有有 memory_flow.svg,以時(shí)間x地址空間的形式展示內(nèi)存使用情況.
  • formats: 若需要的輸出格式不止一種,可以在 formats 參數(shù)里列出.
  • sample_rate: 若該項(xiàng)不為零,則每隔 n 個(gè) op 會(huì)統(tǒng)計(jì)一次顯存信息,分析數(shù)據(jù)時(shí)可以繪制顯存占用曲線,默認(rèn)為 0.
  • profile_device: 是否記錄 gpu 耗時(shí),默認(rèn)為 True.
  • with_scopes: 是否額外記錄 functional/ tensor method 等 python API 對(duì)應(yīng)的 scope, 默認(rèn)為 False.
  • with_backtrace: 是否記錄 op/event 對(duì)應(yīng)的 python 調(diào)用棧, 默認(rèn)為 False, 開(kāi)啟會(huì)使記錄數(shù)據(jù)文件體積變大.

scope 使用介紹

我們會(huì)自動(dòng)在 module 的 forward 還有 backward 以及 step 步驟中加入 scope,scope 會(huì)在 host thread 上顯示,能看出 op 屬于哪一個(gè) module 的什么階段

也可以自己加上 scope

from megengine.utils.profiler import Profiler, scope def main()    with Profiler():        x = Tensor(1)        with scope("Add"):            y = x+1        with scope("Mul"):            z = x*3

默認(rèn)情況下 profiler 只會(huì)記錄 module forward, backward, step 三類(lèi) scope, 用戶可以在構(gòu)造 Profiler 對(duì)象時(shí)傳入?yún)?shù)with_scopes = True額外記錄 functional, tensor methodapi調(diào)用對(duì)應(yīng)的 scope。

開(kāi)啟 with_scopes選項(xiàng)后額外記錄了 BatchNorm2d Module內(nèi)部調(diào)用的 functional / tensor method API調(diào)用 scope

開(kāi)啟 with_scopes 選項(xiàng)后額外記錄了 backward scope, 該 scope 用于記錄反向計(jì)算序列對(duì)應(yīng)的前向算子, 可用于查找反向計(jì)算中有性能問(wèn)題的算子是由哪種算子前向計(jì)算產(chǎn)生。下圖 scope 表示 Broadcast, SetSubtensor 等算子是由 Subtensor 反向計(jì)算產(chǎn)生的。

3.可視化顯示

推薦使用perfetto查看 profile 結(jié)果,也可以用 Chrome 開(kāi)發(fā)者模式(F12)的 Performance 模塊查看 timeline 格式文件,也可以用chrome://tracing/進(jìn)行查看

以下介紹的都是基于 perfetto 的操作方式

1)統(tǒng)計(jì)

可以選中一段連續(xù)的時(shí)間段,查看這一個(gè)時(shí)間段的統(tǒng)計(jì)結(jié)果

下方會(huì)顯示事件統(tǒng)計(jì)結(jié)果,可以看到事件實(shí)際占用時(shí)間(Wall duration)(可以結(jié)合總時(shí)間算出空閑時(shí)間),可以按照總占用時(shí)間排序,也可以按照平均時(shí)間排序

2)依賴關(guān)系

在 host thread上,op 會(huì)記錄對(duì)應(yīng)的 input和output 以及相應(yīng)的依賴關(guān)系,可以依據(jù)箭頭找到 input 依賴的上一個(gè) op,也可以通過(guò)下方 flow event 點(diǎn)擊移動(dòng)到上一個(gè)或者下一個(gè)

我們還能找到 op 對(duì)應(yīng)的 host 時(shí)間和 gpu 時(shí)間,點(diǎn)擊 op 可以看到在不同 thread(cpu,gpu)占用的時(shí)間

3)查看顯存使用, gpu 利用率等指標(biāo)

profiler 除了記錄時(shí)間算子執(zhí)行時(shí)間外,還會(huì)記錄一些與顯存和性能相關(guān)的指標(biāo)。gpu_usage_ratio 記錄程序執(zhí)行平均的 gpu 利用率(gpu 執(zhí)行 kernel 時(shí)間占總時(shí)間的比例),gpu_usage_ratio 低說(shuō)明程序 host 側(cè)是瓶頸 。gpux:x alloc_mem_value 記錄了gpux 顯存使用量隨時(shí)間的變化的曲線, 需要把 sample_rate 設(shè)置為大于 0 的整數(shù)(sampe rate 代表每隔 n 個(gè) op 記錄一次顯存使用量)

4)放大縮小

可以拖動(dòng)上方時(shí)間軸的起始和結(jié)束點(diǎn)來(lái)修改起始點(diǎn)和結(jié)束點(diǎn),也可以通過(guò)放大縮小手勢(shì)進(jìn)行放大縮小

中間豎線上面的灰色小方塊就是可以拖動(dòng)的點(diǎn)

4.常見(jiàn)調(diào)試技巧(附使用例子

1)多余計(jì)算

yolox 例子,forward,backward,step 運(yùn)行完成了,但是后面多出了很多的 reshape 操作(一般認(rèn)為 reshape 無(wú)實(shí)際計(jì)算,所以基本看作是浪費(fèi)

找到原因后結(jié)果如下(5s->1.3s)

2)計(jì)算通信串行(請(qǐng)認(rèn)準(zhǔn) make_allreduce_cb)

allreduce 通信在 gpu0:1,如果發(fā)現(xiàn)通信在 gpu0:0 那就是用錯(cuò)了

3)host 性能慢,gpu 利用率不高

cpu 時(shí)間和 gpu 時(shí)間基本上一致,很可疑

放大仔細(xì)看,gpu 運(yùn)行時(shí)間中有很多空隙,而且點(diǎn)擊對(duì)應(yīng) op 查看依賴關(guān)系,可以看出中間的空隙時(shí)間是在等待 host 進(jìn)行 launch cuda kernel

4)使用 backtrace 記錄功能查找性能瓶頸部分對(duì)應(yīng)源碼

上述示例介紹了如何從 profile 結(jié)果中發(fā)現(xiàn)性能異常的部分, profiler 提供了 backtrace 調(diào)用棧記錄功能, 方便用戶找到異常部分對(duì)應(yīng)的訓(xùn)練代碼源碼。backtrace 記錄會(huì)記錄算子的 dispatch/kernel 執(zhí)行,TensorWaitProperty 等事件對(duì)應(yīng)的 python 調(diào)用棧。

可以在構(gòu)造 Profiler 對(duì)象時(shí)通過(guò)傳入 with_backtrace = True 開(kāi)啟調(diào)用棧記錄功能。 開(kāi)啟該選項(xiàng)后 profiler 保存數(shù)據(jù)文件體積會(huì)增大。

用戶可以在 perfetto UI 界面上點(diǎn)擊 op 查看其對(duì)應(yīng)的源碼。

下圖 profiler 結(jié)果中 CompiledOp[IOU] 算子執(zhí)行時(shí)間較長(zhǎng), 通過(guò)記錄的 backtrace 可以發(fā)現(xiàn)該算子是檢測(cè)模型計(jì)算 loss 部分調(diào)用的。

下圖中 interpreter 線程中某個(gè) TensorWaitProp 占用時(shí)間很長(zhǎng),可能會(huì)拖慢 host 執(zhí)行速度,導(dǎo)致 gpu 空閑。

(TensorWaitProp 可能是由 tensor.shape, tensor.numpy() 等方法調(diào)用產(chǎn)生的, 會(huì)讓 host 側(cè)等待 device 執(zhí)行,以獲取 Tensor 的 value 或 shape 屬性)

通過(guò)調(diào)用??梢园l(fā)現(xiàn)該事件是由 basedet 檢測(cè)模型 get_ground_truth 方法中的某個(gè) getitem產(chǎn)生的 ( __getitem__中使用了 tensor shape 屬性觸發(fā)了 host 側(cè)的 sync)。

更多 MegEngine 信息獲取,您可以:查看文檔和GitHub 項(xiàng)目,或加入 MegEngine 用戶交流 QQ 群:1029741705。歡迎參與 MegEngine 社區(qū)貢獻(xiàn),成為Awesome MegEngineer,榮譽(yù)證書(shū)、定制禮品享不停。

關(guān)鍵詞:

最近更新

關(guān)于本站 管理團(tuán)隊(duì) 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2023 創(chuàng)投網(wǎng) - www.474933.com All rights reserved
聯(lián)系我們:39 60 29 14 2@qq.com
皖I(lǐng)CP備2022009963號(hào)-3

国产精品久久久久久久99| 国产日韩精品suv| 成人高清免费在线播放| 四虎影院成人在线观看| 亚洲精品乱码久久久久久自慰| 久久精品视频在线免费观看| 九九热视频精品| 久久久久久国产三级电影| 人妻无码一区二区三区| 精品在线视频一区| а√最新版在线天堂| 欧美黄色一区| 精品免费av| 欧美老肥妇做.爰bbww| 久久精品国产99精品国产亚洲性色| 色呦呦免费观看| 国产精品自拍99| 91精品国产高清| 久久精品免费观看| 精品99视频| 69p69国产精品| 裸体一区二区三区| 日韩在线播放一区| mm131美女视频| 黄色www网站| 2025中文字幕| 91嫩草|国产丨精品入口| 向日葵污视频在线观看| 国产69精品久久久久孕妇| 1024欧美极品| 日韩中文在线不卡| 色哟哟精品丝袜一区二区| seba5欧美综合另类| 午夜久久影院| 性色一区二区三区| 欧美videos极品另类| 久久中文欧美| 国产永久免费高清在线观看视频| 岛国在线视频| 美女写真久久影院| 老司机av在线免费看| 伊人资源视频在线| 91色porny蝌蚪| 国产suv精品一区二区69| 亚洲大香人伊一本线| 中文字幕亚洲在线观看| 潘金莲一级淫片aaaaaa播放1| 性人久久久久| 群体交乱之放荡娇妻一区二区| 欧美午夜精彩| 久久久久久久高潮| 亚洲欧美一区二区三区在线观看| 国模无码国产精品视频| 成人高清免费在线| 久久亚洲视频| 成人免费观看网站| 黄色网页在线免费观看| 三级欧美日韩| 欧美黄免费看| 国产精品无码午夜福利| 国产又粗又长又黄| 草民电影神马电影一区二区| 成人女人免费毛片| 欧美私人免费视频| 91影视免费在线观看| 青青草原在线免费观看视频| 欧美成熟毛茸茸复古| 亚洲另类黄色| 99久久99久久综合| 日本五十肥熟交尾| 精品亚洲永久免费| 国产精品一区二区三区www| 美女久久久久久| h在线视频免费观看完整版| 日本三级中国三级99人妇网站| 精品入口麻豆传煤| 日本私人网站在线观看| 色香蕉成人二区免费| 精品视频一区二区观看| 美女被爆操网站| 日韩乱码一区二区| 欧美午夜一区二区三区| xxx欧美老熟| 精品国产aaa| 手机av在线看| 免费观看在线一区二区三区| 欧美xxbbb1手交| 欧美xxxx18| 视频一区欧美精品| se01亚洲视频| 日韩欧美精品在线观看| 日韩二区三区在线观看| 日韩av电影免费在线观看| 国产一级免费片| 91在线第一页| 国产一级免费在线观看| 亚洲av成人无码久久精品老人| 欧美黄页免费| 欧美激情视频给我| 欧美日韩视频一区二区三区| 国产精品亚洲第五区在线| 亚洲高清国产精品| 懂色av中文在线| 91精品久久久久久久蜜月| 国产有色视频色综合| 日韩国产精品91| 久久久久久免费网| 翔田千里88av中文字幕| 精品电影在线| 91亚洲精品久久久蜜桃| 999国产视频| 男女猛烈无遮挡午夜视频| 1区2区3区精品视频| 欧美日本一区二区视频在线观看| 日本在线视频站| 三级a性做爰视频| 91aaa精品| 99人久久精品视频最新地址| 在线观看av影片| 日韩中文字幕在线视频播放| 久久神马影院| 国产激情在线观看视频| 一区二区三区在线视频观看58| 亚洲私人影吧| 久久久久99精品| 欧美日韩日日骚| 国产精品69一区二区三区| 91久久国产综合久久91精品网站| 日韩毛片在线视频| 国产欧美日韩免费观看| 精品国产精品国产偷麻豆| 黄色成人免费观看| 欧美日韩国产小视频| 理论片在线观看理伦片| 久久久之久亚州精品露出| crdy在线观看欧美| 欧美日韩国产色| 亚洲人成影院在线| 国产探花在线精品| 国产成人亚洲综合91精品| 亚洲一区二区欧美激情| 风韵丰满熟妇啪啪区老熟熟女| 免费的成人av| 欧美丰满嫩嫩电影| 国产精品看片你懂得| 日韩亚洲欧美高清| 国产精品swag| 草草地址线路①屁屁影院成人| 激情视频在线观看一区二区三区| lutube成人福利在线观看| 欧美牲交a欧美牲交aⅴ免费真| 就爱干草视频| 国产精品99久久免费| 一区二区三区日韩欧美| 亚洲成人手机在线| 国产精品美女无圣光视频| 亚洲人高潮女人毛茸茸| 妖精视频在线观看| 国产爆乳无码一区二区麻豆| 国产一级二级三级在线观看| 在线h片观看| 天天好比中文综合网| 蜜桃视频在线网站| 国产精品9999| 一本一道久久a久久精品| 日产国产欧美视频一区精品| 精品福利一区二区三区| 91久久麻豆| 777久久久精品一区二区三区| 51精品国产黑色丝袜高跟鞋| 精品在线视频一区| 精品无人区太爽高潮在线播放| 国产精品久久免费视频| 成人频在线观看| 老司机免费在线视频| 在线中文字幕第一区| 久久国产精品国语对白| 4hu永久免费入口| 精品国产自在精品国产浪潮| www视频在线观看com| 日韩欧美成人一区二区三区| 精品国产乱码久久久久久浪潮| 国产1区在线| 免费日韩电影| 国产成人免费视频app| 午夜国产不卡在线观看视频| 黄网站色视频免费观看| 亚洲精品无吗| 捆绑凌虐一区二区三区| 在线观看一二三区| free性护士videos欧美| 亚洲国产精品va在线| 五月天国产一区| 在线精品视频视频中文字幕| 欧美日韩精品二区| 91av在线免费观看| 91视频com| 日本高清色图| 国产夜色精品一区二区av| 国产精品二区不卡| 久久精品一二三| 国产在线拍揄自揄拍无码视频| 久久久久久久久久久久久久久国产| 中文字幕有码在线| 欧美日韩中文字幕在线视频| 久久久久久无码精品人妻一区二区| 一区二区三区韩国免费中文网站| av在线免费播放| 在线激情影院一区| 国产高清一级毛片在线不卡| 在线观看精品自拍视频| 免费无码毛片一区二区app| 中文字幕亚洲二区| 谁有免费的黄色网址| 日韩精品一级| 国产精品一区二区久久精品爱涩| 欧美成人禁片在线观看网址| 国产精品18久久久久久首页狼| 亚洲精品久久7777777| 亚洲品质自拍| 成人免费视频国产免费观看| 91激情视频| 美国成人xxx| 国产主播一区二区| 欧美性猛片xxxxx免费中国| 免费观看成人性生生活片| 成人影院免费观看| 久久综合九色综合88i| 国产sm调教视频| 亚洲成人一品| 中文字幕高清20页| 成人av网站免费观看| 国产无遮挡aaa片爽爽| 日韩av自拍偷拍| 欧美日本亚洲韩国国产| 成年免费网站| 欧美日韩久久久一区| 中文字幕在线观看不卡| 五月亚洲婷婷| 风流少妇一区二区三区91| 亚洲av综合色区无码另类小说| avtt天堂资源网站| 亚洲国产高潮在线观看| 国产不卡一区二区三区在线观看| 自拍视频一区二区| 亚洲欧美日韩精品久久亚洲区| 久久xxx视频| 免费在线你懂的| 久久午夜电影| 成人免费观看视频大全| 日本免费新一区视频| 国产亚洲欧美激情| 91片黄在线观看| 国产精品成人一区二区三区电影毛片| 成人无码精品1区2区3区免费看| 福利h视频在线| 欧美最猛黑人xxxx黑人猛交3p| 国产精品裸体瑜伽视频| 中文字幕在线不卡一区二区三区| 色一情一乱一乱一91av| 中文字幕一区二区在线播放| 亚洲精品国产精品国| 天使萌一区二区三区免费观看| 国产成人亚洲精品青草天美| 久久综合网导航| 久久久久久久无码| 欧美另类交人妖| 在线播放亚洲激情| 日本一区中文字幕| 日韩视频欧美视频| 免费网站成人| 超碰96在线| av一区二区三区| 国产高清视频一区| 免费黄色网页在线观看| 国产又黄又爽视频| 日韩中文字幕观看| gogogo高清在线观看免费完整版| 青青青草原在线| 成人毛片av在线| av电影在线观看一区二区三区| 天天操天天摸天天舔| 日韩资源在线观看| 亚洲欧美日韩久久精品| 成人午夜淫片100集| 高清不卡在线观看| 女人另类性混交zo| 日韩aaa久久蜜桃av| 激情无码人妻又粗又大| 手机在线观看日韩av| 日韩视频欧美视频| 黄色网址网站| 2019年精品视频自拍| 亚洲第一成年人网站| 欧美第一区第二区| 国产精品入口麻豆完整版| 久久最新免费视频| 丁香花在线高清完整版视频| 奇米777在线视频| 青娱乐国产在线视频| 色婷婷综合久色| 日韩精品一区二区三区电影| 久久午夜夜伦鲁鲁一区二区| 日韩乱码人妻无码中文字幕| 韩国国内大量揄拍精品视频| 九九热在线视频观看| 二个人看的毛片| 美女mm1313爽爽久久久蜜臀| wwwwwxxxx日本| 日日干日日操日日射| 久久精品日产第一区二区三区乱码| 欧美一级成年大片在线观看| 999在线精品| 欧美3p在线观看| 国产日韩久久久| av成人在线观看| 日本毛片在线观看| 偷拍视频一区二区| 久久久不卡网国产精品二区| 偷拍自拍在线| 国内成人精品2018免费看| 日韩在线第七页| 亚洲欧美怡红院| 日本老太婆做爰视频| 一级黄色片日本| 欧美韩国日本综合| 99re在线国产| 日日躁夜夜躁人人揉av五月天|