テレオペレーションとポリシー トレーニング用にセットアップされた、机の上の SO-100 低コスト ロボット アーム
DAggerSO-100模倣学習VLAテレオペレーション

SO-100 上の VLA Policy で DAgger ループを実行する

AY-Robots ResearchAugust 27, 202615 分で読む

SO-100 アームの 1 回の人間ゲート付き DAgger ラウンドの段階的な説明: ポリシーを実行して記録し、問題が発生した時点でテイクオーバーし、ラウンドを修正として提出し、混合データセットを構成し、チェックポイントからトレーニングを継続します。リーダーアームなしの人向けのキーボードとスライダーテイクオーバーパス、およびラウンドを無価値にする 4 つの間違いを含みます。

ポリシーが実行されます。立方体に向かい、グリッパーを 1 cm 早く閉じ、それがあるかのように続けます。エラーは発生せず、トレーニング損失を見つめてもそれについて説明はできません。修正は同じデモンストレーションに対する別の 20,000 勾配ステップではありません。問題が発生する正確な場所でアームに手を戻し、代わりに何をしたかを記録し、古いデータと修正を使って次のチェックポイントをトレーニングします。これが DAgger ラウンドであり、これはある SO-100 vision-language-action ポリシーで実行する方法です。

理論は別のところにあります: なぜデータセット集約がそもそも機能するのか および 人間ゲーティングがそれについて何を変えるか。これは操作マニュアルであり、トレーニング済みのチェックポイント、動作するカメラ セット、および移動するアームを想定しています。以下の 6 つのステップは、このプラットフォームの DAgger ページ で実装されたループですが、独自のスクリプトから同じシーケンスが使用できます。

1 ラウンド 短く

  • トレーニング済みのポリシーを実行して記録します。汎用テレオペレーション ラベルではなく、実行のタスク テキストを使用します。
  • 動作が間違った瞬間にテイクオーバーします: リーダー アームを使用した鏡の引き継ぎ、またはそれなしでキーボードやスライダーで即座かつ手動で。
  • すべての実行をトリアージします: 修正として提出し、評価エピソードとして保持するか、破棄します。
  • 混合を手動で構成します - 元のデモンストレーションと修正、ソースごとに選択されたエピソード。修正のみでトレーニングしないでください。
  • 最後のチェックポイントからトレーニングを継続し、どのチェックポイントがどの混合を生成したかをメモします。
  • ラウンドが価値があったかどうかを示す数値は、トレーニング損失ではなく、介入率です。

2 番目のラウンドが単なるデータではない理由

ビヘイビア クローニングは、人間が訪れた状態でトレーニングされます。テスト時には、ポリシーが引き起こす状態を訪れ、小さなアクション エラーがデモンストレーションでカバーされていない状態に複合します。Ross、Gordon、Bagnell はこの失敗を AISTATS 2011 で形式化し、定常決定論的ポリシーをトレーニングするイテレーティブ アルゴリズムで答えました。これは、それが引き起こす状態分布でよく機能する必要があります: 現在のポリシーを実行し、専門家にそれが実際に到達した状態にラベルを付けさせ、これらをデータセットに追加し、再トレーニング、繰り返します。Kelly ら は HG-DAgger でこのクエリを実用的にしました。ここでは、人間がコントロールを保持せずに状態にラベルを付けるのではなく、コントロールを取得する時期を決定します。シミュレートされた自動運転タスクと実際の自動運転タスクの両方で、DAgger と動作クローニングの両方よりもパフォーマンスが向上していることを報告しています。人間ゲーティングは、机の上のアームでループを許容可能にしたものです - 何か問題が発生した場合にのみ手を動かします。

2 つの結果は理論よりも実践で重要です。修正は通常のデモンストレーションではなく、Mandlekar ら が説明するボトルネック領域に集中しています。ここでは、小さな偏差がポリシーをデモンストレーションでカバーされていない状態に落とします。そして、これらの難しい部分のみで構成されたデータセットは、形が悪いデータセットです - Belkhale、Cui、Sadigh はデータ側から、状態の多様性が常に有益とは限らず、アクション発散と遷移の多様性がデータセットの品質を決定するという主張をしています。混合データセットは妥協ではなく、ポイントです。

