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
9
Safetensors
Model size
0.4B params
Tensor type
F32
Β·
BF16
Β·
Video Preview
loading

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

Finetuned
(2)
this model