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

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

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

TensorRT怎么在多個GPU中指定推理設(shè)備

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 2023-08-03 14:10 ? 次閱讀

前言

說實話,之前我在筆記本上都一直都是只有一塊N卡,所以沒有過多關(guān)注過這個問題。然而昨天有個人問我,TensorRT怎么在多個GPU中指定模型推理GPU設(shè)備?我查了一下,發(fā)現(xiàn)官方有幾個不同的解決方案,個人總結(jié)了一下,主要的做法有兩種。

01配置環(huán)境變量支持

該方法的好處是不需要修改代碼,通過配置環(huán)境變量就可以實現(xiàn)指定的GPU運行,缺點是缺乏靈活性,特別是想切換不同GPU實現(xiàn)模型推理的時候,這個方法就弊端就比較明顯。

CUDA編程中支持的指定GPU設(shè)備的環(huán)境變量為:

CUDA_VISIBLE_DEVICES
通過該系統(tǒng)的環(huán)境變量可以設(shè)置指定的單個GPU編號或者多個GPU編號合集,然后在程序測試與調(diào)試環(huán)境中使用。通過這種方式指定GPU編號執(zhí)行模型推理,就無需修改代碼,實現(xiàn)在單一指定的GPU上運行TensorRT推理程序。

02代碼指定GPU設(shè)備執(zhí)行

一臺機器上可能有多個GPU設(shè)備,通過CUDA編程可以查詢機器上所有的GPU設(shè)備,查詢這些設(shè)備的屬性以及決定使用哪個GPU設(shè)備作為當(dāng)前設(shè)備。

cudaGetDeviceCount
該函數(shù)可以查詢到當(dāng)前機器上GPU設(shè)備數(shù)目,然后遍歷查詢每個GPU設(shè)備的屬性。官方教程給出的代碼如下:
//查詢設(shè)備數(shù)目
intdeviceCount;
cudaGetDeviceCount(&deviceCount);

//遍歷設(shè)備編號信息
intdevice;
for(device=0;device
根據(jù)查詢的設(shè)備數(shù)目,GPU編號從0開始,默認情況下當(dāng)前使用的設(shè)備就是編號為0的GPU設(shè)備,通過函數(shù)cudaSetDevice()可以修改運行時使用GPU設(shè)備,在初始化TensorRT之前,先通過cudaSetDevice()函數(shù)修改默認的當(dāng)前設(shè)備,然后再初始化就可以把TensorRT的模型綁定到指定編號的GPU設(shè)備上推理。以我的筆記本上為例,設(shè)置當(dāng)前的GPU設(shè)備,然后初始化TensorRT代碼如下:
// 設(shè)置當(dāng)前設(shè)備為GPU 0
cudaSetDevice(0);// 初始化TensorRT
this->runtime=createInferRuntime(gLogger);
assert(this->runtime!=nullptr);
this->engine=runtime->deserializeCudaEngine(trtModelStream,size);
assert(this->engine!=nullptr);
this->context=engine->createExecutionContext();
assert(this->context!=nullptr);
delete[]trtModelStream;

// do more thing here// insert query input and output layers information
//創(chuàng)建GPU顯存輸入/輸出緩沖區(qū)
std::cout<getNbBindings()<input_h*this->input_w*3*sizeof(float));
cudaMalloc(&buffers[2],this->output_h*this->output_w*sizeof(float));
cudaMalloc(&buffers[1],32*25600*sizeof(float));

//創(chuàng)建臨時緩存輸出
prob.resize(output_h*output_w);
mprob.resize(32*25600);

//創(chuàng)建cuda流
cudaStreamCreate(&stream);
在多個GPU設(shè)備上執(zhí)行多個模型推理的初始化代碼如下:
//初始化時間標(biāo)記
cudaEvent_tstart,stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start,0);

//查詢設(shè)備數(shù)目
intdeviceCount;
cudaGetDeviceCount(&deviceCount);

