domrachev03's picture
Trained SimDist world model: 24.8M steps, 90k updates, latent_dynamics 0.0278
1c5b1f4 verified
Raw
History Blame Contribute Delete
4.46 kB
defaults:
- system: go2
- model: quadruped_world_model
- loss: world_model
- heads: all
- _self_
run_name:
data:
dataset_name:
num_train_workers: 8
num_test_workers: 4
prefetch_factor: 2
# Reference dataset size the run's "realised paper-scale fraction" is taken
# against, logged as part of the run fingerprint. It is a config value rather
# than a constant in code because "the paper's scale" is a claim about a
# specific table, and a claim like that should be visible and editable.
paper_scale_steps: 25000000
training:
num_epochs: 2
max_steps: # will train until num_epochs, or max_steps (if given), whichever is first
eval_interval: 10000 # evaluates and checkpoints at this interval
learning_rate: 0.0002
warmup_steps: 10000
decay_steps: 400000
end_learning_rate: 0.0001
batch_size: 512
training_data_ratio: 0.998 # portion of dataset to use for training; the rest is used for evaluation
seed: 42
# Clip gradients to this global norm. Null is upstream's and the paper's
# behaviour: `grad_norm` is logged, never applied. See bead UWLab-436.19 --
# the manipulation run diverges without it, and clipping bounds the rate of
# the runaway while `model.encoder.latent_norm` removes its cause.
grad_clip_norm:
checkpoint:
# create a checkpoint in this directory with the given run name, if resume_checkpoint is not set
enabled: True
# keeps this many most recent checkpoints; leave blank to keep all
max_to_keep: 3
# if non-empty, resume from this checkpoint
resume_checkpoint:
# Read-only diagnostics run at every `training.eval_interval`. Nothing under
# this block can change the training gradient: every forward it does is
# `deterministic=True` and none of it owns an optimizer over the world model.
eval:
# Held-out batches folded into the streaming metrics (reward/value r2, latent
# rollout error, BC error, latent variance). Bounded so the diagnostics cost
# does not scale with the size of the test split.
max_batches: 8
# Points kept for the predicted-vs-actual next-latent scatter.
scatter_points: 5000
episodes:
# The episode-level probe: `eval/value_auc_success` and the paper's Fig. 5
# curves. Disables itself with a printed reason when the processed dataset
# has no `episode_ids.hdf5` (the quadruped processor writes none).
enabled: True
# Whole episodes to reserve from BOTH splits, so the AUC has no step-level
# leak. 0 keeps upstream's chunk-level `random_split` bit-identical, at the
# cost of an AUC measured on episodes the model has seen other steps of.
holdout: 0
num_auc_episodes: 32
num_curve_episodes: 4
# Where in an episode the "matched timestep" sits. Matched by PROGRESS, not
# by absolute step: a successful insertion terminates early, so comparing at
# absolute step k would measure episode length rather than value.
match_frac: 0.5
# Every n-th held-out chunk along a Fig. 5 curve.
curve_stride: 5
batch_size: 32
success:
# The processed dataset carries no success flag, so the label is derived.
# `episode_return` | `final_reward`.
metric: episode_return
# Null splits at the median of the probed episodes -- needs no knowledge
# of the reward scale and balances the classes, but is not comparable
# across runs. Set an absolute value once a generation run's reward scale
# is known.
threshold:
diagnostics:
# PNG + npz written to <checkpoint_dir>/<dirname>/step_<N>/ at every eval.
enabled: True
dirname: diagnostics
decoder_probe:
# OPTIONAL and VISUALISATION ONLY (paper Fig. 9). A separate MLP with its
# own optimizer, fed stop_gradient latents. It is never a training loss:
# paper Table I measures reconstruction-as-an-objective at 0.90 -> 0.32
# manipulation success.
enabled: False
hidden_size: 128
learning_rate: 0.001
steps_per_eval: 20
wandb:
# METRICS ONLY. No artifacts, no checkpoint upload, no source snapshot --
# checkpoints stay on local disk and are moved to Drive/HF by hand at the end.
# Enforced in code by simdist/utils/wandb_utils.py and by
# tests/test_wandb_metrics_only.py, which fails if an upload API appears
# anywhere in the package.
log: False
project: simdist_train_model
entity:
# online | offline | disabled
mode: online
# Local wandb run directory; null uses wandb's default (./wandb).
dir: