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

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

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

NVIDIA Triton 系列文章(10):模型并發(fā)執(zhí)行

NVIDIA英偉達(dá)企業(yè)解決方案 ? 來(lái)源:未知 ? 2023-01-05 11:55 ? 次閱讀

前面已經(jīng)做好了每個(gè)推理模型的基礎(chǔ)配置,基本上就能正常讓 Triton 服務(wù)器使用這些獨(dú)立模型進(jìn)行推理。接下來(lái)的重點(diǎn),就是要讓設(shè)備的計(jì)算資源盡可能地充分使用,首先第一件事情就是模型并發(fā)執(zhí)行(concurrent model execution)的調(diào)試,這是提升 Triton 服務(wù)器性能的最基本任務(wù)。

Triton 服務(wù)器支持的模型并發(fā)能力,包括一個(gè)模型并發(fā)多個(gè)推理實(shí)例,以及多個(gè)模型的多個(gè)并發(fā)實(shí)例。至于能并發(fā)多少實(shí)例?就需要根據(jù)系統(tǒng)上的硬件配置,Triton 支持純 CPU 以及多 GPU 的計(jì)算環(huán)境。

GPU 是能夠同時(shí)執(zhí)行多個(gè)工作負(fù)載的計(jì)算引擎,Triton 推理服務(wù)器通過(guò)在 GPU上同時(shí)運(yùn)行多個(gè)模型,最大限度地提高性能并減少端到端延遲,這些模型可以完全相同也可以是不同框架的不同模型,顯存大小是唯一限制并發(fā)運(yùn)行模型數(shù)量的因素。

下圖顯示了兩個(gè)計(jì)算模型 compute model 0 與 compute model 1 的示例,假設(shè) Triton 服務(wù)器當(dāng)前處于等待狀態(tài),當(dāng) request 0 與 request 1 兩個(gè)請(qǐng)求同時(shí)到達(dá)時(shí),Triton 會(huì)立即將這兩個(gè)請(qǐng)求調(diào)度到 GPU 上(下圖左),開(kāi)始并發(fā)處理這兩個(gè)模型的推理計(jì)算。

69003688-8cac-11ed-bfe3-dac502259ad0.png

認(rèn)情況下,Triton 指定系統(tǒng)中的每個(gè)可用 GPU 為每個(gè)模型提供一個(gè)實(shí)例,如果同一模型的多個(gè)請(qǐng)求同時(shí)到達(dá),Triton 將通過(guò)在 GPU 上一次只調(diào)度一個(gè)請(qǐng)求來(lái)串行化它們的執(zhí)行(上圖中)。這樣的方式在管理上是最輕松的,但是執(zhí)行效率并不好,因?yàn)橛?jì)算性能并未被充分調(diào)用。

Triton 提供了一個(gè) “instance_group” 的模型配置選項(xiàng),通過(guò)在模型配置中使用這個(gè)字段,可以更改模型的執(zhí)行實(shí)例數(shù),調(diào)整每個(gè)模型的并發(fā)執(zhí)行數(shù)量。

上圖右就是在 model 1 配置文件中,添加 “instance_group” 配置,并且設(shè)置 “count: 3” 參數(shù),這樣就允許一個(gè) GPU 上可以并發(fā)三個(gè)實(shí)例的模型計(jì)算,如果用戶(hù)端發(fā)出超過(guò) 3 個(gè)推理請(qǐng)求時(shí),則第 4 個(gè) model 1 推理請(qǐng)求就必須等到前三個(gè)實(shí)例中的任一個(gè)執(zhí)行完之后,才能開(kāi)始執(zhí)行。

Triton可以提供一個(gè)模型的多個(gè)實(shí)例,從而可以同時(shí)處理該模型的多條推理請(qǐng)求。模型配置 ModelInstanceGroup 屬性用于指定應(yīng)可用的執(zhí)行實(shí)例的數(shù)量以及應(yīng)為這些實(shí)例使用的計(jì)算資源。接下來(lái)就看看幾個(gè)標(biāo)準(zhǔn)用法:

1. 單 CPU 或 GPU 單實(shí)例

