人工智能 (AI) 在邊緣計(jì)算領(lǐng)域的應(yīng)用正迅速普及。因此,在基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署機(jī)器學(xué)習(xí)模型變得日益重要。基于 Arm 架構(gòu)的處理器憑借低功耗和高能效等優(yōu)勢(shì),在嵌入式系統(tǒng)中得到了廣泛應(yīng)用。
本文將為你展示如何在樹(shù)莓派或 NVIDIA Jetson Nano 等基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署 PyTorch 模型。
前提條件
在開(kāi)始之前,請(qǐng)確保準(zhǔn)備好以下內(nèi)容:
硬件:一臺(tái)基于 Arm 架構(gòu)的設(shè)備,例如樹(shù)莓派、NVIDIA Jetson Nano 或其他類(lèi)似的邊緣側(cè)設(shè)備。
軟件
設(shè)備上必須安裝 Python 3.7 或更高版本。
一個(gè)與 Arm 架構(gòu)兼容的 PyTorch 版本。
一個(gè)經(jīng)過(guò)訓(xùn)練的 PyTorch 模型。
依賴(lài)項(xiàng):必須安裝諸如 torch 和 torchvision 等庫(kù)以及其他所需的 Python 包。
第 1 步
準(zhǔn)備 PyTorch 模型
訓(xùn)練或加載模型
在開(kāi)發(fā)機(jī)器上訓(xùn)練模型,或從 PyTorch 模型庫(kù)加載預(yù)訓(xùn)練模型:
import torch
import torchvision.models as models
# Load a pre-trained model
model = models.resnet18(pretrained=True)
model.eval()
優(yōu)化模型
將模型轉(zhuǎn)換為 TorchScript 格式,以獲得更好的兼容性和性能:
scripted_model = torch.jit.script(model)
torch.jit.save(scripted_model, "resnet18_scripted.pt")
第 2 步
設(shè)置基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備
安裝依賴(lài)項(xiàng)
確保 Arm 設(shè)備上已安裝 Python。
安裝 PyTorch
使用專(zhuān)門(mén)為 Arm 設(shè)備構(gòu)建的版本。例如,樹(shù)莓派用戶(hù)可以運(yùn)行以下命令:
pip install torch torchvision
驗(yàn)證安裝
import torch
print(torch.__version__)
print(torch.cuda.is_available()) # Check if CUDA is supported (for devices like Jetson Nano)
第 3 步
將模型部署到設(shè)備上
傳輸腳本模型
使用 scp 或 USB 驅(qū)動(dòng)器,將模型文件 (resnet18_scripted.pt) 復(fù)制到 Arm 設(shè)備:
scpresnet18_scripted.pt user@device_ip:/path/to/destination
運(yùn)行推理
編寫(xiě) Python 腳本以加載模型并運(yùn)行推理:
import torch
from PIL import Image
from torchvision import transforms
# Load the model
model = torch.jit.load("resnet18_scripted.pt")
model.eval()
# Preprocess an input image
preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
img = Image.open("test_image.jpg")
img_tensor = preprocess(img).unsqueeze(0) # Add batch dimension
# Perform inference
with torch.no_grad():
output = model(img_tensor)
print("Predicted class:", output.argmax(1).item())
第 4 步
針對(duì)邊緣側(cè)性能進(jìn)行優(yōu)化
量化
使用 PyTorch 的量化技術(shù)來(lái)減小模型大小并提高推理速度:
from torch.quantization import quantize_dynamic
quantized_model = quantize_dynamic(
model, {torch.nn.Linear}, dtype=torch.qint8
)
torch.jit.save(quantized_model, "resnet18_quantized.pt")
利用硬件加速
對(duì)于配備 GPU 的設(shè)備(如 NVIDIA Jetson Nano),確保使用 CUDA 進(jìn)行加速計(jì)算。
安裝支持 GPU 的相應(yīng) PyTorch 版本。
性能基準(zhǔn)測(cè)試
測(cè)量延遲和吞吐量,以驗(yàn)證模型在邊緣側(cè)設(shè)備上的性能:
import time
start_time = time.time()
with torch.no_grad():
for _ in range(100):
output = model(img_tensor)
end_time = time.time()
print("Average Inference Time:", (end_time - start_time) / 100)
第 5 步
大規(guī)模部署
容器化應(yīng)用
使用 Docker 創(chuàng)建可移植的部署環(huán)境。
示例 Dockerfile:
FROM python:3.8-slim
RUN pip install torch torchvision pillow
COPY resnet18_scripted.pt /app/
COPY app.py /app/
WORKDIR /app
CMD ["python", "app.py"]
監(jiān)控與更新
實(shí)施日志記錄和監(jiān)控,確保應(yīng)用順利運(yùn)行。
使用 Prometheus 或 Grafana 等工具獲取實(shí)時(shí)洞察。
結(jié)論
要在基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署 PyTorch 模型,需要對(duì)模型進(jìn)行優(yōu)化、準(zhǔn)備好相應(yīng)軟件并使用合適的硬件。上述步驟可幫助開(kāi)發(fā)者在邊緣側(cè)部署 AI 應(yīng)用,從而在靠近數(shù)據(jù)生成的位置實(shí)現(xiàn)快速、高效的推理。快來(lái)動(dòng)手試試吧!
-
ARM
+關(guān)注
關(guān)注
135文章
9511瀏覽量
389234 -
ARM架構(gòu)
+關(guān)注
關(guān)注
15文章
185瀏覽量
39014 -
邊緣計(jì)算
+關(guān)注
關(guān)注
22文章
3484瀏覽量
52817 -
pytorch
+關(guān)注
關(guān)注
2文章
813瀏覽量
14736 -
邊緣AI
+關(guān)注
關(guān)注
0文章
207瀏覽量
5875
原文標(biāo)題:動(dòng)手做!在基于 Arm 架構(gòu)的邊緣側(cè)設(shè)備上部署 PyTorch 模型
文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Arm Neoverse平臺(tái)集成NVIDIA NVLink Fusion
BPI-AIM7 RK3588 AI與 Nvidia Jetson Nano 生態(tài)系統(tǒng)兼容的低功耗 AI 模塊
什么是ARM架構(gòu)?你需要知道的一切
如何在基于Arm架構(gòu)的邊緣AI設(shè)備上部署飛槳模型
NVIDIA Nemotron Nano 2推理模型發(fā)布
《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第22期:2025.07.28--2025.08.1
NVIDIA Jetson + Isaac SDK 在人形機(jī)器人領(lǐng)域的方案詳解
樹(shù)莓派操作系統(tǒng):版本、特性及設(shè)置完整指南!
樹(shù)莓派小技巧:無(wú)需鍵盤(pán)或顯示器,如何通過(guò)WiFi設(shè)置樹(shù)莓派?
市場(chǎng)上主流的端側(cè)AI MPU 大全
研華NVIDIA Jetson Orin Nano系統(tǒng)支持Super Mode
探索NVIDIA Jetson與DeepSeek融合的無(wú)限可能
如何在Arm Ethos-U85上使用ExecuTorch
STM32、Arduino、樹(shù)莓派開(kāi)發(fā)方式差異大嗎
利用Arm Kleidi技術(shù)實(shí)現(xiàn)PyTorch優(yōu)化

Arm方案 基于Arm架構(gòu)的邊緣側(cè)設(shè)備(樹(shù)莓派或 NVIDIA Jetson Nano)上部署PyTorch模型
評(píng)論