精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

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

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

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

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

并發模型執行 ,使同一模型的多個實例能夠在同一系統上并行執行。

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

優化模型部署時,需要做出幾個關鍵決策:

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

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

模型應采用哪種格式?

應以何種精度計算輸出?

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

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

NVIDIA Triton 型號分析儀

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

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

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

poYBAGKUIBuAEkdnAABaMGlIxwY905.png

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

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

創建模型

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

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

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")

構建模型存儲庫

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

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

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后,按照 存儲庫布局結構 創建模型存儲庫。模型存儲庫的文件夾結構應類似于以下內容:

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

運行 NVIDIA Triton 型號分析器

建議使用 Model Analyzer 的方法是自己構建 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 .

現在已經構建了 Model Analyzer 映像,請旋轉容器:

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

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

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

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

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

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

現在創建一個名為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"

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

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

配置文件就緒后,您現在可以運行 Model Analyzer 了:

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

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

表 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/

這將生成一個詳細說明以下內容的報告:

運行分析的硬件

吞吐量與延遲的關系圖

GPU 內存與延遲的關系圖

CLI 中所選配置的報告

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

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

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

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

下面的代碼示例是一個名為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 顯示了前三種配置的測量結果,以及它們與默認配置的比較情況。

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

在大規模生產中,軟件和硬件約束會影響生產中的 SLA 。

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

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

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 現在將以下提供的服務配置作為前三個選項,并顯示它們與默認配置的比較情況。

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

總結

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

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

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

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

關于作者

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

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

審核編輯:郭婷

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

    關注

    5

    文章

    1757

    瀏覽量

    57414
  • NVIDIA
    +關注

    關注

    14

    文章

    4940

    瀏覽量

    102816
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84453
收藏 人收藏

    評論

    相關推薦

    AI模型托管原理分析

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

    AI模型市場分析

    隨著人工智能技術的快速發展,AI模型已成為全球科技競爭的新高地、未來產業的新賽道以及經濟發展的新引擎。下面,AI部落小編分析了當前AI
    的頭像 發表于 11-01 09:51 ?119次閱讀

    使用AI模型進行數據分析的技巧

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

    AI模型的商業應用案例分析

    AI模型在商業應用中已經展現出了巨大的潛力和價值,以下是一些具體的案例分析: 一、京東云·言犀在零售與服務領域的應用 京東云·言犀是京東集團依托全棧自研的人工智能技術推出的智能
    的頭像 發表于 10-23 15:01 ?404次閱讀

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

    在本案例中,Dify 以模型中立以及開源生態的優勢,為廣大 AI 創新者提供豐富的模型選擇。其集成的 NVIDIAAPI Catalog、NVIDIA NIM和
    的頭像 發表于 09-09 09:19 ?434次閱讀

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

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

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

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

    AI模型與小模型的優缺點

    在人工智能(AI)的廣闊領域中,模型作為算法與數據之間的橋梁,扮演著至關重要的角色。根據模型的大小和復雜度,我們可以將其大致分為AI模型
    的頭像 發表于 07-10 10:39 ?2381次閱讀

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

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

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

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

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

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

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

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

    利用NVIDIA產品技術組合提升用戶體驗

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

    AI模型怎么解決芯片過剩?

    AI模型
    電子發燒友網官方
    發布于 :2024年01月02日 15:42:05

    AI模型可以設計電路嗎?

    AI模型
    電子發燒友網官方
    發布于 :2024年01月02日 15:09:29