一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVIDIA TensorRT的命令行程序

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:Ken He ? 2022-05-20 14:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

A.3.1. trtexec

示例目錄中包含一個(gè)名為trtexec的命令行包裝工具。 trtexec是一種無(wú)需開發(fā)自己的應(yīng)用程序即可快速使用 TensorRT 的工具。

trtexec工具有三個(gè)主要用途:

它對(duì)于在隨機(jī)或用戶提供的輸入數(shù)據(jù)上對(duì)網(wǎng)絡(luò)進(jìn)行基準(zhǔn)測(cè)試很有用。

它對(duì)于從模型生成序列化引擎很有用。

它對(duì)于從構(gòu)建器生成序列化時(shí)序緩存很有用。

A.3.1.1. Benchmarking Network

如果您將模型保存為 ONNX 文件、UFF 文件,或者如果您有 Caffe prototxt 格式的網(wǎng)絡(luò)描述,則可以使用trtexec工具測(cè)試使用 TensorRT 在網(wǎng)絡(luò)上運(yùn)行推理的性能。 trtexec工具有許多選項(xiàng)用于指定輸入和輸出、性能計(jì)時(shí)的迭代、允許的精度和其他選項(xiàng)。

為了最大限度地提高 GPU 利用率, trtexec會(huì)提前將一個(gè)batch放入隊(duì)列。換句話說,它執(zhí)行以下操作:

enqueue batch 0

-》 enqueue batch 1

-》 wait until batch 0 is done

-》 enqueue batch 2

-》 wait until batch 1 is done

-》 enqueue batch 3

-》 wait until batch 2 is done

-》 enqueue batch 4

-》 。..

如果使用多流( --streams=N標(biāo)志),則trtexec在每個(gè)流上分別遵循此模式。

trtexec工具打印以下性能指標(biāo)。下圖顯示了trtexec運(yùn)行的示例 Nsight 系統(tǒng)配置文件,其中標(biāo)記顯示了每個(gè)性能指標(biāo)的含義。

Throughput

觀察到的吞吐量是通過將執(zhí)行數(shù)除以 Total Host Walltime 來(lái)計(jì)算的。如果這顯著低于 GPU 計(jì)算時(shí)間的倒數(shù),則 GPU 可能由于主機(jī)端開銷或數(shù)據(jù)傳輸而未被充分利用。使用 CUDA 圖(使用--useCudaGraph )或禁用 H2D/D2H 傳輸(使用--noDataTransfer )可以提高 GPU 利用率。當(dāng)trtexec檢測(cè)到 GPU 未充分利用時(shí),輸出日志提供了有關(guān)使用哪個(gè)標(biāo)志的指導(dǎo)。

Host Latency

H2D 延遲、GPU 計(jì)算時(shí)間和 D2H 延遲的總和。這是推斷單個(gè)執(zhí)行的延遲。

Enqueue Time

將執(zhí)行排入隊(duì)列的主機(jī)延遲,包括調(diào)用 H2D/D2H CUDA API、運(yùn)行主機(jī)端方法和啟動(dòng) CUDA 內(nèi)核。如果這比 GPU 計(jì)算時(shí)間長(zhǎng),則 GPU 可能未被充分利用,并且吞吐量可能由主機(jī)端開銷支配。使用 CUDA 圖(帶有--useCudaGraph )可以減少排隊(duì)時(shí)間。

H2D Latency

單個(gè)執(zhí)行的輸入張量的主機(jī)到設(shè)備數(shù)據(jù)傳輸?shù)难舆t。添加--noDataTransfer以禁用 H2D/D2H 數(shù)據(jù)傳輸。

D2H Latency

單個(gè)執(zhí)行的輸出張量的設(shè)備到主機(jī)數(shù)據(jù)傳輸?shù)难舆t。添加--noDataTransfer以禁用 H2D/D2H 數(shù)據(jù)傳輸。

GPU Compute Time

為執(zhí)行 CUDA 內(nèi)核的 GPU 延遲。

Total Host Walltime

從第一個(gè)執(zhí)行(預(yù)熱后)入隊(duì)到最后一個(gè)執(zhí)行完成的主機(jī)時(shí)間。

Total GPU Compute Time

