よくある質問
なぜ前処理をデータローダーに入れないのですか?
Section titled “なぜ前処理をデータローダーに入れないのですか?”プロファイリングではデータ前処理は全体の1%未満の時間しかかかりません。Framework内に前処理を保持することで、モデル固有の処理がデータローダーに影響を与えることなく実現できます。
Qwen2.5-VL以外のバックボーンを使用できますか?
Section titled “Qwen2.5-VL以外のバックボーンを使用できますか?”はい。新しいビジョンモジュールと言語モジュールを実装し、Framework内で組み合わせてください。Frameworkが生のアクションデータを処理するため、バックボーンの入れ替えは容易です。
ビジョンタワーの抽象インターフェースがないのはなぜですか?
Section titled “ビジョンタワーの抽象インターフェースがないのはなぜですか?”VLMをベースモデルとして使用し、VLMには独自のネイティブビジョンタワーが含まれることを想定しているため、追加の抽象インターフェースは不要です。
ターミナルからパラメータをオーバーライドまたは追加できますか?
Section titled “ターミナルからパラメータをオーバーライドまたは追加できますか?”はい。StarVLAは OmegaConf.load(args.config_yaml) を単一の設定エントリとして使用します。CLIから値をオーバーライドできます:
accelerate launch \ --config_file starVLA/config/deepseeds/deepspeed_zero2.yaml \ --num_processes 8 \ starVLA/training/train_starvla.py \ --config_yaml ./starVLA/config/training/starvla_cotrain_oxe.yaml \ --framework.qwenvl.base_vlm Qwen/Qwen2.5-VL-7B-Instruct \ --framework.action_model.new_module ${module_name}framework.action_model.new_module はグローバル設定にキーを追加するだけで、その動作はFrameworkの実装で定義されます。
パラメータでVLMをフリーズできますか?
Section titled “パラメータでVLMをフリーズできますか?”はい。モジュールパスをカンマ区切りのリストで指定してください:
--trainer.freeze_modules "qwen_vl_interface.model.model.visual,dino_encoder"ヒント: print(your_model) を実行してモジュールパスを確認してください。実装は TrainerUtils.freeze_backbones にあります。
モジュールごとに異なる学習率を設定できますか?
Section titled “モジュールごとに異なる学習率を設定できますか?”はい。モジュールごとの辞書を使用してください:
trainer: learning_rate: base: 1e-05 qwen_vl_interface: 1.0e-05 action_model: 1.0e-04詳細は trainer_tools.build_param_lr_groups を参照してください。
チェックポイントからトレーニングを再開できますか?
Section titled “チェックポイントからトレーニングを再開できますか?”はい。設定で最新のチェックポイントパスを指定してください:
trainer: pretrained_checkpoint: path_to_steps_10000.pt reload_modules: "action_model"reload_modules を空にするとモデル全体がロードされます。StarVLAはAcceleratorのチェックポイント機構を使用して、オプティマイザの状態、学習率スケジューラ、その他のトレーニング状態を完全に保存・復元するため、トレーニングがシームレスに再開されます。
より小さなVLMでトレーニングする
Section titled “より小さなVLMでトレーニングする”Florence-2を使用する例:
accelerate launch \ --config_file starVLA/config/deepseeds/deepspeed_zero2.yaml \ --main_process_ip $MASTER_ADDR \ --main_process_port $MASTER_PORT \ --machine_rank $SLURM_PROCID \ --num_machines $SLURM_NNODES \ --num_processes=${TOTAL_GPUS} \ starVLA/training/train_starvla.py \ --config_yaml ./starVLA/config/training/starvla_cotrain_oxe.yaml \ --framework.name QwenGR00T \ --framework.qwenvl.base_vlm microsoft/Florence-2-large \ --run_root_dir ${run_root_dir} \ --run_id ${run_id} \ --wandb_project your_project \ --wandb_entity your_name注意: --framework.qwenvl は互換性のため、将来のリリースで統一される予定です。
GPU 1台でトレーニングできますか?
Section titled “GPU 1台でトレーニングできますか?”はい。--num_processes を1に設定し、per_device_batch_size を小さくし(例: 1-2)、gradient_accumulation_steps を増やして補ってください。1 GPU でのトレーニングはかなり遅くなりますが、完全に動作します。より小さなモデル(例: Qwen2.5-VL-3B)から始めることをお勧めします。
トレーニングにはどのくらい時間がかかりますか?
Section titled “トレーニングにはどのくらい時間がかかりますか?”データセットのサイズ、GPU数、モデルの規模によります。参考値:
- 8xA800 + Qwen2.5-VL-3B + Bridgeデータセット: 50kステップで約10-20時間。
- 1xRTX 4090 + Qwen2.5-VL-3B + 小規模データセット: 数日かかる場合があります。
まず is_debug: true で数百ステップの簡易動作確認を行い、その後フルトレーニングを開始することをお勧めします。
トレーニングをどのように監視しますか?
Section titled “トレーニングをどのように監視しますか?”StarVLAは2つのログ方法をサポートしています(YAML設定の trackers フィールドで指定):
- jsonl: トレーニングログがチェックポイントディレクトリの
log.jsonlファイルにJSON Lines形式で保存されます。スクリプトで解析・プロットできます。 - wandb: リアルタイムのオンラインモニタリング。設定に
wandb_entityとwandb_projectを記入すると、トレーニング開始後にメトリクス(損失曲線、学習率など)が自動的に wandb.ai にアップロードされます。
両方を有効にすることをお勧めします: trackers: [jsonl, wandb]。