CANN文檔速遞03期】帶你解鎖「訓(xùn)練網(wǎng)絡(luò)精度調(diào)優(yōu)」

      網(wǎng)友投稿 783 2022-05-29

      昇騰開發(fā)者遷移好的模型在昇騰AI處理器上執(zhí)行訓(xùn)練時(shí),可能會(huì)存在如下精度問題:

      1.? ?loss曲線與參考基準(zhǔn)差異不符合預(yù)期

      2.? ?驗(yàn)證準(zhǔn)確度與參考基準(zhǔn)差異不符合預(yù)期

      這些精度問題往往由于具有以下特征而定位困難:

      【CANN文檔速遞03期】帶你解鎖「訓(xùn)練網(wǎng)絡(luò)精度調(diào)優(yōu)」

      1.? ?訓(xùn)練正常結(jié)束

      2.? ?日志無任何異常

      3.? ?與參考基準(zhǔn)對(duì)比時(shí)才發(fā)現(xiàn)結(jié)果不符合預(yù)期

      我們分析發(fā)現(xiàn),精度問題高概率發(fā)生點(diǎn)為:

      本期為您梳理了精度問題定位的三板斧流程,帶您快速掃除網(wǎng)絡(luò)精度障礙!

      精度調(diào)優(yōu)流程

      調(diào)優(yōu)前檢查

      在精度問題定位前,我們需要對(duì)訓(xùn)練腳本進(jìn)行必要的檢查,排除參考基準(zhǔn)和模型遷移過程中可能存在的影響網(wǎng)絡(luò)訓(xùn)練精度的因素。

      檢查參考基準(zhǔn)腳本,排除參考基準(zhǔn)問題:

      √??檢查參考基準(zhǔn)腳本多次訓(xùn)練驗(yàn)證精度一致

      √??檢查參考基準(zhǔn)腳本正確使能混合精度訓(xùn)練

      檢查遷移后的腳本,排除模型遷移時(shí)可能存在的問題:

      √??檢查模型在NPU上正確使能混合精度

      √??檢查模型在NPU上正確使能Loss Scale

      √??檢查數(shù)據(jù)集與參考基準(zhǔn)一致

      √??檢查數(shù)據(jù)預(yù)處理流程與參考基準(zhǔn)一致

      √??檢查多節(jié)點(diǎn)分片方式與參考基準(zhǔn)一致

      √??檢查訓(xùn)練流程與參考基準(zhǔn)一致

      √??檢查模型超參與參考基準(zhǔn)一致

      調(diào)優(yōu)工具介紹

      檢查完訓(xùn)練腳本后,可借助一鍵式精度分析工具進(jìn)行精度問題分析,該工具的主要功能包括:

      開發(fā)者可以從https://gitee.com/ascend/tools下載precision_tool文件夾,上傳到訓(xùn)練工作目錄下即可使用:

      ├── resnet // 訓(xùn)練工作目錄 │ ├── imagenet_main.py │ ├── resnet_model.py │ ├── resnet_run_loop.py │ ├── cifar10_main.py │ ├── ... │ ├── precision_tool │ │ ├── cli.py │ │ ├──...

      使用限制:

      ●? ?僅配套CANN 5.0.2.alpha005及以上版本

      ●? ?當(dāng)前僅支持TensorFlow 1.15訓(xùn)練場(chǎng)景

      后續(xù)工具會(huì)進(jìn)行不斷增強(qiáng),歡迎大家持續(xù)關(guān)注,下面我們來看下現(xiàn)階段工具提供了哪些精度問題分析能力吧!

      浮點(diǎn)異常檢測(cè)

      訓(xùn)練網(wǎng)絡(luò)執(zhí)行過程中,可能發(fā)生頻繁的浮點(diǎn)異常情況,即loss scale值下降次數(shù)較多或者直接下降為1,此時(shí)需要分析溢出數(shù)據(jù),對(duì)頻繁浮點(diǎn)異常問題定界定位。

      步驟 1??????修改訓(xùn)練腳本,采集溢出數(shù)據(jù)

      import precision_tool.tf_config as npu_tf_config config = npu_tf_config.session_dump_config(config, action='overflow') with tf.Session(config=config) as sess: sess.run(...)

      訓(xùn)練執(zhí)行完成后,生成溢出數(shù)據(jù):

      ├── precision_tool │ ├── cli.py │ ├── ... ├── precision_data │ ├── overflow │ │ ├── dump // 生成的溢出數(shù)據(jù)

      步驟 2??????將生成的數(shù)據(jù)目錄上傳到toolkit安裝環(huán)境,進(jìn)行必要的配置(詳細(xì)可參考文檔),啟動(dòng)命令行,進(jìn)行溢出數(shù)據(jù)分析

      python3 ./precision_tool/cli.py PrecisionTool > ac

      可得到溢出算子信息:

      ----結(jié)束

      融合異常檢測(cè)

      訓(xùn)練網(wǎng)絡(luò)執(zhí)行過程中,系統(tǒng)根據(jù)內(nèi)置融合規(guī)則對(duì)網(wǎng)絡(luò)中算子進(jìn)行融合,以達(dá)到提高網(wǎng)絡(luò)性能的效果。由于大多數(shù)融合是自動(dòng)識(shí)別的,可能存在未考慮到的場(chǎng)景,導(dǎo)致精度問題,因此可以嘗試關(guān)閉融合規(guī)則,定界網(wǎng)絡(luò)問題是否是由于融合導(dǎo)致。

      步驟 1??????修改訓(xùn)練腳本,在關(guān)閉融合規(guī)則的情況下執(zhí)行訓(xùn)練

      import precision_tool.tf_config as npu_tf_config config = npu_tf_config.session_dump_config(config, action='fusion_off') with tf.Session(config=config) as sess: sess.run(...)

      步驟 2??????在融合規(guī)則關(guān)閉的情況,如果網(wǎng)絡(luò)精度有明顯提高,表明是融合問題導(dǎo)致

      目前暫不支持自動(dòng)分析定位,后續(xù)會(huì)逐步支持,請(qǐng)到昇騰開源社區(qū)https://gitee.com/ascend提issue求助。

      ----結(jié)束

      整網(wǎng)數(shù)據(jù)比對(duì)

      排除以上問題后,在訓(xùn)練網(wǎng)絡(luò)精度仍未達(dá)預(yù)期時(shí),通過采集訓(xùn)練過程中各算子的運(yùn)算結(jié)果(即Dump數(shù)據(jù)),然后和業(yè)界標(biāo)準(zhǔn)算子(如TensorFlow)運(yùn)算結(jié)果進(jìn)行數(shù)據(jù)偏差對(duì)比,可快速定位到具體算子的精度問題。

      步驟 1??????修改原始腳本,在GPU/CPU執(zhí)行訓(xùn)練,生成標(biāo)桿dump數(shù)據(jù)

      import precision_tool.tf_config as npu_tf_config # 等價(jià)于tf_debug.DumpingDebugWrapperSession(sess, "precision_data/tf/tf_debug") sess = npu_tf_config.sess_dump(sess)

      步驟 2??????修改遷移后的腳本,在NPU訓(xùn)練,生成npu dump數(shù)據(jù)

      import precision_tool.tf_config as npu_tf_config config = npu_tf_config.session_dump_config(config, action=‘dump') with tf.Session(config=config) as sess: sess.run(...)

      步驟 3??????將生成的數(shù)據(jù)目錄上傳到toolkit安裝環(huán)境,進(jìn)行整網(wǎng)數(shù)據(jù)比對(duì)

      ├── precision_tool │ ├── cli.py │ ├── ... ├── precision_data │ ├── tf │ │ ├── dump // 標(biāo)桿dump數(shù)據(jù) │ ├── npu │ │ ├── debug_0 // npu dump數(shù)據(jù)

      進(jìn)行必要的配置(詳細(xì)可參考文檔),啟動(dòng)命令行:

      python3 ./precision_tool/cli.py PrecisionTool > ac –c PrecisionTool > vcs –c 0.98 –l 10

      可得到余弦相似度小于0.98的數(shù)據(jù):

      ----結(jié)束

      更多介紹

      了解更詳細(xì)的內(nèi)容,可以登錄昇騰社區(qū)?https://www.hiascend.com,閱讀相關(guān)文檔:

      AI 昇騰 機(jī)器學(xué)習(xí) 網(wǎng)絡(luò)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:nginx配置系列(五)限制連接數(shù)
      下一篇:《TCP/IP詳解 卷2:實(shí)現(xiàn)》 —1.15 小結(jié)
      相關(guān)文章
      深夜国产福利99亚洲视频| 亚洲国产成人久久77| 亚洲乱码中文论理电影| 亚洲成A人片在线观看WWW| 亚洲国产精品lv| 亚洲伊人久久精品| 久久亚洲精品无码AV红樱桃| 亚洲电影中文字幕| 亚洲高清国产拍精品26U| 亚洲精品和日本精品| 亚洲av无码天堂一区二区三区 | 亚洲日本一区二区一本一道| 天堂亚洲免费视频| 亚洲国产香蕉人人爽成AV片久久 | 亚洲国产精品xo在线观看| 亚洲图片校园春色| 亚洲a级在线观看| 中文字幕在线日亚洲9| 亚洲人成无码网站在线观看| 亚洲成a∧人片在线观看无码| 日韩国产欧美亚洲v片| avtt亚洲天堂| 日本亚洲国产一区二区三区| 精品亚洲一区二区| 久久久久亚洲精品天堂| 亚洲一级大黄大色毛片| 亚洲中文字幕无码久久| 在线观看亚洲免费视频| 亚洲一区视频在线播放| 亚洲AV无码一区二区二三区软件| 亚洲精品无码不卡| 亚洲一级毛片免费看| 亚洲jizzjizz少妇| 亚洲一级Av无码毛片久久精品 | 亚洲国产一二三精品无码| 图图资源网亚洲综合网站| 亚洲欧洲春色校园另类小说| 亚洲 欧洲 自拍 另类 校园| 亚洲av乱码一区二区三区按摩| 4338×亚洲全国最大色成网站| 亚洲国产成人一区二区三区|