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

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

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

使用NVIDIA Triton模型分析器確定最佳AI模型服務配置

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-05-30 09:38 ? 次閱讀

模型部署是 機器學習 生命周期的一個關鍵階段,在此階段,經(jīng)過培訓的模型將集成到現(xiàn)有的應用程序生態(tài)系統(tǒng)中。這往往是最繁瑣的步驟之一,在這些步驟中,目標硬件平臺應滿足各種應用程序和生態(tài)系統(tǒng)約束,所有這些都不會影響模型的準確性。

NVIDIA Triton 推理服務器 是一個開源的模型服務工具,它簡化了推理,并具有多個功能以最大限度地提高硬件利用率和推理性能。這包括以下功能:

并發(fā)模型執(zhí)行 ,使同一模型的多個實例能夠在同一系統(tǒng)上并行執(zhí)行。

Dynamic batching ,其中客戶端請求在服務器上分組,以形成更大的批。

優(yōu)化模型部署時,需要做出幾個關鍵決策:

為了最大限度地提高利用率, NVIDIA Triton 應在同一 CPU / GPU 上同時運行多少個模型實例?

應將多少傳入的客戶端請求動態(tài)批處理在一起?

模型應采用哪種格式?

應以何種精度計算輸出?

這些關鍵決策導致了組合爆炸,每種型號和硬件選擇都有數(shù)百種可能的配置。通常,這會導致浪費開發(fā)時間或代價高昂的低于標準的服務決策。

在本文中,我們將探討 NVIDIA Triton 型號分析儀 可以自動瀏覽目標硬件平臺的各種服務配置,并根據(jù)應用程序的需要找到最佳型號配置。這可以提高開發(fā)人員的生產(chǎn)率,同時提高服務硬件的利用率。

NVIDIA Triton 型號分析儀

NVIDIA Triton Model Analyzer 是一個多功能 CLI 工具,有助于更好地了解通過 NVIDIA Triton 推理服務器提供服務的模型的計算和內(nèi)存需求。這使您能夠描述不同配置之間的權(quán)衡,并為您的用例選擇最佳配置。

NVIDIA Triton 模型分析器可用于 NVIDIA Triton 推理服務器支持的所有模型格式: TensorRT 、 TensorFlow 、 PyTorch 、 ONNX 、 OpenVINO 和其他。

您可以指定應用程序約束(延遲、吞吐量或內(nèi)存),以找到滿足這些約束的服務配置。例如,虛擬助理應用程序可能有一定的延遲預算,以便最終用戶能夠?qū)崟r感受到交互。脫機處理工作流應針對吞吐量進行優(yōu)化,以減少所需硬件的數(shù)量,并盡可能降低成本。模型服務硬件中的可用內(nèi)存可能受到限制,并且需要針對內(nèi)存優(yōu)化服務配置。

poYBAGKUIBuAEkdnAABaMGlIxwY905.png

圖 1 :NVIDIA Triton 型號分析器概述。

我們以一個預訓練模型為例,展示了如何使用 NVIDIA Triton 模型分析器,并在 Google 云平臺上的 VM 實例上優(yōu)化該模型的服務。然而,這里顯示的步驟可以在任何公共云上使用,也可以在具有 NVIDIA Triton 推理服務器支持的任何模型類型的前提下使用。

創(chuàng)建模型

在這篇文章中,我們使用預訓練 BERT Hugging Face 的大型模型,采用 PyTorch 格式。 NVIDIA Triton 推理服務器可以使用其LibTorch后端為TorchScript模型提供服務,也可以使用其 Python 后端為純 PyTorch 模型提供服務。為了獲得最佳性能,我們建議將 PyTorch 模型轉(zhuǎn)換為TorchScript格式。為此,請使用PyTorch的跟蹤功能。

首先從 NGC 中拉出 PyTorch 容器,然后在容器中安裝transformers包。如果這是您第一次使用 NGC ,請創(chuàng)建一個帳戶。在本文中,我們使用了 22.04 版本的相關工具,這是撰寫本文時的最新版本。 NVIDIA ( NVIDIA ) Triton 每月發(fā)布一次 cadence ,并在每個月底發(fā)布新版本。

docker pull nvcr.io/nvidia/pytorch:22.04-py3
docker run --rm -it -v $(pwd):/workspace nvcr.io/nvidia/pytorch:22.04-py3 /bin/bash
pip install transformers

安裝transformers包后,運行以下 Python 代碼下載預訓練的 BERT 大型模型,并將其跟蹤為 TorchScript 格式。