未添加任何 instance_group 參數(shù)時(shí),表示這個(gè)模型使用默認(rèn)的配置,這時(shí)該模型可以在系統(tǒng)中可用的每個(gè) GPU 中創(chuàng)建單個(gè)執(zhí)行實(shí)例。如果用戶(hù)端提出多個(gè)請(qǐng)求時(shí),就會(huì)在 GPU 設(shè)備上按照串行方式執(zhí)行計(jì)算,如同上圖中 compute model 1 的狀態(tài)。

2. 單 CPU 或 GPU 并發(fā)多實(shí)例

實(shí)例組設(shè)置可用于在每個(gè) GPU 上或僅在某些 GPU 上放置模型的多個(gè)執(zhí)行實(shí)例。例如,以下配置將在每個(gè)系統(tǒng) GPU 上放置模型的兩個(gè)執(zhí)行實(shí)例。如果要讓模型在一個(gè) GPU 上執(zhí)行多個(gè)并行實(shí)例,就將以下的內(nèi)容寫(xiě)入模型配置文件內(nèi),這里配置的是 2 個(gè)并發(fā)實(shí)例:

instance_group [ 
  { 
    count: 2 
    kind: KIND_GPU 
  } 
]
如果將上面配置的計(jì)算設(shè)備配置為 “kind:KIND_CPU” ,就是指定在 CPU 可以并發(fā)兩個(gè)推理計(jì)算。 3. 多 CPU 或 GPU 并發(fā)多實(shí)例 如果設(shè)備上有多個(gè)計(jì)算設(shè)備,不管是 CPU 或 GPU,都可以使用以下配置方式,為模型配置多個(gè)并發(fā)推理實(shí)例:
instance_group [ 
  { 
    count: 1 
    kind: KIND_GPU 
    gpus: [ 0 ] 
  }, 
  { 
    count: 2 
    kind: KIND_GPU 
    gpus: [ 1, 2 ] 
  } 
]
這里的內(nèi)容,表示 Triton 服務(wù)器至少啟動(dòng) 3 個(gè) GPU 計(jì)算設(shè)備,這個(gè)推理模型在編號(hào)為 0 的 GPU 上啟動(dòng) 1 個(gè)并發(fā)實(shí)例,在編號(hào)為 1 與 2 的 GPU 上可以同時(shí)啟動(dòng) 2 個(gè)并發(fā)實(shí)例,以此類(lèi)推。 以上是 instance_group 的基礎(chǔ)配置內(nèi)容,如果要對(duì)每個(gè) GPU 設(shè)備的計(jì)算資源進(jìn)行更深層的配置,還可以配合一個(gè)“比例限制器配置(Rate Limiter Configuration)”參數(shù)設(shè)置,對(duì)于執(zhí)行實(shí)例進(jìn)行資源的限制,以便于在不同實(shí)例直接取得計(jì)算平衡。 這個(gè)比例限制器的配置,主要有以下兩部分:
  • 資源(Reousrces)限制:
