chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

TensorRT是如何進(jìn)行工作的

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

掃碼添加小助手

加入工程師交流群

5.1. Object Lifetimes

TensorRT 的 API 是基于類(lèi)的,其中一些類(lèi)充當(dāng)其他類(lèi)的工廠。對(duì)于用戶擁有的對(duì)象,工廠對(duì)象的生命周期必須跨越它創(chuàng)建的對(duì)象的生命周期。例如, NetworkDefinition和BuilderConfig類(lèi)是從構(gòu)建器類(lèi)創(chuàng)建的,這些類(lèi)的對(duì)象應(yīng)該在構(gòu)建器工廠對(duì)象之前銷(xiāo)毀。

此規(guī)則的一個(gè)重要例外是從構(gòu)建器創(chuàng)建引擎。創(chuàng)建引擎后,您可以銷(xiāo)毀構(gòu)建器、網(wǎng)絡(luò)、解析器和構(gòu)建配置并繼續(xù)使用引擎。

5.2. Error Handling and Logging

創(chuàng)建 TensorRT 頂級(jí)接口(builder、runtime 或 refitter)時(shí),您必須提供Logger ( C++Python )接口的實(shí)現(xiàn)。記錄器用于診斷和信息性消息;它的詳細(xì)程度是可配置的。由于記錄器可用于在 TensorRT 生命周期的任何時(shí)間點(diǎn)傳回信息,因此它的生命周期必須跨越應(yīng)用程序中對(duì)該接口的任何使用。實(shí)現(xiàn)也必須是線程安全的,因?yàn)?TensorRT 可以在內(nèi)部使用工作線程。

對(duì)對(duì)象的 API 調(diào)用將使用與相應(yīng)頂級(jí)接口關(guān)聯(lián)的記錄器。例如,在對(duì)ExecutionContext::enqueue()的調(diào)用中,執(zhí)行上下文是從引擎創(chuàng)建的,該引擎是從運(yùn)行時(shí)創(chuàng)建的,因此 TensorRT 將使用與該運(yùn)行時(shí)關(guān)聯(lián)的記錄器。

錯(cuò)誤處理的主要方法是ErrorRecorde ( C++ , Python ) 接口。您可以實(shí)現(xiàn)此接口,并將其附加到 API 對(duì)象以接收與該對(duì)象關(guān)聯(lián)的錯(cuò)誤。對(duì)象的記錄器也將傳遞給它創(chuàng)建的任何其他記錄器 – 例如,如果您將錯(cuò)誤記錄器附加到引擎,并從該引擎創(chuàng)建執(zhí)行上下文,它將使用相同的記錄器。如果您隨后將新的錯(cuò)誤記錄器附加到執(zhí)行上下文,它將僅接收來(lái)自該上下文的錯(cuò)誤。如果生成錯(cuò)誤但沒(méi)有找到錯(cuò)誤記錄器,它將通過(guò)關(guān)聯(lián)的記錄器發(fā)出。

請(qǐng)注意,CUDA 錯(cuò)誤通常是異步的 – 因此,當(dāng)執(zhí)行多個(gè)推理或其他 CUDA 流在單個(gè) CUDA 上下文中異步工作時(shí),可能會(huì)在與生成它的執(zhí)行上下文不同的執(zhí)行上下文中觀察到異步 GPU 錯(cuò)誤。

5.3 Memory

TensorRT 使用大量設(shè)備內(nèi)存,即 GPU 可直接訪問(wèn)的內(nèi)存,而不是連接到 CPU 的主機(jī)內(nèi)存。由于設(shè)備內(nèi)存通常是一種受限資源,因此了解 TensorRT 如何使用它很重要。

5.3.1. The Build Phase

在構(gòu)建期間,TensorRT 為時(shí)序?qū)訉?shí)現(xiàn)分配設(shè)備內(nèi)存。一些實(shí)現(xiàn)可能會(huì)消耗大量臨時(shí)內(nèi)存,尤其是在使用大張量的情況下。您可以通過(guò)構(gòu)建器的maxWorkspace屬性控制最大臨時(shí)內(nèi)存量。這默認(rèn)為設(shè)備全局內(nèi)存的完整大小,但可以在必要時(shí)進(jìn)行限制。如果構(gòu)建器發(fā)現(xiàn)由于工作空間不足而無(wú)法運(yùn)行的適用內(nèi)核,它將發(fā)出一條日志消息來(lái)指示這一點(diǎn)。

