メインコンテンツまでスキップ

Diffusion Policy モデルのトレーニング

Diffusion Policy は動作シーケンスを条件付きのノイズ除去プロセスとしてモデル化し、連続的で滑らか、かつ複数の実行可能な軌道が存在する制御タスクに適しています。LeRobot が PyTorch 実装を提供しており、プラットフォームはモデル識別子 diffusion でこのポリシーを登録し、トレーニングフレームワークは LeRobot、入力は LeRobot v2 または v3 のデータセットです。

対象ロールと前提条件​

対象ロール​

役割利用シーン依存
アルゴリズムエンジニア連続軌道タスク向けに拡散ポリシーをファインチューニングトレーニングとデータセットのモジュール権限
プロジェクトマネージャー拡散ポリシーのトレーニングタスクの進捗と成果物を追跡トレーニングタスクの閲覧権限
データ提供者フィールドとフレームレートが一致したデータセットを提供データエクスポートのモジュール権限

前提条件​

項目要件
データセットバージョンLeRobot v2 または v3
トレーニングフレームワークLeRobot
データセットフィールドmeta/info.json の画像・状態・動作フィールドが完全で、フィールド名がトレーニング設定と一致
時系列の整合fps が実際の記録と一致し、教師信号のずれを防ぐ
計算リソースGPU。VRAM 要件は batch_size、画像解像度、観測ステップ数で変化

トレーニングタスクの作成とパラメータ​

手順​

  1. トレーニングページで新しいトレーニングタスクを作成し、モデルに diffusion を選択します。
  2. データソースとデータセットバージョン v2 または v3 を選択します。
  3. トレーニングフレームワークに LeRobot を選択します。
  4. 共通パラメータとポリシーパラメータを設定します。
  5. 計算リソースを選択し、タスクを送信します。

トレーニングパラメータ​

共通パラメータ:

パラメータ説明既定値取り得る範囲
batch_sizeバッチサイズ1≥ 1
stepsトレーニングステップ数10000≥ 1
seed乱数シード1000整数
num_workersDataLoader の worker 数4≥ 1
eval_freq評価頻度(ステップ単位)1000≥ 1
log_freqログ頻度(ステップ単位)100≥ 1
save_checkpointチェックポイントを保存するかtrueブール
save_freqチェックポイントの保存頻度(ステップ単位)5000≥ 1

ポリシーパラメータ(policy. を接頭辞とする):

パラメータ説明既定値取り得る範囲
policy.n_obs_stepsポリシーに入力する観測ステップ数2正整数
policy.horizon動作予測の長さ16正整数
policy.n_action_steps1 回の呼び出しで実行する動作ステップ数8正整数
policy.vision_backbone視覚バックボーンresnet18resnet18、resnet34、resnet50、resnet101、resnet152
policy.pretrained_backbone_weightsバックボーンの事前学習済み重み空パスまたは空
policy.crop_shapeバックボーン前の画像切り抜きサイズ[84, 84]2 要素の組
policy.crop_is_randomトレーニング時にランダムに切り抜くかtrueブール
policy.use_group_normバックボーンの BatchNorm を GroupNorm に置き換えtrueブール
policy.spatial_softmax_num_keypointsSpatialSoftmax のキーポイント数32正整数
policy.use_separate_rgb_encoder_per_cameraカメラごとに独立した RGB エンコーダーを使うかfalseブール
policy.down_dimsUnet の各ダウンサンプリング段の特徴次元[512, 1024, 2048]3 要素の組
policy.kernel_sizeUnet の畳み込みカーネルサイズ5正整数
policy.n_groupsUnet の畳み込みブロックの GroupNorm グループ数8正整数
policy.diffusion_step_embed_dim拡散タイムステップ埋め込みの次元128正整数
policy.use_film_scale_modulationUnet の条件変調に FiLM を使用trueブール
policy.noise_scheduler_typeノイズスケジューラの種別DDPMDDPM、DDIM
policy.num_train_timesteps順方向拡散のステップ数100正整数
policy.beta_schedulebeta スケジュールの方式squaredcos_cap_v2文字列
policy.beta_start最初の順方向拡散ステップの beta0.0001浮動小数点数
policy.beta_end最後の順方向拡散ステップの beta0.02浮動小数点数
policy.prediction_typeUnet の予測対象epsilonepsilon、sample
policy.clip_sample予測サンプルをクリップするかtrueブール
policy.clip_sample_rangeクリップ範囲の大きさ1.0浮動小数点数
policy.num_inference_steps推論段階の逆方向拡散ステップ数空正整数または空
policy.do_mask_loss_for_paddingゼロ埋めした動作に対する損失をマスクfalseブール
policy.drop_n_last_frames末尾で破棄するフレーム数7整数
policy.optimizer_lrオプティマイザの学習率1e-4浮動小数点数
policy.optimizer_betasAdam オプティマイザの beta[0.95, 0.999]2 要素の組
policy.optimizer_epsAdam オプティマイザの epsilon1e-8浮動小数点数
policy.optimizer_weight_decay重み減衰1e-6浮動小数点数
policy.scheduler_name学習率スケジューラcosine文字列
policy.scheduler_warmup_stepsスケジューラのウォームアップステップ数500非負整数

データ経路を初めて検証する場合は、batch_size と steps を小さな値に設定し、フィールドの読み取りと損失の低下を確認してから、完全なトレーニングに拡大します。

結果の確認​

トレーニングの監視​

プラットフォームは LeRobot のトレーニングログから次の指標を解析します:

指標意味
lossトレーニング損失
stepトレーニングステップ
sample使用済みサンプル数
episode使用済み episode 数
epochトレーニングエポック
gradient_norm勾配ノルム
learning_rate学習率
update_time1 ステップの更新時間
data_time1 ステップのデータ読み込み時間

確認チェックリスト​

確認項目合格基準
チェックポイント一覧トレーニング詳細ページに save_freq に従ってチェックポイントが表示される
損失カーブloss がトレーニングに伴って低下
ログトレーニングログに継続的なエラーがない
実機またはシミュレーション評価同じ初期条件で複数回の rollout を行った結果が安定

エラー時の対処​

現象考えられる原因対処責任者
フィールドキーの不一致meta/info.json の画像・状態・動作フィールド名がトレーニング設定と一致しないフィールド名と fps を確認して統一データ提供者
VRAM 不足batch_size が大きすぎる、または画像解像度と観測ステップ数が高すぎるbatch_size を下げ、まず steps を短くして検証トレーニング設定担当
損失が低下しない学習率またはデータウィンドウの設定が不適切policy.optimizer_lr、policy.horizon、policy.n_obs_steps を確認アルゴリズムエンジニア
元論文の結果と一致しないLeRobot の実装、データ読み取り、前処理に違いがあるLeRobot の実装を基準にするか、元の実装に切り替えアルゴリズムエンジニア

関連ページ​

ページ用途
モデルトレーニングトレーニングタスクの作成、監視、割り当て
LeRobot データセットとトレーニングデータエクスポートとトレーニングの概要
LeRobot v2 と v3 の形式差異2 つのデータ形式の違いと移行
データエクスポートLeRobot トレーニングパッケージの生成