iT邦幫忙

2026 iThome 鐵人賽

DAY 23
0
AI Engineering

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

要怎麼知道這個 Model 可以交付給客戶?

  • 分享至 

  • xImage
  •  

前一天,我才剛解決一個問題:

同一個 Model,要怎麼跑在不同的 Edge Device?

我原本以為,只要把 Model 對應到正確的 Runtime 和 Hardware,就差不多了。

例如:

Person Detection Model
        │
        ├── QCS6490
        │      └── QNN / HTP
        │
        ├── NVIDIA
        │      └── TensorRT
        │
        └── x86
               └── ONNX Runtime

看起來很合理。

但是做到這裡,我突然想到一個很現實的問題:

Model 跑得起來,就代表可以交給客戶嗎?

答案是:不一定。


「可以跑」跟「可以交付」是兩件事

假設今天 Model Registry 裡面有一個:

Person Detection
Version: 1.2
Target: QCS6490
Runtime: QNN
Backend: HTP

系統告訴我:

✅ Compatible

那是不是就可以直接 Deploy?

如果是以前做 PoC,我可能會說:

「跑起來看看就知道了。」

但如果這是一個要交給客戶的產品,我覺得這樣不太夠。

因為可能出現很多問題。


第一關:到底能不能正常跑?

最基本的還是 Compatibility。

例如:

  • Model Format 是否支援
  • Input / Output 是否正確
  • Operator 是否支援
  • Runtime 是否正確
  • Backend 是否支援
  • QNN 是否可以正常建立 Graph
  • HTP 是否可以正常執行

尤其前面 Qualcomm 的整合就讓我很清楚:

「Model 是 ONNX」並不代表「QCS6490 就一定可以跑」。

中間還有 Model Conversion、QNN、Backend、HTP 等等。

所以第一個結果只能是:

Compatibility
      ↓
PASS / FAIL

但這還不夠。


第二關:跑得夠快嗎?

假設客戶需求是:

Person Detection 至少 20 FPS。

結果我實際測:

QCS6490
Model v1.2
QNN / HTP

FPS = 31

很好。

但如果另一個 Model:

FPS = 12

它不是不能跑。

它只是不符合我們的產品需求。

所以我開始覺得:

Compatible 不代表 Qualified。

這兩個概念要分開。


第三關:跑久了還正常嗎?

這是我覺得從 PoC 走向 Product 很重要的一個差別。

PoC 可能只看:

「跑個 5 分鐘,OK。」

但客戶的 Edge Device 可能是:

24 小時、7 天、甚至長時間持續運作。

所以我會開始看:

  • CPU 使用率
  • Memory
  • NPU / HTP utilization
  • Temperature
  • FPS
  • Latency
  • Multi-stream
  • 長時間運作是否穩定

例如:

30 秒
31 FPS
Memory 正常

↓

2 小時
29 FPS
Memory 開始增加

↓

8 小時
Application Crash

這個 Model 當然不能交付。

所以又多了一層:

Stability


第四關:AI 結果真的有用嗎?

這一關反而是 AI PM 最不能忘記的。

假設 Model:

FPS 很漂亮
QCS6490 PASS
Memory PASS
Stability PASS

但是實際放到客戶的無人區域:

Person Detection
       ↓
誤判很多
       ↓
一直產生 Event
       ↓
一直 Alert
       ↓
客戶最後把 Alert 關掉

那這個 Model 算成功嗎?

我覺得不算。

因為我們真正做的不是:

Model Demo

而是:

Customer Use Case

所以最後還是要回到我們一開始做的:

Person Detection
       ↓
Geofence
       ↓
Rule
       ↓
Event
       ↓
Alert / Action

Model 的結果必須放進真正的產品流程裡驗證。


所以我最後把 Validation 想成四關

                 Model Validation
                       │
       ┌───────────────┼────────────────┐
       ↓               ↓                ↓
 Compatibility    Performance       Stability
       │               │                │
       │               │                │
 Format            FPS / Latency     Long Run
 Runtime           CPU / NPU         Memory
 Backend           Memory            Temperature
       │
       └────────────────┬──────────────┘
                        ↓
                 Use Case Validation
                        │
                  Detection Result
                        ↓
                      Event
                        ↓
                    Customer

最後才會得到:

Model v1.2
QCS6490
QNN / HTP

Compatibility     PASS
Performance       PASS
Stability         PASS
Use Case          PASS

              ↓

            APPROVED

這時候我才比較敢說:

「這個 Model 可以交給客戶。」


這也讓我重新思考 Model Registry

以前我以為 Model Registry 只是:

把 Model 放進去,管理版本。

但做到這裡,我開始覺得它其實還應該知道:

Model
 ├── Version
 ├── Artifact
 ├── Target Device
 ├── Runtime
 ├── Backend
 ├── Performance
 ├── Validation Result
 └── Approval Status

所以當 AI PM 在 Cloud 選一個 Model 時,不應該只是看到:

Person Detection v1.2

而是看到:

Person Detection v1.2
QCS6490 / QNN / HTP
31 FPS
Validation: PASS
Status: Approved

這時候才真的比較像一個可以被交付的 Product Asset。


但做到這裡,我又遇到下一個問題

今天這個 Model 是我們自己驗證過的,所以我敢放進 Registry。

可是如果有一天客戶跟我說:

「我們公司自己有一個 AI Model,可以直接上傳到你的 Cloud 嗎?」

這時候我突然又不敢說 Yes 了。

因為:

上傳成功,不代表可以部署。


上一篇
同一個 Model,要怎麼跑在不同 Edge Device?
下一篇
從 Model Upload 到 Deployment:客戶自有 Model 如何被驗證?
系列文
30 天打造 Edge AI Product:一個 PM 從 0 到 1 的 AI Engineering 實戰 共 27 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言