ラウンド 1 の前にこれらをフリーズする

DAgger ラウンドは、ポリシーを時間をかけて自分自身と比較します。ラウンド間で変更することで、データセット以外のものがその比較を無意味にします。

  • カメラの位置とマウント (手首カメラを含む)。クランプを 1 つ緩めると、ポリシーではなく観察分布が変わります。
  • キャプチャ スタックがそれらをピンで留めることを許可する場合、露出とホワイト バランス。ラウンド間でオート露出が変動すると、遅くて見えないドメイン シフトが発生します。
  • アーム キャリブレーションとサーボ ゼロ位置。再キャリブレーションが必要な場合は、その前に記録されたすべてを別のデータセットとして扱います。
  • タスク テキスト。ここのすべての VLA はそれを条件としています。ループの途中で言い直すと、異なるタスクになります。
  • 照明、テーブル表面、オブジェクト セット。新しいオブジェクトは新しい実験であり、次のラウンドではありません。
  • 記録フレーム レート。2 つのサンプリング ラスター全体で介入率を比較すると、ラスターから生じる違いが生じます。
手首カメラはオプションの家具ではない

Hsu ら は手中心のビューを通常の三人称ビューと比較し、アイ・イン・ハンド視点が シーンの少ない部分を見ているにもかかわらず、トレーニング効率と分布外の一般化を一貫して改善することを発見しました。5 ジョイント アームでは、グリッパーのタイミングは通常、修正で修正するものであり、グリッパーのタイミングは手首ビューが持つものです。

ラウンド、エンド ツー エンド

  1. 1
    推論を実行して記録する

    改善したいチェックポイントに対して実行を開始し、推論ルートへの記録を開始します。その方法で記録されると、デフォルトのテレオペレーション ラベルではなく、ポリシーがトレーニングされた実行のタスク テキストが継承されます。記録がないと、失敗を見ることはできますが、そのトレーニングはできません。

    bash
    # two calls, not one: the run, then its recording
    POST /inference/start      # model_id, and hf_repo_id = the checkpoint to drive
    POST /recording/start      # root=inference
    # root=inference also makes the recording inherit the run's task text
  2. 2
    問題が発生した時点でテイクオーバーする

    [テイクオーバー] を押して、入力モード (リーダー アーム、キーボード、またはスライダー) を選択します。実行が一時停止し、修正してから返します。運転中に記録されたフレームは、自動的に介入としてフラグが設定されます。

    bash
    POST /inference/takeover/start   # input = leader | keyboard | sliders
    POST /inference/takeover/nudge   # keyboard, relative delta per call
    POST /inference/takeover/set     # sliders, absolute target
    POST /inference/takeover/stop    # back to the policy
  3. 3
    エピソードをトリアージする

    エピソードごとに決定: 修正として提出し、評価として保持するか、破棄します。ポリシーがヘルプなしで完了した実行は評価データです。

  4. 4
    修正データセットを同期する

    修正はポリシーごとに地元のデータセットに収集され、自動同期を通じてクラウド ストレージに移動します。そこには何も混合されていません。そこに入れなかったものは何もありません。

  5. 5
    混合データセットを構成する

    オリジナル データセットを修正と組み合わせ、ソースごとに明示的にエピソードを選択します。その後、結果は通常のデータセットになります。

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    チェックポイントからトレーニングを継続する

    基本モデルではなく前のチェックポイントから混合をトレーニングします。どのチェックポイントとどの混合かをメモします。そのペアがないと、ラウンドは再現できません。

    bash
    # field on the training job
    base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint>
    # the platform passes it to the training pod as BASE_CKPT_S3

ステップ 2 の詳細: テイクオーバーの 2 つの方法

リーダー アームで

リーダー フォロワー モードでは、テイクオーバーは同じ姿勢にない 2 つのアーム間の引き継ぎです。[テイクオーバー] を押すと実行が一時停止し、リーダーをフォロワーの現在の姿勢に駆動するため、トルクが転送されても何もジャンプしません。その調整ドライブがタイムアウトした場合は、リーダーを手動で調整し、2 つが 5 度以内になったら放します。それ以降、通常どおりテレオペレーションし、アクション列は指定したコマンドを記録します。

