在 AWS Inferentia2 上經濟高效地部署視覺語言模型進行寵物行為檢測
Tomofun 公司利用 AWS Inferentia2 芯片將其 Furbo 寵物相機的推理成本降低了 83%,同時保持高精度和低延遲。本文詳細介紹了從 GPU 遷移到 Inferentia2 的過程,包括 BLIP 模型適配、架構設計、壓力測試結果等。
Tomofun 是一家總部位於台灣的寵物科技初創公司,其產品 Furbo 寵物相機通過智能攝像頭與 AI 技術相結合,能夠實時檢測寵物的吠叫、奔跑或其他異常行為,並及時向主人發送警報。該系統的核心是計算機視覺和視覺語言模型,它們從視頻流中解讀寵物的動作。
最初,Furbo 的推理工作負載運行在基於 GPU 的 Amazon EC2 實例上。雖然 GPU 提供了高吞吐量,但由於需要持續進行實時推理以支持大規模寵物活動檢測,成本高昂。為了降低成本並保持準確性,Tomofun 轉向了由 AWS 自研 AI 芯片 Inferentia2 驅動的 EC2 Inf2 實例。
挑戰:降低實時視覺語言模型的大規模 GPU 推理成本
運行先進的視覺語言模型(如 BLIP)在 GPU 實例上對於始終在線、實時推理的工作負載而言成本效益較低。Tomofun 面臨雙重挑戰:需要為數十萬台設備提供近乎連續的寵物行為監控,同時保持模型保真度和吞吐量,並且無需重寫已針對 PyTorch 優化的大部分 BLIP 代碼。
解決方案概述
系統採用兩層架構。第一層通過 Elastic Load Balancing (ELB) 和 Auto Scaling 組託管 API 服務器,處理來自 Furbo 相機的圖像流。第二層運行推理實例,將圖像送入 BLIP 模型。BLIP 模型被分解為三個組件:圖像編碼器、文本編碼器和文本解碼器。每個組件通過輕量級封裝器與 torch_neuronx 結合,獨立編譯為 Neuron 優化的 TorchScript 工件,然後集成到推理流水線中。這種模塊化方法未改變 BLIP 的原始架構。
在早期實現中,Furbo 的 API 僅將推理調用路由到 GPU 容器,但現在也可以將請求定向到基於 Inf2 的容器,而無需更改上游 API 或下游警報邏輯。這使得 Tomofun 能夠實時地在 GPU 和 Inferentia2 後端之間切換推理請求,從而保持高可用性並靈活擴展成本高效的推理能力。
Amazon CloudWatch 監控推理集羣的關鍵運營指標,包括延遲、吞吐量和錯誤率。ELB 根據 CloudWatch 指標中的請求數量自動調整實例池大小,因為每種實例類型的吞吐量基準已通過壓力測試確定,因此擴展決策可以直接由圖像請求量驅動。
在 Inferentia2 上優化 BLIP
BLIP 由三個組件組成——圖像編碼器、文本編碼器和文本解碼器。為了在 Inferentia2 上支持,Tomofun 將模型分解為組件並創建了輕量級封裝器,以適配輸入和輸出形狀。每個組件使用 torch_neuronx 獨立編譯,然後組合到推理流水線中。
在編譯階段,原始模型組件直接傳遞給 torch_neuronx.trace() 並編譯為 Neuron 優化的 TorchScript 工件。在部署階段,編譯後的子模塊通過封裝器類加載,以組裝最終的 BLIP 推理流水線。封裝器僅在部署時用於加載編譯模型和格式化 I/O,從而保持原始代碼不變。
壓力測試
Tomofun 進行了模擬真實 Furbo 相機工作負載的壓力測試。每個視頻流觸發了諸如“狗在叫嗎?”、“狗在玩嗎?”或“狗在咬傢俱嗎?”等動作檢測查詢。測試證實,Inf2 實例(一個 Inferentia2 芯片,32 GB 內存)能夠維持所需的吞吐量並保持低延遲。與按需 GPU 實例相比,遷移到 Inf2.xlarge 實例後成本降低了 83%,且性能未受影響。
結論
通過將 BLIP 推理遷移到基於 AWS Inferentia 的 EC2 Inf2 實例,Tomofun 將 Furbo 應用的部署成本降低了 83%。遷移過程無縫,僅需輕量級包裝類,未改動 BLIP 核心邏輯。測試確認,使用 Inferentia2 不僅降低了部署成本,還保持了大規模實時推理的高吞吐量。Tomofun 計劃將更多工作負載遷移到 Inferentia2,並計劃採用 AWS 深度學習容器簡化依賴管理。