周暐倫 · Terry

AI-Deployment-Pipeline

Showcase

為 YOLOv8 系列模型打造的端到端部署平台:自動化 PT→ONNX→TensorRT 優化、多批次多精度效能評測,並以 Triton 推論服務與 Prometheus/Grafana 即時監控串起完整生命週期。

專案概述

本專案是一套針對 YOLOv8 系列模型的 AI 部署與效能監控平台,涵蓋模型上傳、格式轉換、自動化評測到生產級推論服務的完整流程。後端以 FastAPI 非同步服務組織,透過 ultralytics 與 trtexec 把 PyTorch 模型自動轉為 ONNX 與 TensorRT 引擎(支援 FP32/FP16),並交由 NVIDIA Triton Inference Server 以 explicit 模式動態掛載/卸載部署。自動化管線會針對多種批次大小(1–32)與精度組合反覆推論測量,同時記錄 mAP50/mAP50-95 準確度與延遲、FPS、GPU 使用率、VRAM 等效能指標。前端為 React + Ant Design 介面,提供互動式圖表與 PDF/Excel 報告匯出;系統層則以 Prometheus + node/GPU exporter 蒐集指標、Grafana 視覺化,全部以 Docker Compose 編排為單一可啟動的 GPU 容器堆疊。

關鍵亮點

  • 設計清晰分層的服務架構:FastAPI 非同步後端(轉換/推論/評測/Triton 各自獨立 service 與 router)+ React/Ant Design 前端 + NVIDIA 推論堆疊,職責邊界明確,易於擴充與除錯。
  • 自動化模型優化管線:以 ultralytics 與 trtexec 完成 PT→ONNX→TensorRT 轉換,並對批次大小 1–32 × FP32/FP16 組合各做 100 次重複推論,同時量測 mAP50/mAP50-95 準確度與延遲、FPS、GPU 使用率、VRAM,並輸出平均值與標準差以評估穩定性。
  • 以 NVIDIA Triton Inference Server(explicit model-control 模式)提供生產級推論,支援模型動態掛載/卸載與即時推論統計;結果分析頁可多維度比較不同精度與批次配置,並匯出 PDF/Excel 報告作為選型與硬體規劃依據。
  • 完整可觀測性堆疊:Prometheus 搭配 node-exporter 與 nvidia-gpu-exporter 蒐集 CPU/記憶體/GPU 負載/VRAM 指標,Grafana 5 秒刷新視覺化儀表板,整套系統以 Docker Compose 一鍵編排成 GPU 容器堆疊。

技術棧

PythonFastAPIasyncioReactAnt DesignYOLOv8ONNXTensorRTTritonOpenCVDockerPrometheusGrafana

挑戰與取捨

最大的取捨在於「真實效能可比較性」與「工程複雜度」之間的平衡。為了讓評測結果可信,管線採固定基準(YOLOv8n-Pose、COCO 2017-pose val)、每組配置重複 100 次並記錄標準差,還要求驗證集張數能被所有批次大小整除以避免尾批失真,這對測試設計的嚴謹度要求很高。技術整合上,PT→ONNX→TensorRT 跨多套工具鏈(ultralytics/onnx-simplifier/trtexec)、不同 CUDA/TensorRT 版本與 FP16 硬體支援差異,都是常見破口;推論服務改用 Triton explicit 模式以支援動態載入/卸載,但也需要自行管理模型庫掛載與 GPU 記憶體釋放(程式中可見 torch/gc 與多種 GPU 記憶體量測備援)。此外平台刻意採檔案式 JSON 持久化而非資料庫,降低部署門檻、貼合單機 GPU 評測情境,代價是放棄並發寫入與查詢能力,屬有意識的範圍取捨。整套需 NVIDIA GPU 與 CUDA 環境,並以 Docker Compose 編排多容器(後端/前端/Triton/Prometheus/Grafana/exporters)協調啟動順序與資源限制。