このパスについて正直に言うと、調整ドライブとトルク ハンドオーバーは実際のハードウェアでループの最もテストされていない部分です。気になる実行でそれに依存する前に、遅い無害な姿勢でハンドオーバーをテストしてください。リーダー アームは 3 つのモード中最もスムーズな修正を生成し、機械的に問題が発生する可能性が最も高い。

リーダー アームなし: キーボードとスライダー

これを読んでいるほとんどの人は 1 つのアームを所有しています。それで十分です。[テイクオーバー] を押す瞬間にキーボードまたはスライダー入力を選択すると、テイクオーバーは即座かつ手動です - 調整するアームがないため、調整ステップがありません。フォロワーはその姿勢を保ち、入力を待ちます。

入力モード腕がどのように動くサーバーによって強制されるコール ごとの制限ロック時
リーダー アームミラーはリーダーのジョイント角度からフォロワーを駆動しますこのモードではナッジまたは設定呼び出しはなく、ミラーはフォロワー ゴールを継続的に書き込みますロックされることはなく、入力モードが指定されていない場合のデフォルトです。ただし、2 番目のアームが必要です。リーダー ID がないと、テイクオーバーが拒否されます
キーボードキー押下ごとの相対ナッジ、テイクオーバー ナッジ エンドポイントに送信ジョイントあたり 2 度、グリッパー用 4 度でハード クランプテイクオーバーがリーダー モードで開始された場合、409 で拒否されます
スライダー絶対ターゲット ポーズ、テイクオーバー セット エンドポイントに送信コール ごとにターゲットに向かって最大 6 度の移動、インターフェイスは約 1 秒間に 10 回送信し続けますテイクオーバーがリーダー モードで開始された場合、409 で拒否されます

クランプはサーバー側で強制されます。インターフェイスではなく、バスサーボ アーム上の誤入力されたデルタは衝突するためです。キーボード修正は段階的でやや粗雑で出てきます。スライダーの修正はスムーズです。なぜなら、サーバーはターゲットに向かって歩きながら、インターフェイスはストリーミングを継続するためです。いずれにしても、アクション列は完全なコマンド ポーズ ベクトルを受け取り、介入マーキングはリーダー パスと同じであるため、キーボード修正は形式の違いなしに同じデータセットに入ります。

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
スタック内の他の場所と同じキー レイアウトなので、記録からの筋肉記憶が引き継がれます。
SO-100 データセットに対する GR00T ファインチューニング実行の順序付きステップを示すトレーニング ガイド
ラウンドのトレーニング側は、最初の実行と同じガイド付きシーケンスです。チェックポイント フィールドのみが異なります。

ボタンを押す時期

遅くなく早い。グリッパーが何も閉じた後に始まる修正は、ポリシーが入ってはいけない失敗から回復を教え、回復データは回避データよりもはるかに価値が低いです。軌道が間違っていることが確実な最初の瞬間に中断し、難しい部分を修正し、ポリシーが以前処理した状態になったら返します。ThriftyDAgger は固定人間予算の下で新規性と推定リスクに基づいた介入をゲーティングすることでその決定を自動化しますが、すでに人間が見ている単一のアームでは、人間のゲートはあなたがチューニングするものより安くてよりキャリブレーションされています。

オープンソース スタックといくつかのスクリプトで実行可能です。それのコストは簿記であり、簿記が DAgger ラウンドが死ぬ場所です。

  1. 独自の推論スクリプトからフレームを LeRobot データセットに書き込みます。ポリシーがトレーニングされたタスク文字列を使用します。
  2. ポリシー ループを一時停止し、コマンド ソースを切り替え、運転する各フレームを介入としてフラグを付けます。フラグなしでは、修正は通常のデモンストレーションのように見えます。
  3. ポリシーがコントロールを解放してからの最初の入力までの遷移フレームに何が起こるかを意図的に決定します。
  4. 修正をポリシーごとに独自のデータセットに保持し、エピソード インデックスを手動で追跡して、混合を再構成できるようにします。
  5. ファインチューニング エントリ ポイントを前のチェックポイントに向け、ログでそれらの重みが読み込まれたかどうかを確認します。

