日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成

發布時間:2023/11/28 生活经验 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成

這個PR增加了對分區、編譯和運行TensorRT
BYOC目標的支持。

Building

有兩個新的cmake標志:

USE_TENSORRT=ON/OFF:啟用TENSORRT代碼生成-這不需要TENSORRT庫????????????? USE_TENSORRT_GRAPH_RUNTIME=ON/OFF/“path/to/TensorRT”:

啟用TENSORRTruntime-這需要TENSORRT庫。從deb包或JetPack在系統范圍內安裝TensorRT時,可以通過“ON”來檢測,但是.tar.gz安裝要求提供提取的TensorRT歸檔文件的路徑。

Usage

編譯目標應該是“cuda”,以確保將TensorRT函數的輸入和輸出參數放在GPU上。

Compilation

from tvm.relay.op.contrib import tensorrt

mod = tensorrt.partition_for_tensorrt(mod, params)

with relay.build_config(opt_level=3):

graph, lib, params =
relay.build(mod, target=“cuda”, params=params)

Running inference is unchanged

mod = graph_runtime.create(graph, lib, ctx=tvm.gpu(0))

mod.run(…)

High level components

Partitioning

TensorRT的注釋規則根據目標的TensorRT版本以及“批處理模式”而變化。這可以用trt_version進行配置,并使用use_implicit_batch分區的partition_for_tensorrt批處理參數。

如果TVM是針對TensorRT庫構建的,則鏈接版本將用于分區。

Codegen

此實現使用codegen的JSONRuntime
JSONSerializer基類將中繼表達式序列化為json格式。

Runtime

runtime由tensorrt中的runtime模塊類處理tensorrt_runtime.cc。在runtime,它首先使用TensorRTBuilder類(tensorrt_builder.cc)用于使用TensorRT API將json圖轉換為TensorRT INetworkDefinition。它使用tensorrt中的converterconverter classes算子tensorrt_ops.cc。然后,構建TensorRT引擎,此過程可能需要幾分鐘時間,因為TensorRT將在此時執行優化。引擎被緩存以備進一步的推理調用。

如果guards,runtime可以針對許多TensorRT版本進行編譯。它適用于TensorRT 5、6和7。編譯后的模型必須為TensorRT版本<=runtime使用的版本進行分區。編譯后的模型可能需要更新的TensorRT版本的算子可用。

Problem

TensorRT有一些參數,比如max_workspace_size和use_implicit_batch,希望用戶能夠在分區_中為partition_for_tensorrt提供這些參數。這些參數需要傳遞給codegen并存儲在序列化圖中,直到運行時為止。使用“隱式”批處理也會影響分區規則。使用環境變量將這些從Python傳遞到C++中的代碼生成。想知道有沒有更好的方法來做這個?

我在python/tvm/relay/op/contrib/tensorrt.py中實現了一個名為prune_tensorrt_subgraphs()的轉換/tensorrt.py. 這是在分區之后運行的,決定是保留子圖還是將其返回到典型的TVM編譯路徑。之所以需要這樣做,是因為有些子圖可能是無效的——例如當輸入具有不同的批處理大小時,或者為了優化目的,如果子圖沒有乘法累加。在C++中實現了一個通用版本,但使用全局注冊表來允許每個代碼對象定義自己的is_invalid_subgraph回調。將來,如果找到更好的方法來注冊回調,可以切換到泛型版本。

需要在注釋時介入目標tensorrt版本。把它放在一個全局變量中。

總結

以上是生活随笔為你收集整理的TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。