所有執(zhí)行的 GPU 計(jì)算時(shí)間的總和。如果這明顯短于 Total Host Walltime,則 GPU 可能由于主機(jī)端開銷或數(shù)據(jù)傳輸而未得到充分利用。

圖 1. 在 Nsight 系統(tǒng)下運(yùn)行的正常trtexec的性能指標(biāo)(ShuffleNet,BS=16,best,TitanRTX@1200MHz)

pYYBAGKHO4qAREEbAAGiRSxfZKk173.png

將--dumpProfile標(biāo)志添加到trtexec以顯示每層性能配置文件,這使用戶可以了解網(wǎng)絡(luò)中的哪些層在 GPU 執(zhí)行中花費(fèi)的時(shí)間最多。每層性能分析也適用于作為 CUDA 圖啟動(dòng)推理(需要 CUDA 11.1 及更高版本)。此外,使用--profilingVerbosity=detailed標(biāo)志構(gòu)建引擎并添加--dumpLayerInfo標(biāo)志以顯示詳細(xì)的引擎信息,包括每層詳細(xì)信息和綁定信息。這可以讓你了解引擎中每一層對(duì)應(yīng)的操作及其參數(shù)。

A.3.1.2. Serialized Engine Generation

如果您生成保存的序列化引擎文件,您可以將其拉入另一個(gè)運(yùn)行推理的應(yīng)用程序中。例如,您可以使用TensorRT 實(shí)驗(yàn)室以完全流水線異步方式運(yùn)行具有來(lái)自多個(gè)線程的多個(gè)執(zhí)行上下文的引擎,以測(cè)試并行推理性能。有一些警告;例如,如果您使用 Caffe prototxt 文件并且未提供模型,則會(huì)生成隨機(jī)權(quán)重。此外,在 INT8 模式下,使用隨機(jī)權(quán)重,這意味著 trtexec 不提供校準(zhǔn)功能。

A.3.1.3. trtexec

如果您向--timingCacheFile選項(xiàng)提供時(shí)序緩存文件,則構(gòu)建器可以從中加載現(xiàn)有的分析數(shù)據(jù)并在層分析期間添加新的分析數(shù)據(jù)條目。計(jì)時(shí)緩存文件可以在其他構(gòu)建器實(shí)例中重用,以提高構(gòu)建器執(zhí)行時(shí)間。建議僅在相同的硬件/軟件配置(例如,CUDA/cuDNN/TensorRT 版本、設(shè)備型號(hào)和時(shí)鐘頻率)中重復(fù)使用此緩存;否則,可能會(huì)出現(xiàn)功能或性能問題。

A.3.1.4. 常用的命令行標(biāo)志

該部分列出了常用的trtexec命令行標(biāo)志。

構(gòu)建階段的標(biāo)志

--onnx=《model》 :指定輸入 ONNX 模型。

--deploy=《caffe_prototxt》 :指定輸入的 Caffe prototxt 模型。

--uff=《model》 :指定輸入 UFF 模型。

--output=《tensor》 :指定輸出張量名稱。僅當(dāng)輸入模型為 UFF 或 Caffe 格式時(shí)才需要。

--maxBatch=《BS》 :指定構(gòu)建引擎的最大批量大小。僅當(dāng)輸入模型為 UFF 或 Caffe 格式時(shí)才需要。如果輸入模型是 ONNX 格式,請(qǐng)使用--minShapes 、 --optShapes 、 --maxShapes標(biāo)志來(lái)控制輸入形狀的范圍,包括批量大小。

--minShapes=《shapes》 , --optShapes=《shapes》 , --maxShapes=《shapes》 :指定用于構(gòu)建引擎的輸入形狀的范圍。僅當(dāng)輸入模型為 ONNX 格式時(shí)才需要。

--workspace=《size in MB》 :指定策略允許使用的最大工作空間大小。該標(biāo)志已被棄用。您可以改用--memPoolSize=《pool_spec》標(biāo)志。

--memPoolSize=《pool_spec》 :指定策略允許使用的工作空間的最大大小,以及 DLA 將分配的每個(gè)可加載的內(nèi)存池的大小。

--saveEngine=《file》 :指定保存引擎的路徑。