ステップ 3 の詳細: トリアージが品質を決定する

実行後、介入としてマークされたフレームを含む記録があります。3 つの宛先が存在し、間違ったものは静かに次のラウンドを毒します。

  • 介入が本当の修正であった場合、修正として提出します: ポリシーはどこかの間違った方向に向かっており、入力はポリシー自体が生成した状態から正しいことを示しました。
  • クリーンな自動実行と慎重に出した実行を評価として保持します。評価エピソードは次のチェックポイントを測定する方法であり、トレーニングされてはいけません。
  • 無関係なもの (ドロップされたカメラ フレーム、停止したサーボ、倒したオブジェクト) で台無しにされた実行を破棄します。雑な修正は修正なしより悪い。
フリーズ フレームは未処理の記録に属し、トレーニング データには属しません

ポリシーがコントロールを解放してから最初の入力まで、アームは静かに保持されながら、レコーダーは書き込みを続けます - わずかに異なる画像と組み合わせた同じポーズの実行。ここではそれらのハンドオーバー フレームは未処理の記録に留まり、修正データセットから外れます。ループを自分で構築する場合は、意図的に削除します: それらでトレーニングされたポリシーは、行動すべき場所で一時停止することを学びます。

ステップ 5 の詳細: ミックスの構成

構成は元のデータセットと修正データセットを取得し、新しい通常の LeRobot データセット それは他のようにトレーニングします。重要なプロパティは、エピソードの選択がソースごとに明示的であるということです - 自動的に何もブレンドされません。それはマイナーに聞こえますが、ポリシーが奇妙に動作し、それがトレーニングされたものを再構成する必要があるまで。

公開質問は比率であり、転送する数字を持つ人はいません。文献が同意していることは、修正はフレーム シェアより多くカウントされるべきということです。Mandlekar ら は介入システムが収集するデータに対して反復的に再トレーニングするため、ポリシーはボトルネックを横切ることを学び、そのように訓練されたエージェントは非介入デモンストレーター からの同等の数のサンプルでトレーニングされたエージェントよりも優れたパフォーマンスを実現することを報告しています。Sirius はさらに進み、近似人間信頼によってトレーニング サンプルを再加重し、比較する方法に対する 8% のシミュレーション利得と 27% の実ハードウェア上のポリシー成功率を報告しています。 2 倍の収束速度。ここのトレーニング エントリ ポイントのどれも、サンプル加重ノブを公開していないため、粗い代替案は、すべての修正エピソードを保持しながら、オリジナル デモンストレーションをサブサンプリングすることです - そしてあなたが行ったことを書き留めることです。

カメラ ストリームを備えた SO-100 データセットのエピソードを示すデータセット記録ビュー
修正エピソードは、フレームごとの介入フラグを含む通常のエピソードであるため、変換なしで元のデータセットと構成されます。

ステップ 6 の詳細: チェックポイントからの継続が本当に意味するもの

基本モデルからミックスをトレーニングするのは機能しますが、前のラウンドを捨て、完全な実行のコストがかかります。前から継続する チェックポイント はより速く、通常はより良い。また、フレーズが示唆するよりも制限されています。

重み初期化はオプティマイザー レジューム ではない

重みのみのチェックポイントはパラメーターのみを含み、それ以外は何もありません。それを読み込むと、次の実行は基本モデルより良い開始点が得られますが、オプティマイザー モーメント、学習レート スケジュール位置、データ順序はすべてゼロから始まります。継続実行の開始時に損失スパイクが予想され、それを失敗として読み取らず、ラウンドをレジュームと呼ばないでください。ウォーム スタートです。

ポリシーサイズGPU ティアアクション ステップあたりの推論データセット形式それを試す価値がある前のエピソード
GR00T N1.7約 3 B、ファインチューニング中にトレーニングされた約 40 MA100 80 GB または H100 80 GB約 152 msLeRobot v2.0 または v2.150
GR00T N1.5約 3 BA100 80 GB または H100 80 GB約 165 msLeRobot v2.0 または v2.150
Pi0.5PaliGemma バックボーン上の約 3 BA100 80 GB または H100 80 GB約 485 msLeRobot v3.050
SmolVLA約 450 MRTX 4090 またはその他の 24 GB カード約 245 msLeRobot v3.030
ACT約 80 M、スクラッチからトレーニングRTX 4090 またはその他の 24 GB カード約 20 msLeRobot v3.050

