DynamicVLA R1Lite bread-bag policy โ€” 100k

DynamicVLA fine-tuned from hzxie/dynamic-vla-DOM for the R1Lite task pick up the bread bag. This is the completed 100,000-step checkpoint, with both arms represented as end-effector poses and gripper states.

Use the adapted DynamicVLA code. Both this model repository and the linked source-code repository are public. The upstream DOM simulation inference script assumes a different robot/action layout; use the R1Lite deployment server described below.

Files

  • model.safetensors: complete policy weights, including fine-tuned normalization buffers.
  • config.json: model architecture and action representation.
  • normalization.json: training-only statistics, split IDs, vector layout, and dataset hashes.
  • training_config.json: complete training configuration.
  • evaluation.json: held-out action error report.
  • requirements.txt, environment.json: dependencies and recorded package versions.
  • manifest.json: file sizes, SHA-256 hashes, and source-code commit.
  • LICENSE: original S-Lab License 1.0.

Download and serve

Run in the model environment from the linked source repository. The model can be downloaded without authentication.

from huggingface_hub import snapshot_download

snapshot_download(
    repo_id="2sin0/dynamic-vla-r1lite-bread-bag-100k",
    local_dir="runs/pretrained/r1lite-bread-bag-100k",
)
python scripts/serve_r1lite.py \
  --checkpoint runs/pretrained/r1lite-bread-bag-100k \
  --host 0.0.0.0 --port 5555

The server loads the checkpoint normalization buffers automatically. It does not need the original dataset. The SmolLM2 configuration/tokenizer used by the architecture must be available from Hugging Face or the local Hub cache.

Run dynamicvla_ros2_adapter_ee.py on the robot with configs/r1lite_ros2.yaml. The default adapter mode is dry_run: true. See the deployment guide for environment setup, ROS2 topics, command publication, and timing parameters. The server and adapter use a custom JSON/NumPy ZeroMQ protocol, not the GR00T RPC protocol.

Input and action contract

  • Cameras: observation.images.head_rgb, observation.images.left_wrist_rgb, observation.images.right_wrist_rgb; RGB uint8 from the native cameras.
  • History: two observations, offsets [-2, 0] at 31 FPS, approximately 64.5 ms apart.
  • Image preprocessing: torchvision uint8 resize to 216x384, then float /255; the model pads to 384x384 and applies its image preprocessing.
  • State: 20 dimensions, ordered [left_gripper, right_gripper, left_EE_xyz_rot6d(9), right_EE_xyz_rot6d(9)]. No joint positions are included.
  • Absolute EE coordinates: torso_link3, in meters. rot6d is the first two rows of the rotation matrix; ROS quaternions use xyzw.
  • Model action: 30 steps of relative SE(3), independently per arm, inverse(T_state_latest) @ T_action[k]; both grippers remain absolute, native 0โ€“100 units.
  • The deployment server converts predictions to absolute EE actions using T_state_latest @ T_relative[k]. Its output must not be converted a second time.
  • Typical language instruction: pick up the bread bag.

Training

The local LeRobot v2.1 dataset 260826_pick_up_the_bread_bag_gr00t_fk contains 100 episodes and 57,272 frames at 31 FPS. Seed 42 selected 90 training episodes (51,369 frames) and 10 held-out episodes (5,903 frames). The dataset itself is not included in this model repository.

Training used batch size 16, chunk size 30, a 100,000-update limit, cosine scheduling, and 5,000 warmup steps. Vision/text learning rate was 1e-6; connector/action expert/projections used 1e-5. Backbones were not frozen. With one GPU and dropped incomplete batches, training completed 31 full epochs plus 490 updates in epoch 32. Normalization uses only training episodes and excludes episode-end padded actions. Near-constant dimensions use standard deviation 1.

The stored training configuration contains the original machine's absolute paths. Change dataset, checkpoint, output, and statistics paths when retraining on another machine; regenerate statistics if the data or split changes.

Validation and limitations

Held-out evaluation covers 5,903 observations and 172,740 valid chunk targets; see evaluation.json for per-dimension errors and aggregation details. The reported aggregate action L1 mixes translation, rot6d, and gripper units and is not a task success rate.

Recorded episode 18 replay confirmed exact preprocessing parity with the training loader and fixed-seed absolute prediction parity. Three native-image inference requests on an H200 took approximately 0.30โ€“0.36 seconds round trip over local TCP. Robot-network transfer latency is additional. The code passed 16 tests, including ROS message stand-ins and real TCP worker tests. Actual DDS communication, controller acceptance, and physical closed-loop task success have not been validated.

License

The inherited S-Lab License 1.0 is included unchanged. Refer to its terms for use and redistribution.

Downloads last month
28
Safetensors
Model size
0.4B params
Tensor type
F32
ยท
BF16
ยท
Video Preview
loading

Model tree for 2sin0/dynamic-vla-r1lite-bread-bag-100k

Finetuned
(1)
this model