--fp16 、 --int8 、 --noTF32 、 --best :指定網(wǎng)絡(luò)級(jí)精度。

--sparsity=[disable|enable|force] :指定是否使用支持結(jié)構(gòu)化稀疏的策略。

disable :使用結(jié)構(gòu)化稀疏禁用所有策略。這是默認(rèn)設(shè)置。

enable :使用結(jié)構(gòu)化稀疏啟用策略。只有當(dāng) ONNX 文件中的權(quán)重滿足結(jié)構(gòu)化稀疏性的要求時(shí),才會(huì)使用策略。

force :使用結(jié)構(gòu)化稀疏啟用策略,并允許 trtexec 覆蓋 ONNX 文件中的權(quán)重,以強(qiáng)制它們具有結(jié)構(gòu)化稀疏模式。請(qǐng)注意,不會(huì)保留準(zhǔn)確性,因此這只是為了獲得推理性能。

--timingCacheFile=《file》 :指定要從中加載和保存的時(shí)序緩存。

--verbose :打開詳細(xì)日志記錄。

--buildOnly :在不運(yùn)行推理的情況下構(gòu)建并保存引擎。

--profilingVerbosity=[layer_names_only|detailed|none] :指定用于構(gòu)建引擎的分析詳細(xì)程度。

--dumpLayerInfo , --exportLayerInfo=《file》 :打印/保存引擎的層信息。

--precisionConstraints=spec :控制精度約束設(shè)置。

none :沒有限制。

prefer :如果可能,滿足--layerPrecisions / --layerOutputTypes設(shè)置的精度約束。

obey:滿足由--layerPrecisions / --layerOutputTypes設(shè)置的精度約束,否則失敗。

--layerPrecisions=spec :控制每層精度約束。僅當(dāng)PrecisionConstraints設(shè)置為服從或首選時(shí)才有效。規(guī)范是從左到右閱讀的,后面的會(huì)覆蓋前面的。 “ * ”可以用作layerName來(lái)指定所有未指定層的默認(rèn)精度。

例如: --layerPrecisions=*:fp16,layer_1:fp32將所有層的精度設(shè)置為FP16 ,除了 layer_1 將設(shè)置為 FP32。

--layerOutputTypes=spec :控制每層輸出類型約束。僅當(dāng)PrecisionConstraints設(shè)置為服從或首選時(shí)才有效。規(guī)范是從左到右閱讀的,后面的會(huì)覆蓋前面的。 “ * ”可以用作layerName來(lái)指定所有未指定層的默認(rèn)精度。如果一個(gè)層有多個(gè)輸出,則可以為該層提供用“ + ”分隔的多種類型。

例如: --layerOutputTypes=*:fp16,layer_1:fp32+fp16將所有層輸出的精度設(shè)置為FP16 ,但 layer_1 除外,其第一個(gè)輸出將設(shè)置為 FP32,其第二個(gè)輸出將設(shè)置為 FP16。

推理階段的標(biāo)志

--loadEngine=《file》 :從序列化計(jì)劃文件加載引擎,而不是從輸入 ONNX、UFF 或 Caffe 模型構(gòu)建引擎。

--batch=《N》 :指定運(yùn)行推理的批次大小。僅當(dāng)輸入模型為 UFF 或 Caffe 格式時(shí)才需要。如果輸入模型是 ONNX 格式,或者引擎是使用顯式批量維度構(gòu)建的,請(qǐng)改用--shapes 。

--shapes=《shapes》 :指定要運(yùn)行推理的輸入形狀。

--warmUp=《duration in ms》 , --duration=《duration in seconds》 , --iterations=《N》 : 指定預(yù)熱運(yùn)行的最短持續(xù)時(shí)間、推理運(yùn)行的最短持續(xù)時(shí)間和推理運(yùn)行的迭代。例如,設(shè)置--warmUp=0 --duration=0 --iterations允許用戶準(zhǔn)確控制運(yùn)行推理的迭代次數(shù)。

--useCudaGraph :將推理捕獲到 CUDA 圖并通過啟動(dòng)圖來(lái)運(yùn)行推理。當(dāng)構(gòu)建的 TensorRT 引擎包含 CUDA 圖捕獲模式下不允許的操作時(shí),可以忽略此參數(shù)。

