<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      tensor RT/onnx runtime 進行cpu/gpu 推理加速/模型部署

      TensorRT,由NVIDIA精心打造,是一款專為深度學習推理任務設計的高效優化工具。它能夠顯著降低應用的延遲同時提升處理速度,是大規模數據中心、嵌入式設備以及自動駕駛技術等領域推理加速的理想選擇。TensorRT的兼容性廣泛,支持包括TensorFlow、Caffe、Mxnet和Pytorch在內的主流深度學習框架,與NVIDIA GPU的結合使用。

      TensorRT本質上是一個推理加速器,它允許用戶在模型訓練完成后,直接將模型文件導入TensorRT進行優化,無需再依賴原始的深度學習框架。

       

      模型訓練:需要fp32,避免梯度下溢和舍入誤差

      梯度下溢:當梯度值非常小(小于 ~6e-8)時,在FP16中會變成0(即下溢)。一旦梯度變為0,對應的參數就無法更新,學習過程會停滯

      舍入誤差:在FP16中,由于精度有限,很多微小的更新(比如用一個很小的學習率乘以一個很小的梯度)可能會因為舍入誤差而直接變為0。在數百萬次的迭代中,這些微小的誤差累積起來可能會導致模型無法收斂,或者收斂到一個很差的局部最優點。

      模型推理:不涉及到反向傳播(梯度計算),只需fp16

      在FP32下訓練好的模型,其權重和激活值的分布通常在一個合理的范圍內。將其轉換為FP16進行推理,對于絕大多數任務(如圖像分類、目標檢測、語音識別等)的最終輸出精度影響微乎其微,通常只有小數點后幾位的損失,但換來的卻是巨大的速度提升和資源節省。

      TensorRT 采用多種優化技術來提升深度學習模型的推理性能:

      1、層間融合技術:

      TensorRT 通過層間融合,將卷積層、偏置層和ReLU激活層合并為單一的CBR結構,實現橫向和縱向的層融合。橫向融合將這些層合并為單一操作,僅消耗一個CUDA核心,而縱向融合則將具有相同結構但不同權重的層合并成更寬的層,同樣只占用一個CUDA核心。這種融合減少了計算圖中的層數,降低了CUDA核心的使用量,從而使得模型結構更加緊湊、運行速度更快、效率更高。

      2、數據精度優化:

      在深度學習模型訓練過程中,通常使用32位浮點數(FP32)來保證精度。然而,在推理階段,由于不需要進行反向傳播,可以安全地降低數據精度至FP16或INT8,這不僅減少了內存占用和延遲,還使得模型體積更小,提高了推理速度。

      3、Kernel自動調優:

      TensorRT 能夠自動調整CUDA核心的計算方式,以適應不同的算法、模型結構和GPU平臺。這種自動調優確保了模型在特定硬件上以最佳性能運行。

       

      TensorRT 部署流程主要有以下五步:

      1.訓練模型

      2.導出模型為 ONNX 格式

      3.選擇精度

      4.轉化成 TensorRT 模型

      5.部署模型
      Pytorch → ONNX → TensorRT

       

      特性/維度PyTorch (直接推理)ONNX Runtime (ONNX Runtime)TensorRT
      核心定位 研究與訓練框架,兼顧推理 跨平臺高性能推理引擎 NVIDIA平臺極致性能推理SDK
      工作流程 torch.jit.trace 或 torch.jit.script 導出模型 -> 用PyTorch C++/Python加載推理 PyTorch/TF等 -> 導出ONNX模型 -> ONNX Runtime加載并推理 PyTorch/TF/ONNX -> 轉換和優化 -> 生成TensorRT引擎 -> 執行引擎
      性能 較好。利用了PyTorch的優化,但包含一些為訓練準備的冗余操作。 優秀。專為推理優化,支持圖優化、算子融合等,性能通常優于原生PyTorch。 極致。在NVIDIA GPU上通常是性能天花板。通過內核融合、量化、自動內核調優等技術達到最優。
      硬件支持 主要支持CPU和NVIDIA GPU(通過CUDA)。對其它硬件(如AMD GPU, NPU)支持有限或需要額外適配。 非常廣泛。通過Execution Providers機制,支持CPU、NVIDIA CUDA/TensorRT、AMD ROCm、Intel OpenVINO、ARM NN、Android NNAPI等。“一次轉換,多處運行”。 僅限NVIDIA GPU。包括GeForce, Tesla, Jetson等系列。
      易用性與靈活性 最高。直接在訓練框架內完成,調試方便,動態圖模型(如帶有控制流的)處理起來更自然。 高。ONNX是一個開放的標準,生態龐大。轉換過程可能遇到不支持的算子,需要一些調試。 較低。優化和構建引擎需要時間,過程像是一個“黑盒”,調試難度較大。量化等操作可能會引入精度損失。
      關鍵技術 TorchScript, torch.jit ONNX格式、圖優化、多種Execution Providers 層與內核融合、精度校準(INT8量化)、內核自動調優、動態Tensor優化
      典型應用場景 1. 研究原型快速驗證
      2. 對延遲不敏感的服務器端應用
      3. 需要利用PyTorch動態圖特性的場景
      1. 需要跨平臺部署(如同時部署在服務器CPU和邊緣設備)
      2. 希望獲得比原生框架更好的性能,同時又不想被單一硬件廠商鎖定
      3. 云原生和微服務環境
      1. 對延遲和吞吐量要求極致的場景(如自動駕駛、視頻直播、高并發推薦系統)
      2. 邊緣設備(NVIDIA Jetson)
      3. 需要INT8量化來大幅提升性能并降低功耗的場景

       PyTorch 部署推理

      • 本質:使用訓練框架本身進行推理。

      • 優點:

        • 無縫銜接:無需模型轉換,直接從訓練環境到推理環境,減少了轉換出錯的風險。

        • 調試方便:可以使用熟悉的PyTorch工具和API進行調試。

      • 缺點:

        • 性能非最優:PyTorch為了支持訓練,保留了很多在推理時不需要的操作和內存布局,這帶來了額外的開銷。

        • 依賴較重:需要安裝完整的PyTorch庫,可能不適用于非常輕量級的部署。

        • 硬件支持局限:主要圍繞NVIDIA GPU和CPU。

      ONNX Runtime 部署推理

      • 核心:ONNX (Open Neural Network Exchange)
        ONNX是一個開放的模型表示標準。它定義了一個通用的計算圖格式,使得不同框架訓練的模型可以被各種推理引擎所使用。

      • 優點:

        • 硬件無關性與生態:其最大的價值在于解耦了模型和硬件。你可以將一個ONNX模型部署到幾乎任何主流的硬件平臺上,只需切換ONNX Runtime的Execution Provider即可。

        • 性能良好:作為一個專業的推理引擎,它進行了大量圖級別的優化(如常量折疊、冗余節點消除等),去除了訓練帶來的開銷。

      • 挑戰:

        • 轉換支持:并非所有PyTorch/TensorFlow的算子都能完美地轉換為ONNX格式,有時會遇到不支持的算子或需要自定義。

        • 性能非極致:雖然性能很好,但由于要兼顧通用性,它無法像TensorRT那樣為特定型號的GPU進行極其深入的底層優化。

      TensorRT 部署推理

        • 核心:針對NVIDIA GPU的編譯器
          TensorRT不是一個簡單的推理器,而是一個深度學習優化器和運行時引擎。它的工作流程是:將你的模型(如ONNX)作為輸入,然后進行一系列極其激進的優化,最終生成一個高度優化的、序列化后的計劃文件(Plan File),這個文件就是TensorRT引擎。

        • 優化技術包括:

          • 層融合:將多個層(如Conv、BN、ReLU)合并成一個單一的、更高效的內核。這大大減少了內核啟動次數和內存讀寫操作。

          • 精度校準:在保證精度損失可接受的前提下,將FP32模型轉換為FP16甚至INT8,從而顯著提升速度并降低顯存占用。

          • 內核自動調優:針對你當前使用的特定GPU型號,自動選擇最優的內核實現。

        • 優點:

          • 極致性能:在NVIDIA GPU上,其性能通常是所有方案中最好的。

          • 低延遲/高吞吐:特別適合實時應用和高并發場景。

        • 缺點:

          • 供應商鎖定:僅限NVIDIA硬件。

          • 構建耗時:引擎構建(特別是開啟所有優化選項時)可能需要較長時間。

          • 復雜度與調試:優化過程是個黑盒,量化可能帶來精度問題,調試比較困難。

      部署方案:

      使用 ONNX Runtime 作為頂層的推理接口。

      在安裝了NVIDIA GPU的機器上,為ONNX Runtime配置 TensorRT Execution Provider。

      這樣,你的代碼只需調用ONNX Runtime的API,當它在有NVIDIA GPU的環境中運行時,會自動調用底層極速的TensorRT引擎,而在其他環境(如只有CPU)時,則回退到CPU或其他EP。這實現了 “一套代碼,多種部署” 的理想狀態。

       

      ONNX Runtime 的 TensorRT EP 作為一個抽象層,自動處理了所有底層的 TensorRT 操作:

      操作傳統 TensorRTONNX Runtime + TensorRT EP
      引擎構建 需要手動調用 builder.build_engine() 自動處理
      序列化 需要手動保存/加載 .engine 文件 自動處理(通過緩存)
      優化配置 需要手動設置 builder_config 通過 Provider 選項配置
      上下文管理 需要手動創建 execution_context 自動管理
      import onnxruntime as ort
      
      # 這一切都是自動的!
      trt_options = {
          'trt_fp16_enable': True,
          'trt_engine_cache_enable': True,
          'trt_engine_cache_path': './trt_cache'
      }
      
      session = ort.InferenceSession(
          "model.onnx",
          providers=['TensorrtExecutionProvider'],
          provider_options=[trt_options]
      )
      
      # 背后自動發生:
      # 1. 解析 ONNX 模型
      # 2. 調用 TensorRT builder
      # 3. 構建優化引擎
      # 4. 序列化并緩存(如果啟用)

       

      posted @ 2025-10-29 16:02  wangssd  閱讀(152)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合国产一区二区三区| 国产精品久久久久久无毒不卡| 一区二区三区鲁丝不卡| 亚洲啪啪精品一区二区的| 亚洲一区久久蜜臀av| 内射极品少妇xxxxxhd| 国产亚洲av手机在线观看| 色综合色综合综合综合综合| 欧美视频网站www色| 国产精品一区在线蜜臀| 麻豆精产国品一二三区区| 99riav精品免费视频观看| 亚洲自拍偷拍激情视频| 亚洲精品国产精品国在线| 久久精品丝袜高跟鞋| 国产一区二区三区四区五区加勒比| 国产精品美腿一区在线看| awww在线天堂bd资源在线| 久久亚洲精品成人综合网| 另类国产精品一区二区| 成人无遮挡裸免费视频在线观看| 日本国产精品第一页久久| 亚洲熟妇熟女久久精品一区| 日韩丝袜人妻中文字幕| 亚洲第一无码AV无码专区| 日本阿v片在线播放免费| 黑森林福利视频导航| 亚洲日韩性欧美中文字幕| 亚洲av成人一区国产精品| 国产精品午夜福利在线观看| 人妻av中文字幕无码专区| 久久久久国产精品熟女影院| 男人的天堂av社区在线| 精品综合久久久久久97| 亚洲一区二区三区| 福利一区二区视频在线| 亚洲国产精品特色大片观看完整版| 91亚洲国产成人久久精品| 国产日韩综合av在线| 中文字幕无线码中文字幕免费| 亚洲a∨无码无在线观看|