然而,即使工作空間相對(duì)較小,計(jì)時(shí)也需要為輸入、輸出和權(quán)重創(chuàng)建緩沖區(qū)。 TensorRT 對(duì)操作系統(tǒng)因此類(lèi)分配而返回內(nèi)存不足是穩(wěn)健的,但在某些平臺(tái)上,操作系統(tǒng)可能會(huì)成功提供內(nèi)存,隨后內(nèi)存不足killer進(jìn)程觀察到系統(tǒng)內(nèi)存不足,并終止 TensorRT 。如果發(fā)生這種情況,請(qǐng)?jiān)谥卦囍氨M可能多地釋放系統(tǒng)內(nèi)存。

在構(gòu)建階段,通常在主機(jī)內(nèi)存中至少有兩個(gè)權(quán)重拷貝:來(lái)自原始網(wǎng)絡(luò)的權(quán)重拷貝,以及在構(gòu)建引擎時(shí)作為引擎一部分包含的權(quán)重拷貝。此外,當(dāng) TensorRT 組合權(quán)重(例如卷積與批量歸一化)時(shí),將創(chuàng)建額外的臨時(shí)權(quán)重張量。

5.3.2. The Runtime Phase

在運(yùn)行時(shí),TensorRT 使用相對(duì)較少的主機(jī)內(nèi)存,但可以使用大量的設(shè)備內(nèi)存。

引擎在反序列化時(shí)分配設(shè)備內(nèi)存來(lái)存儲(chǔ)模型權(quán)重。由于序列化引擎幾乎都是權(quán)重,因此它的大小非常接近權(quán)重所需的設(shè)備內(nèi)存量。

ExecutionContext使用兩種設(shè)備內(nèi)存:

一些層實(shí)現(xiàn)所需的持久內(nèi)存——例如,一些卷積實(shí)現(xiàn)使用邊緣掩碼,并且這種狀態(tài)不能像權(quán)重那樣在上下文之間共享,因?yàn)樗拇笮∪Q于層輸入形狀,這可能因上下文而異。該內(nèi)存在創(chuàng)建執(zhí)行上下文時(shí)分配,并在其生命周期內(nèi)持續(xù)。

暫存內(nèi)存,用于在處理網(wǎng)絡(luò)時(shí)保存中間結(jié)果。該內(nèi)存用于中間激活張量。它還用于層實(shí)現(xiàn)所需的臨時(shí)存儲(chǔ),其邊界由IBuilderConfig::setMaxWorkspaceSize()控制。

您可以選擇通過(guò)ICudaEngine::createExecutionContextWithoutDeviceMemory()創(chuàng)建一個(gè)沒(méi)有暫存內(nèi)存的執(zhí)行上下文,并在網(wǎng)絡(luò)執(zhí)行期間自行提供該內(nèi)存。這允許您在未同時(shí)運(yùn)行的多個(gè)上下文之間共享它,或者在推理未運(yùn)行時(shí)用于其他用途。 ICudaEngine::getDeviceMemorySize()返回所需的暫存內(nèi)存量。

構(gòu)建器在構(gòu)建網(wǎng)絡(luò)時(shí)發(fā)出有關(guān)執(zhí)行上下文使用的持久內(nèi)存和暫存內(nèi)存量的信息,嚴(yán)重性為 kINFO 。檢查日志,消息類(lèi)似于以下內(nèi)容:

[08/12/2021-17:39:11] [I] [TRT] Total Host Persistent Memory: 106528
[08/12/2021-17:39:11] [I] [TRT] Total Device Persistent Memory: 29785600
[08/12/2021-17:39:11] [I] [TRT] Total Scratch Memory: 9970688

默認(rèn)情況下,TensorRT 直接從 CUDA 分配設(shè)備內(nèi)存。但是,您可以將 TensorRT 的IGpuAllocator ( C++ 、 Python )接口的實(shí)現(xiàn)附加到構(gòu)建器或運(yùn)行時(shí),并自行管理設(shè)備內(nèi)存。如果您的應(yīng)用程序希望控制所有 GPU 內(nèi)存并子分配給 TensorRT,而不是讓 TensorRT 直接從 CUDA 分配,這將非常有用。

TensorRT 的依賴項(xiàng)( cuDNN和cuBLAS )會(huì)占用大量設(shè)備內(nèi)存。 TensorRT 允許您通過(guò)構(gòu)建器配置中的TacticSources ( C++ 、 Python )屬性控制這些庫(kù)是否用于推理。請(qǐng)注意,某些層實(shí)現(xiàn)需要這些庫(kù),因此當(dāng)它們被排除時(shí),網(wǎng)絡(luò)可能無(wú)法編譯。