這個(gè)資源主要指的是 GPU 的顯存調(diào)用,因?yàn)閿?shù)據(jù)在 CPU 與 GPU 之間的交換傳輸,經(jīng)常在整個(gè)計(jì)算環(huán)節(jié)中造成很大的影響,如果當(dāng)我們需要對(duì)同一組數(shù)據(jù)進(jìn)行不同的計(jì)算,或者計(jì)算過(guò)程中有流水線(xiàn)前后關(guān)系的話(huà),那么將這些需要重復(fù)使用的數(shù)據(jù)保留在 GPU 顯存上,就能非常有效減少數(shù)據(jù)傳輸次數(shù),進(jìn)而提升計(jì)算效率。 因此我們可以對(duì)模型實(shí)例提出限制,只有當(dāng)系統(tǒng)閑置資源能滿(mǎn)足資源需求時(shí),才進(jìn)行這個(gè)推理模型的計(jì)算。如果模型配置里沒(méi)有提供任何資源限制的需求,那么 Triton 服務(wù)器就認(rèn)定這個(gè)模型實(shí)例的執(zhí)行并不需要任何資源,并將在模型實(shí)例可用時(shí)立即開(kāi)始執(zhí)行。 這個(gè)配置項(xiàng)里有三個(gè)參數(shù)內(nèi)容: (1)“name”字段:資源名稱(chēng); (2)“count”字段:組中模型實(shí)例需要運(yùn)行的資源副本數(shù); (3)“global”字段:指定資源是按設(shè)備還是在系統(tǒng)中全局共享。 下面是一個(gè)簡(jiǎn)單的模型配置內(nèi)容的 instance_group 參數(shù)組:
instance_group [ 
  { 
    count: 2 
    kind: KIND_GPU 
gpus: [ 0 ] 
    rate_limiter { 
      resources [ 
        { 
          name: "R1" 
          count: 4 
        } 
] 
    } 
  }, 
  { 
    count: 4 
    kind: KIND_GPU 
gpus: [ 1, 2 ] 
    rate_limiter { 
      resources [        
        { 
          name: "R2" 
          global: True 
          count: 2 
        } 
      ] 
} 
  } 
]

  • 第 1 組配置:可并發(fā)執(zhí)行數(shù)量為 2,指定使用 gpu[0] 設(shè)備,需要名為 “R1” 的計(jì)算資源,其內(nèi)容是需要 2 份設(shè)備內(nèi)存的副本;

  • 第 2 組配置:可并發(fā)執(zhí)行數(shù)量為 4,指定使用 gpu[1, 2] 兩個(gè)設(shè)備,需要名為 “R2” 的計(jì)算資源,其內(nèi)容是需要 4 份全局共享內(nèi)存的副本,

這里面的并發(fā)數(shù)量與資源配置數(shù)量并不存在線(xiàn)性關(guān)系,開(kāi)發(fā)人員必須根據(jù)模型所需要數(shù)據(jù)的張量尺度,以及 GPU 卡顯存大小去進(jìn)行調(diào)配。 Triton 允許我們指定要為推理提供的每個(gè)模型的副本數(shù)量,默認(rèn)情況下會(huì)獲得每個(gè)模型的一個(gè)副本,但可以使用 instance_group 在模型配置中指定任意數(shù)量的實(shí)例。通常擁有一個(gè)模型的兩個(gè)實(shí)例會(huì)提高性能,因?yàn)樗试S CPU 與 GPU 之間的內(nèi)存?zhèn)鬏敳僮髋c推理計(jì)算重疊。多個(gè)實(shí)例還通過(guò)允許在 GPU 上并發(fā)更多推理工作來(lái)提高GPU 利用率。
  • 優(yōu)先級(jí)(Priority)設(shè)置:
因?yàn)橛?jì)算資源是有限的,因此也可以在資源配置是對(duì)其進(jìn)行優(yōu)先級(jí)的配置,如此也會(huì)影響實(shí)例進(jìn)行的先后順序。下面是一個(gè)簡(jiǎn)單的優(yōu)先級(jí)配置示范:
instance_group [ 
  { 
    count: 1 
    kind: KIND_GPU 
    gpus: [ 0, 1, 2 ] 
    rate_limiter { 
      resources [ 
        { 
          name: "R1" 
          count: 4 
        }, 
        { 
          name: "R2" 
          global: True 
          count: 2 
        } 
      ] 
      priority: 2 
    } 
  } 
] 
上面配置組的 3 個(gè)模型實(shí)例,每個(gè)設(shè)備(0、1和2)上執(zhí)行一個(gè),每個(gè)實(shí)例需要 4 個(gè) “R1” 和 2 個(gè)具有全局資源的 “R2” 資源才能執(zhí)行,并將比例限制器的優(yōu)先級(jí)設(shè)置為 2。 這三個(gè)實(shí)例之間不會(huì)爭(zhēng)奪 “R1” 資源,因?yàn)?“R1” 對(duì)于它們自己的設(shè)備是本地的,但是會(huì)爭(zhēng)奪 “R2” 資源,因?yàn)樗恢付槿仲Y源,這意味著 “R2” 在整個(gè)系統(tǒng)中共享。雖然這些實(shí)例之間不爭(zhēng) “R1”,但它們將與其他模型實(shí)例爭(zhēng)奪 “R1“,這些模型實(shí)例在資源需求中包含 “R1” 并與它們?cè)谕辉O(shè)備上運(yùn)行。 這是對(duì)所有模型的所有實(shí)例進(jìn)行優(yōu)先級(jí)排序,優(yōu)先級(jí) 2 的實(shí)例將被賦予優(yōu)先級(jí) 1 的實(shí)例 1/2 的調(diào)度機(jī)會(huì)數(shù)。 以上是關(guān)于 Triton 服務(wù)器“模型并發(fā)執(zhí)行”的基礎(chǔ)內(nèi)容,后面還有更多關(guān)于調(diào)度器(scheduler)與批量處理器(batcher)的配合內(nèi)容,能更進(jìn)一步地協(xié)助開(kāi)發(fā)人員調(diào)試系統(tǒng)的總體性能。


