🧪 新しいチュートリアルを公開中 — ロボットアームからセンサーまで
コンテンツへスキップ

ステージ5:モデル訓練(Linux) ​

本ステージでは収集したデータセットを用いてポリシー(ACT など)を訓練し、デプロイ可能なモデルを生成します。Linux は GPU 訓練に最適な環境です——CUDA 版 torch の依存関係が自動的に解決され、手動設定は不要です。


前提条件 ​

  • ステージ4:データ収集 を完了している

  • NVIDIA GPU(推奨)、CUDA ドライバ(nvidia-smi で確認可能)

  • データセットを記録済み(ローカルキャッシュで確認可能)


ステップ 1:GPU 環境の確認 ​

Bash
# CUDA ドライバの確認
nvidia-smi

# torch が CUDA を利用可能か確認
python -c "import torch; print('CUDA:', torch.cuda.is_available(), '| GPU:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')"

期待される出力:CUDA: True | GPU: <your_gpu_name>

⚠️ 注意(CUDA torch):CUDA: False の場合は、CPU 版の torch がインストールされています。CUDA 版を再インストールしてください:

Bash
# 公式ソース(海外ネットワーク)
pip install torch --index-url https://download.pytorch.org/whl/cu128

# 中国本土ネットワークでは阿里雲ミラーを優先
pip install torch --index-url https://mirrors.aliyun.com/pytorch-wheels/cu128

または CPU で訓練します(--policy.device=cpu、ただし速度は大幅に遅くなります)。

💡 ヒント:pip install -e ".[amazinghand]" は Linux では通常、GPU 版 torch を解決します(CUDA 環境が検出された場合)。そうでない場合は、上記のコマンドで再インストールしてください。


ステップ 2:訓練 ​

Bash
lerobot-train \
  --dataset.repo_id=soarm_amazing_hand_pick \
  --dataset.root=~/lerobot_data \
  --policy.type=act \
  --output_dir=outputs/train/soarm_amazing_hand_pick \
  --job_name=soarm_amazing_hand_pick \
  --policy.device=cuda \
  --wandb.enable=false \
  --policy.push_to_hub=false \
  --steps=60000

💡 説明:--dataset.repo_id と --dataset.root はステージ4 の記録時と完全に一致させる必要があります(repo_id=soarm_amazing_hand_pick、root=~/lerobot_data)。これでローカルデータセットを読み込め、HF ログインは不要です。


パラメータ説明 ​

パラメータ説明
--dataset.repo_idデータセット名(記録時と一致)
--dataset.rootデータセットのローカルパス(記録時と一致)
--policy.typeポリシーの種類。act が一般的な選択
--output_dir訓練の出力ディレクトリ(checkpoints、ログ)
--job_nameジョブ名(ログの識別用)
--policy.devicecuda(GPU)または cpu
--wandb.enable重みのログ。false で無効(wandb アカウント不要)
--policy.push_to_hubモデルを HF へプッシュするか。false はローカルのみ
--steps訓練ステップ数

訓練プロセスの説明 ​

  • checkpoints:各ステップで自動的に outputs/train/soarm_amazing_hand_pick/checkpoints/ に保存されます

  • ログ:ターミナルに loss などの指標をリアルタイム表示します

  • 所要時間:60000 ステップはコンシューマー向け GPU で通常数時間です(グラフィックカードによります)

⚠️ 注意 1(ステップ数の調整):--steps=60000 は ACT の典型的な値です。単純なタスクなら 30000 に減らし、複雑なタスクなら 100000+ に増やせます。loss の収束を観察してください。

⚠️ 注意 2(訓練中断からの再開):中断後に同じパラメータのコマンドを再実行すると、最後の checkpoint から再開します。

⚠️ 注意 3(wandb):loss 曲線を可視化したい場合は --wandb.enable=true を有効にできます(wandb login が必要)。デフォルトは無効です。

⚠️ 注意 4(ヘッドレスサーバー):SSH/ディスプレイなしのサーバーで訓練する場合は、GUI に依存しないようにしてください(訓練自体にディスプレイは不要です)。--display_data 関連の引数を使用する場合はディスプレイサーバーが必要です。

⚠️ 注意 5(バックグラウンド訓練):長時間の訓練では nohup ... & や tmux でプロセスを維持し、SSH 切断による中断を避けることを推奨します:

Bash
tmux new -s train
lerobot-train --dataset.repo_id=...
# Ctrl+B の後に D でデタッチ;tmux attach -t train で再入

本ステージを完了したら、ステージ6:デプロイと評価 に進みます。


トラブルシューティング ​

現象原因解決
CUDA: FalseCPU 版 torchCUDA 版 torch を再インストール
VRAM 不足(OOM)バッチサイズが大きすぎる--policy.batch_size=8 またはそれ以下
データセットが見つからないrepo_id/root が不一致記録時と --dataset.repo_id および --dataset.root が完全に一致するか確認
訓練中に SSH が切断プロセスが強制終了tmux/nohup でバックグラウンド訓練
wandb がエラー未ログイン--wandb.enable=false または wandb login