日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

TensorRT是如何進行工作的

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

掃碼添加小助手

加入工程師交流群

5.1. Object Lifetimes

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

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

5.2. Error Handling and Logging

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

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

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

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

5.3 Memory

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

5.3.1. The Build Phase

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

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

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

5.3.2. The Runtime Phase

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

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

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

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

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

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

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

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

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

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

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

5.4. Threading

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

運行時或引擎上的非修改操作。

從 TensorRT 運行時反序列化引擎。

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

注冊和注銷插件。

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

5.5. Determinism

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

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

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

關(guān)于作者

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

審核編輯:郭婷

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

    關(guān)注

    14

    文章

    5708

    瀏覽量

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

    關(guān)注

    28

    文章

    5297

    瀏覽量

    136132
  • CUDA
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    PCB如何進行散熱?

    對于PCB電子設(shè)備來說,工作時都會產(chǎn)生一定的熱量,從而使設(shè)備內(nèi)部溫度迅速上升,如果不及時將該熱量散發(fā)出去,設(shè)備就會持續(xù)的升溫,器件就會因過熱而失效,電子設(shè)備的可靠性能就會下降。因此,對電路板進行很好
    發(fā)表于 04-21 10:24

    何進行高效的雷達性能測試?實用技巧分享

    雷達性能測試是指一系列旨在評估和驗證雷達系統(tǒng)在各種操作條件下的功能性和效能的測試過程。這些測試通過使用特定的設(shè)備和技術(shù)手段,對雷達的各項關(guān)鍵性能指標進行量化評估,以確保其能夠按照設(shè)計要求正常工作,并
    的頭像 發(fā)表于 03-27 16:03 ?220次閱讀
    如<b class='flag-5'>何進行</b>高效的雷達性能測試?實用技巧分享

    對于設(shè)備上的舊固件如何進行備份和恢復(fù)?

    對于設(shè)備上的舊固件,如何進行備份和恢復(fù)?
    發(fā)表于 12-12 08:23

    在使用CW32L083系列微控制器時如何進行系統(tǒng)復(fù)位和看門狗定時器配置?

    在使用CW32L083系列微控制器時,如何進行系統(tǒng)復(fù)位和看門狗定時器配置?
    發(fā)表于 12-10 06:46

    單片機如何進行加解密鑰操作,一般使用哪種形式,具體流程是什么樣子的?

    目前單片機如何進行加解密鑰操作,一般使用哪種形式,具體流程是什么樣子的?
    發(fā)表于 12-04 06:09

    L083最低功耗是多少,應(yīng)該如何進行低功耗設(shè)計?有哪些注意事項?

    L083最低功耗是多少,應(yīng)該如何進行低功耗設(shè)計?有哪些注意事項?
    發(fā)表于 11-12 07:29

    恩智浦i.MX RT1180 MCU如何進入Boundary Scan模式

    本文重點介紹RT1180如何進入Boundary Scan模式,通過Jtag來進行板級硬件測試的過程。遵循IEEE1149.1中的測試訪問端口和BoundaryScan體系結(jié)構(gòu)的標準。
    的頭像 發(fā)表于 10-22 09:50 ?3748次閱讀
    恩智浦i.MX RT1180 MCU如<b class='flag-5'>何進</b>入Boundary Scan模式

    NVIDIA TensorRT LLM 1.0推理框架正式上線

    TensorRT LLM 作為 NVIDIA 為大規(guī)模 LLM 推理打造的推理框架,核心目標是突破 NVIDIA 平臺上的推理性能瓶頸。為實現(xiàn)這一目標,其構(gòu)建了多維度的核心實現(xiàn)路徑:一方面,針對需
    的頭像 發(fā)表于 10-21 11:04 ?1477次閱讀

    何進行聲音定位?

    文章主要介紹了如何利用一種簡單的TDOA算法進行聲音點位,并使用數(shù)據(jù)采集卡進行聲音定位的實驗。
    的頭像 發(fā)表于 09-23 15:47 ?2210次閱讀
    如<b class='flag-5'>何進行</b>聲音定位?

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

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

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

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

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

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

    TensorRT-LLM中的分離式服務(wù)

    在之前的技術(shù)博客中,我們介紹了低延遲[1] 和高吞吐[2] 場景的優(yōu)化方法。對于生產(chǎn)部署,用戶還關(guān)心在滿足特定延遲約束的情況下,每個 GPU 的吞吐表現(xiàn)。本文將圍繞“吞吐量-延遲”性能場景,介紹 TensorRT-LLM 分離式服務(wù)的設(shè)計理念、使用方法,以及性能研究結(jié)果。
    的頭像 發(fā)表于 08-27 12:29 ?2030次閱讀
    <b class='flag-5'>TensorRT</b>-LLM中的分離式服務(wù)

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

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

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

    針對基于 Diffusion 和 LLM 類別的 TTS 模型,NVIDIA Triton 和 TensorRT-LLM 方案能顯著提升推理速度。在單張 NVIDIA Ada Lovelace
    的頭像 發(fā)表于 06-12 15:37 ?2121次閱讀
    使用NVIDIA Triton和<b class='flag-5'>TensorRT</b>-LLM部署TTS應(yīng)用的最佳實踐
    绥棱县| 潜山县| 镇坪县| SHOW| 商都县| 图们市| 彭泽县| 贺州市| 普定县| 香格里拉县| 古蔺县| 鄱阳县| 河北区| 全州县| 昌乐县| 岳普湖县| 大冶市| 玉龙| 鄱阳县| 康马县| 女性| 玉门市| 西吉县| 连山| 泰州市| 治多县| 吴忠市| 鄢陵县| 郧西县| 建德市| 聂拉木县| 东兴市| 大连市| 界首市| 富顺县| 通辽市| 宣恩县| 宾川县| 红河县| 岳阳市| 康马县|