CUDA 基礎(chǔ)設(shè)施和 TensorRT 的設(shè)備代碼也會(huì)消耗設(shè)備內(nèi)存。內(nèi)存量因平臺(tái)、設(shè)備和 TensorRT 版本而異。您可以使用cudaGetMemInfo來(lái)確定正在使用的設(shè)備內(nèi)存總量。

注意:由于 CUDA 無(wú)法控制統(tǒng)一內(nèi)存設(shè)備上的內(nèi)存,因此cudaGetMemInfo返回的結(jié)果在這些平臺(tái)上可能不準(zhǔn)確。

5.4. Threading

一般來(lái)說(shuō),TensorRT 對(duì)象不是線程安全的。預(yù)期的運(yùn)行時(shí)并發(fā)模型是不同的線程將在不同的執(zhí)行上下文上操作。上下文包含執(zhí)行期間的網(wǎng)絡(luò)狀態(tài)(激活值等),因此在不同線程中同時(shí)使用上下文會(huì)導(dǎo)致未定義的行為。 為了支持這個(gè)模型,以下操作是線程安全的:

運(yùn)行時(shí)或引擎上的非修改操作。

從 TensorRT 運(yùn)行時(shí)反序列化引擎。

從引擎創(chuàng)建執(zhí)行上下文。

注冊(cè)和注銷(xiāo)插件。

在不同線程中使用多個(gè)構(gòu)建器沒(méi)有線程安全問(wèn)題;但是,構(gòu)建器使用時(shí)序來(lái)確定所提供參數(shù)的最快內(nèi)核,并且使用具有相同 GPU 的多個(gè)構(gòu)建器將擾亂時(shí)序和 TensorRT 構(gòu)建最佳引擎的能力。使用多線程使用不同的 GPU 構(gòu)建不存在此類(lèi)問(wèn)題。

5.5. Determinism

TensorRT builder 使用時(shí)間來(lái)找到最快的內(nèi)核來(lái)實(shí)現(xiàn)給定的運(yùn)算符。時(shí)序內(nèi)核會(huì)受到噪聲的影響——GPU 上運(yùn)行的其他工作、GPU 時(shí)鐘速度的波動(dòng)等。時(shí)序噪聲意味著在構(gòu)建器的連續(xù)運(yùn)行中,可能不會(huì)選擇相同的實(shí)現(xiàn)。

AlgorithmSelector ( C++ , Python )接口允許您強(qiáng)制構(gòu)建器為給定層選擇特定實(shí)現(xiàn)。您可以使用它來(lái)確保構(gòu)建器從運(yùn)行到運(yùn)行選擇相同的內(nèi)核。有關(guān)更多信息,請(qǐng)參閱算法選擇和可重現(xiàn)構(gòu)建部分。

一旦構(gòu)建了引擎,它就是確定性的:在相同的運(yùn)行時(shí)環(huán)境中提供相同的輸入將產(chǎn)生相同的輸出。

