在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

執行部署的TensorRT加速引擎

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 作者:NVIDIA英偉達企業解 ? 2022-06-01 10:33 ? 次閱讀

很多開發人員在轉換完 TensorRT 加速引擎之后,最后準備調用起來執行推理任務的時候,就遇到一些障礙。這個環節是需要開發人員自行撰寫相關代碼,去執行讀入數據(前處理)、執行推理、顯示結果(后處理)等工作,如下圖最右邊的部分。

39d89e3c-e152-11ec-ba43-dac502259ad0.png

這部分的麻煩之處,在于每個神經網絡的結構不相同,并沒有“通用”的代碼可以適用于大部分的網絡結構,需要針對指定神經網絡去撰寫對應的代碼,最重要是需要清除這個模型的輸入 (input bold) 與輸出 (outpold) 的名稱與張量結構。

本文以前面在 TAO 工具套件中使用的 ssd 神經網絡為范例,提供基礎的“前后處理”范例代碼給讀者參考,這是從 NVIDIA 中國區開發者社區所舉辦過多屆 “Sky 黑客松”比賽中,所提供的開源內容中提取的重點,主要如下:

1、數據前處理:


  def _preprocess_trt(img, shape=(300, 300)):    """TRT SSD推理前的數據前處理"""    img = cv2.resize(img, shape)    img = img.transpose((2, 0, 1)).astype(np.float32)returnimg

這里 “shape=(300,300)” 為張量的尺度,根據模型訓練時的長寬兩個變量,至于 transpose 里的 (2,0,1) 是固定的,不需調整。

2、數據后處理:


  def _postprocess_trt(img, output, conf_th, output_layout):    """TRT SSD推理后的結果的數據處理步驟."""    img_h, img_w, _ = img.shape    boxes, confs, clss = [], [], []    for prefix in range(0, len(output), output_layout):        index = int(output[prefix+0])        conf = float(output[prefix+2])        if conf < conf_th:            continue        x1 = int(output[prefix+3] * img_w)        y1 = int(output[prefix+4] * img_h)        x2 = int(output[prefix+5] * img_w)        y2 = int(output[prefix+6] * img_h)        cls = int(output[prefix+1])        boxes.append((x1, y1, x2, y2))        confs.append(conf)        clss.append(cls)returnboxes,confs,clss#返回標框坐標、置信度、類別

這里最重要的 x1, y1,x2, y2 坐標值,必須根據 SSD 神經網絡所定義的規范去進行修改,其他部分可以通用于大部分神經網絡。

3、定義 TrtSSD 類封裝運行 TRT SSD 所需的東西:


  class TrtSSD(object):# 加載自定義組建,如果TRT版本小于7.0需要額外生成flattenconcat自定義組件庫    def _load_plugins(self):        if trt.__version__[0] < '7':            ctypes.CDLL("ssd/libflattenconcat.so")        trt.init_libnvinfer_plugins(self.trt_logger, '')#加載通過Transfer Learning Toolkit生成的推理引擎    def _load_engine(self):        TRTbin = 'ssd/TRT_%s.bin' % self.model  #請根據實際狀況自行修改        with open(TRTbin, 'rb') as f, trt.Runtime(self.trt_logger) as runtime:            return runtime.deserialize_cuda_engine(f.read())#通過加載的引擎,生成可執行的上下文    def _create_context(self):        for binding in self.engine:            size = trt.volume(self.engine.get_binding_shape(binding)) *                    self.engine.max_batch_size##注意:這里的host_mem需要使用pagelockedmemory,以免內存被釋放            host_mem = cuda.pagelocked_empty(size, np.float32)            cuda_mem = cuda.mem_alloc(host_mem.nbytes)            self.bindings.append(int(cuda_mem))            if self.engine.binding_is_input(binding):                self.host_inputs.append(host_mem)                self.cuda_inputs.append(cuda_mem)            else:                self.host_outputs.append(host_mem)                self.cuda_outputs.append(cuda_mem)        return self.engine.create_execution_context()# 初始化引擎    def __init__(self, model, input_shape, output_layout=7):        self.model = model        self.input_shape = input_shape        self.output_layout = output_layout        self.trt_logger = trt.Logger(trt.Logger.INFO)        self._load_plugins()        self.engine = self._load_engine()
        self.host_inputs = []        self.cuda_inputs = []        self.host_outputs = []        self.cuda_outputs = []        self.bindings = []        self.stream = cuda.Stream()        self.context = self._create_context()# 釋放引擎,釋放GPU顯存,釋放CUDA流    def __del__(self):        del self.stream        del self.cuda_outputs        del self.cuda_inputs# 利用生成的可執行上下文執行推理    def detect(self, img, conf_th=0.3):        img_resized = _preprocess_trt(img, self.input_shape)        np.copyto(self.host_inputs[0], img_resized.ravel())        # 將處理好的圖片從CPU內存中復制到GPU顯存        cuda.memcpy_htod_async(            self.cuda_inputs[0], self.host_inputs[0], self.stream)        # 開始執行推理任務        self.context.execute_async(            batch_size=1,            bindings=self.bindings,            stream_handle=self.stream.handle)        # 將推理結果輸出從GPU顯存復制到CPU內存        cuda.memcpy_dtoh_async(            self.host_outputs[1], self.cuda_outputs[1], self.stream)        cuda.memcpy_dtoh_async(            self.host_outputs[0], self.cuda_outputs[0], self.stream)        self.stream.synchronize()
        output = self.host_outputs[0]return_postprocess_trt(img,output,conf_th,self.output_layout)

