在開發實體 AI 機器人時,開發者經常面臨一個棘手的循環:紀錄機器人的操作示範、將數據傳輸至雲端、在 GPU 集群上訓練模型,最後將訓練好的權重部署回硬體。傳統的流程中,數據傳輸往往成為瓶頸。每當數據集增加,開發者必須重複上傳大量重複的位元組,而訓練過程則需要將數百 GB 的數據完整下載到本地磁碟後才能開始,這導致了巨大的時間成本與頻寬浪費。
為了打破這個僵局,AWS 推出的開源 SDK Strands Robots 與 Hugging Face 合作,整合了 LeRobot 數據格式與新推出的 Storage Buckets 儲存機制,建立了一套高效的數據流動循環(Streaming Data Loop)。這套方案的核心在於讓紀錄、訓練與部署在同一個後端環境中完成,且數據在整個過程中始終保持一致的 LeRobot 格式,無需任何轉換。
背景與核心技術
Strands Robots 是一個將機器人抽象化、模擬環境與 LeRobot 堆疊封裝成 AgentTools(代理人工具)的 SDK。它允許開發者透過一個 Strands Agent(代理人)來控制機器人。而 LeRobot 則是目前機器人學習領域極其重要的開源框架,定義了一套標準的數據集格式,將相機影像存為 MP4 碎片,將關節狀態與動作存為 Parquet 檔案。
為了優化數據傳輸,該方案引入了 Hugging Face Storage Buckets。這是一種基於 Xet 技術的對象儲存庫,與傳統的版本控制儲存庫不同,Bucket 允許在原處覆蓋數據,且最關鍵的特性是支援位元級別的去重複化(Byte-level Deduplication)。透過內容定義分塊(Content-defined Chunking),當開發者更新一個巨大的影片檔案時,系統僅會上傳實際改變的數據塊,而非整個檔案。這在機器人紀錄場景中尤為重要,因為連續紀錄的影像中,背景與環境往往高度重複。
高效數據循環的運作方式
這套循環將整個流程分為四個緊密相連的階段,且所有階段共享同一個後端儲存。
首先是紀錄與同步。開發者可以使用模擬器或實體機器人(如 SO-101)紀錄操作示範。紀錄完成後,透過 sync_dataset_to_bucket 函數將本地的 LeRobotDataset 同步至 Hugging Face Storage Bucket。由於 Xet 的去重複機制,每日的同步僅需傳輸新增的數據片段,大幅降低了網路開銷。
其次是串流訓練。這是該方案最顯著的突破。以往訓練模型必須先下載完整數據集,而現在透過 stream_dataset 功能,GPU 可以直接從 Hub 串流讀取數據。系統僅在本地保留微小的元數據(如索引與統計資訊),影像幀在迭代過程中即時解碼。這種方式讓 GPU 在接收到第一批數據時即可開始訓練,消除了漫長的等待下載時間。
接著是模型訓練與檢查點生成。利用 LeRobot 的訓練器,開發者可以針對串流數據集進行微調(Fine-tuning)。例如使用 ACT(Action Chunking with Transformers)等策略,在 NVIDIA GPU 上快速產出模型檢查點(Checkpoint)。
最後是部署與反饋。訓練完成的檢查點可以直接加載到 Robot 對象中,將模式切換為 real(實體模式)即可部署到硬體。機器人在執行任務時產生的新數據再次同步回同一個 Bucket,形成一個持續自我進化的閉環。
實務意義與限制
這套工作流將機器人開發從單向的紀錄與部署,轉變為一個動態的循環。其最大的意義在於降低了數據處理的摩擦力。開發者不再需要維護複雜的 S3 權限設定或手動管理大量的文件版本,而是透過一套統一的 hf:// 命名空間完成所有操作。
然而,在實務應用中仍需注意安全與限制。首先,由於 Agent 具有讀寫儲存庫與操作硬體的權限,必須嚴格防範提示詞注入(Prompt Injection)風險,避免不可信的輸入導致機器人執行危險動作或毀損數據。其次,Storage Bucket 採取原處覆蓋機制,不保留歷史版本,因此對於需要審計或回溯的正式數據集,仍應使用 push_to_hub 將其推送到具備版本控制的數據集儲存庫中。
此外,雖然串流讀取大幅提升了效率,但其效能高度依賴於內容傳遞網路(CDN)的預熱狀態。在溫啟動(Warm hit)情況下,讀取速度可顯著提升,確保數據加載速度能跟上 GPU 的計算速度。
總結來說,Strands Robots 與 Hugging Face 的整合,將機器人學習的數據管線簡化為紀錄、同步、串流、訓練、部署五個步驟。這種將數據格式統一化並引入位元級去重複與串流讀取的做法,為大規模實體 AI 的快速迭代提供了可行的技術路徑。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。