前回収集したデータセット MakotoIto/so101_placeeraser8 を使って、ACT ポリシーの学習を Google Colab(ブラウザ)で試した記録。

ポリシーモデルの選択

LeRobot で試せる主なポリシーモデルを以下にまとめました。 パラメータ数と Colab 無料枠(T4 GPU / 16GB VRAM)での学習時間の目安も AI で調査して記載しました。

モデル パラメータ数 T4 目安(5000 steps) 特徴
ACT 約 30M 約 45 分 軽量・高速。模倣学習の入門に最適
Diffusion Policy 約 20M 約 60 分 拡散モデルで滑らかな動作を生成
SmolVLA 約 550M 約 4〜5 時間 言語指示対応の VLA モデル。A100 推奨
π₀ 約 3.3B × (VRAM 不足) PaliGemma 3B + Gemma 300M 行動エキスパート。フローマッチング
π₀.₅ 約 3.3B × (VRAM 不足) π₀ の改良版。AdaRMS 条件付け・より長いコンテキスト対応

T4 は A100 と比較して約 3〜4 倍遅い。SmolVLA の 20000 steps は T4 で 15〜20 時間かかる見込みで、無料枠での完走は難しい。

本命は、Physical Intelligence が出している Pi0.5 ですが、お金をかけないと無理そうです。

ここでは最も軽量な ACT(Action Chunking Transformer) (模倣学習)を使って学習の流れを確認しました。


使用環境

項目 内容
実行環境 Google Colab(ブラウザ)/ T4 GPU → 後半課金して L4 使用
データセット MakotoIto/so101_placeeraser8(50エピソード)

ノートブックの取得

公式ノートブックをブラウザで直接開いて使いました。 いろいろ試しましたが、この方法が一番安心・安定でした。


LeRobot のインストール(セル1)

!git clone https://github.com/huggingface/lerobot.git
!apt-get install ffmpeg
!cd lerobot && pip install -e ".[train, dataset]"

Weights & Biases(セル2)

学習進捗をブラウザのダッシュボードで確認できるサービス。任意なのでスキップした。


HuggingFace ログイン(セル3)

HuggingFace にアクセスできるようにトークンを登録する:

!hf auth login

実行すると入力フォームが表示されるのでトークンをペーストして Enter。 または、トークンを引数で直接渡す方法でも動く:

!hf auth login --token hf_xxxxx

トークンは huggingface.co/settings/tokens で Write 権限付きで発行した。


GPU 確認

Colab のページの右上から GPU を選べるのだが、本当に選択されているか次のコマンドで確認。

import torch
print(torch.cuda.is_available())   # True
print(torch.cuda.get_device_name(0))  # NVIDIA T4, L4, A100 など表示される

学習実行(セル4)

実際に使ったコマンド

まずは 5000 ステップから。T4 で 45 分でした。

!lerobot-train \
  --policy.type=act \
  --policy.device=cuda \
  --policy.repo_id=MakotoIto/act_placeeraser8 \
  --dataset.repo_id=MakotoIto/so101_placeeraser8 \
  --batch_size=8 \
  --steps=5000 \
  --output_dir=outputs/train/my_act_1 \
  --job_name=my_act_training \
  --wandb.enable=false \
  --save_freq=1000

設定値

パラメータ 説明
--policy.type act ACT ポリシーを使用
--policy.device cuda GPU を使用
--policy.repo_id MakotoIto/act_placeeraser8 モデルの Hub 保存先
--dataset.repo_id MakotoIto/so101_placeeraser8 学習データセット
--batch_size 8 ACT のデフォルト。メモリエラー時は下げる
--steps 5000 学習ステップ数
--save_freq 1000 1000ステップごとにローカル保存

追加学習

ローカルのチェックポイントから再開するコマンド

5000 stepsでも動きましたが、若干精度が悪い気がしたので、結果15000 steps まで学習させました。

ローカルにチェックポイントが残っている場合は --resume=true--config_path で再開できる:

!lerobot-train \
  --config_path=outputs/train/my_act_1/checkpoints/last/pretrained_model/train_config.json \
  --resume=true \
  --save_freq=1000
  • --config_path には前回の学習ディレクトリ内の train_config.json を指定する。
  • --resume=true を指定するとステップ数が中断した時点から継続される(--policy.pretrained_path とは異なる)。
  • --save_freq は上書き指定できる。前回より小さい値にしてこまめに保存するのがおすすめ。

学習完了後:ロボットで推論

モデルが MakotoIto/act_placeeraser8 として Hub に保存されたら、ローカルで推論を実行できる。最初に表示している動画は、15000 steps の学習後にこれを実行した結果です。

lerobot-rollout `
  --strategy.type=base `
  --policy.path=MakotoIto/act_placeeraser8 `
  --robot.type=so101_follower `
  --robot.port=COM7 `
  --robot.id=my_follower_arm `
  --robot.cameras="{top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 15}, hand: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 15}}" `
  --task="Place the pink eraser on the white plate" `
  --duration=30

最後に

  • ACT 5000 steps は Colab の無料枠 T4 で可能。45 分くらい。
  • ただし、追加学習で 15000 steps まで学習させたら GPU の使用制限に達してしまったので、有料枠(100 Colab ユニット、1179円)を購入して続けました。
  • 推論時の動きは思ったよりも機敏だったのでうれしかったです。しかし、実は、学習データの取得と学習・推論のテストは何度も繰り返し、いろいろな試行錯誤の結果、このような結果を得たというのが本当のところです。