NVIDIA 第九屆Sky Hackathon 大賽旨在通過 NVIDIA Jetson 平臺和 Microsoft Azure OpenAI 平臺,由 NVIDIA 和 Microsoft 導(dǎo)師精心設(shè)計的大模型應(yīng)用場景,引領(lǐng)參與者領(lǐng)略大模型的應(yīng)用潛力,以及如何運用人工智能技術(shù)構(gòu)建智能化解決方案。
本次 Hackathon 聚焦在如何在物聯(lián)網(wǎng)設(shè)備上構(gòu)建基于大模型的應(yīng)用解決方案。參與者通過使用 NVIDIA Jetson 平臺,親身體驗了大模型在圖像識別和生成式模型調(diào)用方面的應(yīng)用。從 Resnet50 模型的優(yōu)化到 TensorRT 推理引擎的生成,每一步都呈現(xiàn)了 NVIDIA Jetson 在深度學(xué)習(xí)加速方面的卓越性能。
下文供稿自 NVIDIA 第九屆 Sky Hackathon 大賽的冠軍團隊,通過本官方微信公眾號推薦給開發(fā)者朋友們,希望開發(fā)者朋友們能夠積極交流,碰撞出更多創(chuàng)新的火花!
在當(dāng)前時代,數(shù)字化與人工智能正不斷推動藝術(shù)與技術(shù)的深度融合,開創(chuàng)了全新的創(chuàng)作與體驗方式。來自山東科技大學(xué)的團隊(指導(dǎo)老師:王魯昆老師,團隊成員:許金浩、李振宇、王俊豐、紀中華)在最近的NVIDIA 第九屆 Sky Hackathon中以其杰出的作品 Narrative Canvas 奪得冠軍,成為這一趨勢的杰出代表。本文旨在深入分析這個項目的核心理念、技術(shù)創(chuàng)新之處,以及它為藝術(shù)體驗帶來的革命性改變,展示了這個團隊如何在藝術(shù)與技術(shù)交匯的邊界上探索新領(lǐng)域。
項目倉庫:https://github.com/1438802682/NarrativeCanvas
演示視頻:https://www.bilibili.com/video/BV1rc411D7pP/
項目概覽:圖文互動的新紀元
項目介紹
Narrative Canvas 項目的核心,在于“圖生文,文生圖”的相互作用。畫作激發(fā)文字的創(chuàng)作,文字又給畫作賦予了新的生命。這種互動不僅增強了藝術(shù)作品的表現(xiàn)力,也為觀者提供了一種全新的藝術(shù)體驗。在這個過程中,觀者可以看到一個故事從視覺形象轉(zhuǎn)化為文字敘述,再從文字中重新想象出視覺畫面,這是一場視覺與文字的雙重旅行。
項目流程簡述
-
圖像推理:用戶上傳圖片、選擇模型和精度、執(zhí)行推斷,推斷完成后得到處理過的圖片。
-
生成故事:基于處理過的圖片,用戶選擇模型、風(fēng)格、主題和輸入自定義提示詞,完成故事生成。
-
生成圖片:根據(jù)故事內(nèi)容,用戶再次選擇模型、風(fēng)格并輸入自定義提示詞,完成圖像生成。
這個循環(huán)過程創(chuàng)造了一個從視覺到文本再回到視覺的獨特旅程。
技術(shù)創(chuàng)新點
使用 NVIDIA Polygraphy
對 ONNX 模型預(yù)處理優(yōu)化
該項目的圖片推理部分基于 mmlab 算法庫中的 mmpretrain 預(yù)訓(xùn)練模型,精選了25 個經(jīng)典主干網(wǎng)絡(luò)進行圖像分類任務(wù)。
(2014)VGG 11
(2015)Inception v3
(2015)ResNet 50
(2017)ResNeXt 50
(2018)SE-ResNet 50
(2018)ShuffleNet v1
(2018)ShuffleNet v2
(2019)Res2Net 50
(2018)MobileNet v2
(2019)MobileNet v3
(2020)RegNet
(2019)EfficientNet
(2021)EfficientNet v2
(2021)Vision Transformer
(2021)Swin Transformer
(2021)Conformer
(2021)Twins
(2021)MobileViT
(2021)CLIP
(2021)DeiT
(2022)DeiT3
(2022)MViT V2
(2022)MobileOne
(2022)EdgeNeXt
(2023)EfficientVit
上下滑動查看更多↑↓
項目團隊使用了 NVIDIA 的 Polygraphy 工具對 ONNX 模型進行了優(yōu)化,移除和合并了多余節(jié)點,如多余的 Transpose 節(jié)點等,這些節(jié)點原本阻礙了 TensorRT 的優(yōu)化。這使得 TensorRT 引擎構(gòu)建更加高效。該團隊將優(yōu)化前后的 ONNX 模型和原始的 pt 權(quán)重都上傳到 Hugging Face。
ONNX 模型優(yōu)化文件下載地址:https://huggingface.co/CtrlX/ModelReady-pretrain/tree/main
優(yōu)化過程包括:
-
移除無用節(jié)點:刪除對輸出無影響的節(jié)點。
-
合并冗余節(jié)點:將執(zhí)行相似功能的節(jié)點合并。
-
優(yōu)化圖結(jié)構(gòu):通過節(jié)點合并和折疊,簡化模型結(jié)構(gòu)。
-
提高 TensorRT 兼容性:轉(zhuǎn)換或減少特殊處理的節(jié)點。
-
加速推理性能:優(yōu)化后的模型在 TensorRT 中運行更高效。
示例:以 2023 年的最新工作 EfficientVit 為例:
優(yōu)化前的 ONNX 模型:
優(yōu)化后的 ONNX 模型:
通過優(yōu)化的日志文件可以看出優(yōu)化后的模型去除了一半以上的冗余節(jié)點,節(jié)點數(shù)量由原來的 1440 減少到了 673,經(jīng)過測試后沒有發(fā)現(xiàn)明顯的精度損失,但是大大提高了引擎的構(gòu)建速度:
Note:提供 Jetson Xavier NX 平臺的 TensorRT 引擎序列化文件
該項目團隊提供了針對 Jetson Xavier NX 8G 平臺的 TensorRT 引擎序列化文件,以便用戶能夠一鍵下載并在 Jetson Xavier NX 上直接進行推理,從而快速啟動項目。
Jetson Xavier NX 平臺序列化引擎文件下載地址:https://huggingface.co/CtrlX/ModelReady-TRT/tree/main/Jetson-Xavier-NX-8G/engine
NVIDIA TensorRT Dynamic Shape
模式在多圖推理中的應(yīng)用
在構(gòu)建引擎過程中,該團隊在項目中利用 NVIDIA 的 TensorRT 工具啟用了 Dynamic Shape 功能于批處理維度,支持一次最多處理 8 張圖片,顯著提升了推理效率。
NVIDIA TensorRT實現(xiàn)
推理精度多元選擇機制:fp32/fp16/int8
該項目提供了構(gòu)建不同精度引擎的代碼,允許用戶根據(jù)需要在精度和速度之間做出選擇。
默認情況下,TensorRT 以 32 位精度 (fp32) 工作,但也支持 16 位浮點 (fp16) 和 8 位量化浮點 (int8) 執(zhí)行操作。使用較低精度能減少內(nèi)存需求并加快計算速度。盡管 fp16 和 fp32 的使用相對簡單,使用 int8 則涉及更多復(fù)雜性。有關(guān) int8 的更多詳情,請參見 INT8 章節(jié)。
NVIDIA TensorRT:
啟用 INT8 PTQ 量化加速推理機制
該項目通過使用 NVIDIA TensorRT 實現(xiàn)了 INT8 精度量化 (Post-Training Quantization, PTQ) 來加速推理。構(gòu)建 INT8 引擎的步驟包括:
-
構(gòu)建 32 位引擎,運行校準(zhǔn)集,記錄每個張量激活值分布的直方圖。
-
根據(jù)直方圖創(chuàng)建校準(zhǔn)表,為每個張量提供標(biāo)度值。
-
使用校準(zhǔn)表和網(wǎng)絡(luò)定義構(gòu)建 INT8 引擎。
校準(zhǔn)過程可能較慢,因此校準(zhǔn)表的輸出可以被緩存并重復(fù)使用,尤其適用于同一平臺上重復(fù)構(gòu)建相同網(wǎng)絡(luò)的情況。
該項目提供了基于 ImageNet 1K val 數(shù)據(jù)集中 510 張圖片的 INT8 Cache(校準(zhǔn)表),使用 dynamic shape([batch, 3, 224, 224],batch 維度 1-8,opt=4)模式迭代 120 次。
針對 Xavier NX8G 平臺,該團隊測試了 10 種主流模型的 INT8 Cache 文件,由于時間限制未能覆蓋全部 25 個模型,但提供了優(yōu)化后的 ONNX 模型文件,可供后續(xù)測試。
ImageNet1k INT8 Cache 文件下載地址:https://huggingface.co/CtrlX/ModelReady-TRT/tree/main/Jetson-Xavier-NX-8G/int8Cache
Note:Dynamic Shape 模式與 INT8 PTQ
要在具有動態(tài)形狀的網(wǎng)絡(luò)上運行 INT8 校準(zhǔn),需設(shè)置校準(zhǔn)優(yōu)化配置文件,使用配置文件的 kOPT 值進行校準(zhǔn),且校準(zhǔn)輸入數(shù)據(jù)大小必須與配置文件匹配。
創(chuàng)建校準(zhǔn)優(yōu)化配置文件的示例代碼如下:
Note:雙模式 INT8 量化策略
該項目為不同類型的主干網(wǎng)絡(luò)提供了兩種 INT8 量化策略:
-
trt.IInt8MinMaxCalibrator
這種方法選擇張量的比例因子以優(yōu)化量化張量的信息論內(nèi)容,通常會抑制分布中的異常值。這是目前推薦的熵校準(zhǔn)器,也是 DLA 所必需的。校準(zhǔn)通常在層融合之前進行,校準(zhǔn)批量大小可能會影響結(jié)果。推薦用于基于 CNN 的網(wǎng)絡(luò)。
-
trt.IInt8EntropyCalibrator2
這個校準(zhǔn)器使用激活分布的整個范圍來確定比例因子,似乎更適合于 NLP 任務(wù)。校準(zhǔn)一般在層融合之前進行。推薦用于 NVIDIA BERT(Google 官方實現(xiàn)的優(yōu)化版本)等網(wǎng)絡(luò)。
NVIDIA TensorRT:
Timing Cache 優(yōu)化加速引擎構(gòu)建
項目團隊通過在 NVIDIA TensorRT 中開啟 Timing Cache 優(yōu)化了神經(jīng)網(wǎng)絡(luò)模型的引擎構(gòu)建過程。這種方法利用了模型中重復(fù)的 layer,記錄下算子的優(yōu)化結(jié)果。當(dāng)再次遇到相同的算子時,系統(tǒng)會直接使用優(yōu)選結(jié)果,而非重新評估所有可行的 kernel,從而加速構(gòu)建過程。
Timing Cache 文件下載地址:
https://huggingface.co/CtrlX/ModelReady-TRT/tree/main/Jetson-Xavier-NX-8G/int8Cache
下面借用了 TensorRT cookbook 中的一個示例展示 Timing Cache 的加速效果:
開啟了 Timing Cache 前的日志信息:
開啟了 Timing Cache 后的日志信息:
日志信息顯示,通過 Timing Cache,多次測試被跳過,TensorRT 直接在 Cache 中找到了最快的算法。經(jīng)過測試的時間顯示:
-
未啟用 Timing Cache:1707.987785 ms
-
初次啟用 Timing Cache:774.889298 ms
-
后續(xù)使用 Timing Cache:32.098293 ms
以下是該項目中與 Timing Cache 相關(guān)的 Build 代碼(models/Build.py)部分,團隊還提供了 Timing Cache 融合接口的多種優(yōu)化方式:
NVIDIA NeMo Guardrails:
增強 LLM 應(yīng)用的可編程護欄工具
項目在生成故事部分使用了 NeMo Guardrails,以防止大模型輸出的敏感內(nèi)容被用戶接收。這為 LLM 服務(wù)提供了多種護欄類型,如輸入護欄、對話護欄、檢索護欄等。同時,項目提供了使用 Colang 編寫的 NeMo Guardrails 示例。
(位于 models/configurations.py )
NeMo Guardrails 為 LLM 服務(wù)提供五種主要護欄類型:
-
輸入護欄(Input Rails):應(yīng)用于用戶輸入,可能拒絕或更改輸入。
-
對話護欄(Dialog Rails):影響 LLM 的提示方式,操作規(guī)范消息并決定是否執(zhí)行某些操作。
-
檢索護欄(Retrieval Rails):應(yīng)用于 RAG 場景下檢索的內(nèi)容,可能拒絕或更改相關(guān)塊。
-
執(zhí)行護欄(Execution Rails):應(yīng)用于需要自定義操作的輸入/輸出。
-
輸出護欄(Output Rails):應(yīng)用于 LLM 生成的輸出,可能拒絕或更改輸出。
示例 Colang 配置:
在項目的 models/Generater 中的 AzureChatBot 類中,護欄被用作 Azure OpenAI gpt-3.5-turbo 服務(wù)的一部分。
項目架構(gòu)
UI 設(shè)計原型圖
項目結(jié)構(gòu)圖
項目流程圖
*本文中圖片來源于山東科技大學(xué)的團隊,若您有任何疑問或需要使用本文中圖片,請聯(lián)系山東科技大學(xué)的團隊。
點擊“閱讀原文”或掃描海報二維碼,鎖定北京時間 1 月 9 日 (星期二) 凌晨 0 點舉行的線上 NVIDIA CES 2024 特別演講。
原文標(biāo)題:NVIDIA 第九屆 Sky Hackathon 優(yōu)秀作品展示 | 靜語畫韻:藝術(shù)中的無聲詩篇
文章出處:【微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
英偉達
+關(guān)注
關(guān)注
22文章
3720瀏覽量
90682
原文標(biāo)題:NVIDIA 第九屆 Sky Hackathon 優(yōu)秀作品展示 | 靜語畫韻:藝術(shù)中的無聲詩篇
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論