Microsoft 和 NVIDIA 合作為 NVIDIA Jetson 平臺(tái)構(gòu)建、驗(yàn)證和發(fā)布 ONNX 運(yùn)行時(shí) Python 包和 Docker 容器,現(xiàn)已在Jetson Zoo上提供。
今天發(fā)布的適用于 Jetson 的 ONNX Runtime 將 ONNX Runtime 的性能和可移植性優(yōu)勢(shì)擴(kuò)展到了 Jetson 邊緣 AI 系統(tǒng),允許來(lái)自許多不同框架的模型以更少的功耗更快地運(yùn)行。您可以轉(zhuǎn)換來(lái)自 PyTorch、TensorFlow、Scikit-Learn 和其他模型的模型,以在具有 ONNX 運(yùn)行時(shí)的 Jetson 平臺(tái)上執(zhí)行推理。
ONNX 運(yùn)行時(shí)優(yōu)化模型以利用設(shè)備上的加速器。此功能使用相同的 API 表面為應(yīng)用程序代碼提供跨不同硬件配置的最佳推理吞吐量,以管理和控制推理會(huì)話。
ONNX Runtime 在數(shù)億臺(tái)設(shè)備上運(yùn)行,每天提供超過(guò) 200 億個(gè)推理請(qǐng)求。
Jetson 上 ONNX 運(yùn)行時(shí)的優(yōu)勢(shì)
Jetson System-on-Modules (SOM) 的全系列產(chǎn)品以小巧的外形提供云原生支持,具有無(wú)與倫比的性能和能效,有效地將現(xiàn)代 AI、深度學(xué)習(xí)和推理的能力引入嵌入式系統(tǒng)邊緣。Jetson 為一系列應(yīng)用提供支持,從人工智能驅(qū)動(dòng)的網(wǎng)絡(luò)錄像機(jī) (NVR) 和高精度制造中的自動(dòng)光學(xué)檢測(cè) (AOI) 到自主移動(dòng)機(jī)器人 (AMR)。
完整的 Jetson 系列由相同的軟件堆棧提供支持,并由 NVIDIA JetPack SDK 提供支持,其中包括板級(jí)支持包 (BSP)、Linux 操作系統(tǒng)和用于端到端 AI 管道加速的用戶級(jí)庫(kù):
CUDA
cudDNN
用于加速 AI 推理的 TensorRT
用于加速計(jì)算的 cuBlas、cuFFT 等
用于計(jì)算機(jī)視覺(jué)和圖像處理的 Visionworks、OpenCV 和 VPI
用于相機(jī) ISP 處理、多媒體和傳感器處理的庫(kù)
此 ONNX 運(yùn)行時(shí)包利用 Jetson 邊緣 AI 平臺(tái)中的集成 GPU,使用 CUDA 和 cuDNN 庫(kù)為 ONNX 模型提供加速推理。您還可以通過(guò)從源代碼構(gòu)建 Python 包來(lái)將 ONNX 運(yùn)行時(shí)與 TensorRT 庫(kù)一起使用。
專注于開發(fā)者
此版本為您在 Jetson 平臺(tái)上使用 ONNX 運(yùn)行時(shí)提供了一條簡(jiǎn)單的集成路徑。您可以在應(yīng)用程序代碼中集成 ONNX 運(yùn)行時(shí),以便在邊緣設(shè)備上運(yùn)行 AI 應(yīng)用程序的推理。
ML 開發(fā)人員和 IoT 解決方案制造商可以使用預(yù)構(gòu)建的 Docker 映像在邊緣部署 AI 應(yīng)用程序或使用獨(dú)立的 Python 包。Jetson Zoo包含指向 ONNX 運(yùn)行時(shí)包和示例的指針以供入門。
Microsoft Container Registry 中提供了 Jetpack4.4 上 ONNX Runtime 的 Docker 映像:
docker pull mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3
或者,要直接在您的應(yīng)用程序中使用Python 包,請(qǐng)下載并將其安裝在您的 Jetson SOM 上:
wget https://nvidia.box.com/shared/static/8sc6j25orjcpl6vhq3a4ir8v219fglng.whl \ -O onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl pip3 安裝 onnxruntime_gpu-1.4.0-cp36-cp36m-linux_aarch64.whl
在 Jetson 上使用 ONNX 運(yùn)行時(shí)的推理應(yīng)用程序

