IMAGE: AI生成ビジュアル
AGENTS / AGENTS
AWSのオープンソースSDK「Strands Robots」、ロボットデータの「記録→学習→デプロイ」を1つのエージェントで完結 — LeRobot形式でHugging Face Storage Bucketsと連携
ロボットのデモを自然言語プロンプトで記録し、データセットを丸ごとダウンロードせずHubからストリーミング学習、チェックポイントは実機へ即デプロイ。Xetのバイトレベル重複排除により、日次同期の転送量は「変更分だけ」に抑えられる。
AWSは2026年8月13日、オープンソースSDK「Strands Robots」の第2弾解説記事をHugging Faceブログで公開した。ロボットのデモ収集、データセットの保存、モデルの学習、実機へのデプロイという一連のデータループを、1つのAIエージェントだけで完結させる実装例だ。Strands RobotsはApache 2.0ライセンスで公開されており、ロボットの抽象化・シミュレーション・LeRobotスタックを「AgentTools」として単一のエージェントに組み込める構成を取る。今回の記事は、前回紹介したシミュレーションでのデモ記録と実機(SO-101)へのデプロイに続くシリーズ第2弾で、データを「記録した日」から「学習する日」まで保持する作業レイヤーとして、2026年3月に発表されたHugging Face Storage Bucketsを活用する。
記録・保存・学習・デプロイを1ループに
Strands Robotsのエージェントは、自然言語プロンプト1つでシーンのセットアップからカメラ、ポリシー、記録までを実行する。記録されたデモはLeRobotのデータセット形式のままStorage Bucketへ同期され、学習はデータセット全体をダウンロードせずHubから直接ストリーミングで行い、学習済みチェックポイントは mode="real" という引数1つの変更で物理ロボットへデプロイされる。同じ Robot() オブジェクトが記録と読み出しの両方を担うため、データ収集と学習は1つのバックエンド上の2つのメソッドになる。
- デモ記録: エージェントが
Robot("so100")をツールとして持ち、プロンプトで記録開始・ポリシー実行・停止を指示 - バケット同期:
sync_dataset_to_bucket()で記録済みデータセットをhf://buckets/{bucket}/{run_id}へ同期(hf CLIをラップ) - ストリーミング学習:
stream_dataset(..., repo_type="bucket")でリモートのMP4シャードからフレームをオンデマンドでデコード。ローカルに残るのはスキーマ・統計・エピソード索引の小さなmeta/フォルダのみ - 実機デプロイ:
Robot("so100", mode="real", ...)に切り替えるだけで、学習済みチェックポイントを実機で実行。実機で記録した新しいデモは同じバケットへ戻される
Xetのバイトレベル重複排除が転送量を「変更分だけ」に
データループを毎日回すと、同じデータの再アップロードが繰り返される問題が生じる。Storage BucketsはXet基盤のコンテンツ定義チャンキング(content-defined chunking)でバイトレベルの重複排除を行う。チャンク境界がコンテンツに追従するため、数バイトの挿入でも影響はそのチャンクだけに留まり、マルチギガバイトの動画シャード全体を再アップロードする必要がない。
- Hugging Faceの計測では、Hub全体でコンテンツ定義チャンキングによりアップロードあたりの転送量が約4分の1に削減(HF Storageの測定)
- バケットのベンチマーク例: 500MBのアップロードから1%のバイトを変更して再アップロードすると転送は5.5MB、5%変更で27.5MB、10%変更で55MB
- LeRobot形式はデータをParquetシャード(既定100MB)とカメラ別MP4シャード(既定200MB)に分割するため、日次同期では新規シャードと成長中のシャードだけが転送される
- エンタープライズプランでは重複排除後のフットプリントで課金される
ストリーミング学習と計測値
学習では、LeRobotの StreamingLeRobotDataset を介してバッチ単位でHubから読み出す。シャードレイアウトにより、バッチは大きなシャードへの数回のバイトレンジ読み取りで済み、GPUがダウンロード待ちで遊休になるのを防ぐ。LeRobot標準のトレーナーも同じ経路を利用でき、--dataset.repo_type=bucket --dataset.streaming=true を指定するだけで学習が走る。
- 実測例: NVIDIA L4(g6.4xlarge)1枚で、ACT(51.6Mパラメータ、実効バッチサイズ8)の500最適化ステップを120フレームのエピソードに対して133秒で完了。記事では「1構成での計測値でありベンチマークではない」と明記されている
- CDN計測(Hugging Faceのバケットベンチマーク): m5dn.24xlarge・us-east-1で10GBペイロードのウォームリードが約1,086MB/s(コールドは780MB/s)、100GBで約1,124MB/s
- 既存データがAmazon S3にある場合も、LeRobotDatasetはParquet・MP4シャードのディレクトリなのでそのまま保存・読み出しでき、フォーマット変換は不要
セキュリティ上の考慮点
実データでループを回す際には、記事もリスクを明示している。エージェントがロボットを動作させ、共有ストレージへの読み書きも行うため、プロンプトインジェクション対策(信頼できないデータをエージェントに渡さない、ツールを制限する)、トレーニングデータを信頼境界として扱うこと(収集用と学習用の資格情報を分離し、run_id単位でエピソードを追跡可能にする)、バケットへの書き込み権限の管理が必要だとしている。
- 収集バケットへ書き込める資格情報と、学習ジョブが読み取る資格情報を分離
- 各runを固有のrun_idで同期し、エピソードを生成元のrunに遡って個別削除できるようにする
- エージェントに与えるツールを制限し、安全上重要な操作やバケット内容の上書きを防ぐ
実装例のコードはGitHubの strands-labs/robots リポジトリ(examples/notebooks/05_streaming_data_loop.ipynb)で公開されており、GPU・Docker・Hugging Faceの認証情報なしでシミュレーション上で全ループを試せる。
出典: Hugging Faceブログ「Record, train, and deploy from one place with Strands Agents, LeRobot, and Hugging Face Storage Buckets」、GitHub「strands-labs/robots」(いずれも2026-08-14確認)。