你已經(jīng)建立了你的深度學(xué)習(xí)推理模型并將它們部署到 NVIDIA Triton Inference Serve 最大化模型性能。 你如何進(jìn)一步加快你的模型的運(yùn)行速度? 進(jìn)入 NVIDIA模型分析器 ,一個(gè)收集模型計(jì)算需求的工具。
沒(méi)有這些信息,在理解在GPU上運(yùn)行多少模型方面就存在知識(shí)差距。 通過(guò)收集冷熱儲(chǔ)存需求,您可以使用它們通知模型的調(diào)度,以獲得幾個(gè)好處:
最大化模型吞吐量—確保放置在每個(gè)GPU上的模型總和不超過(guò)可用內(nèi)存和GPU利用率的特定閾值,例如100%。這樣可以最大限度地提高硬件的吞吐量。
優(yōu)化硬件使用—檢查GPU內(nèi)存需求,以便在較少硬件上運(yùn)行更多型號(hào)。您可以使用此數(shù)據(jù)來(lái)確定每個(gè)GPU可以加載的最大模型數(shù),而不是優(yōu)化吞吐量,從而減少所需的硬件,或者權(quán)衡吞吐量的權(quán)衡。
提高了可靠性—通過(guò)了解在GPU上加載的模型不會(huì)超出其能力,消除內(nèi)存不足錯(cuò)誤。
此外,還有兩個(gè)關(guān)鍵的非調(diào)度好處:
有效的模式—比較和對(duì)比不同的模型,將計(jì)算需求作為一個(gè)額外的數(shù)據(jù)點(diǎn)來(lái)衡量模型的性能。這有助于生成更輕量級(jí)的模型,并減少推理所需的內(nèi)存量。
更好的硬件尺寸—使用內(nèi)存需求確定運(yùn)行模型所需的確切硬件數(shù)量。
總之,理解推理模型的計(jì)算要求提供了從模型創(chuàng)建和硬件大小到模型的可靠、高效運(yùn)行的大量好處。 下面我們來(lái)看看ModelAnalyzer,看看它如何為最高性能的推理解決方案做出貢獻(xiàn)。
獲取模型分析器Docker容器
在使用推理服務(wù)器容器之前,必須安裝一些軟件,如Docker。 有關(guān)更多信息,請(qǐng)參見(jiàn) 安裝Docker和NVIDIA Docke 一節(jié)進(jìn)去 NVIDIA Docker:GPU服務(wù)器應(yīng)用程序部署容易.
模型分析器作為Helm圖表、Docker容器或獨(dú)立命令行接口運(yùn)行。 對(duì)于本教程,您可以從源代碼the構(gòu)建Docker容器 triton-inference-server/model_analyzer Github回購(gòu)。
git clone https://github.com/triton-inference-server/model_analyzer.git cd model_analyzer docker build -t memory-analyzer
要為您的模型運(yùn)行容器,請(qǐng)確保端口8000、8001和8002可用。 然后,運(yùn)行以下命令,替換大寫(xiě)參數(shù):
docker run -v /var/run/docker.sock:/var/run/docker.sock / -v /ABSOLUTE/PATH/TO/MODELS:ABSOLUTE/PATH/TO/MODELS / -v /ABSOLUTE/PATH/TO/EXPORT/DIRECTORY:/results --net=host / memory-analyzer:ANALYZER-VERSION / --batch BATCH-SIZES / --concurrency CONCURRENCY-VALUES / --model-names MODEL-NAMES / --triton-version TRITON-VERSION / --model-folder /ABSOLUTE/PATH/TO/MODELS / --export --export-path /results/
這里有一個(gè)示例命令供參考:
docker run -v /var/run/docker.sock:/var/run/docker.sock / -v /home/user/models: /home/user/models / -v /home/user/results:/results --net=host / memory-analyzer:latest / --batch 1,2,4 / --concurrency 1,2,4 / --model-names chest_xray,covid19_xray/ --triton-version 20.02-py3 / --model-folder /home/user/models / --export --export-path /results/
容器完成后,每個(gè)模型、批處理大小和并發(fā)值的度量將導(dǎo)出到您選擇的目錄中。 信息是通過(guò)在系統(tǒng)運(yùn)行時(shí)收集度量來(lái)收集的,因此在一個(gè)孤立的GPU或僅運(yùn)行模型分析器的系統(tǒng)上運(yùn)行它是理想的。
使用計(jì)算需求進(jìn)行優(yōu)化
下面是如何使用這些度量來(lái)優(yōu)化系統(tǒng)性能。 我們討論了兩個(gè)使用醫(yī)學(xué)推斷模型的案例研究:
第一個(gè)案例研究探討了如何將間歇性運(yùn)行的系統(tǒng)的硬件最小化,例如需要在最小硬件上運(yùn)行許多模型的低成本醫(yī)療提供商。
第二個(gè)案例研究探討了使用最少的硬件來(lái)最大化這些相同模型的吞吐量,例如在一致的基礎(chǔ)上運(yùn)行許多模型的大型急診室。
這兩個(gè)案例研究都是手動(dòng)完成這些步驟的,因此我們最后討論了將模型元數(shù)據(jù)納入自動(dòng)調(diào)度的下一步。 對(duì)于這兩項(xiàng)研究,為了簡(jiǎn)化分析,我們使用總結(jié)的數(shù)據(jù),對(duì)每個(gè)模型使用2的模型批處理大小和4的并發(fā)。
馬克斯記憶用法(%) | 馬克斯GPU使用(%) | 最大GPU內(nèi)存(MB) |
0 | 9 | 309 |
表1。 只運(yùn)行TritonServer的內(nèi)存使用。
Model | Batch | 流率 | 馬克斯記憶用法(%) | 馬克斯GPU使用(%) | 最大GPU內(nèi)存(MB) | |
classification_breast | 2 | 4 | 1381.6推斷/秒 | 1 | 23 | 1461 |
classification_chest | 2 | 4 | 172.4推斷/秒 | 11 | 56 | 5035 |
分類(lèi)_瑪利亞 | 2 | 4 | 586推斷/秒 | 2 | 43 | 1851 |
節(jié)段_CT_Colon_Tumo | 2 | 4 | 33.6推斷/秒 | 60 | 60 | 6955 |
segmentation_ct_胰腺 | 2 | 4 | 29.6推斷/秒 | 51 | 79 | 6955 |
節(jié)段_CT_脾 | 2 | 4 | 32推斷/秒 | 54 | 54 | 6955 |
肝段 | 2 | 4 | 28推斷/秒 | 53 | 76 | 11051 |
分段_MRI_腦_腫瘤 | 2 | 4 | 4推斷/秒 | 48 | 48 | 8579 |
分段_MRI_海馬 | 2 | 4 | 30.8推斷/秒 | 52 | 52 | 6955 |
表2。 每個(gè)運(yùn)行模型的內(nèi)存使用情況。
通常,有幾種潛在的方法:
每個(gè)GPU放置一個(gè)模型。 這意味著這9種型號(hào)的9個(gè)GPU。 例如,如果要在DGX上運(yùn)行,這種方法將需要兩個(gè)不能充分利用的DGX。
把所有的模型放在一個(gè)GPU上。 這只需要一個(gè)GPU,但會(huì)導(dǎo)致“內(nèi)存不足”錯(cuò)誤。
在每個(gè)GPU上放置任意數(shù)量的模型。 這涉及到以前方法的問(wèn)題。 如果每個(gè)GPU放置兩個(gè)模型,則只需要5個(gè)GPU。 然而,記憶錯(cuò)誤仍然是一個(gè)風(fēng)險(xiǎn),例如,如果你把肝臟分割和腦腫瘤分割模型放在一個(gè)GPU上。 同時(shí),其他GPU沒(méi)有得到充分或最佳的利用,例如當(dāng)您將乳房和胸部x射線分類(lèi)放在一個(gè)GPU上時(shí)。
另一種選擇是什么?
案例研究:盡量減少間歇系統(tǒng)的硬件
想象一下,你有一個(gè)系統(tǒng),你知道它只會(huì)斷斷續(xù)續(xù)地出現(xiàn),所以你想在最少的硬件上安裝盡可能多的模型。 在這種情況下,GPU內(nèi)存是瓶頸。 您可以為T(mén)riton Server減去309MB的內(nèi)存,以單獨(dú)獲得模型的GPU內(nèi)存,然后查看在GPU上的一個(gè)服務(wù)器上可以容納多少模型。
表3顯示,可以匹配的模型只使用四個(gè)16GB GPU與以下配置,這協(xié)調(diào)了最小的GPU可能為這些模型,需要53GB的內(nèi)存。
GPU # | 模特兒典型 | 帶有服務(wù)器的GPU內(nèi)存(MB |
1 | 分類(lèi)_胸部,節(jié)段_CT_結(jié)腸_腫瘤 | 11681 |
2 | classification_breast,segmentation_live | 12203 |
3 | 分類(lèi)_瘧疾,節(jié)段_MRI_海馬,節(jié)段_CT_脾 | 15143 |
4 | 節(jié)段_CT_胰腺,節(jié)段_MRI_腦_腫瘤 | 15225 |
表3。 最小硬件的示例配置。
使用這種配置,您的GPU數(shù)量最少,同時(shí)保證沒(méi)有內(nèi)存錯(cuò)誤。 這是一個(gè)很好的設(shè)置,用于間歇性地運(yùn)行模型,當(dāng)吞吐量不需要達(dá)到最大值時(shí)。
案例研究:最大限度地提高一致的、關(guān)鍵的系統(tǒng)的性能
對(duì)于此設(shè)置,最大吞吐量是優(yōu)先級(jí),因此必須確保吞吐量不會(huì)因?yàn)樗心J降牟l(fā)負(fù)載而下降。 查看所有指標(biāo),以確保內(nèi)存利用率、GPU利用率和GPU內(nèi)存總量不超過(guò)機(jī)器的計(jì)算資源。
As total GPU utilization adds up to 491% and would therefore require a minimum of five GPUs, compared to total memory utilization (332%, or four GPUs) or total GPU memory (52 GB, or four GPUs), GPU utilization is the bottleneck and a great place to start.
表4假設(shè)GPU利用率閾值為100%,并顯示了一個(gè)只有6個(gè)16GB GPU的示例配置。
GPU # | 模特兒典型 | 內(nèi)存使用(%) | GPU使用(%) | 帶有服務(wù)器的GPU內(nèi)存(MB |
1 | 節(jié)段_CT_Colon_Tumo | 60 | 60 | 6955 |
2 | 肝段 | 54 | 76 | 11051 |
3 | classification_chest,classification_breast | 12 | 79 | 2939 |
4 | segmentation_ct_pancreas | 51 | 79 | 6955 |
5 | 級(jí)化_級(jí),細(xì)分_級(jí) | 56 | 97 | 8497 |
6 | Segmentation_MRI_海馬,segmentation_mri_brain_tumo | 100 | 100 | 15225 |
表4。 最大吞吐量的示例配置。
這與每個(gè)模型的批處理大小和并發(fā)值相同。 通過(guò)調(diào)整,使用不同的批處理大小和并發(fā)值來(lái)最大化吞吐量,內(nèi)存和GPU利用率會(huì)有更高的變化,從而節(jié)省更多的資源。 此外,如果您的系統(tǒng)可以犧牲一些吞吐量,您可以使用更少的硬件,只需占用內(nèi)存或GPU利用率的100。
進(jìn)一步用例:自動(dòng)調(diào)度
雖然這兩個(gè)案例研究顯示了優(yōu)化系統(tǒng)運(yùn)行的手工操作,但最有可能的用例是將這些數(shù)據(jù)自動(dòng)納入調(diào)度。 調(diào)度規(guī)則將放在計(jì)算需求之上,例如在模型運(yùn)行時(shí)不要使用超過(guò)80%的GPU或80%的GPU內(nèi)存。 這樣的規(guī)則是你的模式,模型的使用計(jì)算元數(shù)據(jù)收集。
有了計(jì)算機(jī)需求,您就可以確定什么對(duì)您最重要,并從硬件中獲得最大的性能。
結(jié)局推論
使用Triton Server工具M(jìn)odel Analyzer,您可以輕松高效地描述您的模型,使您能夠最大限度地提高硬件的性能。 無(wú)論您使用命令行接口、Docker容器還是Helm圖表,ModelAnalyzer都會(huì)收集模型的計(jì)算需求,允許您最大化性能并最小化運(yùn)行模型所需的硬件。
正如將9個(gè)GPU減少到4個(gè)或6個(gè)GPU的案例研究所顯示的,將這些數(shù)據(jù)合并到您的調(diào)度中是非常強(qiáng)大的。 對(duì)數(shù)據(jù)的進(jìn)一步探索提供了對(duì)批處理大小和并發(fā)如何影響模型的洞察,使您能夠使用Triton Server以最大的性能運(yùn)行模型。
Model Analyzer 是開(kāi)源的,在GitHub上可用。
關(guān)于作者
關(guān)于大衛(wèi)·亞斯特雷姆斯基
大衛(wèi)·亞斯特雷姆斯基是NVIDIA的軟件實(shí)習(xí)生,從事克拉拉部署工作。 他是一名碩士學(xué)位學(xué)生,在賓夕法尼亞大學(xué)學(xué)習(xí)計(jì)算機(jī)科學(xué),對(duì)醫(yī)療AI充滿(mǎn)熱情,未來(lái)人人都能獲得高質(zhì)量的醫(yī)療保健。
審核編輯 黃昊宇
-
分析儀
+關(guān)注
關(guān)注
0文章
1607瀏覽量
53028 -
NVIDIA
+關(guān)注
關(guān)注
14文章
5240瀏覽量
105768 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5554瀏覽量
122478
發(fā)布評(píng)論請(qǐng)先 登錄
英偉達(dá)GTC25亮點(diǎn):NVIDIA Dynamo開(kāi)源庫(kù)加速并擴(kuò)展AI推理模型
解鎖NVIDIA TensorRT-LLM的卓越性能
AI大模型與深度學(xué)習(xí)的關(guān)系
最大限度地提高MSP430? FRAM的寫(xiě)入速度

參數(shù)分析儀的技術(shù)原理和應(yīng)用場(chǎng)景
最大限度地提高GSPS ADC中的SFDR性能:雜散源和Mitigat方法

利用智能eFuses最大限度地縮短系統(tǒng)停機(jī)時(shí)間

如何在C2000設(shè)備中最大限度地利用GPIO

Keysight 頻譜分析儀(信號(hào)分析儀)

開(kāi)箱即用,AISBench測(cè)試展示英特爾至強(qiáng)處理器的卓越推理性能

利用TI GaN中的集成電流檢測(cè)功能更大限度提高系統(tǒng)效率

魔搭社區(qū)借助NVIDIA TensorRT-LLM提升LLM推理效率
【《大語(yǔ)言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)知識(shí)學(xué)習(xí)
深度學(xué)習(xí)模型量化方法

評(píng)論