原文標(biāo)題:NVIDIA Triton 系列文章(10):模型并發(fā)執(zhí)行

文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

    關(guān)注

    22

    文章

    3829

    瀏覽量

    91630

原文標(biāo)題:NVIDIA Triton 系列文章(10):模型并發(fā)執(zhí)行

文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    NVIDIA技術(shù)助力Pantheon Lab數(shù)字人實(shí)時(shí)交互解決方案

    、NVIDIA Triton,Pantheon Lab 訓(xùn)練速度提高 10 倍、推理延遲降低 50%,以及用戶(hù)參與度提升 30%。這些進(jìn)步使對(duì)話(huà)式 AI 能夠提供實(shí)時(shí)且真實(shí)的互動(dòng),使 Pantheon Lab 在數(shù)字人技術(shù)不斷革
    的頭像 發(fā)表于 01-14 11:19 ?223次閱讀

    NVIDIA推出開(kāi)放式Llama Nemotron系列模型

    作為 NVIDIA NIM 微服務(wù),開(kāi)放式 Llama Nemotron 大語(yǔ)言模型和 Cosmos Nemotron 視覺(jué)語(yǔ)言模型可在任何加速系統(tǒng)上為 AI 智能體提供強(qiáng)效助力。
    的頭像 發(fā)表于 01-09 11:11 ?230次閱讀

    NVIDIA推出面向RTX AI PC的AI基礎(chǔ)模型

    NVIDIA 今日發(fā)布能在 NVIDIA RTX AI PC 本地運(yùn)行的基礎(chǔ)模型,為數(shù)字人、內(nèi)容創(chuàng)作、生產(chǎn)力和開(kāi)發(fā)提供強(qiáng)大助力。
    的頭像 發(fā)表于 01-08 11:01 ?213次閱讀

    NVIDIA Cosmos世界基礎(chǔ)模型平臺(tái)發(fā)布

    NVIDIA 宣布推出NVIDIA Cosmos,該平臺(tái)由先進(jìn)的生成式世界基礎(chǔ)模型、高級(jí) tokenizer、護(hù)欄和加速視頻處理管線(xiàn)組成,將推動(dòng)自動(dòng)駕駛汽車(chē)(AV)和機(jī)器人等物理 AI 系統(tǒng)的發(fā)展。
    的頭像 發(fā)表于 01-08 10:39 ?161次閱讀

    Triton編譯器與GPU編程的結(jié)合應(yīng)用

    Triton編譯器簡(jiǎn)介 Triton編譯器是一種針對(duì)并行計(jì)算優(yōu)化的編譯器,它能夠自動(dòng)將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為針對(duì)特定硬件優(yōu)化的低級(jí)代碼。Triton編譯器的核心優(yōu)勢(shì)在于其能夠識(shí)別并行模式,自動(dòng)進(jìn)行代碼
    的頭像 發(fā)表于 12-25 09:13 ?289次閱讀

    Triton編譯器如何提升編程效率

    在現(xiàn)代軟件開(kāi)發(fā)中,編譯器扮演著至關(guān)重要的角色。它們不僅將高級(jí)語(yǔ)言代碼轉(zhuǎn)換為機(jī)器可執(zhí)行的代碼,還通過(guò)各種優(yōu)化技術(shù)提升程序的性能。Triton 編譯器作為一種先進(jìn)的編譯器,通過(guò)多種方式提升編程效率,使得
    的頭像 發(fā)表于 12-25 09:12 ?287次閱讀

    Triton編譯器的優(yōu)化技巧

    在現(xiàn)代計(jì)算環(huán)境中,編譯器的性能對(duì)于軟件的運(yùn)行效率至關(guān)重要。Triton 編譯器作為一個(gè)先進(jìn)的編譯器框架,提供了一系列的優(yōu)化技術(shù),以確保生成的代碼既高效又適應(yīng)不同的硬件架構(gòu)。 1. 指令選擇
    的頭像 發(fā)表于 12-25 09:09 ?294次閱讀

    Triton編譯器的優(yōu)勢(shì)與劣勢(shì)分析

    Triton編譯器作為一種新興的深度學(xué)習(xí)編譯器,具有一系列顯著的優(yōu)勢(shì),同時(shí)也存在一些潛在的劣勢(shì)。以下是對(duì)Triton編譯器優(yōu)勢(shì)與劣勢(shì)的分析: 優(yōu)勢(shì) 高效性能優(yōu)化 : Triton編譯器
    的頭像 發(fā)表于 12-25 09:07 ?318次閱讀

    Triton編譯器在機(jī)器學(xué)習(xí)中的應(yīng)用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務(wù)平臺(tái)的一部分,它負(fù)責(zé)將深度學(xué)習(xí)模型轉(zhuǎn)換為優(yōu)化的格式,以便
    的頭像 發(fā)表于 12-24 18:13 ?480次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個(gè)開(kāi)源的編譯器前端,它支持多種編程語(yǔ)言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個(gè)可擴(kuò)展和可定制的編譯器框架,允許開(kāi)發(fā)者添加新的編程語(yǔ)言特性和優(yōu)化技術(shù)
    的頭像 發(fā)表于 12-24 17:23 ?528次閱讀

    NVIDIA助力提供多樣、靈活的模型選擇

    在本案例中,Dify 以模型中立以及開(kāi)源生態(tài)的優(yōu)勢(shì),為廣大 AI 創(chuàng)新者提供豐富的模型選擇。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和Triton 推理服務(wù)器
    的頭像 發(fā)表于 09-09 09:19 ?506次閱讀

    NVIDIA Nemotron-4 340B模型幫助開(kāi)發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    Nemotron-4 340B 是針對(duì) NVIDIA NeMo 和 NVIDIA TensorRT-LLM 優(yōu)化的模型系列,該系列包含最先進(jìn)
    的頭像 發(fā)表于 09-06 14:59 ?359次閱讀
    <b class='flag-5'>NVIDIA</b> Nemotron-4 340B<b class='flag-5'>模型</b>幫助開(kāi)發(fā)者生成合成訓(xùn)練數(shù)據(jù)

    NVIDIA加速微軟最新的Phi-3 Mini開(kāi)源語(yǔ)言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開(kāi)源語(yǔ)言模型。TensorRT-LLM 是一個(gè)開(kāi)源庫(kù),用于優(yōu)化從 PC 到云端的 NVID
    的頭像 發(fā)表于 04-28 10:36 ?607次閱讀

    使用NVIDIA Triton推理服務(wù)器來(lái)加速AI預(yù)測(cè)

    這家云計(jì)算巨頭的計(jì)算機(jī)視覺(jué)和數(shù)據(jù)科學(xué)服務(wù)使用 NVIDIA Triton 推理服務(wù)器來(lái)加速 AI 預(yù)測(cè)。
    的頭像 發(fā)表于 02-29 14:04 ?611次閱讀

    在AMD GPU上如何安裝和配置triton?

    最近在整理python-based的benchmark代碼,反過(guò)來(lái)在NV的GPU上又把Triton裝了一遍,發(fā)現(xiàn)Triton的github repo已經(jīng)給出了對(duì)應(yīng)的llvm的commit id以及對(duì)應(yīng)的編譯細(xì)節(jié),然后跟著走了一遍,也順利的安裝成功,只需要按照如下方式即可完
    的頭像 發(fā)表于 02-22 17:04 ?2500次閱讀
    在AMD GPU上如何安裝和配置<b class='flag-5'>triton</b>?