關(guān)于作者

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

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    5431

    瀏覽量

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

    關(guān)注

    28

    文章

    5036

    瀏覽量

    133739
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    TensorRT-LLM的大規(guī)模專家并行架構(gòu)設(shè)計(jì)

    之前文章已介紹引入大規(guī)模 EP 的初衷,本篇將繼續(xù)深入介紹 TensorRT-LLM 的大規(guī)模專家并行架構(gòu)設(shè)計(jì)與創(chuàng)新實(shí)現(xiàn)。
    的頭像 發(fā)表于 09-23 14:42 ?370次閱讀
    <b class='flag-5'>TensorRT</b>-LLM的大規(guī)模專家并行架構(gòu)設(shè)計(jì)

    DeepSeek R1 MTP在TensorRT-LLM中的實(shí)現(xiàn)與優(yōu)化

    TensorRT-LLM 在 NVIDIA Blackwell GPU 上創(chuàng)下了 DeepSeek-R1 推理性能的世界紀(jì)錄,Multi-Token Prediction (MTP) 實(shí)現(xiàn)了大幅提速
    的頭像 發(fā)表于 08-30 15:47 ?3509次閱讀
    DeepSeek R1 MTP在<b class='flag-5'>TensorRT</b>-LLM中的實(shí)現(xiàn)與優(yōu)化

    2KW逆變側(cè)功率管的損耗如何進(jìn)行計(jì)算詳細(xì)公式免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是2KW逆變側(cè)功率管的損耗如何進(jìn)行計(jì)算詳細(xì)公式免費(fèi)下載。
    發(fā)表于 08-29 16:18 ?34次下載

    如何在魔搭社區(qū)使用TensorRT-LLM加速優(yōu)化Qwen3系列模型推理部署

    TensorRT-LLM 作為 NVIDIA 專為 LLM 推理部署加速優(yōu)化的開(kāi)源庫(kù),可幫助開(kāi)發(fā)者快速利用最新 LLM 完成應(yīng)用原型驗(yàn)證與產(chǎn)品部署。
    的頭像 發(fā)表于 07-04 14:38 ?1434次閱讀

    請(qǐng)問(wèn)STM32WBA65如何進(jìn)行matter的學(xué)習(xí)?

    STM32WBA65如何進(jìn)行matter的學(xué)習(xí)?相關(guān)的支持都有哪些?有一個(gè)X-CUBE-MATTER,可是這個(gè)沒(méi)有集成在STM32CubeMX中
    發(fā)表于 04-24 07:22

    何進(jìn)行電磁干擾處理

    智慧華盛恒輝如何進(jìn)行電磁干擾 一、引言 電磁干擾已成為一種重要的作戰(zhàn)手段,用于削弱、癱瘓或混亂敵方的通信、控制和偵察系統(tǒng)。如何對(duì)敵方的裝備進(jìn)行電磁干擾,包括干擾原理、干擾方式、干擾策略以及干擾效果
    的頭像 發(fā)表于 02-20 10:28 ?964次閱讀

    DLP4710EVM-LC如何進(jìn)行燒錄?

    DLP4710EVM-LC: 如何進(jìn)行燒錄
    發(fā)表于 02-20 08:07

    采用AFE0064和ADS8363加fpga結(jié)構(gòu),如何進(jìn)行控制?

    采用AFE0064和ADS8363加fpga結(jié)構(gòu),詳問(wèn)如何進(jìn)行控制?
    發(fā)表于 02-05 06:10

    請(qǐng)問(wèn)做反射式血氧飽和度測(cè)量時(shí)如何進(jìn)行標(biāo)定呢?

    請(qǐng)問(wèn)做反射式血氧飽和度測(cè)量時(shí)如何進(jìn)行標(biāo)定呢? 目前已完成透射式血氧飽和度測(cè)量?jī)x的設(shè)計(jì)和實(shí)現(xiàn),采用的Fluke的生命體征模擬儀Prosim8進(jìn)行標(biāo)定的,儀器有一個(gè)模擬手指,可以將指套式探頭夾在模擬
    發(fā)表于 01-08 06:42

    請(qǐng)問(wèn)ADS8689 AGND和DGND如何進(jìn)行處理?

    請(qǐng)問(wèn)ADS8689 AGND和DGND如何進(jìn)行處理?是把AGND和DGND處理為同一個(gè)地,還是AGND和DGND通過(guò)0歐電阻進(jìn)行連接?為什么?
    發(fā)表于 12-26 06:42

    解鎖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 ?1399次閱讀

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

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

    何進(jìn)行電磁干擾處理的方法有哪些

    智慧華盛恒輝如何進(jìn)行電磁干擾 一、引言 智慧華盛恒輝電磁干擾已成為一種重要的作戰(zhàn)手段,用于削弱、癱瘓或混亂敵方的通信、控制和偵察系統(tǒng)。如何對(duì)敵方的裝備進(jìn)行電磁干擾,包括干擾原理、干擾方式、干擾策略
    的頭像 發(fā)表于 11-27 15:49 ?949次閱讀

    TensorRT-LLM低精度推理優(yōu)化

    本文將分享 TensorRT-LLM 中低精度量化內(nèi)容,并從精度和速度角度對(duì)比 FP8 與 INT8。首先介紹性能,包括速度和精度。其次,介紹量化工具 NVIDIA TensorRT Model
    的頭像 發(fā)表于 11-19 14:29 ?2086次閱讀
    <b class='flag-5'>TensorRT</b>-LLM低精度推理優(yōu)化

    ADS7953如何進(jìn)行復(fù)位,是需要通過(guò)spi接口發(fā)送什么復(fù)位命令嗎?

    請(qǐng)問(wèn)一下ADS7953芯片,如何進(jìn)行復(fù)位,是需要通過(guò)spi接口發(fā)送什么復(fù)位命令嗎
    發(fā)表于 11-13 06:21