目錄
1.1?產(chǎn)業(yè)實踐中部署AI模型的痛點
1.1.1??部署模型的典型流程
1.1.2 端到端的AI性能
1.1.3 部署模型的難點和痛點
1.2 FastDeploy簡介
1.3 英特爾獨立顯卡簡介
1.4 使用FastDeploy在英特爾CPU和獨立顯卡上部署模型的步驟
1.4.1 搭建FastDeploy開發(fā)環(huán)境
1.4.2 下載模型和測試圖處
1.4.3 三行代碼完成在項特爾CPU上的模型部署
1.4.4 使用RuntimeOption 將AI推理硬伯切換項特爾獨立顯卡
1.5 總結(jié)
作者:王一凡 英特爾物聯(lián)網(wǎng)創(chuàng)新大使?
1.1?產(chǎn)業(yè)實踐中部署AI模型的痛點
1.1.1??部署模型的典型流程
????????對于來自于千行百業(yè),打算將AI模型集成到自己的主線產(chǎn)品中,解決本行痛點的AI開發(fā)者來說,部署AI模型,或者說將AI模型集成到自己產(chǎn)品中去的典型步驟(以計算機視覺應(yīng)用為例)有:
- 采集圖像&圖像解碼
- 數(shù)據(jù)預(yù)處理
- 執(zhí)行AI推理計算
- 推理結(jié)果后處理
- 將后處理結(jié)果集成到業(yè)務(wù)流程
1.1.2 端到端的AI性能
????????當AI開發(fā)者將AI模型集成到業(yè)務(wù)流程后,不太關(guān)心AI模型在AI推理硬件上單純的推理速度,而是關(guān)心包含圖像解碼、數(shù)據(jù)預(yù)處理和后處理的端到端的AI性能。
?
????????在產(chǎn)業(yè)實踐中,我們發(fā)現(xiàn)不僅AI推理硬件和對應(yīng)推理引擎(例如:OpenVINO Runtime)對于端到端的性能影響大,數(shù)據(jù)預(yù)處理和后處理代碼是否高效對于端到端的性能影響也大。
????????以CPU上預(yù)處理操作融合優(yōu)化為例,經(jīng)過優(yōu)化后的前處理代碼,可以使得AI端到端性能得到較大提升。
數(shù)據(jù)來源:感謝FastDeploy團隊完成測試并提供數(shù)據(jù)?
結(jié)論:優(yōu)秀且高效的前后處理代碼,可以明顯提高端到端的AI性能!
1.1.3 部署模型的難點和痛點
????????在產(chǎn)業(yè)實踐中,在某個任務(wù)上當前最優(yōu)的SOTA模型的很有可能與部署相關(guān)的文檔和范例代碼不完整,AI開發(fā)者需要通過閱讀SOTA模型源代碼來手動編寫模型的前后處理代碼,這導致:
- 耗時耗力:閱讀SOTA模型源代碼來理解模型的前后處理,提高了部署模型的技術(shù)門檻。另外,手動編寫前后處理代碼,也需要更多的測試工作來消除bug。
- 精度隱患:手動或借助網(wǎng)上開源但未經(jīng)過實踐驗證過的前后處理代碼,會有精度隱患,即當前對于某些圖片精度很好,但對于另外的圖片精度就下降。筆者就遇到過類似問題,原因在于調(diào)用了一個GitHub上下載的NMS()函數(shù),這個函數(shù)對代碼倉提供的范例模型有效,但對于筆者使用的模型恰恰就出現(xiàn)丟失檢測對象的問題。
- 優(yōu)化困難:解決了精度問題后,下一步就是通過多線程、模型壓縮、Batch優(yōu)化等軟件技術(shù)進一步提升端到端的AI性能,節(jié)約硬件采購成本。這些軟件技術(shù)對于計算機專業(yè)的工程師不算挑戰(zhàn),但對于千行百業(yè)中非計算機專業(yè)的工程師,卻無形中建立起了一道極高的門檻。
????????為了賦能千行百業(yè)的工程師,高效便捷的將AI模型集成到自己的產(chǎn)品中去,急需一個專門面向AI模型部署的軟件工具。
1.2 FastDeploy簡介
????????FastDeploy是一款全場景、易用靈活、極致高效的AI推理部署工具。提供開箱即用的云邊端部署體驗, 支持超過?150+?Text,?Vision,?Speech和跨模態(tài)模型,并實現(xiàn)端到端的推理性能優(yōu)化。包括圖像分類、物體檢測、圖像分割、人臉檢測、人臉識別、關(guān)鍵點檢測、摳圖、OCR、NLP、TTS等任務(wù),滿足開發(fā)者多場景、多硬件、多平臺的產(chǎn)業(yè)部署需求。
?FastDeploy項目鏈接: https://github.com/PaddlePaddle/FastDeploy
1.3 英特爾獨立顯卡簡介
????????英特爾在2021年的構(gòu)架日上發(fā)布了獨立顯卡產(chǎn)品路線圖,OpenVINO從2022.2版本開始支持AI模型在英特爾獨立顯卡上做AI推理計算。
?????????當前已經(jīng)可以購買的消費類獨立顯卡是英特爾銳炫TM獨立顯卡A7系列,并已發(fā)布在獨立顯卡上做AI推理計算的范例程序。
1.4 使用FastDeploy在英特爾CPU和獨立顯卡上部署模型的步驟
1.4.1 搭建FastDeploy開發(fā)環(huán)境
????????當前FastDeploy 最新的Release版本是1.0.1,一行命令即可完成FastDeploy的安裝:
pip install fastdeploy-python –f https://www.paddlepaddle.org.cn/whl/fastdeploy.html
1.4.2 下載模型和測試圖處
????????FastDeploy支持的PaddleSeg預(yù)訓練模型下載地址:FastDeploy/examples/vision/segmentation/paddleseg at develop · PaddlePaddle/FastDeploy · GitHub
????????測試圖片下載地址:https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png
使用命令,下載模型和測試圖片
圖片:
wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png
模型:https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/vision/segmentation/paddleseg
1.4.3 三行代碼完成在項特爾CPU上的模型部署
??? 基于FastDeploy,只需三行代碼即可完成在英特爾CPU上的模型部署,并獲得經(jīng)過后處理的推理結(jié)果。
import fastdeploy as fd
import cv2
# 讀取圖片
im = cv2.imread("cityscapes_demo.png")
# 加載飛槳PaddleSeg模型
model = fd.vision.segmentation.PaddleSegModel(“model.pdmodel”, “model.pdiparams”,“deploy.yaml”)
# 預(yù)測結(jié)果
result = model.predict(im)
print(result)
????????將推理結(jié)果print出來,如下圖所示,經(jīng)過FastDeploy完成的AI推理計算,拿到的是經(jīng)過后處理的結(jié)果,可以直接將該結(jié)果傳給業(yè)務(wù)處理流程。
1.4.4 使用RuntimeOption 將AI推理硬伯切換項特爾獨立顯卡
????????在上述三行代碼的基礎(chǔ)上,只需要使用RuntimeOption將AI推理硬件切換為英特爾獨立顯卡,完成代碼如下所示:?
import fastdeploy as fd
import cv2
# 讀取圖片
im = cv2.imread("cityscapes_demo.png")
h, w, c = im.shape
# 通過RuntimeOption配置后端
option = fd.RuntimeOption()
option.use_openvino_backend()
option.set_openvino_device("GPU.1")
# 固定模型的輸入形狀
option.set_openvino_shape_info({"x": [1,c,h,w]})
# 加載飛槳PaddleSeg模型
model = fd.vision.segmentation.PaddleSegModel(“model.pdmodel”, “model.pdiparams”,“deploy.yaml”,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? runtime_option=option) ? ? ? ? ? ? ? ? ? ? ? ? ? ??
# 預(yù)測結(jié)果
result = model.predict(im)
????????set_openvino_device()中字符串填寫“GPU.1”是根據(jù)英特爾獨立顯卡在操作系統(tǒng)的中設(shè)備名稱,如下圖所示:
?文章來源地址http://www.zghlxwxcb.cn/news/detail-429833.html
當前,在英特爾獨立顯卡上做AI推理,需要注意的問題有:
- 需要固定模型輸入節(jié)點的形狀(Shape)
- 英特爾GPU上支持的算子數(shù)量與CPU并不一致,在部署PPYOLE時,如若全采用GPU執(zhí)行,會出現(xiàn)如下提示
???????????? 這是需要將推理硬件設(shè)置為異構(gòu)方式
option.set_openvino_device("HETERO:GPU.1,CPU")
到此,使用FastDeploy在英特爾CPU和獨立顯卡上部署AI模型的工作全部完成。
1.5 總結(jié)
????????面對千行百業(yè)中部署AI模型的挑戰(zhàn),F(xiàn)astDeploy工具很好的保證了部署AI模型的精度,以及端到端AI性能問題,也提高了部署端工作的效率。通過RuntimeOption,將FastDeploy的推理后端設(shè)置為OpenVINO,可以非常便捷將AI模型部署在英特爾CPU、集成顯卡和獨立顯卡上。
文章來源:http://www.zghlxwxcb.cn/news/detail-429833.html
?
到了這里,關(guān)于使用FastDeploy在英特爾CPU和獨立顯卡上端到端高效部署AI模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!