TensorRT 精度debug分析工具

tensorRT還提供了一套可用于engine生成過程中debug的工具,包括PolygraphyONNX GraphSurgeonPyTorch-Quantization。這些小工具用處很大,值得花時間進一步研究。

Debug方法示例

polygraphy

Polygraphy是TensorRT官方提供的一系列小工具合集,是一個非常強大的Debug工具。
在這里插入圖片描述
可以使用Polygraphy檢查ONNX或TRT的網絡結構,可以debug engine,還可以利用Polygraphy查看ONNX與TRT模型的輸出差異等。

例如利用Polygraphy查看ONNX與TRT模型的輸出差異

# 使用默認參數
polygraphy run polygraphy_debug.engine --trt# 加載onnx推理得到的結果,并設置絕對誤差
polygraphy run polygraphy_debug.engine --trt --load-outputs onnx_res.json --abs 1e-4# 使用fp16和cublas策略庫生成engine,并與onnx推理得到的結果作比較
polygraphy run net_bs8.onnx --trt --onnxrt --tactic-sources CUBLAS --fp16 --rtol 1e-03 --atol 1e-03 # 保存 data_loader生成的輸入和運行得到的結果
polygraphy run net_bs8.onnx --onnxrt  --val-range [0,1] --save-inputs  net_input.json --save-outputs onnx_res.json
# 對onnx推理得到的結果進行保存,同時運行trt engine,并與onnx推理得到的結果作比較
polygraphy run net_bs8.onnx --onnxrt --load-inputs  gpen_input.json --save-outputs onnx_res.json
polygraphy run net_bs8_fp32.engine --model-type engine --trt --load-outputs onnx_res.json --abs 1e-4
--load-inputs  net_input.json# 采用二分策略,使用fp16和cublas策略庫按層數迭代生成engine,并加載onnx推理得到的結果作比較,以判斷設置fp16時誤差出現的層的范圍
polygraphy debug precision net_bs8.onnx --fp16 --tactic-sources cublas --check polygraphy run polygraphy_debug.engine --trt --load-outputs onnx_res.json --abs 1e-1

誤差在設置范圍內時,打印結果如下:
在這里插入圖片描述

# 使用polygraphy debug precision工具搜索Layer精度設置,判斷FP16的engine運行結果與onnx結果的誤差是否在誤差范圍內,不移除運行中生成的engine文件
polygraphy debug precision net_bs8.onnx --fp16 --tactic-sources cublas --check polygraphy run polygraphy_debug.engine --trt --load-inputs  net_input.json --load-outputs onnx_res.json --abs 1e-1 --no-remove-intermediate# POLYGRAPHY_ARRAY_SWAP_THRESHOLD_MB=0表示結果交換到硬盤上,不放在內存中,mark all 表示對比所有節點結果
POLYGRAPHY_ARRAY_SWAP_THRESHOLD_MB=0 polygraphy run net_bs8.onnx --trt --onnxrt --tactic-sources CUBLAS --fp16 --rtol 1e-03 --atol 1e-03  --trt-outputs mark all --onnx-outputs mark all# 比較單個或者多個Tensor的結果
polygraphy run net_bs8.onnx --onnxrt --trt --tactic-sources CUBLAS --fp16 --rtol 1e-03 --atol 1e-03 --trt-outputs 151 --onnx-outputs 151polygraphy debug run net_bs8.onnx --onnxrt  --check polygraphy run net_bs8.engine --trt --tactic-sources CUBLAS --fp16 --rtol 1e-03 --atol 1e-03 --trt-outputs 153 197 --onnx-outputs 153 197# 檢查模型
polygraphy inspect model net_bs8.engine --mode=basic --display-as=trt
polygraphy inspect model net_bs8.onnx --mode=full --display-as=trt

參考: https://blog.csdn.net/tracelessle/article/details/120656484

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24449.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24449.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24449.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring源碼解析-(1)關于Bean

什么是Bean? 是spring對所有注入到IoC容器中的類的統稱。 我們要注冊進入spirng的bean千奇百怪,所以spring必須需要使用一個統一的定義來標識bean,就有了接下來的BeandDefinition,通過名稱我們就可以知道,他是對bean…

美國演員工會SAG-AFTRA 要求人工智能在廣告中使用演員聲音需征得同意并付費

SAG-AFTRA 的新豁免允許在人工智能生成的廣告中使用演員的聲音,但需要同意、補償和安全措施 美國演員工會(SAG-AFTRA)推出了一項新的豁免,以保護會員免受未經授權的人工智能在廣告中使用其聲音的影響。動態人工智能音頻廣告豁免定…

C語言Kruskal算法求最小生成樹

Kruskal算法求出最小生成樹。 圖形 算法描述 先找最小權值邊為1的邊有(V1,V4),(V2,V9),保證不產生回路就可以成功選擇邊 除去上一次找的邊后,在找權值最小的邊為2的有&a…

制作AI問答機器人:從0到1的完整指南

在數字化轉型的浪潮中,企業正追求更高效、智能的客戶服務解決方案。AI問答機器人以其快速響應、全天候服務和持續學習的能力,成為了提升客戶滿意度和加速業務發展的關鍵工具。本文將深入探討如何制作一個企業級的AI問答機器人,并強調其功能體…

OpenAI發表研究論文 介紹了一種逆向工程AI模型工作原理的方法