レイテンシは DAgger ループ内で複合し、デモ中には複合しません: アクション ステップあたり約 485 ms で、腕がためらったため、間違っていなかったため、テイクオーバーしています。ためらい修正は有用なトレーニング データではありません。最終的な成功率を追求するのではなくデータで反復している場合は、高速モデルで反復します。Shukor ら は SmolVLA が単一の GPU でトレーニングし、非同期推論スタックを使用してコンシューマー GPU または CPU にデプロイするように設計されていることを説明しています。これにより、アクション予測の実行を分離して、より高い制御レートを可能にします - テイクオーバー ループを応答性に保つプロパティ。

データセット形式も相互交換可能ではありません。GR00T は LeRobot v2.0 または v2.1 を使用し、Isaac-GR00T リポジトリはその入力を追加の様式記述ファイルを含む LeRobot v2 形式のフレーバーとして説明しています。ここでより新しいトレーナーは v3.0 を期待しています。間違ったバージョンで構成された混合は、不正なポリシーを生成するのではなく、読み込み時に失敗します - より優れた失敗モード、依然として無駄なキュー スロット。データセット ドキュメント は各トレーナーが使用する形式をリストしています。

ループ、簿記はすでに完了しています

リーダー アーム、キーボード、またはスライダーでのテイクオーバー。フレームごとの介入マーキング。修正または評価として実行を提出します。ソースごとに明示的なエピソード選択を含む混合データセットを構成します。基本モデルではなくチェックポイントからトレーニングを継続します。あなたの決定のままになるのは、どの実行が修正としてカウントされるか、何が混合に入るか、いつ介入率が低下を停止したかです。

DAgger ループがどのように配線されているかを見る

ラウンドを無駄にする 4 つの方法

1. 修正のみでトレーニングする

最も一般的な失敗と最も魅力的なショートカット。修正のみのデータセットはほぼ完全にタスクの難しい中央部で、アプローチと撤退が欠落しています。ポリシーは難しい部分で改善され、そこに到達する方法を忘れます。集約はメソッドの実装詳細ではなく、メカニズムです: 古いデータはその動作の残りを適切な場所に保ち、修正がその一部を移動させます。

2. ラウンド間でカメラを移動する

ラウンド間で 2 cm シフトするカメラは、開始したポリシーより悪いポリシーを生成し、診断に 1 日かかります。ここのすべての VLA は画像を条件としています。ジョイント状態だけではオブジェクトがどこにあるかを明確にしません。最初のラウンドの前にセットアップを写真に撮り、その後の各前にその写真をチェックしてください。

3. ハンドオーバー アーティファクトをトレーニングに許可する

上記で取り上げられており、見えないため、リストにあります。症状は、前のラウンドのオペレーターが引き継ぐ正確な場所で、秒の一部間停止するポリシーです。それはためらいのように見えます。それは模倣です。

4. ウォーム スタートをレジュームと呼ぶ

オプティマイザー状態が引き継がれたと思う場合、初期損失スパイクはバグとして読まれ、破損したデータを探します。オプティマイザーが新しく開始したことを知っている場合、スパイクは予期されており、その後に何が来るかを確認します。同じ数値、反対の結論。

ラウンドの測定

人間ゲート付きループの測定は、介入率です: コントロール中に記録されたフレームを実行の総フレーム数で割ったもの。それはテイクオーバー ステータスにあり、ラウンドが質問に答える唯一の数値です。トレーニング損失は、ポリシーが改善されたかどうかに関係なく低下します。成功率はバイナリで、机のアームが生成するサンプル サイズでノイズが多い。介入率は連続的であり、ポリシー自体が引き起こした状態で測定され、ポリシーが必要とするにつれて減少します。

