OpenVINO
2023.0
最新版本來襲
隨著 OpenVINO5周年紀(jì)念日的臨近,我們想花點(diǎn)時(shí)間對(duì)您在過去五年中對(duì)OpenVINO的持續(xù)使用表示最深切的感謝。到目前為止,這是一段不可思議的旅程,我們很自豪您能成為我們社區(qū)中的一員。社區(qū)的持續(xù)支持使我們的下載量超過了 100 萬次。
在我們紀(jì)念這一重要里程碑之際,我們激動(dòng)地發(fā)布我們的最新版本OpenVINO2023.0,它具有一系列新的特性和功能,將使開發(fā)人員能夠更輕松地部署和加速人工智能。
2023.0 版本的重點(diǎn)是通過最大限度地減少離線轉(zhuǎn)換、擴(kuò)大模型支持和推進(jìn)硬件優(yōu)化來改善開發(fā)者之旅。完整的發(fā)布說明可在此獲得:
亮點(diǎn)包括:
盡量減少 AI 開發(fā)者在采用和維護(hù)代碼時(shí)的代碼修改并更好的與各深度學(xué)習(xí)框架保持一致
全新的 TensorFlow 體驗(yàn):簡(jiǎn)化從訓(xùn)練到部署 TensorFlow 模型的工作流程
現(xiàn)在可用 Conda Forge!對(duì)于習(xí)慣使用 Conda的 C++ 開發(fā)人員來說,更容易安裝 OpenVINO運(yùn)行時(shí)庫
更廣泛的處理器支持:當(dāng)前 ARM 處理器支持包括 OpenVINOCPU 推理計(jì)算,動(dòng)態(tài)輸入,完整的處理器性能和廣泛的示例代碼 Notebook 教程覆蓋
擴(kuò)展 Python 支持:增加了對(duì) Python 3.11 的支持,以獲得更多潛在的性能改進(jìn)
在包括 NLP 在內(nèi)的更多模型上輕松實(shí)現(xiàn)優(yōu)化和部署,并通過新的硬件特性能力獲得更多的 AI 加速
更廣泛的模型支持:支持生成式 AI 模型、文本處理模型、Transformer 模型等
GPU 上支持動(dòng)態(tài)輸入:當(dāng)使用 GPU 時(shí),不需要將模型輸入改為靜態(tài)輸入,這在編寫代碼時(shí)提供了更多的靈活性,特別是對(duì)于 NLP 模型
NNCF 是首選的量化工具:將訓(xùn)練后量化(POT)集成到神經(jīng)網(wǎng)絡(luò)壓縮框架(NNCF)中,有了它,通過模型壓縮,更容易獲得巨大的性能提升
通過自動(dòng)設(shè)備發(fā)現(xiàn),負(fù)載平衡和跨 CPU, GPU等的動(dòng)態(tài)推理并行,可以直接看到性能的提升
CPU 插件中的線程調(diào)度:通過在第12代英特爾酷睿 處理器及以上版本的 CPU 的能效核、性能核或能效核 + 性能核上運(yùn)行推理來優(yōu)化性能或能效。
默認(rèn)推理精度:默認(rèn)為不同的格式,以在 CPU 和 GPU 上提供最佳性能。
模型緩存擴(kuò)展:減少 GPU 和 CPU 的首次推理延遲
現(xiàn)在,讓我們深入研究一下上面介紹的一些新功能。
探索 OpenVINO 2023.0 中的新功能
全新的 TensorFlow 體驗(yàn)
現(xiàn)在,TensorFlow 開發(fā)人員可以更容易地從模型訓(xùn)練轉(zhuǎn)移到模型部署。無需離線將 TensorFlow 或 TensorFlow Lite 格式的模型文件轉(zhuǎn)換為 OpenVINO IR 格式-這會(huì)在運(yùn)行時(shí)自動(dòng)發(fā)生?,F(xiàn)在,您可以開始試驗(yàn) Model Optimizer,以改善有限范圍模型的轉(zhuǎn)換時(shí)間,或者直接在 OpenVINO Runtime 或 OpenVINOModel Server 中加載標(biāo)準(zhǔn) TensorFlow 或 TensorFlow Lite 模型
下圖顯示了一個(gè)簡(jiǎn)單的示例:
圖 1. 部署 TensorFlow/TensorFlow Lite 模型的通用工作流程
更廣泛的模型支持
AI 開發(fā)者可以找到更多的對(duì)生成式 AI 模型支持,例如:
CLIP
BLIP
Stable Diffusion 2.0
帶 ControlNet 的 Stable Diffusion
對(duì)文本處理模型的支持,對(duì) Transformer 模型的支持,例如,S-BERT,GPT-J 等,對(duì) Detectron2,Paddle Slim,Segment Anything Model(SAM),YOLOv8,RNN-T 等模型的支持。
圖 2. 由 stable-diffusion-2-inpainting 模型生成的無限變焦視頻效果
圖 3. 基于兩個(gè)條件生成的圖像,用 OpenPose 從輸入圖像提取關(guān)鍵點(diǎn)的 ControlNet 工作流程,然后作為額外條件與文本提示詞一起輸入到 Stable Diffusion 模型
圖 4. 用 Segment Anything Model (SAM) 模型分割給定圖片的一切
默認(rèn)推理精度
最新的更新包括在各種設(shè)備上的推理性能的顯著提高,這些設(shè)備現(xiàn)在默認(rèn)以高性能模式運(yùn)行。這意味著對(duì)于 GPU 設(shè)備,使用 FP16 推理,而 CPU 設(shè)備使用 BF16 推理(如果可用)。
關(guān)于 BF16 推理請(qǐng)?jiān)L問:
以前,用戶必須自己將 IR 轉(zhuǎn)換為 FP16,才能使 GPU 在 FP16 模式下執(zhí)行?,F(xiàn)在,所有設(shè)備都可以自動(dòng)選擇默認(rèn)推理精度,并且此選擇與 IR 精度沒有關(guān)系。在極少數(shù)情況下,使用默認(rèn)模式可能會(huì)影響推理準(zhǔn)確性,此時(shí)用戶也可以通過接口手動(dòng)調(diào)整推理精度。
此外,開發(fā)者可以單獨(dú)控制 IR 精度。默認(rèn)情況下,我們建議將其設(shè)置為 FP16,以便為浮點(diǎn)模型減少 2 倍的模型大小。值得注意的是,IR 精度并不影響設(shè)備執(zhí)行模型的方式,而是通過降低權(quán)重精度來壓縮模型。
圖 5. 自動(dòng)轉(zhuǎn)換 IR 模型為默認(rèn)推理精度
NNCF 作為首選的量化工具
NNCF 為 OpenVINO 中的神經(jīng)網(wǎng)絡(luò)推理優(yōu)化提供了一套先進(jìn)的算法,并具有最小的精度損失。它支持對(duì) PyTorch,TensorFlow,ONNX 和 OpenVINO 模型對(duì)象進(jìn)行量化 。
在這之前,OpenVINO有單獨(dú)的工具用于訓(xùn)練后優(yōu)化(POT)和量化感知訓(xùn)練。我們將這兩種方法合并到 NNCF 中,其中提供的壓縮算法如下所示,見圖 6。這有助于減少模型大小、內(nèi)存占用和延遲,并提高計(jì)算效率。
圖 6. NNCF 提供的壓縮算算法
訓(xùn)練后量化算法從代表性數(shù)據(jù)集中獲取樣本,并將其輸入到網(wǎng)絡(luò)中,然后根據(jù)所得的權(quán)重和激活值對(duì)網(wǎng)絡(luò)進(jìn)行校準(zhǔn)。一旦校準(zhǔn)完成,網(wǎng)絡(luò)中的值就被轉(zhuǎn)換為 8 位整型格式。NNCF 的基本訓(xùn)練后量化流程是將 8 位量化應(yīng)用于模型的最簡(jiǎn)單方法:
設(shè)置環(huán)境并安裝依賴項(xiàng)
pip install nncf
準(zhǔn)備校準(zhǔn)數(shù)據(jù)集
import nncf calibration_loader = torch.utils.data.DataLoader(...) def transform_fn(data_item): images, _ = data_item return images calibration_dataset = nncf.Dataset(calibration_loader, transform_fn)
向右滑動(dòng)查看完整代碼
運(yùn)行以獲取量化模型
model = ... #OpenVINO/ONNX/PyTorch/TF object quantized_model = nncf.quantize(model, calibration_dataset)
向右滑動(dòng)查看完整代碼
關(guān)于如何使用 NNCF 進(jìn)行模型量化和壓縮的教程可以在這里找到,其中我們驗(yàn)證了將訓(xùn)練后量化應(yīng)用于 YOLOv5 模型,精度幾乎沒有下降(圖7):
圖 7. 將訓(xùn)練后量化應(yīng)用于 YOLOv5 模型,精度幾乎沒有下降
CPU 插件中的線程調(diào)度
提升英特爾 平臺(tái)的多線程調(diào)度。
有了新的 ov::scheduling_core_type屬性,可以通過選擇在 {ov::ANY_CORE, ov::PCORE_ONLY, ov::ECORE_ONLY}上運(yùn)行推理來配置性能優(yōu)先或能效優(yōu)先,用于第12代英特爾酷睿及以上的 CPU,HYBRID 平臺(tái)。
通過將ov::enable_hyper_threading屬性設(shè)置為 "True",物理核和邏輯核都可以在英特爾平臺(tái)的性能核上啟用,因此通過這種配置帶來性能提升。
圖 8. 啟用 "SCHEDULING_CORE_TYPE "和 "ENABLE_HYPER_THREADING",在CPU插件中提升了多線程。
另一個(gè)新屬性是 ov::enable_cpu_pinning。默認(rèn)情況下,ov::enable_cpu_pinning 被設(shè)置為 “True”, 這意味著用于運(yùn)行多個(gè)深度學(xué)習(xí)模型的推理請(qǐng)求的多個(gè)線程將由 OpenVINO運(yùn)行時(shí)(TBB)調(diào)度。在這種模式下,具有多個(gè)線程的一個(gè)深度學(xué)習(xí)模型的推理將被視為一個(gè)整體圖,其中每個(gè)線程將綁定到 CPU 處理器,而不會(huì)引起緩存丟失和額外的開銷。但是,在同時(shí)運(yùn)行兩個(gè)神經(jīng)網(wǎng)絡(luò)的推理的情況下,可能在相同的 CPU 處理器上調(diào)度不同深度學(xué)習(xí)模型推理請(qǐng)求的多個(gè)線程,從而導(dǎo)致對(duì)相同處理器資源上的競(jìng)爭(zhēng)(如圖 9 所示)。
圖 9. 在 CPU 插件中設(shè)置 "ENABLE_CPU_PINNING "為 "True",為多線程啟用 TBB 調(diào)度
為了避免 CPU 處理器資源競(jìng)爭(zhēng),我們可以通過將 ov::enable_cpu_pinning 設(shè)置為 “False”來禁用處理器綁定屬性,并讓操作系統(tǒng)為神經(jīng)網(wǎng)絡(luò)的每個(gè)線程調(diào)度處理器資源。在這種模式下,同一深度學(xué)習(xí)模型不同層上的推理可能會(huì)在不同的處理器之間切換,從而導(dǎo)致緩存丟失和額外的開銷(如圖 10 所示),此時(shí)開發(fā)者可以根據(jù)實(shí)際的測(cè)試結(jié)果,選擇最合適的方案進(jìn)行部署。
圖 10. 在 CPU 插件中設(shè)置 "ENABLE_CPU_PINNING "為 "False",由操作系統(tǒng)調(diào)度多線程
升級(jí)到 OpenVINO 2023.0
OpenVINO從頭到尾都能讓您的 AI 應(yīng)用發(fā)揮最大的作用。有了您的持續(xù)支持,我們可以為各地的開發(fā)人員提供有價(jià)值的升級(jí)。憑借其智能和全面的功能,OpenVINO就像在您身邊有自己的性能工程師。
您可以使用以下命令升級(jí)到 OpenVINO2023.0:
但是請(qǐng)確保檢查所有的依賴項(xiàng),因?yàn)樯?jí)可能會(huì)更新 OpenVINO之外的其他包。如果您希望安裝 C/ C++ API,拉取預(yù)構(gòu)建的 Docker 鏡像或從其他存儲(chǔ)庫下載,請(qǐng)?jiān)L問下載頁面以找到適合您的需求的包。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
18927瀏覽量
227228 -
英特爾
+關(guān)注
關(guān)注
60文章
9748瀏覽量
170647 -
AI
+關(guān)注
關(guān)注
87文章
28877瀏覽量
266225 -
模型
+關(guān)注
關(guān)注
1文章
3032瀏覽量
48359 -
python
+關(guān)注
關(guān)注
53文章
4753瀏覽量
84078
原文標(biāo)題:使用OpenVINO?解鎖 AI 更輕松部署和加速的潛力
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論