//遍歷設(shè)備編號信息
intdevice;
for(device=0;device

關(guān)于延時加載

TensorRT8.6支持CUDA Lazy Loading(延時加載),開發(fā)者文檔上說這種方式可以有效降低GPU顯存與內(nèi)存使用,加速初始化,節(jié)省模型初始化時間,可以通過環(huán)境變量配置實現(xiàn)延時加載支持,相關(guān)環(huán)境變量為:

CUDA_MODULE_LOADING=LAZY

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

    關(guān)注

    27

    文章

    4635

    瀏覽量

    128449
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3544

    瀏覽量

    93481
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3065

    瀏覽量

    48577
  • 調(diào)試環(huán)境

    關(guān)注

    0

    文章

    4

    瀏覽量

    6004

原文標(biāo)題:TensorRT | 在多個GPU中指定推理設(shè)備

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何在GPU上使用TensorRT部署深度學(xué)習(xí)應(yīng)用程序

    本文未涉及的一個主題是 TensorRT 中以 INT8 精度精確地執(zhí)行推理。 TensorRT 自動轉(zhuǎn)換 FP32 網(wǎng)絡(luò)以進行部署,同時降低精度損失。為了實現(xiàn)這一目標(biāo),
    的頭像 發(fā)表于 04-01 15:19 ?4849次閱讀
    如何在<b class='flag-5'>GPU</b>上使用<b class='flag-5'>TensorRT</b>部署深度學(xué)習(xí)應(yīng)用程序

    NVIDIA 首個AI推理基準(zhǔn)測試中大放異彩

    TensorRT軟件的成熟程度。它們讓用戶能夠更加輕松地將所有的NVIDIA GPU應(yīng)用于數(shù)據(jù)中心、邊緣等領(lǐng)域。MLPerf定義了五項推理基準(zhǔn),涵蓋了三個現(xiàn)有的人工智能應(yīng)用:圖像分類、目標(biāo)檢測和翻譯。每項基準(zhǔn)
    發(fā)表于 11-08 19:44

    TensorFlow指定CPU和GPU設(shè)備操作詳解

    TensorFlow 支持 CPU 和 GPU。它也支持分布式計算。可以一個或多個計算機系統(tǒng)的多個設(shè)備上使用 TensorFlow。Ten
    發(fā)表于 07-28 14:33

    充分利用Arm NN進行GPU推理

    Arm擁有跨所有處理器的計算IP。而且,無論您要在GPU,CPU還是NPU上進行ML推理,都可以一個通用框架下使用它們:Arm NN。Arm NN是適用于CPU,GPU和NPU的開源
    發(fā)表于 04-11 17:33

    如何判斷推理何時由GPU或NPUiMX8MPlus上運行?

    當(dāng)我為 TFLite 模型運行基準(zhǔn)測試時,有一個選項 --nnapi=true我如何知道 GPU 和 NPU 何時進行推理?謝謝
    發(fā)表于 03-20 06:10

    Keil中指定代碼段與常量Flash中地址方法

    圖 分配代碼文件到Flash指定位置方法 .sct文件中指定代碼輸出文件(.o格式)到Flash指定位置,如下圖 BootMain
    發(fā)表于 11-20 14:36 ?20次下載
    Keil<b class='flag-5'>中指定</b>代碼段與常量<b class='flag-5'>在</b>Flash中地址方法

    NVIDIA TensorRT 8.2將推理速度提高6倍

      TensorRT 是一款高性能的深度學(xué)習(xí)推理優(yōu)化器和運行時,為人工智能應(yīng)用程序提供低延遲、高吞吐量推理。 TensorRT 用于醫(yī)療、汽車、制造、互聯(lián)網(wǎng)/電信服務(wù)、金融服務(wù)和能源等
    的頭像 發(fā)表于 03-31 17:10 ?1679次閱讀

    如何實現(xiàn)高效的部署醫(yī)療影像推理

    一個完整的醫(yī)療影像推理流程一般包含數(shù)據(jù)的前處理、AI 推理以及數(shù)據(jù)后處理這幾部分。通常情況下,我們可以通過 TensorRT, TensorFlow 或者 PyTorch 這些框架來實現(xiàn) GP
    的頭像 發(fā)表于 04-09 08:18 ?1281次閱讀

    NVIDIA TensorRT助力打造AI計算機視覺算法推理平臺

    使用 NVIDIA TensorRT和NVIDIA T4 GPU對平臺賦能后,“極星”推理平臺的算法推理效率得到了進一步的提升,更好地支
    的頭像 發(fā)表于 04-13 14:49 ?1102次閱讀

    NVIDIA T4 GPUTensorRT加速微信搜索速度

      使用NVIDIA T4 GPU以及TensorRT推理引擎進行INT8低精度推理,極大提升了微信搜索的速度,進一步提升了用戶體驗,節(jié)約了公司成本。
    的頭像 發(fā)表于 04-21 10:53 ?1522次閱讀

    NVIDIA TensorRT插件的全自動生成工具

    NVIDIA TensorRT 是性能最優(yōu)、應(yīng)用最廣的 GPU 推理框架,但用戶常常因為不支持的算子而面臨手寫插件的痛點。為此,騰訊 TEG 與 NVIDIA 聯(lián)合開發(fā)了一款能自動生成插件的工具
    的頭像 發(fā)表于 07-18 10:13 ?1089次閱讀

    學(xué)習(xí)資源 | NVIDIA TensorRT 全新教程上線

    NVIDIA TensorRT ? 是一個用于高效實現(xiàn)已訓(xùn)練好的深度學(xué)習(xí)模型推理過程的軟件開發(fā)工具包,內(nèi)含推理優(yōu)化器和運行環(huán)境兩部分,其目的在于讓深度學(xué)習(xí)模型能夠
    的頭像 發(fā)表于 08-04 17:45 ?773次閱讀
    學(xué)習(xí)資源 | NVIDIA <b class='flag-5'>TensorRT</b> 全新教程上線

    現(xiàn)已公開發(fā)布!歡迎使用 NVIDIA TensorRT-LLM 優(yōu)化大語言模型推理

    NVIDIA 于 2023 年 10 月 19 日公開發(fā)布 TensorRT-LLM ,可在 NVIDIA GPU 上加速和優(yōu)化最新的大語言模型(Large Language Models)的推理
    的頭像 發(fā)表于 10-27 20:05 ?893次閱讀
    現(xiàn)已公開發(fā)布!歡迎使用 NVIDIA <b class='flag-5'>TensorRT</b>-LLM 優(yōu)化大語言模型<b class='flag-5'>推理</b>

    Torch TensorRT是一個優(yōu)化PyTorch模型推理性能的工具

    那么,什么是Torch TensorRT呢?Torch是我們大家聚在一起的原因,它是一個端到端的機器學(xué)習(xí)框架。而TensorRT則是NVIDIA的高性能深度學(xué)習(xí)推理軟件工具包。Torch Te
    的頭像 發(fā)表于 01-09 16:41 ?1281次閱讀
    Torch <b class='flag-5'>TensorRT</b>是一個優(yōu)化PyTorch模型<b class='flag-5'>推理</b>性能的工具

    利用NVIDIA組件提升GPU推理的吞吐

    本實踐中,唯品會 AI 平臺與 NVIDIA 團隊合作,結(jié)合 NVIDIA TensorRT 和 NVIDIA Merlin HierarchicalKV(HKV)將推理的稠密網(wǎng)絡(luò)和熱 Embedding 全置于 GPU 上進行
    的頭像 發(fā)表于 04-20 09:39 ?576次閱讀