A. TensorRT--用fp16精度運行 比 fp32還慢
TensorRT運行demo程序sample_uff_ssd.exe,發現用fp16精度運行 比 fp32還慢,如下圖所示
原因是:根據 NVIDIA的說法 ,支持full-rate FP16 performance 的型號是: Tesla P100, Quadro GP100, and Jetson TX1/TX2。GTX 1050, 1060, 1070, 1080, Pascal Titan X, Titan Xp, Tesla P40等型號,不支持full-rate FP16,所以,在這些型號中使用fp16精度反而比fp32慢。
簡單來說就是硬體有沒有Native FP16 support,即native FP16 instructions支持。
B. python多進程部署TensorRT的問題及解決
按照Nvidia官方教程按照部署TensorRT成功後, 在python環境下多進程啟動tensorrt實例時,系統報錯:
解決步驟:
參考TensorRTEngine. init () 中的self.cfx = cuda.Device(0).make_context(), 同時別忘了在實例釋放時detach cuda上下文
參考TensorRTEngine.inference()中的self.cfx.push() 與 self.cfx.pop() 操作
參考文章:
https://stackoverflow.com/questions/56371103/how-to-run-tensorrt-in-multiple-threads
https://blog.csdn.net/weixin_39739042/article/details/112554503
C. NVIDIA在目標檢測模型量化方面,怎樣做到速度和精度之間的平衡。NVIDIA 在目標檢測採用哪種演算法
藍海大腦AI伺服器事業部負責人表示:速度上面可以用FP16或INT8來達到目標的速度。在精度上面,如果用INT8,目前有很多方法,最基本的有TensorRT INT8基本的量化演算法,像entropy、linux這些calibration的演算法。如果校準的演算法不滿足精度的要求,有些debug的手段,去檢查當前網路中哪些層影響精度,後面再去優化它。甚至有些可以在訓練階段去調整INT8的精度,把訓練階段設生成的INT8精度校準表導入到TensorRT里,讓TensorRT在做influence的精度跟訓練時的精度一樣。
D. TensorRT 4是什麼應用平台
根據老黃的介紹,TensorRT 4是一款應用平台,並且TensorRT 4應用平台是能夠進行可編程的,大大給開發者帶來了便利。
據悉,利用TensorRT 4可編程平台來進行編程操作,就能夠快捷地將已經訓練好的神經網路快速部署到NVIDIA的GPU上,方便快捷。
新版的TensorRT 4應用平台也同時能夠支持INT8以及FP16精度運算,並且對於數據中心的功耗可以降低到70%。
此外,NVIDIA還會和谷歌進行相關的深度合作,旨在要想TensorRT 4整合到現在AI開源框架中去,並且加速AI應用的推廣實行。
E. 英偉達代碼透露Switch2消息
英偉達代碼透露Switch2消息
英偉達代碼透露Switch2消息,Switch推出已經快5年了,關於任天堂下一部游戲機的傳言也越傳越廣。英偉達一些泄露的源代碼很可能指的是Switch2,英偉達代碼透露Switch2消息。
3月2日消息,Twitter博主@NWPlayer123稱,NVIDIA最近遭遇了網路攻擊,黑客竊取了一些文件,文件中一部分代碼顯示,正在為任天堂開發的晶元代號為T239,支持DLSS。
該文件中有一個名為「NVN2」的目錄和一個名為「NVNDLSS」的目錄,NVN是開發Switch所用的API,我們很容易就聯想到,這個新文件夾屬於下一代Switch。至於下一代Switch的命名,曾傳出過許多說法,這里我們就叫它「Switch2」吧。
現款Switch發布至今已有五年,性能與驍龍835差不多,與現在的主流手機相差太大,別說1080P 60FPS了,很多時候Switch都無法720P 30FPS流暢運行。再看看手機,驍龍8 Gen 1、天璣9000等旗艦芯安兔兔跑分已超100萬,低端機也有1080P 120Hz屏幕,旗艦機普遍搭載2K 120Hz屏幕。
與Switch相比,手機的游戲體驗好不少,只不過我們也知道,買Switch是為了任天堂的第一方游戲,所以Switch配置很差,我們也忍了。然而已經到了2022年,Switch真的有些落伍了,按照網上爆料的消息,Switch2仍將搭載NVIDIA晶元,屏幕升級為1080P解析度,支持DLSS技術。
DLSS(深度學習超級采樣)是NVIDIA研發的AI渲染技術,俗稱「大力水手」,可以將畫質降到低解析度,再渲染成高解析度,雖說不如原生高解析度,卻可以大幅降低GPU的壓力。
如果Switch2僅是1080P解析度,估計用不到DLSS,因為晶元性能已經夠了。按照網上的說法,Switch2會支持主機模式下4K視頻輸出,不過小雷對此有些懷疑,就算有DLSS加持,Switch2的性能也未必夠。
至於Switch2的發布時間,目前尚無確切消息,日前任天堂社長谷川俊太郎在財務包中表示,Switch仍處於生命周期的中間階段,想來就算Switch2的開發進度快,也要明年見了。
Nintendo Switch推出已經快5年了,關於任天堂下一部游戲機的傳言也越傳越廣。Switch內部的硬體從推出時就不算頂尖,圖像質量和幀率一直是Switch上的一個大問題。
盡管存在硬體的限制,但Switch的玩家仍然能夠遊玩一些3A大作,例如《巫師3》和《毀滅戰士:永恆》等,雖然他們的運行效果相較其他平台略差,但能夠在Switch上玩這樣的游戲就很令人驚訝了。而近日,英偉達的一些數據泄露,似乎讓Nintendo Switch 2漸漸浮上水面。
此信息來自推特上的用戶NWPlayer123,英偉達在最近遭到了重大的網路攻擊,而一些DLSS的源代碼似乎遭到了泄露。其中可以發現包含一個名為NVN2的目錄,而NVN是英偉達與任天堂一同為Switch專門開發的圖形API介面,這也意味著NVN2很有可能將是Switch的升級版。此外,泄露的內容中提到了T239,而這也是之前盛傳的Swtich Pro謠言中被提到的.新版Switch使用的Soc。
在2021年夏季之前,就有許多傳言稱任天堂正在開發Switch的升級型號,甚至有人提到它將支持高於1080P的解析度。有傳言稱該設備是中代更新,就想PS4 Pro和Xbox One X一樣。但隨後任天堂發布的Switch OLED證明這些謠言的錯誤,它沒有太多硬體上的升級。
與此前相同的是,粉絲們應該對這次的泄密或是傳言保持觀望態度。我們都很期待著Switch Pro的發布,並且任天堂此前確認Switch仍處於生命周期的中段,所以此次傳言中的設備還是很有可能成為Switch的中期升級版的。
3月2日消息,任天堂總裁古川俊太郎最近在該公司的財務報告中表示,Switch主機仍處於其生命周期的中間階段,這意味著我們不太可能很快得到Switch的繼任者。
然而,TechPowerUp發文稱,英偉達DLSS技術的源代碼現已遭到泄露,並附上了一張圖,但根據任天堂舅舅黨SamusHunter的說法,圖內的泄露代碼與文件夾暗示了一些玩家能在任天堂下一代主機上見到的功能。
了解到,在這批黑客公開的英偉達機密文件中,有一個名為NVN2的目錄,還有一個名為NVNDLSS的目錄,另外,也有文件提到了T239。因為NVN是開發Switch時所用到的API,所以「NVN2」很可能指的是Switch2,而NVNDLSS則是指Switch的DLSS功能,暗示Switch2支持DLSS功能。
另外,經常爆料英偉達消息的推特用戶kopite7kimi也表示T239就是新一代Switch所用的Soc,代號為Drake。
據官方介紹,NVIDIADLSS(深度學習超級采樣)是一項開創性AI渲染技術,它利用GeForceRTXGPU上的專用AI處理單元-TensorCore,將視覺保真度提升至全新高度。DLSS利用深度學習神經網路的強大功能提高幀率,為游戲生成精美清晰的圖像。
F. 訓練好的深度學習模型是怎麼部署的
先說結論:部署的方式取決於需求
需求一:簡單的demo演示,只要看看效果的,像是學校裡面的demo展示這種
caffe、tf、pytorch等框架隨便選一個,切到test模式,拿python跑一跑就好,順手寫個簡單的GUI展示結果
高級一點,可以用CPython包一層介面,然後用C++工程去調用
需求二:要放到伺服器上去跑,但一不要求吞吐二不要求時延的那種,說白了還是有點玩玩的意思
caffe、tf、pytorch等框架隨便選一個,按照官方的部署教程,老老實實用C++部署,例如pytorch模型用工具導到libtorch下跑(官方有教程,很簡單)
這種還是沒有脫離框架,有很多為訓練方便保留的特性沒有去除,性能並不是最優的;
另外,這些框架要麼CPU,要麼NVIDIA GPU,對硬體平台有要求,不靈活;還有,框架是真心大,占內存(tf還占顯存),占磁碟
需求三:放到伺服器上跑,要求吞吐和時延(重點是吞吐)
這種應用在互聯網企業居多,一般是互聯網產品的後端AI計算,例如人臉驗證、語音服務、應用了深度學習的智能推薦等。由於一般是大規模部署,這時不僅僅要考慮吞吐和時延,還要考慮功耗和成本。所以除了軟體外,硬體也會下功夫,比如使用推理專用的NVIDIA P4、寒武紀MLU100等。這些推理卡比桌面級顯卡功耗低,單位能耗下計算效率更高,且硬體結構更適合高吞吐量的情況軟體上,一般都不會直接上深度學習框架。對於NVIDIA的產品,一般都會使用TensorRT來加速(我記得NVIDIA好像還有TensorRT inference server什麼的,名字記不清了,反正是不僅可以加速前傳,還順手幫忙調度了)。TensorRT用了CUDA、CUDNN,而且還有圖優化、fp16、int8量化等。反正用NVIDIA的一套硬軟體就對了
需求四:放在NVIDIA嵌入式平台上跑,注重時延
比如PX2、TX2、Xavier等,參考上面(用全家桶就對了),也就是貴一點嘛
需求五:放在其他嵌入式平台上跑,注重時延
硬體方面,要根據模型計算量和時延要求,結合成本和功耗要求,選合適的嵌入式平台。比如模型計算量大的,可能就要選擇帶GPU的SoC,用opencl/opengl/vulkan編程;也可以試試NPU,不過現在NPU支持的運算元不多,一些自定義Op多的網路可能部署不上去對於小模型,或者幀率要求不高的,可能用CPU就夠了,不過一般需要做點優化(剪枝、量化、SIMD、匯編、Winograd等)順帶一提,在手機上部署深度學習模型也可以歸在此列,只不過硬體沒得選,用戶用什麼手機你就得部署在什麼手機上23333。為老舊手機部署才是最為頭疼的上述部署和優化的軟體工作,在一些移動端開源框架都有人做掉了,一般拿來改改就可以用了,性能都不錯。
需求六:上述部署方案不滿足我的需求
比如開源移動端框架速度不夠——自己寫一套。比如像商湯、曠世、Momenta都有自己的前傳框架,性能應該都比開源框架好。只不過自己寫一套比較費時費力,且如果沒有經驗的話,很有可能費半天勁寫不好
G. tensorRT介紹
TOPS是Tera Operations Per Second的縮寫
1TOPS代表處理器每秒鍾可進行一萬億次(10^12)操作
GOPS(Giga Operations Per Second:1GOPS代表處理器每秒鍾可進行十億次(10^9)操作
MOPS(Million Operation Per Second):1MOPS代表處理器每秒鍾可進行一百萬次(10^6)操作
一個MFLOPS(megaFLOPS)等於每秒一百萬(=10^6)次的浮點運算
一個GFLOPS(gigaFLOPS)等於每秒十億(=10^9)次的浮點運算
一個TFLOPS(teraFLOPS)等於每秒一萬億(=10^12)次的浮點運算,(1太拉)
一個PFLOPS(petaFLOPS)等於每秒一千萬億(=10^15)次的浮點運算
高吞吐率、低響應時間、低資源消耗以及簡便的部署流程要求,因此TensorRT就是用來解決推理所帶來的挑戰以及影響的部署級的解決方案。TensorRT 是nvidia 自己開發的,主要作用就是對演算法進行優化,然後進行了部署
TensorRT 部署流程:
TensorRT的部署分為兩個部分:
INT8隻有256個不同的數值,使用INT8來表示 FP32精度的數值,肯定會丟失信息,造成性能下降。不過TensorRT會提供完全自動化的校準(Calibration )過程,會以最好的匹配性能將FP32精度的數據降低為INT8精度,最小化性能損失。關於校準過程,後面會專門做一個探究。
優化結果:
使用了nvidia 板子,使用了sdkmanager 安裝,板子已經安裝了下面軟體
運行結果:
REF:
https://mp.weixin.qq.com/s/E5qbMsuc7UBnNmYBzq__5Q##
https://arleyzhang.github.io/articles/7f4b25ce/
https://www.pianshen.com/article/3389187425/
https://zhuanlan.hu.com/p/84125533
nvidia 官方參考文檔:
https://docs.nvidia.com/deeplearning/tensorrt/quick-start-guide/index.html