前回収集したデータセット 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円)を購入して続けました。
- 推論時の動きは思ったよりも機敏だったのでうれしかったです。しかし、実は、学習データの取得と学習・推論のテストは何度も繰り返し、いろいろな試行錯誤の結果、このような結果を得たというのが本当のところです。
コメントを残す