--noDataTransfers :關(guān)閉主機(jī)到設(shè)備和設(shè)備到主機(jī)的數(shù)據(jù)傳輸。

--streams=《N》 :并行運(yùn)行多個(gè)流的推理。

--verbose :打開詳細(xì)日志記錄。

--dumpProfile, --exportProfile=《file》 :打印/保存每層性能配置文件。

關(guān)于作者

Ken He 是 NVIDIA 企業(yè)級(jí)開發(fā)者社區(qū)經(jīng)理 & 高級(jí)講師,擁有多年的 GPU 和人工智能開發(fā)經(jīng)驗(yàn)。自 2017 年加入 NVIDIA 開發(fā)者社區(qū)以來(lái),完成過上百場(chǎng)培訓(xùn),幫助上萬(wàn)個(gè)開發(fā)者了解人工智能和 GPU 編程開發(fā)。在計(jì)算機(jī)視覺,高性能計(jì)算領(lǐng)域完成過多個(gè)獨(dú)立項(xiàng)目。并且,在機(jī)器人無(wú)人機(jī)領(lǐng)域,有過豐富的研發(fā)經(jīng)驗(yàn)。對(duì)于圖像識(shí)別,目標(biāo)的檢測(cè)與跟蹤完成過多種解決方案。曾經(jīng)參與 GPU 版氣象模式GRAPES,是其主要研發(fā)者。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5304

    瀏覽量

    106329
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4938

    瀏覽量

    131196
  • 人工智能
    +關(guān)注

    關(guān)注

    1806

    文章

    48996

    瀏覽量

    249239
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    淺談wsl --update` 命令行選項(xiàng)無(wú)效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項(xiàng)無(wú)效: --update
    的頭像 發(fā)表于 06-27 10:28 ?481次閱讀

    使用NVIDIA Triton和TensorRT-LLM部署TTS應(yīng)用的最佳實(shí)踐

    針對(duì)基于 Diffusion 和 LLM 類別的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張 NVIDIA Ada Lovelace
    的頭像 發(fā)表于 06-12 15:37 ?571次閱讀
    使用<b class='flag-5'>NVIDIA</b> Triton和<b class='flag-5'>TensorRT</b>-LLM部署TTS應(yīng)用的最佳實(shí)踐

    aurix development studio無(wú)法用命令行編譯工程的原因?

    aurix development studio無(wú)法用命令行編譯工程
    發(fā)表于 04-18 06:50

    請(qǐng)問如何通過S32K312命令行構(gòu)建代碼?

    現(xiàn)在我們已經(jīng)通過 S32DS3.5 IDE 開發(fā)了固件,它也可以工作了。 最近,我們收到了通過命令行構(gòu)建代碼的要求,并且 我從 S32DS 幫助內(nèi)容中讀取了相關(guān)文檔,但這種情況會(huì)發(fā)生 有關(guān) JAVA
    發(fā)表于 04-09 07:48

    使用NXP MCX-N板卡新增命令控制

    此次任務(wù)通過串口命令行控制RGB LED,相比較與上一次任務(wù)通過單個(gè)字符控制增加了FreeRTOS-CLI組件,支持更復(fù)雜的、帶參數(shù)的命令
    的頭像 發(fā)表于 03-17 13:38 ?673次閱讀
    使用NXP MCX-N板卡新增<b class='flag-5'>命令</b>控制

    如何用幾條命令搞定Ubuntu系統(tǒng)的網(wǎng)絡(luò)配置

    在某些場(chǎng)景下,設(shè)備沒有顯示器或屏可以用,這時(shí)候通過命令行來(lái)設(shè)置網(wǎng)絡(luò)就變得特別重要了。本文將介紹如何用幾條命令搞定Ubuntu系統(tǒng)的網(wǎng)絡(luò)配置。
    的頭像 發(fā)表于 03-14 10:53 ?2169次閱讀
    如何用幾條<b class='flag-5'>命令</b>搞定Ubuntu系統(tǒng)的網(wǎng)絡(luò)配置

    Linux常用命令行總結(jié)

    學(xué)習(xí)了一段時(shí)間的linux之后,開始著手基本命令的學(xué)習(xí),這里主要記錄一些學(xué)習(xí)過程中重要的知識(shí)點(diǎn)供以后查閱。
    的頭像 發(fā)表于 03-03 10:40 ?484次閱讀
    Linux常用<b class='flag-5'>命令行</b>總結(jié)

    curl wget bond:深入解析命令行工具的差異與應(yīng)用場(chǎng)景

    curl curl 是一個(gè)用于與服務(wù)器進(jìn)行數(shù)據(jù)傳輸?shù)?b class='flag-5'>命令行工具。它支持多種協(xié)議,包括 HTTP、HTTPS、 FTP 等。 基本用法 獲取網(wǎng)頁(yè)內(nèi)容: curl http://example.com
    的頭像 發(fā)表于 01-24 09:20 ?432次閱讀

    NVIDIA TensorRT-LLM中啟用ReDrafter的一些變化

    Recurrent Drafting (簡(jiǎn)稱 ReDrafter) 是蘋果公司為大語(yǔ)言模型 (LLM) 推理開發(fā)并開源的一種新型推測(cè)解碼技術(shù),該技術(shù)現(xiàn)在可與 NVIDIA TensorRT-LLM 一起使用。
    的頭像 發(fā)表于 12-25 17:31 ?742次閱讀
    在<b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b>-LLM中啟用ReDrafter的一些變化

    解鎖NVIDIA TensorRT-LLM的卓越性能

    NVIDIA TensorRT-LLM 是一個(gè)專為優(yōu)化大語(yǔ)言模型 (LLM) 推理而設(shè)計(jì)的庫(kù)。它提供了多種先進(jìn)的優(yōu)化技術(shù),包括自定義 Attention Kernel、Inflight
    的頭像 發(fā)表于 12-17 17:47 ?849次閱讀

    NVIDIA TensorRT-LLM Roadmap現(xiàn)已在GitHub上公開發(fā)布

    感謝眾多用戶及合作伙伴一直以來(lái)對(duì)NVIDIA TensorRT-LLM的支持。TensorRT-LLM 的 Roadmap 現(xiàn)已在 GitHub 上公開發(fā)布!
    的頭像 發(fā)表于 11-28 10:43 ?714次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>TensorRT</b>-LLM Roadmap現(xiàn)已在GitHub上公開發(fā)布

    圖形用戶界面與命令行接口的比較

    在計(jì)算機(jī)科學(xué)和信息技術(shù)領(lǐng)域,用戶與計(jì)算機(jī)交互的方式主要分為兩種:圖形用戶界面(GUI)和命令行接口(CLI)。這兩種界面各有優(yōu)勢(shì)和局限性,適用于不同的場(chǎng)景和用戶需求。 1. 定義與基本特征 圖形用戶
    的頭像 發(fā)表于 11-12 14:38 ?1199次閱讀

    Mobaxterm 的命令行使用方法

    的遠(yuǎn)程桌面協(xié)議(如RDP和VNC),以及文件傳輸協(xié)議(如FTP和SFTP)。本文將詳細(xì)介紹如何使用Mobaxterm的命令行功能。 2. 安裝 Mobaxterm 在開始之前,確保你已經(jīng)安裝
    的頭像 發(fā)表于 11-11 09:08 ?4942次閱讀

    APM32F411板的python+pyocd命令行操作

    前段時(shí)間學(xué)習(xí)了一下如何使用pyocd配合APM32F411VCTINY板在命令行下給它進(jìn)行各種騷操作,在使用一段時(shí)間后就想著:pyocd是基于python的,那是不是也可以使用python腳本+pyocd使用起來(lái)呢?
    的頭像 發(fā)表于 10-18 16:21 ?993次閱讀
    APM32F411板的python+pyocd<b class='flag-5'>命令行</b>操作

    Windows操作系統(tǒng)中的常用命令

    Windows操作系統(tǒng)提供了許多實(shí)用的命令行工具,通過命令行界面(Command Prompt)或Windows PowerShell,用戶可以執(zhí)行各種任務(wù),如文件管理、系統(tǒng)維護(hù)、網(wǎng)絡(luò)配置等。掌握
    的頭像 發(fā)表于 08-07 15:40 ?1162次閱讀
    Windows操作系統(tǒng)中的常用<b class='flag-5'>命令</b>