iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
AI Engineering

30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰系列 第 11 篇

Pre-trained Model 下載下來,就可以直接跑 QCS6490 嗎?

  • 分享至 

  • xImage
  •  

前幾天我們終於把 QCS6490 的 NPU 跑起來。

這時候一個很自然的想法出現:

那我去 Qualcomm AI Hub 找 Model,不就好了?

答案是:

沒有這麼簡單。

AI Hub Workbench 確實可以幫忙做 Model compile、optimization、profile,也可以產生 QNN、ONNX、LiteRT 等不同 Runtime 的資產。

但對我們來說:

「AI Hub 有這個 Model」≠「這個 Model 可以直接丟進我們的 QCS6490 Edge AI Application」。

中間還有一段 Model Onboarding。


1. 第一步:先確認 Model 到底長什麼樣

例如我們拿到一個 pretrained YOLO:

model.pt

第一件事不是直接部署。

而是先確認:

Model Format
Input
Output
Operator
Datatype
Shape
Pre-processing
Post-processing

例如:

Input:
640 × 640
RGB
FP32
NCHW

但我們 Camera 進來可能是:

1920 × 1080
NV12 / YUV

這中間就需要:

Camera
 ↓
Color Convert
 ↓
Resize / Letterbox
 ↓
Normalize
 ↓
Tensor
 ↓
Model

Model 要吃什麼,跟 Camera 給什麼,不一定是一樣的。


2. 第二個問題:Model 裡面的 Operator

Pre-trained Model 看起來只是一個 .pt 或 .onnx。

但裡面其實是一整張 computation graph。

例如:

Conv
 ↓
BatchNorm
 ↓
SiLU
 ↓
Concat
 ↓
Resize
 ↓
Sigmoid
 ↓
...

所以我們要確認:

這些 Operator 能不能被 Qualcomm Runtime / HTP 正確處理?

如果某個 Operator 不支援,就可能需要:

  • 改 Model Graph
  • 替換 Layer
  • 使用其他 Operator
  • Custom Operation
  • 或產生 CPU fallback

Qualcomm 的 Model Onboarding 文件也把 Model Conversion、Unsupported Layer、Custom Operation 列為部署流程中的重要工作。

這也是為什麼:

「可以 Compile」

跟

「可以高效跑在 HTP」

不是完全相同的事情。


3. 第三個問題:Input / Output 要重新對

這個地方非常容易出錯。

假設 Model Output 是:

[1, 8400, 84]

但 Application 預期的是:

[x1, y1, x2, y2, confidence, class_id]

那中間還需要做 Output Decode。

例如:

QNN Output
    ↓
Decode
    ↓
Confidence Filter
    ↓
NMS
    ↓
Class Filter
    ↓
Bounding Box

最後才會得到我們真正需要的:

Person
Confidence = 0.87
BBox = (x1, y1, x2, y2)

所以 Model Output 的格式,其實也是 Product Integration 的一部分。


4. Quantization 也不是按一下就結束

如果要進一步把 Model 做成 INT8:

FP32
 ↓
Calibration Dataset
 ↓
Quantization
 ↓
INT8
 ↓
QNN / HTP

這裡還要確認:

Accuracy 有沒有掉?

因為我們真正關心的不是:

INT8 比 FP32 快多少?

而是:

速度提升之後,Person Detection 還能不能達到產品需要的準確度?

Qualcomm AI Hub Workbench 目前也提供 quantization workflow,使用 AIMET 進行 calibration / quantization。


5. 然後才進 Qualcomm Compile

完成前面的確認後,才進 Qualcomm 的 compile flow:

Pre-trained Model
       ↓
Model Adaptation
       ↓
ONNX / Supported Format
       ↓
AI Hub Workbench / QNN
       ↓
Compile
       ↓
QNN Model / DLC / Context Binary
       ↓
QCS6490
       ↓
HTP

這裡又有一個很重要的差異。

QNN Context Binary 是針對特定 SoC 的。

所以不是:

「我在某個 Qualcomm Device 上 compile 成功。」

就代表:

「拿到另一個 Qualcomm Device 一定可以直接用。」

Qualcomm 文件明確說明,Context Binary 是 SoC-specific,而且針對特定硬體編譯後預期部署到相同裝置。


6. 最後才是我們真正要測的 QCS6490

到了這一步,我才會把 Model 放進我們的 Application:

RTSP
 ↓
GStreamer
 ↓
Decode
 ↓
Pre-processing
 ↓
QNN / HTP
 ↓
Post-processing
 ↓
Person Detection
 ↓
Geofence
 ↓
Intrusion Event

然後開始量:

FPS
Latency
CPU
NPU
Memory
Frame Drop
Accuracy
Stability

如果這些都 OK,

這時候我才會說:這個 Model 可以 Deploy。


所以 AI Hub 到底幫了我們什麼?

不是沒用。

反而非常有用。

它可以幫我們省掉很多 Model conversion、optimization、profiling 的工作。AI Hub Workbench 本身就是用來做 Qualcomm 裝置上的 model optimization、validation 和 deployment。

但 AI PM要注意的是:

AI Hub 解決的是 Model 優化與 Qualcomm Runtime 的一大段工作,不是直接替我們完成整個 Product Integration。

因為最後還是要接回:

Model → QNN → HTP → GStreamer → Application → Rule → Event


Day 11,我最後留下這句話:

Pre-trained Model 不是拿來就用。

真正把一個 Model 放進 Edge Device,中間還要處理:

Format → Operator → Input → Pre-process → Compile → Quantization → Runtime → Output → Post-process → Application

這也是為什麼我們在做 Edge AI Product 時,

「Model 能不能跑」其實只是第一關。

下一關才是:

「這個 Model 能不能變成我們產品真正可以交付的功能?」


上一篇
31 FPS 很漂亮,直到我們把第二支 Camera 接上去
下一篇
Confidence 不是一個數字,而是一個 Product Decision
系列文
30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言