ACT が両手作業に優れている理由

ACT (Action Chunked Transformers) は、もともと両手操作の研究のために特別に開発されました。 その核となる洞察 — シングルステップのアクションではなく、将来のアクション (チャンク) のシーケンスを予測することで複合エラーが削減されるということ — は、一方のアームの軌道における小さなエラーがもう一方のアームの実行でカスケード エラーを引き起こす可能性がある両手タスクの場合に特に価値があります。

アクションのチャンク化メカニズムにより、ポリシーに計画期間が効果的に与えられます。 ACT は、50Hz タイムステップごとに単一のジョイント コマンドをコミットするのではなく、100 ステップ先を計画して実行をスムーズにします。 ハンドオフ タスクの場合、これは、ポリシーが各フレームに個別に反応するのではなく、計画されたシーケンスの一部としてハンドオフ ポイントに向かう両アームの接近を「確認」できることを意味します。 経験的には、これにより、手動データセットに対する非チャンク化アプローチと比較して、転送中の失敗率が半分になります。

1 つの注意: ACT は、データセット内のデモンストレーションが、 一貫した戦略。 異なるデモが根本的に異なるハンドオフの実行方法 (開始するアームが異なる、ハンドオフの高さが異なる) を示している場合、CVAE コンポーネントは単一のスタイルをエンコードするのに苦労します。 100 個のデモはすべて同じモーション戦略を実行する必要があります。

訓練コマンド

ソース ~/dk1-env/bin/activate python -m lerobot.scripts.train \ --ポリシー タイプの行為 \ --dataset-repo-id cube-handoff-v1 \ --root ~/dk1-datasets \ --output-dir ~/dk1-policies/cube-handoff-v1 \ --config-overrides \ ポリシー.action_dim=14 \ ポリシー.chunk_size=100 \ ポリシー.n_action_steps=100 \ ポリシー.dim_feedforward=3200 \ ポリシー.n_heads=8 \ ポリシー.n_encoder_layers=4 \ ポリシー.n_decoder_layers=7 \ training.num_steps=80000 \ training.eval_freq=5000 \ training.save_freq=5000 \ トレーニング.バッチサイズ=16 # policy.action_dim=14 tells ACT the action space is 14-dimensional (6+6 joints + 2 grippers) # Run this before sleeping — checkpoints save every 5k steps
実践的なトレーニング時間に必要な GPU: RTX 3080 (10GB) では、80,000 ステップに約 90 分かかります。 RTX 4090 では約 50 分。 CPU では 10 ~ 14 時間かかると予想されます。 を使用します。 --device cuda GPU がある場合はフラグを立てます。 クラウド GPU オプション (Lambda Labs、Vast.ai) は、必要なハードウェアに対して 1 時間あたり約 0.50 ~ 1.50 ドルかかります。

両手トレーニングカーブの読み取り

双腕トレーニング曲線は、重要な点で単腕とは異なります。アクション スペースが 2 つあり、ポリシーはそれらを調整する方法を学習する必要があります。 損失曲線のこれらのパターンに注意してください (次の TensorBoard で表示) tensorboard --logdir ~/dk1-policies/):

L_reconstruction (全体的なアクション損失)

約 3.0 から 0.4 未満まで 60,000 ステップ減少するはずです。 40,000 ステップ後の 0.7 を超えるプラトーは、データセットの品質に問題があることを示しています。ハンドオフのタイミングまたは位置のばらつきが大きすぎる可能性があります。

L_kl (CVAE 正則化)

0 付近から始まり、5 ~ 15 までゆっくりと上昇します。 30 を超えると、CVAE はコンパクトなスタイルの埋め込みを見つけるのに苦労しています。 これは多くの場合、デモンストレーションの行動の多様性が多すぎることを意味します。 一貫性の低い下位 20% のデモを選別して再トレーニングすることを検討してください。

アクションエラー: 左と右

アームごとのアクション エラー ログを有効にすると ( training.log_per_action_dim=true オーバーライド)、左右のアクション次元の個別の損失曲線が表示されます。 2 つの間の大きな継続的なギャップは、一方のアームのデモンストレーションが他方のアームよりも一貫していることを示しています。遅れているアームのユニット 4 品質チェックリストを確認してください。

バイマニュアル固有のハイパーパラメータ

パラメータ デフォルト(シングルアーム) DK1 バイマニュアル推奨 なぜ
action_dim 7 14 2 つの 6-DOF アーム + 2 つのグリッパー = 14 のアクション寸法
chunk_size 100 100 同じ — アクションのチャンク化はすでに両手調整のタイムスケールに適しています
dim_feedforward 3200 3200 変更は必要ありません - より大きなアクションスペースは、トランスフォーマーの幅ではなく、アクションヘッドによって処理されます。
num_steps 50000 80000 両手調整を確実に収束させるには、より多くのトレーニング手順が必要です。 80k は 100 個のデモの実際的な最小値です
batch_size 32 16 より大きな両手データセット サンプル (デュアル カメラ フィード) を GPU メモリに収めるために縮小されました。
kl_weight 10 10 デフォルトでも問題なく機能します。 30k ステップ後に L_kl がゼロ付近に留まる場合にのみ 20 に増加します (CVAE は学習しません)

チェックポイントの選択

5,000 ステップごとにチェックポイントを保存 (training.save_freq=5000)。 最後のチェックポイントが最適であるとは考えないでください。 バイマニュアル ポリシーはステップ数が多い場合にオーバーフィットする可能性があります。ポリシーはトレーニング デモンストレーションを完全に再現することを学習しますが、評価中に遭遇する現実世界のわずかな変動に対する一般化が失われます。

次のステップでチェックポイントを選択します。 L_reconstruction プラトーまたはわずかに増加し始める前に最小値に達しました。 通常、これは、100 デモのバイマニュアル データセットの場合、60,000 ~ 80,000 ステップの範囲になります。 2 つのチェックポイント (最小損失チェックポイントと最後のチェックポイント) をデプロイし、ユニット 6 での実際のパフォーマンスを比較します。

ユニット 5 が完了したら...

トレーニングは 80,000 ステップを完了し、チェックポイントは次の場所に保存されています。 ~/dk1-policies/cube-handoff-v1/。 決勝戦 L_reconstruction 値は 0.5 未満です。 損失曲線に基づいて最適なチェックポイントを特定しました。 L_kl カーブが実行時と同じように動作する理由がわかりました。 ユニット 6 で実際のハードウェアに展開する準備が整いました。キューブ ハンドオフの目標成功率は 60% 以上です (両手操作は片手操作よりも難しく、これは最初の実行で強力な結果です)。