同じ条件下で記録されたラウンド全体でのみ比較してください。完全な論証と、2 回以上のラウンドを生き残る評価セットを構築する方法は、次の場所にあります DAgger ループの測定に関する記事。ラウンド 1 は現実的には実行可能性テストです: テイクオーバーがハードウェア上で機能すること、修正がそのフラグで着地すること、および継続実行が指定したチェックポイントを読み込んだことを確認しています。ラウンド 2 と 3 は、レートが動き始める場所です。ラウンド 4 までに移動していない場合、問題は DAgger の上流にあります。

ラウンドごとに書き留める後で重要な理由
駆動されたチェックポイントこれがないと、改善をミックスに起因させることはできません
テイクオーバーに使用される入力モードキーボード修正はリーダー修正より粗く、データに表示されます
実行の数と各実行がどのようにトリアージされたかラウンドに重要な十分な修正があったかどうか
実行ごとの介入率と平均ループの進行メトリック
ソースごとの正確なエピソード選択ラウンドを再現または元に戻す唯一の方法
ウォーム スタートまたは新しいトレーニング1 週間で見る損失曲線を説明します

まだチェックポイントがない場合

ループには入るポイントがありません。最初のデータセットを記録し、最初のポリシーをトレーニングし、実行します - 記録トレーニング および ポリシーを実行する そのパスをカバーしています。記録クライアントは ダウンロード ページ、GPU ティアと時間ごとのレート 価格ページ、および使用可能なエピソードがで見えるもの SO-100 データ収集ガイド。修正の前にデモンストレーションを正しく取得します: DAgger は修復メカニズムであり、ほぼ正しかったものではるかに優れた機能を果たします。

リーダー アームなしで DAgger ループを実行できますか?

はい。[テイクオーバー] を押すとき、キーボードまたはスライダー入力を選択します: テイクオーバーは即座かつ手動で、調整する 2 番目のアームはありません。キーボードは、サーバーがジョイントあたり 2 度、グリッパー用 4 度でハード クランプする相対ナッジを送信します。スライダーは絶対ターゲットを送信し、サーバーはコール ごとに最大 6 度移動しながら、インターフェイスはストリーミングを続けます。アクション列と介入マーキングはリーダー モードと同じであるため、修正はデータセットで区別がつきません。

1 ラウンドには何個の修正が必要ですか?

防御可能な普遍的な数値はなく、フレーム数はエピソード数より重要です。作業ルールは、修正は混合で失われてはいけません: 200 個のオリジナル エピソードと 3 つの修正エピソード を使用して、何も移動しません。同じレスキューの 3 回の繰り返しではなく、複数の開始構成から失敗する動作をカバーする修正を目指します。

修正のみでのトレーニングはなぜそんなに悪い考えですか?

修正はほぼ完全にタスクの難しい中央部だからです。アプローチ、調整、撤退が欠落しているため、ポリシーはすでにうまくしたことを失い、修正した部分で改善されます。古いデータを保持して追加することは、オプションの機能ではなく、メカニズム自体です。

チェックポイントから継続すると、以前のトレーニング実行が再開されますか?

いいえ。重みのみのチェックポイントはパラメーターのみを復元し、他には何もありません: オプティマイザー モーメント、学習レート スケジュール位置、データ順序が新しく開始されます。ウォーム スタートであり、初期損失スパイクは症状ではなく予期されます。1 週間後に曲線を正しく読むことができるように、実際に実行した 2 つのどちらかを書き留めてください。

介入率が低下しない場合はどうなりますか?

ラウンドの追加を停止します。一定レートは、修正があなたが思うことを教えていないことを意味します。通常の原因は上流にあります: カメラが移動した、修正は回避データになるには遅く開始した、ハンドオーバー フレームはトレーニング セットにあります、またはタスクはポリシーが実際に取得する観測から不確定です。

これのいずれも解決された問題ではなく、ワンクリックでもありません。インタラクティブな模倣学習は、その質問 (いつ介入するか、人間が何をしたかをどのように加重するか、古いデータをいくら保持するか) に解決された答えがないため、活発な研究分野です。Celemin ら による調査は、何が開いたままかを示しています。ループが持つのは、数百ユーロのコストがかかるハードウェアで慎重に実行された場合、測定可能な収束です。セットアップをフリーズし、早期に介入し、誠実にトリアージし、慎重に混合し、毎回介入率を記録します。

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started