圖 1. 邊緣的端到端 IoT 應(yīng)用程序。
在NVIDIA Jetson 平臺(tái)(ARM64 設(shè)備)上集成 Azure 與機(jī)器學(xué)習(xí)執(zhí)行教程向您展示了如何使用 TinyYOLO 模型、Azure IoT Edge 和 ONNX Runtime 在您的 Jetson 設(shè)備上開發(fā)對(duì)象檢測(cè)應(yīng)用程序。
在 Jetson 平臺(tái)上運(yùn)行的物聯(lián)網(wǎng)邊緣應(yīng)用程序在 Azure 云中有一個(gè)數(shù)字孿生。推理應(yīng)用程序代碼在由集成的 Jetson ONNX 運(yùn)行時(shí)基礎(chǔ)映像構(gòu)建的 Docker 容器中運(yùn)行。應(yīng)用程序從相機(jī)讀取幀,執(zhí)行對(duì)象檢測(cè),并將檢測(cè)到的對(duì)象結(jié)果發(fā)送到云存儲(chǔ)。從那里,它們可以被可視化和進(jìn)一步處理。
樣本異議檢測(cè)代碼
您可以使用為 Jetson 預(yù)先構(gòu)建的 ONNX Runtime Docker 映像開發(fā)自己的應(yīng)用程序。
使用 Jetson ONNX 運(yùn)行時(shí) Docker 映像創(chuàng)建 Dockerfile 并添加應(yīng)用程序依賴項(xiàng):
來(lái)自 mcr.microsoft.com/azureml/onnxruntime:v.1.4.0-jetpack4.4-l4t-base-r32.4.3 工作目錄。 運(yùn)行 apt-get update && apt-get install -y python3-pip libprotobuf-dev protobuf-compiler python-scipy RUN python3 -m pip install onnx==1.6.0 easydict matplotlib CMD ["/bin/bash"]
從 Dockerfile 構(gòu)建一個(gè)新鏡像:
docker build -t jetson-onnxruntime-yolov4 。
從 ONNX 模型動(dòng)物園下載 Yolov4 模型、對(duì)象檢測(cè)錨位置和類名:
wget https://github.com/onnx/models/blob/master/vision/object_detection_segmentation/yolov4/model/yolov4.onnx?raw=true -O yolov4.onnx wget https://raw.githubusercontent.com/onnx/models/master/vision/object_detection_segmentation/yolov4/dependencies/yolov4_anchors.txt wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/coco.names
下載 Yolov4 對(duì)象檢測(cè)前后處理代碼:
wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/preprocess_yolov4.py wget https://raw.githubusercontent.com/natke/onnxruntime-jetson/master/postprocess_yolov4.py
下載一個(gè)或多個(gè)測(cè)試圖像:
wget https://raw.githubusercontent.com/SoloSynth1/tensorflow-yolov4/master/data/kite.jpg
創(chuàng)建一個(gè)應(yīng)用程序 main.py 來(lái)預(yù)處理圖像,運(yùn)行對(duì)象檢測(cè),并將原始圖像與檢測(cè)到的對(duì)象一起保存:
導(dǎo)入簡(jiǎn)歷2 將 numpy 導(dǎo)入為 np 導(dǎo)入 preprocess_yolov4 作為 pre 導(dǎo)入 postprocess_yolov4 作為帖子 從 PIL 導(dǎo)入圖像 輸入大小 = 416 original_image = cv2.imread("kite.jpg") original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB) original_image_size = original_image.shape[:2] image_data = pre.image_preprocess(np.copy(original_image), [input_size, input_size]) image_data = image_data[np.newaxis, ...].astype(np.float32) print("預(yù)處理后的圖像形狀:",image_data.shape) # 預(yù)處理輸入的形狀 將 onnxruntime 導(dǎo)入為 rt sess = rt.InferenceSession("yolov4.onnx") output_name = sess.get_outputs()[0].name input_name = sess.get_inputs()[0].name detections = sess.run([output_name], {input_name: image_data})[0] print("輸出形狀:", detections.shape) image = post.image_postprocess(original_image,input_size,檢測(cè)) 圖像 = Image.fromarray(圖像) image.save("風(fēng)箏與對(duì)象.jpg")
運(yùn)行應(yīng)用程序:
nvidia-docker run -it --rm -v $PWD:/workspace/ --workdir=/workspace/ jetson-onnxruntime-yolov4 python3 main.py
應(yīng)用程序讀取風(fēng)箏圖像并定位圖像中的所有對(duì)象。您可以嘗試使用不同的圖像并擴(kuò)展應(yīng)用程序以使用視頻流,如前面的 Azure IoT 邊緣應(yīng)用程序所示。
ONNX 運(yùn)行時(shí) v1.4 更新
此軟件包基于 2020 年 7 月發(fā)布的最新ONNX Runtime v1.4 版本。此最新版本提供了許多針對(duì)流行的 Transformer 模型(GPT2、BERT)的更新,包括性能優(yōu)化、新運(yùn)算符的改進(jìn)量化支持和優(yōu)化技術(shù)。該版本還通過(guò)新硬件加速器的預(yù)覽版擴(kuò)展了 ONNX 運(yùn)行時(shí)硬件生態(tài)系統(tǒng)的兼容性,包括對(duì) NVIDIA Jetpack 4.4 的 ARM-NN 和 Python 包的支持。
除了這些加速推理更新之外,1.4 版本繼續(xù)在加速訓(xùn)練前沿的先前版本中引入的創(chuàng)新基礎(chǔ)上構(gòu)建,包括通過(guò)使用 Huggingface GPT-2 模型的新樣本擴(kuò)展操作員支持。
關(guān)于作者
Natalie Kershaw 是 Microsoft 人工智能框架團(tuán)隊(duì)的項(xiàng)目經(jīng)理,專門研究開發(fā)人員體驗(yàn)。她在澳大利亞的阿德萊德大學(xué)和悉尼大學(xué)學(xué)習(xí)電氣和電子工程以及數(shù)學(xué)/創(chuàng)意寫作。在加入微軟之前,她曾在西雅圖的 RFID 芯片制造商 Impinj 工作。
Suhas Sheshadri 是 NVIDIA 的產(chǎn)品經(jīng)理,專注于 Jetson 軟件。他之前曾在 NVIDIA 的自動(dòng)駕駛團(tuán)隊(duì)工作,為 NVIDIA Drive 平臺(tái)優(yōu)化系統(tǒng)軟件。在空閑時(shí)間,Suhas 喜歡閱讀有關(guān)量子物理學(xué)和博弈論的書籍。
Dustin 是 NVIDIA Jetson 團(tuán)隊(duì)的一名開發(fā)人員推廣員。Dustin 擁有機(jī)器人技術(shù)和嵌入式系統(tǒng)方面的背景,喜歡在社區(qū)中提供幫助并與 Jetson 合作開展項(xiàng)目。您可以在NVIDIA 開發(fā)者論壇或GitHub 上找到他。
審核編輯:郭婷
-
傳感器
+關(guān)注
關(guān)注
2578文章
55567瀏覽量
794112 -
AI
+關(guān)注
關(guān)注
91文章
41295瀏覽量
302668 -
python
+關(guān)注
關(guān)注
58文章
4888瀏覽量
90321
發(fā)布評(píng)論請(qǐng)先 登錄
NVIDIA Jetson模型賦能AI在邊緣端落地
基于NVIDIA模組與軟件套件推動(dòng)邊緣與機(jī)器人AI推理
如何在NVIDIA Jetson AGX Thor上部署1200億參數(shù)大模型
NVIDIA Jetson系列開發(fā)者套件助力打造面向未來(lái)的智能機(jī)器人
如何在NVIDIA Jetson AGX Thor上通過(guò)Docker高效部署vLLM推理服務(wù)
NVIDIA Jetson AGX Thor Developer Kit開發(fā)環(huán)境配置指南
通過(guò)NVIDIA Jetson AGX Thor實(shí)現(xiàn)7倍生成式AI性能
NVIDIA TensorRT LLM 1.0推理框架正式上線
BPI-AIM7 RK3588 AI與 Nvidia Jetson Nano 生態(tài)系統(tǒng)兼容的低功耗 AI 模塊
奧比中光3D相機(jī)矩陣接入NVIDIA Jetson Thor平臺(tái)
ADI借助NVIDIA Jetson Thor平臺(tái)加速人形機(jī)器人研發(fā)進(jìn)程
NVIDIA Jetson AGX Thor開發(fā)者套件重磅發(fā)布
基于 NVIDIA Blackwell 的 Jetson Thor 現(xiàn)已發(fā)售,加速通用機(jī)器人時(shí)代的到來(lái)
在NVIDIA Jetson Zoo中實(shí)現(xiàn)高性能推理
評(píng)論