from transformers import BertModel, BertTokenizer
import torch
model_name = "bert-large-uncased"
tokenizer = BertTokenizer.from_pretrained(model_name)
model = BertModel.from_pretrained(model_name, torchscript=True) max_seq_len = 512
sample = "This is a sample input text"
tokenized = tokenizer(sample, return_tensors="pt", max_length=max_seq_len, padding="max_length", truncation=True) inputs = (tokenized.data['input_ids'], tokenized.data['attention_mask'], tokenized.data['token_type_ids'])
traced_model = torch.jit.trace(model, inputs)
traced_model.save("model.pt")

構(gòu)建模型存儲庫

使用 NVIDIA Triton 推理服務器為您的模型提供服務的第一步是創(chuàng)建模型存儲庫。在此存儲庫中,您將包括一個模型配置文件,該文件提供有關模型的信息。模型配置文件至少必須指定后端、模型的最大批大小以及輸入/輸出結(jié)構(gòu)。

對于這個模型,下面的代碼示例是模型配置文件。

platform: "pytorch_libtorch"
max_batch_size: 64
input [ { name: "INPUT__0" data_type: TYPE_INT64 dims: [ 512 ] }, { name: "INPUT__1" data_type: TYPE_INT64 dims: [ 512 ] }, { name: "INPUT__2" data_type: TYPE_INT64 dims: [ 512 ] }
]
output [ { name: "OUTPUT__0" data_type: TYPE_FP32 dims: [ -1, 1024 ] }, { name: "OUTPUT__1" data_type: TYPE_FP32 dims: [ 1024 ] }
]

將模型配置文件命名為config.pbtxt后,按照 存儲庫布局結(jié)構(gòu) 創(chuàng)建模型存儲庫。模型存儲庫的文件夾結(jié)構(gòu)應類似于以下內(nèi)容:

.
└── bert-large ├── 1 │ └── model.pt └── config.pbtxt

運行 NVIDIA Triton 型號分析器

建議使用 Model Analyzer 的方法是自己構(gòu)建 Docker 映像:

git clone https://github.com/triton-inference-server/model_analyzer.git
cd ./model_analyzer
git checkout r22.04
docker build --pull -t model-analyzer .

現(xiàn)在已經(jīng)構(gòu)建了 Model Analyzer 映像,請旋轉(zhuǎn)容器:

docker run -it --rm --gpus all \ -v /var/run/docker.sock:/var/run/docker.sock \ -v :/models \ -v :/output \ -v :/config \ --net=host model-analyzer

不同的硬件配置可能會導致不同的最佳服務配置。因此,在最終提供模型的目標硬件平臺上運行模型分析器非常重要。

為了重現(xiàn)我們在這篇文章中給出的結(jié)果,我們在公共云中進行了實驗。具體來說,我們在 Google 云平臺上使用了一個 a2-highgpu-1g 實例,并使用了一個 NVIDIA A100 GPU 。

A100 GPU 支持多實例 GPU ( MIG ),它可以通過將單個 A100 GPU 拆分為七個分區(qū)來最大限度地提高 GPU 利用率,這些分區(qū)具有硬件級隔離,可以獨立運行 NVIDIA Triton 服務器。為了簡單起見,我們在這篇文章中沒有使用 MIG 。

Model Analyzer 支持 NVIDIA Triton 型號的自動和手動掃描不同配置。自動配置搜索是默認行為,并為所有配置啟用 dynamic batching 。在這種模式下,模型分析器將掃描不同的批大小和可以同時處理傳入請求的模型實例數(shù)。

掃掠的默認范圍是最多五個模型實例和最多 128 個批次大小。這些 可以更改默認值 。

現(xiàn)在創(chuàng)建一個名為sweep.yaml的配置文件,以分析前面準備的 BERT 大型模型,并自動掃描可能的配置。

model_repository: /models
checkpoint_directory: /output/checkpoints/
output-model-repository-path: /output/bert-large
profile_models: bert-large
perf_analyzer_flags: input-data: "zero"

使用前面的配置,您可以分別獲得模型吞吐量和延遲的頂行號和底行號。

分析時,模型分析器還將收集的測量值寫入檢查點文件。它們位于指定的檢查點目錄中。您可以使用分析的檢查點創(chuàng)建數(shù)據(jù)表、摘要和結(jié)果的詳細報告。

配置文件就緒后,您現(xiàn)在可以運行 Model Analyzer 了:

model-analyzer profile -f /config/sweep.yaml

作為示例,表 1 顯示了結(jié)果中的幾行。每一行對應于在假設的客戶端負載下在模型配置上運行的實驗。

表 1 :。自動掃描的樣本輸出

要獲得測試的每個模型配置的更詳細報告,請使用model-analyzer report命令:

model-analyzer report --report-model-configs bert-large_config_default,bert-large_config_1,bert-large_config_2 --export-path /output --config-file /config/sweep.yaml --checkpoint-directory /output/checkpoints/

這將生成一個詳細說明以下內(nèi)容的報告:

運行分析的硬件

吞吐量與延遲的關系圖