上面三個部分對不同神經網絡都是不同的內容,如果要參考 YOLO 神經網絡的對應內容,推薦參考https://github.com/jkjung-avt/tensorrt_demos開源項目,里面有完整的 YOLOv3 與 YOLOv4 的詳細內容。

本文的開源代碼可以在此鏈接下載完整的內容與配套的工具。

https://pan.baidu.com/s/1fGLBnzqtnRNpfD3PbileOA密碼: 99et

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4774

    瀏覽量

    100912
  • NVIDIA
    +關注

    關注

    14

    文章

    5025

    瀏覽量

    103270

原文標題:NVIDIA Jetson Nano 2GB 系列文章(65):執行部署的 TensorRT 加速引擎

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    常見的容器云服務引擎有哪些?

    常見的容器云服務引擎有哪些?云服務引擎涵蓋數據庫、數據存儲、數據處理、數據分析、容器云、機器學習及數據集成等多個領域,提供一站式解決方案。云服務引擎是云計算領域的重要組成部分,它們提供了各種服務來幫助用戶構建、
    的頭像 發表于 01-07 09:49 ?37次閱讀

    NVIDIA TensorRT-LLM Roadmap現已在GitHub上公開發布

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

    IBM將在云平臺部署AMD加速

    IBM與AMD近期宣布了一項重要合作協議,根據協議,IBM將在其云平臺上部署AMD Instinct MI300X加速器。這一舉措旨在提升企業客戶在生成式AI模型方面的性能和能效,進一步推動AI技術的創新與應用。
    的頭像 發表于 11-19 16:24 ?240次閱讀

    TensorRT-LLM低精度推理優化

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

    IPv6 大規模部署,開啟網絡新時代的強勁引擎

    在互聯網技術迅猛發展的今天,IPv6作為新一代互聯網協議,正以不可阻擋的勢頭引領全球網絡進入一個全新的演進階段,成為開啟網絡新時代的關鍵鑰匙。IPv6部署現狀:全球加速,中國領跑2024年,全球
    的頭像 發表于 11-06 10:24 ?592次閱讀
    IPv6 大規模<b class='flag-5'>部署</b>,開啟網絡新時代的強勁<b class='flag-5'>引擎</b>

    容器云服務引擎是什么意思?

    容器云服務引擎是什么意思?容器云服務引擎是一種基于云原生架構的容器編排工具,能夠幫助用戶快速構建、部署和管理容器化應用。它支持容器化應用的全生命周期管理,包括部署、管理和擴展,旨在簡化
    的頭像 發表于 10-19 17:08 ?193次閱讀

    容器云服務引擎是什么?如何使用

    容器云服務引擎(CloudContainerEngine,簡稱CCE),是一個企業級的Kubernetes集群托管服務,提供高度可擴展、高性能的云原生應用部署和管理方案。容器云服務引擎一種基于云原生
    的頭像 發表于 09-30 10:17 ?204次閱讀

    魔搭社區借助NVIDIA TensorRT-LLM提升LLM推理效率

    “魔搭社區是中國最具影響力的模型開源社區,致力給開發者提供模型即服務的體驗。魔搭社區利用NVIDIA TensorRT-LLM,大大提高了大語言模型的推理性能,方便了模型應用部署,提高了大模型產業應用效率,更大規模地釋放大模型的應用價值。”
    的頭像 發表于 08-23 15:48 ?472次閱讀

    大模型端側部署加速,都有哪些芯片可支持?

    電子發燒友網報道(文/李彎彎)大模型在端側部署是指將大型神經網絡模型部署在移動終端設備上,使這些設備能夠直接運行這些模型,從而執行各種人工智能任務,如圖像識別、語音識別、自然語言處理等。隨著大模型
    的頭像 發表于 05-24 00:14 ?4231次閱讀

    鴻蒙實戰開發-本地部署、SmartPerf 編譯部署指導文檔

    install 在項目目錄下運行命令: npm run build 編譯成功后會有main 可執行文件生成。 項目部署 直接運行 ./main 可執行程序,完成項目的部署
    發表于 05-09 14:23

    NVIDIA加速微軟最新的Phi-3 Mini開源語言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語言模型。TensorRT-LLM 是一個開源庫,用于優化從 PC 到云端的 NVIDIA GPU 上運行的大語言模型推理
    的頭像 發表于 04-28 10:36 ?591次閱讀

    簡單兩步使用OpenVINO?搞定Qwen2的量化與部署任務

    英特爾 OpenVINO? 工具套件是一款開源 AI 推理優化部署的工具套件,可幫助開發人員和企業加速生成式人工智能 (AIGC)、大語言模型、計算機視覺和自然語言處理等 AI 工作負載,簡化深度學習推理的開發和部署,便于實現從
    的頭像 發表于 04-26 09:39 ?1742次閱讀
    簡單兩步使用OpenVINO?搞定Qwen2的量化與<b class='flag-5'>部署</b>任務

    簡單三步使用OpenVINO?搞定ChatGLM3的本地部署

    英特爾 OpenVINO? 工具套件是一款開源 AI 推理優化部署的工具套件,可幫助開發人員和企業加速生成式人工智能 (AIGC)、大語言模型、計算機視覺和自然語言處理等 AI 工作負載,簡化深度學習推理的開發和部署,便于實現從
    的頭像 發表于 04-03 18:18 ?2132次閱讀
    簡單三步使用OpenVINO?搞定ChatGLM3的本地<b class='flag-5'>部署</b>

    蔚來汽車加速部署換電站,第四代站4月啟動

    在今日的溝通會中,蔚來汽車首席執行官兼創始人李斌透露,近期部署進度放緩的主要原因為等待第四代換電站的交付,預計該站將于4月份啟動部署工作。
    的頭像 發表于 03-14 14:30 ?563次閱讀

    百度搜索exgraph圖執行引擎設計與實踐分享

    百度搜索exgraph圖執行引擎設計重點分成三個部分:圖描述語言、圖執行引擎、對接擴展。
    的頭像 發表于 01-16 10:27 ?580次閱讀
    百度搜索exgraph圖<b class='flag-5'>執行</b><b class='flag-5'>引擎</b>設計與實踐分享
    主站蜘蛛池模板: 欧美在线观看一区二区三| 日本精品视频| 国产激情电影综合在线看| 免费人成在观看| 天天操丝袜| 亚洲资源在线播放| 加勒比啪啪| 亚洲最大毛片| 国产精品热久久毛片| 丁香六月婷婷激情| 久久精品国产清自在天天线| 四虎院影永久在线观看| 99热.com| 亚洲一区免费观看| 特黄特色大片免费播放路01| xxxxxx日本老师hd68| 日本视频不卡| 性生活黄色毛片| 日韩精品一级a毛片| 久久久久久久久久久9精品视频| 国产精品特黄毛片| 午夜福利毛片| 天天综合亚洲| 天天躁日日2018躁狠狠躁| 奇米影视9999| 久久久久久人精品免费费看| 8050网午夜| 国产精品29页| 99热最新在线观看| 天天综合天天做天天综合| 免费网站你懂得| 999av视频| 午夜影院视频| 国产真实乱在线更新| 福利在线看| 视频三区| 四虎.com| 日本黄色小视频网站| 日本黄色片在线播放| 国产一级大片在线观看| 天天爽夜爽免费精品视频|