ChatGPT 開發商 OpenAI 構建人工智能的方法本周遭到了前員工的抨擊,他們指責該公司利用可能有害的技術冒不必要的風險。今天,OpenAI 發布了一篇新的研究論文,目的顯然是為了表明它在通過提高模型的可解釋性來應對人工智能風險方面的認真態度。…

hot100 -- 二分查找

目錄 前言 🎂搜索插入位置 🌼搜索二維矩陣 🌼排序數組元素第一和最后一個位置 🌼旋轉排序數組 💪旋轉排序數組中的最小值 💪兩個正序數組的中位數 前言 二分算法學習_時間超限ac:0%-CSDN博客 &#…

2024年【起重機械指揮】考試及起重機械指揮新版試題

題庫來源:安全生產模擬考試一點通公眾號小程序 起重機械指揮考試考前必練!安全生產模擬考試一點通每個月更新起重機械指揮新版試題題目及答案!多做幾遍,其實通過起重機械指揮試題及解析很簡單。 1、【多選題】《中華人民共和國特…

【Androi】安卓發展歷程詳解

人不走空 🌈個人主頁:人不走空 💖系列專欄:算法專題 ?詩詞歌賦:斯是陋室,惟吾德馨 目錄 🌈個人主頁:人不走空 💖系列專欄:算法專題 ?詩詞歌…

git推送代碼到github拒絕推送的解決方案

這里描述一下本地推送的場景,首先我在碼云上建立了一個前端項目,進行了自己的個性化開發,后期在github上創建了一個一樣的項目倉庫存放代碼。使用webstorm進行代碼開發。在下面這個位置可以選擇推送的代碼位置。 選擇推送github倉庫之后&…

Python深度學習基于Tensorflow(16)基于Tensorflow的對話實例

文章目錄 基礎數據清洗數據生成詞匯表定義分詞器并制作數據集構建Transformer模型并訓練模型推理 Tensorflow 的核心就是注意力機制,在之前詳細的介紹過,具體可以看這個:Python深度學習基于Tensorflow(9)注意力機制_te…

在Java中為什么對a賦值為10,在進行a++時還是等于10呢

首先我們看這樣一組代碼 public class demo1 {public static void main(String[] args) {int a10;aa;System.out.println(a);} } 結果:10不是在第二步有a操作嗎?為什么還是10呢? a的執行步驟如下: 保存當前a的值(即10…

websocket鏈接攜帶參數

前端創建鏈接時官方提供的構造函數 var aWebSocket new WebSocket(url, [protocols]); url:要連接的URL;這應該是WebSocket服務器將響應的URL。 protocols:可選;一個協議字符串或者一個包含協議字符串的數組。這些字符串用于指定…

智能語音電銷機器人可以做哪些事情?ai語音機器人系統

智能語音電銷機器人軟件的出現,給很多企業都帶來了福利,尤其是電銷企業,不僅工作效率提升了,成本降低了,還能實現智能化管理客戶的出現,給很多企業都帶來了福利,尤其是電銷企業,不僅…

python初學者筆記(八)——數字階乘

#python初學者筆記(8)——數字階乘 階乘是基斯頓卡曼于 1808 年發明的運算符號,是數學術語,一個正整數的階乘(factorial)是所有小于及等于該數的正整數的積。 下面利用Python編寫數字階乘 ##1.方法一:利用函數的方法,求輸入值的階乘 #coding…

WebAPI 前端開發流程:深度解析與實踐探索

WebAPI 前端開發流程:深度解析與實踐探索 在前端開發的世界里,WebAPI扮演著至關重要的角色,它作為前端與后端溝通的橋梁,確保了數據的流暢傳輸與功能的完整實現。本文將詳細探討WebAPI前端開發流程,從四個方面、五個方…

什么情況下需要配戴助聽器

以下幾種情況需要考慮配戴助聽器: 1、聽力無波動3個月以上的感音神經性聽力障礙。如:先天性聽力障礙、老年性聽力障礙、噪聲性聽力障礙、突聾的穩定期等,均可選配合適的助聽器。 2、年齡方面。使用助聽器沒有嚴格的年齡限制,從出生數周的嬰…

深度學習Week16——數據增強

文章目錄 深度學習Week16——數據增強 一、前言 二、我的環境 三、前期工作 1、配置環境 2、導入數據 2.1 加載數據 2.2 配置數據集 2.3 數據可視化 四、數據增強 五、增強方式 1、將其嵌入model中 2、在Dataset數據集中進行數據增強 六、訓練模型 七、自定義增強函數 一、前言…

Geoserver源碼解讀一(環境搭建)

一、Github地址 https://github.com/geoserver/geoserver 1.1 克隆代碼 git clone https://github.com/geoserver/geoserver.git 1.2 選擇版本 版本選擇參考我的上一篇文章 Geoserver 以及 Geotools各版本和jdk版本對照表 此處我選擇的是兼容jdk8的最后一個版本 git che…

netty+springboot+vue聊天室(需要了解netty)

先看看這個使用websocket實現的聊天室,因為前端是使用websocket,和下面的demo的前端差不多就不解釋實現原理,所以建議還是看看(要是會websocket的大佬請忽略) springbootwebsocketvue聊天室 目錄 一、實現內容二、代碼實現1.后端2.前端源碼…

html+CSS+js部分基礎運用17

在圖書列表中,為書名“零基礎學JavaScript”和“HTML5CSS3精彩編程200例”添加顏色。(請用class或style屬性實現),效果如下圖1所示: 圖1 圖書列表 Class和style的綜合應用。(1)應用class的對象、…