複数のAIエージェントが光の経路で連携する抽象ビジュアル
NAW / AGENTS 02

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確認)。