GPU 內(nèi)存與延遲的關系圖

CLI 中所選配置的報告

對于任何 MLOps 團隊來說,在將模型投入生產(chǎn)之前開始分析都是一個很好的開始。

不同的利益相關者,不同的約束條件

在典型的生產(chǎn)環(huán)境中,有多個團隊應該協(xié)同工作,以便在生產(chǎn)中大規(guī)模部署 AI 模型。例如,可能有一個 MLOps 團隊負責為管道穩(wěn)定性服務的模型,并處理應用程序強加的服務級別協(xié)議( SLA )中的更改。另外,基礎架構(gòu)團隊通常負責整個 GPU / CPU 場。

假設一個產(chǎn)品團隊要求 MLOps 團隊在 30 毫秒的延遲預算內(nèi)處理 99% 的請求,為 BERT 大型服務器提供服務。 MLOps 團隊應考慮可用硬件上的各種服務配置,以滿足該要求。使用 Model Analyzer 可以消除執(zhí)行此操作時的大部分摩擦。

下面的代碼示例是一個名為latency_constraint.yaml的配置文件的示例,其中我們在測得的延遲值的 99% 上添加了一個約束,以滿足給定的 SLA 。

model_repository: /models
checkpoint_directory: /output/checkpoints/
analysis_models: bert-large: constraints: perf_latency_p99: max: 30
perf_analyzer_flags: input-data: "zero"

因為您有上一次掃描中的檢查點,所以可以將它們重新用于 SLA 分析。運行以下命令可以提供滿足延遲約束的前三種配置:

model-analyzer analyze -f latency_constraint.yaml

表 2 顯示了前三種配置的測量結(jié)果,以及它們與默認配置的比較情況。

表 2 :。每個配置如何滿足指定的延遲約束

在大規(guī)模生產(chǎn)中,軟件和硬件約束會影響生產(chǎn)中的 SLA 。

假設應用程序的約束已更改。該團隊現(xiàn)在希望滿足同一型號的 p99 延遲為 50 ms ,吞吐量為每秒 30 多個推斷。還假設基礎設施團隊能夠為其使用留出 5000 MB 的 GPU 內(nèi)存。隨著約束數(shù)量的增加,手動查找服務配置以滿足涉眾變得越來越困難。這就是對模型分析器這樣的解決方案的需求變得更加明顯的地方,因為您現(xiàn)在可以在單個配置文件中同時指定所有約束。

以下名為multiple_constraint.yaml的示例配置文件結(jié)合了吞吐量、延遲和 GPU 內(nèi)存約束:

model_repository: /models
checkpoint_directory: /output/checkpoints/
analysis_models: bert-large-pytorch: constraints: perf_throughput: min: 50 perf_latency_p99: max: 30 gpu_used_memory: max: 5000
perf_analyzer_flags: input-data: "zero"

使用此更新的約束,運行以下命令:

model-analyzer analyze -f multiple_constraint.yaml

Model Analyzer 現(xiàn)在將以下提供的服務配置作為前三個選項,并顯示它們與默認配置的比較情況。

表 3 :。每個配置如何滿足指定的所有三個約束。

總結(jié)

隨著企業(yè)發(fā)現(xiàn)自己在生產(chǎn)中提供越來越多的模型,手動或基于啟發(fā)式做出模型服務決策變得越來越困難。手動執(zhí)行此操作會導致浪費開發(fā)時間或模型服務決策不足,這需要自動化工具。

在本文中,我們探討了 NVIDIA Triton 模型分析器如何能夠找到滿足應用程序 SLA 和各種涉眾需求的模型服務配置。我們展示了如何使用模型分析器掃描各種配置,以及如何使用它來滿足指定的服務約束。

盡管我們在這篇文章中只關注一個模型,但仍有計劃讓模型分析器同時對多個模型執(zhí)行相同的分析。例如,您可以在相同的 GPU 上運行的不同模型上定義約束,并對每個約束進行優(yōu)化。

我們希望您能分享我們對 Model Analyzer 將節(jié)省多少開發(fā)時間的興奮,并使您的 MLOps 團隊能夠做出明智的決策。

關于作者

Arun Raman 是 NVIDIA 的高級解決方案架構(gòu)師,專門從事消費互聯(lián)網(wǎng)行業(yè)的 edge 、 cloud 和 on-prem 人工智能應用。在目前的職位上,他致力于端到端 AI 管道,包括預處理、培訓和推理。除了從事人工智能工作外,他還研究了一系列產(chǎn)品,包括網(wǎng)絡路由器和交換機、多云基礎設施和服務。他擁有達拉斯德克薩斯大學電氣工程碩士學位。

