250エピソード分の失敗を経て、SO-101がようやく黄色いブロックを掴んだ話
この動画から
無加工・カットなし。SO-101ロボットアームが、学習済みモデル(LeRobotのACTポリシー)の推論だけで黄色いレゴブロックを掴み、白いケースに入れています。
派手な演出はありませんが、自分にとってはこれが最初の「ちゃんと掴めた」瞬間でした。この記事では、そこに至るまでの失敗と、今回何を変えたのかを書きます。
背景:M1 Macで250エピソード溶かした話
以前、M1 Mac環境でSO-101の模倣学習(imitation learning)を試していました。データセットは2つ収集しています。
- ブロックの位置・白い箱の位置、両方を毎回変えて収集したデータセット
- 箱の位置を固定し、ブロックの位置だけを変える「変数を絞った」データセット(
narrow_v1と命名)
合計で250エピソード分を収集しましたが、どちらのデータセットで学習しても、実用的に掴めるところまでは到達しませんでした。動きがカクカクして安定しない、という状態です(自分のブログ記事には途中経過として200エピソードまでの記録が残っています)。
当時の暫定的な理解は、「変数(ブロックの位置と箱の位置)が2つとも動くと、学習に必要なデータ量が膨大になる」というものでした(これは自分で検証した話ではなく、模倣学習の一般論として聞いた話です)。ただし実際には、変数を絞ったnarrow_v1データセットで学習しても、M1 Mac上ではやはり掴めませんでした。つまり「変数を絞ればそれだけで解決する」という単純な話ではなさそうだ、というのがこの時点での実感です。
M1 Macでの推論は8Hz程度にとどまっており、制御ループの目標である30Hzに全く届いていませんでした。ロボットの動きがカクカクしていたのは、これも一因だったと考えられます。
今回変えたこと
まず、PCをBTO PC(Ryzen 7 9800X3D / RTX 5060 Ti 16GB)に新調しました。
データ収集の設計は、narrow_v1のときと同じ「変数を絞る」方針を踏襲しています。白いケースの位置は固定し、黄色いレゴブロックの位置だけを変える形です。ただし、これはM1 Mac時代のnarrow_v1データセットの使い回しではなく、新しいPC・新しい環境で完全に新規収集したデータです。
- タスク:黄色いレゴブロックを、白いケースに入れる
- データ:50エピソード(新規収集)
- ポリシー:LeRobotのACT(Action Chunking Transformer)
- 学習ステップ数:20,000
学習時のlossは6.506(step 200)→0.119(step 20000)まで低下し、大きな暴れもなく収束しました。
結果
学習したポリシー(emboss369/act-yellow-lego-to-white-case)をSO-101フォロワーアームに実際に推論させたところ、掴む→運ぶ→白いケースに入れる、までタスクを完遂しました。M1 Mac時代の250エピソード×2データセットに対して、新しいPC+50エピソードでの成功です。動きにもカクつきがなく、滑らかでした。
なぜ滑らかになったのか、正直まだ断定はできません。GPUの推論速度が上がったからかもしれませんし、ACTポリシー自体が行動チャンキング(先読みした一連の動作をまとめて出力する仕組み)を持っているため、そもそも滑らかになりやすい設計だからかもしれません。今回のログには「制御ループが目標30Hzに対して5Hzしか出ていない」という警告が起動直後に1回だけ出ており、これが一時的なウォームアップだったのか、実は最後まで遅かったのかもログだけでは判別できていません。この点は今後の宿題です。
大事な限界:まだ「掴めた」だけで「汎化した」わけではない
ここが今回いちばん書いておきたいことです。
実際に色々な位置にブロックを置いて試したところ、学習データを収集したときにブロックを置いていた場所の付近でしか、安定して掴めませんでした。それ以外の、置いたことのない場所では掴めません。
つまり今回の成功は、「SO-101が黄色いブロックを認識して掴む」という一般的なタスクを解けているのではなく、「学習データの範囲内の、限られた位置でだけ再現できている」状態です。動画だけを見ると汎化できているように見えるかもしれませんが、そうではありません。
次にやること
次のデータ収集では、ブロックの配置位置に意図的なバリエーションを持たせて記録し、位置に対する汎化が実際に改善するかを検証する予定です。
日々の作業ログはGitHubのBuild Logに残しています。興味があれば覗いてみてください。
- GitHub(Build Log):https://github.com/emboss369/project-physical-ai
- YouTube:https://www.youtube.com/channel/UCQk_iKo7elYMTtI1qWxS3Gg