Hugging Face 非同步機器人推論
Hugging Face 已推出非同步機器人推論,這是一個將動作預測與執行解耦的系統,旨在消除順序機器人控制迴圈中常見的閒置期間。此方法允許機器人在下一組動作尚在計算時,持續執行已預測的動作佇列,從而在不影響成功率的前提下,使任務完成時間提升約 2 倍。
順序推論的限制
順序推論會產生瓶頸,機器人必須在等待策略預測下一段動作時保持閒置。在傳統迴圈中,機器人會捕捉觀測、執行策略以取得未來動作序列,然後執行這些動作。當佇列耗盡時,機器人會完全停止,直到下一次推論循環完成。
此依賴關係導致兩個主要問題:
- 執行時延遲: 隨著模型變得更大且計算成本更高,推論延遲會增加,主導互動時間,導致整體任務執行變慢。
- 降低回應性: 機器人在執行一段動作時以開環方式運作,之後會完全閒置,無法快速對環境變化作出反應。
非同步推論架構
非同步推論透過計算與執行的重疊來消除閒置期間。系統被分為兩個獨立的元件,可分別部署在透過網路相連的不同機器上:
機器人客戶端
RobotClient 在機器人上執行。其主要職責包括:
- 觀測串流: 它將最新的觀測串流傳送至伺服器。由於高解析度相機捕捉的資料常超過 4MB 的 gRPC 訊息限制,觀測會以串流方式傳送,而非透過單向 RPC。
- 佇列管理: 客戶端維持本地的動作佇列。當佇列長度低於可設定的閾值(
chunk_size_threshold或 $g$)時,會觸發新的觀測請求。 - 動作聚合: 當新的動作區塊到達時,客戶端使用自訂聚合器將其與目前佇列合併。支援的策略包括 Replace(以新預測覆寫重疊的動作)和 Weighted blend(使用時間權重結合動作)。
策略伺服器
PolicyServer 部署於加速硬體(如 GPU 或 TPU)上,以最大化計算資源。其工作流程包括:
- 觀測清理: 一條處理鍵匹配、前處理與推論準備的管線。
- 相似度過濾: 為避免重複計算,伺服器使用關節空間相似度比較當前觀測與前一次觀測。若觀測過於相似,伺服器可能會跳過推論,除非該觀測被標記為
must_go=True。 - 請求阻塞: 伺服器會阻止新的觀測進入,直到先前的觀測處理完畢,以確保始終使用最新資料。
技術實作與效能
通訊協定
系統使用 gRPC(基於 HTTP/2 並搭配 protocol buffers)進行通訊。此選擇提供低延遲的二進位訊息與雙向串流,在本地網路上使用如 NVIDIA RTX 4090 等硬體時,可達到低於 100 毫秒的往返延遲。
調校控制迴圈
效能受比例 $c = \frac{\mathtt{environment}\mathtt{dt}}{\mathtt{inference}\mathtt{time}}$ 所支配。為防止系統退化回順序控制,使用者可以:
- 提升計算資源: 使用更強大的 GPU 以縮短 $\mathtt{inference}_\mathtt{time}$。
- 調整閾值 ($g$): 參數 $g$ 代表在何比例的最大區塊大小時發送新觀測。
- $g = 0$ 模擬順序推論。
- $g = 1$ 每個時間步都發送觀測,以最小延遲但最大計算量。
- 實驗顯示 $g \approx 0.7$ 為有效的折衷,儘管 Hugging Face 建議以 $g = 0.5$ 作為起始值。
對機器人策略的影響
非同步推論相容於支援動作分塊的策略,例如 ACT、OpenVLA、PI0 與 SmolVLA。透過緊縮控制迴圈並允許持續移動,系統可實現更具適應性的控制與更快的任務完成。在 SmolVLA 的測試中,此架構使任務完成時間提升約 2 倍,同時維持相近的任務成功率。