Burak Yoldeir 是 NVIDIA 的高級數(shù)據(jù)科學家,專門為消費互聯(lián)網(wǎng)行業(yè)生產(chǎn)人工智能應用程序。除了前端和后端企業(yè)軟件開發(fā)之外, Burak 還從事廣泛的 AI 應用程序開發(fā)。他擁有加拿大不列顛哥倫比亞大學電氣和計算機工程博士學位。

審核編輯:郭婷

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

    關注

    5

    文章

    1768

    瀏覽量

    57653
  • NVIDIA
    +關注

    關注

    14

    文章

    5049

    瀏覽量

    103349
  • python
    +關注

    關注

    56

    文章

    4801

    瀏覽量

    84855
收藏 人收藏

    評論

    相關推薦

    NVIDIA推出面向RTX AI PC的AI基礎模型

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

    NVIDIA推出多個生成式AI模型和藍圖

    NVIDIA 宣布推出多個生成式 AI 模型和藍圖,將 NVIDIA Omniverse 一體化進一步擴展至物理 AI 應用,如機器人、自動
    的頭像 發(fā)表于 01-08 10:48 ?121次閱讀

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

    據(jù)流分析技術(shù),能夠自動識別并優(yōu)化深度學習模型中的計算瓶頸,從而提高模型的整體性能。 它支持多種硬件平臺的優(yōu)化,包括CPU、GPU、FPGA等,為深度學習模型的部署提供了更廣泛的選擇。
    的頭像 發(fā)表于 12-25 09:07 ?297次閱讀

    Triton編譯在機器學習中的應用

    1. Triton編譯概述 Triton編譯NVIDIA Triton推理
    的頭像 發(fā)表于 12-24 18:13 ?440次閱讀

    NVIDIA推出全新生成式AI模型Fugatto

    NVIDIA 開發(fā)了一個全新的生成式 AI 模型。利用輸入的文本和音頻,該模型可以創(chuàng)作出包含任意的音樂、人聲和聲音組合的作品。
    的頭像 發(fā)表于 11-27 11:29 ?393次閱讀

    AI模型托管原理分析

    AI模型托管是指將訓練好的AI模型部署在云端或邊緣服務器上,由第三方平臺提供模型運行、管理和優(yōu)化
    的頭像 發(fā)表于 11-07 09:33 ?219次閱讀

    使用AI模型進行數(shù)據(jù)分析的技巧

    以及后續(xù)的分析步驟。 確定需要分析的數(shù)據(jù)類型、規(guī)模和復雜度,以便選擇合適的AI模型。 二、高質(zhì)量數(shù)據(jù)收集與處理 數(shù)據(jù)來源 :從可靠的來源收
    的頭像 發(fā)表于 10-23 15:14 ?953次閱讀

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

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

    英偉達推出全新NVIDIA AI Foundry服務NVIDIA NIM推理微服務

    NVIDIA 宣布推出全新 NVIDIA AI Foundry 服務NVIDIA NIM 推理微服務
    的頭像 發(fā)表于 07-25 09:48 ?739次閱讀

    NVIDIA AI Foundry 為全球企業(yè)打造自定義 Llama 3.1 生成式 AI 模型

    Foundry 提供從數(shù)據(jù)策管、合成數(shù)據(jù)生成、微調(diào)、檢索、防護到評估的全方位生成式 AI 模型服務,以便部署自定義 Llama 3.1 NVIDIA NIM 微
    發(fā)表于 07-24 09:39 ?727次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>AI</b> Foundry 為全球企業(yè)打造自定義 Llama 3.1 生成式 <b class='flag-5'>AI</b> <b class='flag-5'>模型</b>

    英偉達推出AI模型推理服務NVIDIA NIM

    英偉達近日宣布推出一項革命性的AI模型推理服務——NVIDIA NIM。這項服務將極大地簡化AI
    的頭像 發(fā)表于 06-04 09:15 ?696次閱讀

    STM CUBE AI錯誤導入onnx模型報錯的原因?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉(zhuǎn)化成onnx ``` Neural Network Tools for STM32
    發(fā)表于 05-27 07:15

    使用cube-AI分析模型時報錯的原因有哪些?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉(zhuǎn)化成onnx ``` Neural Network Tools for STM32
    發(fā)表于 03-14 07:09

    使用NVIDIA Triton推理服務器來加速AI預測

    這家云計算巨頭的計算機視覺和數(shù)據(jù)科學服務使用 NVIDIA Triton 推理服務器來加速 AI 預測。
    的頭像 發(fā)表于 02-29 14:04 ?603次閱讀

    利用NVIDIA產(chǎn)品技術(shù)組合提升用戶體驗

    UTalk-Doc 將用戶指令識別服務吞吐量提升了 5 倍,單個請求響應時間縮減了三分之一,大幅提升服務運行效率,提升資源利用率。Triton 模型
    的頭像 發(fā)表于 01-17 09:30 ?725次閱讀