購物網(wǎng)站補貨提醒軟件怎么做重慶網(wǎng)站seo診斷
在 NVIDIA AI 推理平臺上使用 Stable Diffusion XL 生成令人驚嘆的圖像
擴散模型正在改變跨行業(yè)的創(chuàng)意工作流程。 這些模型通過去噪擴散技術迭代地將隨機噪聲塑造成人工智能生成的藝術,從而基于簡單的文本或圖像輸入生成令人驚嘆的圖像。 這可以應用于許多企業(yè)用例,例如創(chuàng)建個性化營銷內(nèi)容、為照片中的對象生成富有想象力的背景、設計動態(tài)的高質(zhì)量環(huán)境和游戲角色等等。
雖然擴散模型可以成為增強工作流程的有用工具,但大規(guī)模部署時模型的計算量可能非常大。 在 CPU 等非專用硬件上生成單批四個圖像可能需要幾分鐘的時間,這可能會阻礙創(chuàng)意流程,并成為許多希望滿足嚴格服務級別協(xié)議 (SLA) 的開發(fā)人員的障礙。
在這篇文章中,我們將向您展示 NVIDIA AI 推理平臺如何通過Stable Diffusion XL (SDXL) 來解決這些挑戰(zhàn)。 我們從企業(yè)在生產(chǎn)中部署 SDXL 時面臨的常見挑戰(zhàn)開始,深入探討由 NVIDIA L4 Tensor Core GPU、NVIDIA TensorRT 和 NVIDIA Triton 推理服務器提供支持的 Google Cloud G2 實例如何幫助緩解這些挑戰(zhàn)。 我們介紹了領先的 AI 計算機視覺初創(chuàng)公司 Let’s Enhance 如何在 NVIDIA AI 推理平臺和 Google Cloud 上使用 SDXL,使企業(yè)只需單擊一下即可創(chuàng)建迷人的產(chǎn)品圖像。 最后,我們提供了有關如何開始使用 Google Cloud 上的 SDXL 進行經(jīng)濟高效的圖像生成的分步教程。
解決 SDXL 生產(chǎn)部署挑戰(zhàn)
在生產(chǎn)中部署任何人工智能工作負載都會面臨一系列挑戰(zhàn)。 其中包括在現(xiàn)有模型服務基礎設施中部署模型,通過優(yōu)化推理請求的批處理來提高吞吐量和延遲,以及使基礎設施成本符合預算限制。
然而,由于擴散模型對卷積神經(jīng)網(wǎng)絡的依賴、圖像預處理和后處理操作的要求以及嚴格的企業(yè) SLA 要求,在生產(chǎn)中部署擴散模型的挑戰(zhàn)非常突出。
在這篇文章中,我們將深入研究這些方面,并探討 NVIDIA 全棧推理平臺如何幫助緩解這些問題。
利用 GPU 專用Tensor Core
Stable Diffusion 的核心是 U-Net 模型,該模型從噪聲圖像(一組隨機數(shù)矩陣)開始。 這些矩陣被切成更小的子矩陣,在其上應用一系列卷積(數(shù)學運算),產(chǎn)生精細的、噪音較小的輸出。 每個卷積都需要乘法和累加運算。 該去噪過程會迭代多次,直到獲得新的、增強的最終圖像。
鑒于其計算復雜性,該過程顯著受益于特定類型的 GPU 核心,例如 NVIDIA Tensor 核心。 這些專用內(nèi)核是從頭開始構建的,旨在加速矩陣乘法累加運算,從而加快圖像生成速度。
NVIDIA 通用 L4 GPU 擁有超過 200 個 Tensor Core,對于希望在生產(chǎn)環(huán)境中部署 SDXL 的企業(yè)來說是理想的經(jīng)濟高效的 AI 加速器。 企業(yè)可以通過 Google Cloud 等云服務提供商訪問 L4 GPU,Google Cloud 是第一個通過其 G2 實例在云中提供 L4 GPU 的 CSP。
圖像預處理和后處理的自動化
在使用 SDXL 的實際企業(yè)應用程序中,該模型是更廣泛的 AI 管道的一部分,其中包括其他計算機視覺模型以及預處理和后處理圖像編輯步驟。
例如,使用 SDXL 為新產(chǎn)品發(fā)布活動創(chuàng)建背景場景可能需要先進行初步的放大預處理步驟,然后再將產(chǎn)品圖像輸入 SDXL 模型以進行場景生成。 生成的 SDXL 圖像輸出可能還需要進一步的后處理,例如使用圖像升級器升級到更高分辨率,然后才適合在營銷活動中使用。
使用功能齊全的 AI 推理模型服務器(例如開源 Triton 推理服務器)可以自動將這些不同的預處理和后處理步驟拼接到簡化的 AI 管道中。 這樣就無需編寫手動代碼或在計算環(huán)境中來回復制數(shù)據(jù),從而引入不必要的延遲并浪費昂貴的計算和網(wǎng)絡資源。
通過使用 Triton Inference Server 為 SDXL 模型提供服務,您可以利用模型集成功能,該功能使您能夠定義如何使用低代碼方法將一個模型的輸出作為下一個模型的輸入。 您可以選擇在 CPU 上運行預處理和后處理步驟,在 GPU 上運行 SDXL 模型,或者選擇在 GPU 上運行整個管道以實現(xiàn)超低延遲應用程序。 任一選項均可讓您充分靈活地控制 SDXL 管道的端到端延遲。
生產(chǎn)環(huán)境的高效擴展
隨著越來越多的企業(yè)計劃將 SDXL 納入其業(yè)務線,有效批處理傳入用戶請求和最大化 GPU 利用率的挑戰(zhàn)變得越來越復雜。 這種復雜性源于需要最大限度地減少延遲以獲得積極的用戶體驗,同時提高吞吐量以降低運營成本。
使用 TensorRT 等開源 GPU 模型優(yōu)化器,再加上具有并發(fā)模型執(zhí)行和動態(tài)批處理功能的推理服務器(如 Triton Inference Server),可以緩解這些挑戰(zhàn)。
例如,考慮與其他 TensorFlow 和 PyTorch 圖像分類或特征提取 AI 模型并行運行 SDXL 模型的場景,特別是在具有大量傳入客戶端請求的生產(chǎn)環(huán)境中。 在這里,SDXL 模型可以使用 TensorRT 進行編譯,從而優(yōu)化模型以實現(xiàn)低延遲推理。
Triton 推理服務器還可以通過其動態(tài)批處理和并發(fā)推理功能,有效地批處理和跨模型分發(fā)大量傳入請求,無論其后端框架如何。 這種方法優(yōu)化了吞吐量,使企業(yè)能夠以更少的資源和更低的總擁有成本滿足用戶需求。
將普通的產(chǎn)品照片變成美麗的營銷資產(chǎn)
Let’sEnhance 是一家利用 NVIDIA AI 推理平臺的強大功能在生產(chǎn)環(huán)境中為 SDXL 提供服務的公司的一個很好的例子。 這家開創(chuàng)性的 AI 初創(chuàng)公司三年多來一直使用 Triton Inference Server 在 NVIDIA Tensor Core GPU 上部署 30 多個 AI 模型。
最近,Let’sEnhance 慶祝其最新產(chǎn)品 AI Photoshoot 的推出,該產(chǎn)品使用 SDXL 模型將普通的產(chǎn)品照片轉(zhuǎn)換為用于電子商務網(wǎng)站和營銷活動的美麗視覺資產(chǎn)。
憑借 Triton Inference Server 對各種框架和后端的強大支持,再加上其動態(tài)批處理功能集,Let’s Enhance 創(chuàng)始人兼首席技術官 Vlad Pranskevichus 能夠?qū)?SDXL 模型無縫集成到現(xiàn)有的 AI 管道中,而 ML 工程團隊的參與最少, 騰出時間進行研究和開發(fā)工作。
通過成功的概念驗證,這家 AI 圖像增強初創(chuàng)公司發(fā)現(xiàn),通過將 SDXL 模型遷移到 Google Cloud G2 實例上的 NVIDIA L4 GPU,成本可降低 30%,并概述了到 2024 年中期完成多個管道遷移的路線圖。
使用 L4 GPU 和 TensorRT 開始使用 SDXL
在下一部分中,我們將演示如何在 Google Cloud 的 G2 實例上快速部署 TensorRT 優(yōu)化版本的 SDXL,以獲得最佳性價比。 要使用 NVIDIA 驅(qū)動程序在 Google Cloud 上啟動虛擬機實例,請按照以下步驟操作。
選擇以下機器配置選項:
- Machine type: g2-standard-8
- CPU platform: Intel Cascade Lake
- Minimum CPU platform: None
- Display device: Disabled
- GPUs: 1 x NVIDIA L4
g2-standard-8 機器類型配備 1 個 NVIDIA L4 GPU 和 4 個 vCPU。 根據(jù)需要多少內(nèi)存,可以使用更大的機器類型。
選擇以下啟動磁盤選項,確保選擇源映像:
- Type: Balanced persistent disk
- Size: 500 GB
- Zone: us-central1-a
- Labels: None
- In use by: instance-1
- Snapshot schedule: None
- Source image: c0-deeplearning-common-gpu
- Encryption type: Google-managed
- Consistency group: None
Google 深度學習 VM 包含最新的 NVIDIA GPU 庫。
VM 實例啟動并運行后,在瀏覽器窗口中選擇“連接”、“SSH”、“打開”和“身份驗證”。 這會在瀏覽器窗口中加載 SSH 終端。
按照以下步驟,使用使用 TensorRT 優(yōu)化的 Stable Diffusion XL 生成圖像。
克隆 TensorRT OSS 存儲庫:
git clone https://github.com/NVIDIA/TensorRT.git -b release/9.2 --single-branchcd TensorRT
安裝 nvidia-docker 并啟動 PyTorch 容器:
docker run --rm -it --gpus all -v $PWD:/workspace nvcr.io/nvidia/pytorch:24.01-py3 /bin/bash
安裝最新的 TensorRT 版本:
python3 -m pip install --upgrade pip
python3 -m pip install --pre --upgrade --extra-index-url https://pypi.nvidia.com tensorrt
安裝所需的軟件包:
export TRT_OSSPATH=/workspace
export HF_TOKEN=<your_hf_token_to_download_models>
cd $TRT_OSSPATH/demo/Diffusion
pip3 install -r requirements.txt
現(xiàn)在運行TensorRT優(yōu)化的Stable Diffusion XL模型,提示“裝飾藝術,現(xiàn)實”:
python3 demo_txt2img_xl.py "art deco, realistic" --hf-token=$HF_TOKEN --version xl-1.0 --batch-size 1 --build-static-batch --num-warmup-runs 5 --seed 3 --verbose --use-cuda-graph
這會生成一個令人驚嘆的圖像,可以在notebook中查看:
from IPython.display import display
from PIL import Image
img = Image.open('output/xl_base-fp16-art_deco,_-1-xxxx.png')
display(img)
恭喜! 您已使用經(jīng)過 TensorRT 優(yōu)化的 Stable Diffusion XL 生成了示例圖像。
為了提高吞吐量,您可以使用更大的機器類型,利用多達 8 個 L4 GPU 并在每個 GPU 上加載模型以實現(xiàn)高效的并行處理。 為了實現(xiàn)更快的推理,您可以調(diào)整去噪步驟數(shù)、圖像分辨率或精度。 例如,將前面示例中的降噪步驟數(shù)從 30 減少到 20,可使吞吐量提高 1.5 倍圖像/秒。
L4 GPU 具有出色的性價比。 與 NVIDIA A100 Tensor Core GPU 相比,它每美元生成的圖像數(shù)量增加了 1.4 倍,非常適合成本敏感型應用程序和離線批量圖像生成。 然而,相對于 L4,A100 或 H100 是延遲敏感型應用程序的更好選擇,生成圖像的速度分別快 3.8-7.9 倍。
性能取決于推理過程中的多個因素,包括批量大小、分辨率、去噪步驟和數(shù)據(jù)精度。 有關進一步優(yōu)化和配置選項的更多信息,請參閱 /NVIDIA/TensorRT GitHub 存儲庫中的 DemoDiffusion 示例。
使用 Triton Inference Server 在生產(chǎn)環(huán)境中部署 SDXL
以下介紹了如何在 g2-standard-32 機器類型上使用 Triton Inference Server 在生產(chǎn)環(huán)境中部署 SDXL 模型。
克隆 Triton 推理服務器教程存儲庫:
git clone https://github.com/triton-inference-server/tutorials.git -b r24.02 --single-branchcd tutorials/Popular_Models_Guide/StableDiffusion
構建 Triton Inference Server diffusion容器鏡像:
./build.sh
在容器映像中運行交互式 shell。 以下命令啟動容器并將當前目錄掛載為工作空間:
./run.sh
構建Stable Diffusion XL TensorRT 引擎。 這需要幾分鐘的時間。
./scripts/build_models.sh --model stable_diffusion_xl
完成后,預期輸出將如下所示:
diffusion-models|-- stable_diffusion_xl|-- 1| |-- xl-1.0-engine-batch-size-1| |-- xl-1.0-onnx| `-- xl-1.0-pytorch_model`-- config.pbtxt
啟動 Triton 推理服務器。 在這個demo中,我們使用EXPLICIT模型控制模式來控制加載哪個Stable Diffusion版本。 有關生產(chǎn)部署的更多信息,請參閱安全部署注意事項。
tritonserver --model-repository diffusion-models --model-control-mode explicit --load-model stable_diffusion_xl
完成后,預期輸出將如下所示:
<SNIP>
I0229 20:22:22.912465 1440 server.cc:676]
+---------------------+---------+--------+
| Model | Version | Status |
+---------------------+---------+--------+
| stable_diffusion_xl | 1 | READY |
+---------------------+---------+--------+
<SNIP>/sy
在單獨的交互式 shell 中啟動一個新容器來運行示例 Triton Inference Server 客戶端。 以下命令啟動容器并將當前目錄掛載為工作空間:
./run.sh
將提示發(fā)送到 Stable Diffusion XL:
python3 client.py --model stable_diffusion_xl --prompt "butterfly in new york, 4k, realistic" --save-image
恭喜! 您已成功使用 Triton 部署 SDXL。
使用 Triton Inference Server 進行動態(tài)批處理
啟動并運行基本的 Triton 推理服務器后,您現(xiàn)在可以增加 max_batch_size
參數(shù)以啟用動態(tài)批處理。
如果 Triton 推理服務器正在運行,請將其停止。 可以通過在交互式 shell 中輸入 CTRL-C 來停止服務器。
編輯模型配置文件 ./diffusion-models/stable_diffusion_xl/config.pbtxt
,將批量大小增加到 2:
- 之前:max_batch_size:1
- 之后:max_batch_size:2
重建批量大小為 2 的 TRT 引擎。需要幾分鐘。
./scripts/build_models.sh --model stable_diffusion_xl
完成后,預期輸出將如下所示:
diffusion-models
|-- stable_diffusion_xl|-- 1| |-- xl-1.0-engine-batch-size-2| |-- xl-1.0-onnx| `-- xl-1.0-pytorch_model`-- config.pbtxt
重新啟動 Triton 推理服務器:
tritonserver --model-repository diffusion-models --model-control-mode explicit --load-model stable_diffusion_xl
完成后,預期輸出將如下所示:
<SNIP>
I0229 20:22:22.912465 1440 server.cc:676]
+---------------------+---------+--------+
| Model | Version | Status |
+---------------------+---------+--------+
| stable_diffusion_xl | 1 | READY |
+---------------------+---------+--------+
<SNIP>
向服務器發(fā)送并發(fā)請求。 為了使服務器能夠動態(tài)批處理多個請求,必須有多個客戶端并行發(fā)送請求。 示例客戶端使您能夠增加客戶端數(shù)量以了解動態(tài)批處理的優(yōu)勢。
python3 client.py --model stable_diffusion_xl --prompt "butterfly in new york, 4k, realistic" --clients 2 –requests 5
檢查服務器日志和指標。 啟用動態(tài)批處理、并發(fā)請求和信息級日志記錄后,該示例將打印出有關 TensorRT 引擎的每個請求中包含的提示數(shù)量的附加信息。
57291 │ I0229 20:36:23.017339 2146 model.py:184] Client Requests in Batch:2
57292 │ I0229 20:36:23.017428 2146 model.py:185] Prompts in Batch:2
總結(jié)
在 NVIDIA AI 推理平臺上部署 SDXL 可為企業(yè)提供可擴展、可靠且經(jīng)濟高效的解決方案。
TensorRT 和 Triton 推理服務器都可以釋放性能并簡化生產(chǎn)就緒部署,并作為 NVIDIA AI Enterprise 的一部分包含在 Google Cloud Marketplace 上。 AI Enterprise 提供 NVIDIA 支持服務以及支持 AI 推理的開源容器和框架的企業(yè)級穩(wěn)定性、安全性和可管理性。
企業(yè)開發(fā)人員還可以選擇使用 NVIDIA Picasso(視覺內(nèi)容定制生成 AI 的代工廠)來訓練、微調(diào)、優(yōu)化和推斷擴散基礎模型。
SDXL 作為 NVIDIA AI 基礎模型的一部分并在 NGC 目錄中提供。 它提供了易于使用的界面,可直接從瀏覽器快速嘗試 SDXL。
我將在 NVIDIA GTC 大會期間為大家?guī)砻赓M中文在線解讀:
NVIDIA CUDA 最新特性以及生成式 AI 相關內(nèi)容,包括 Stable Diffusion 模型部署實踐,以及介紹用于視覺內(nèi)容生成的 Edify 模型,點擊鏈接了解詳情并注冊參會:
https://www.nvidia.cn/gtc-global/session-catalog/?search=WP62435%20WP62832%20WP62400&ncid=ref-dev-945313#/