diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/README.md b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/README.md new file mode 100644 index 0000000000000000000000000000000000000000..046d62283af8bf958c9c32cb8c1995ca07b84fd8 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/README.md @@ -0,0 +1,12 @@ +# Flappy QwenOFT H1 with RTX3090 mean latency + +Training complete: 5000 optimizer updates, seed42, global batch128 (2 Blackwell GPUs x64, accumulation1), BF16/ZeRO2, gradient checkpointing false. Final5000 checkpoint is published; full optimizer recovery is retained on the training host. + +The data use fixed75.87417450998383ms from the archived RTX3090 OpenVLA profile, quantized to one raw frame at10Hz (100ms effective). This is mean profiling. Binary causal eight-decision history24D, current RGB image, native2D NOOP/FLAP action, horizon1. 180train/20validation episodes,3240000/360000rows,200 unique seeds. + +Final offline validation action loss: 0.03496555 on 6400 sampled validation frames. Closed-loop latency-bench evaluation is pending until all four mean VLA trainings complete. Offline loss is not task-performance acceptance. + +Weights: `checkpoints/model.pt` (pure tensor state_dict; weights_only CPU load and finite-tensor checks passed). `config.yaml` is portable inference config; `config.full.yaml` records actual training configuration. Backbone/tokenizer source: Qwen/Qwen3-VL-4B-Instruct@ebb281ec70b05090aa6165b016eac8ec08e71b17. Task/history contract and dataset normalization are included. + +Data: https://huggingface.co/datasets/latency-sensitive-bench/Standard-Pipeline/tree/a568aa3792b49189d72c02781956c46f50d81b4e/flappy/profile_latency/QwenOFT/mean_rtx3090_s42_200ep_v1 +Training: https://wandb.ai/dongqianyu99-zhejiang-university/starvla_tasks/runs/mean3090-flappy-vla-blackwell-20260930 diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/checkpoints/model.pt b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/checkpoints/model.pt new file mode 100644 index 0000000000000000000000000000000000000000..a2e8ebbcf158b732cfa5cf51d3fd3c75dffda68a --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/checkpoints/model.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f784cb7d6c19872b4ac419f8a31459b395c12f23809f561ae134080a74c6e80a +size 9785137569 diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/collection_quality_report.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/collection_quality_report.json new file mode 100644 index 0000000000000000000000000000000000000000..4f5fcc434563f4e01bab4fe41da69c7aea3e3632 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/collection_quality_report.json @@ -0,0 +1,18 @@ +{ + "dataset_repo": "latency-sensitive-bench/Standard-Pipeline", + "revision": "a568aa3792b49189d72c02781956c46f50d81b4e", + "verified_hashes": 29, + "episodes": 200, + "train_episodes": 180, + "val_episodes": 20, + "train_rows": 3240000, + "val_rows": 360000, + "state_dim": 24, + "action_dim": 2, + "action_horizon": 1, + "mean_latency_ms": 75.87417450998383, + "effective_latency_raw_frames": 1, + "effective_latency_ms": 100, + "data_root": "/home/ubuntu/lzj/mean-profiling/flappy/data", + "canonical_data_recollected": false +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.full.yaml b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.full.yaml new file mode 100644 index 0000000000000000000000000000000000000000..41a6b161406b35124bd3c10014ba5843535a95e6 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.full.yaml @@ -0,0 +1,271 @@ +framework: + name: QwenOFT + qwenvl: + base_vlm: /home/ubuntu/lzj/models/Qwen3-VL-4B-Instruct + attn_implementation: flash_attention_2 + enable_gradient_checkpointing: false + action_model: + action_model_type: MLP + action_dim: 2 + state_dim: 24 + action_hidden_dim: 2560 + future_action_window_size: 0 + past_action_window_size: 0 + loss_type: discrete_ce + state_encoding: continuous_projector + task_objective: null + action_horizon: 1 + action_env_dim: 2 + kv_memory: + enabled: false + window: 4 + rollout_len: 8 + packed_train: false + rebased_sink: true +datasets: + vla_data: + dataset_py: lerobot_datasets + include_state: true + data_root_dir: /home/ubuntu/lzj/mean-profiling/flappy/data + data_mix: lerobot + eval_data_mix: lerobot__val + custom_mixtures_path: /home/ubuntu/lzj/mean-profiling/flappy/data/_generated_mixtures/lerobot.json + action_type: discrete + sequential_step_sampling: false + eval_sequential_step_sampling: null + num_workers: 2 + eval_num_workers: 2 + prefetch_factor: 4 + persistent_workers: true + pin_memory: true + shuffle: true + action_balance: + enabled: false + strategy: balanced_epoch + action_key: action_id + target_flap_fraction: 0.3 + noop_id: 0 + flap_id: 1 + latency_curriculum: + enabled: false + strategy: exclusive + latencies: null + phase_steps: null + phase_distributions: null + new_latency_passes: 1.0 + replay_passes: 0.25 + target_total_passes: 2.0 + final_equalization: true + step_budget_mode: auto + eval_at_phase_end: false + save_at_phase_end: false + computed_plan: null + per_device_batch_size: 64 + load_all_data_for_training: true + num_obs_frames: 1 + image_mode: single + prompt_mode: raw + stitch_grid: + - 2 + - 2 + obs_image_size: null + video_backend: torchvision_av +dataset: + source_hf: '' + config_name: null + source_subdir: null + converted_name: flappy_train + single_source_hf: '' + mixed_source_hf: '' + single_converted_name: flappy_train + mixed_converted_name: flappy_mixed_latency_train + single_latency_filter: null + mixed_latency_filter: null + force_download: false + setup_force: false + skip_verification: false + target_latency_unit: observation_steps + verify_rows: 200 + max_episodes: null + episodes_per_latency: null + latency_filter: null + debug_subset: + enabled: false + max_episodes: 5 + suffix: debug +base_model: + repo_id: Qwen/Qwen3-VL-4B-Instruct +initialization: + checkpoint_local_dir: null + checkpoint_hf_repo_id: null + checkpoint_filename: null +trainer: + max_train_steps: 5000 + num_warmup_steps: 100 + save_interval: 500 + eval_interval: 500 + eval_num_batches: 50 + per_latency_eval_num_batches: null + eval_action_classification: false + eval_action_classification_interval: null + cc_f1_tolerance: 1 + learning_rate: + base: 3.0e-05 + qwen_vl_interface: 3.0e-06 + action_model: 0.0001 + lr_scheduler_type: cosine_with_min_lr + scheduler_specific_kwargs: + min_lr_rate: 0.03333333333333333 + freeze_modules: '' + freeze_vit: false + freeze_tied_embedding: false + freeze_llm_layers: [] + loss_scale: + vla: 1.0 + vlm: 0.0 + max_grad_norm: 1.0 + weight_decay: 0.0 + logging_frequency: 1 + profile_timing: + enabled: false + log_interval: 10 + gradient_clipping: 1.0 + gradient_accumulation_steps: 1 + distributed_backend: deepspeed + is_resume: false + pretrained_checkpoint: null + resume_step: 0 + reload_modules: null + optimizer: + name: AdamW + betas: + - 0.9 + - 0.95 + eps: 1.0e-08 + weight_decay: 1.0e-08 + fused: true + save_format: pt + hist8_diagnostics: + steps: + - 0 + - 500 + - 1000 + - 2500 + - 5000 + sample_count: 2048 + noise_seeds: + - 1729 + sample_seed: 42 + batch_size: 8 + bootstrap_repeats: 4000 +workspace_dir: WORKSPACE_DIR +run_root_dir: /home/ubuntu/lzj/mean-profiling/flappy/vla +seed: 42 +wandb_entity: dongqianyu99-zhejiang-university +wandb_project: starvla_tasks +auth: + env_file: null + hf_token_env: HF_TOKEN + wandb_api_key_env: WANDB_API_KEY +paths: + run_root_dir: results/Checkpoints + dataset_local_dir: playground/Datasets/rl_games + dataset_cache_dir: null + base_model_dir: /home/ubuntu/lzj/models/Qwen3-VL-4B-Instruct + accelerate_config: starVLA/config/deepseeds/deepspeed_zero2.yaml +launch: + use_accelerate: true + gpus: null + num_processes: 1 + dry_run: false +conda: + enabled: true + env_name: null +rl_games: + model_alias: openvla + env_eval: + image_size: 224 + frameskip: 1 + image_transform: raw_rgb + prompt_mode: raw + ghost_trail: + history_frames: 5 + gamma: 1.3 + min_alpha: 35 + scroll_px_per_step: 4.0 + ground_fraction: 0.22 + seed: 42 + fixed_episode_seeds: true + latency_seed_stride: 0 + task_seed_stride: 0 + task_description: '' + eval_parallel_envs: 5 + action_chunk_execution: + enabled: false + chunk_size: null + enabled: false + eval_backend: latency_bench + distributed_mode: none + vectorized: + enabled: false + batch_size: 1 + latency: + prompt_map_path: null + mode: single + values: + - 0 + mid_train: + enabled: false + interval_steps: 100 + latencies: + - 0 + num_episodes: 5 + max_steps_per_episode: 3600 + post_train: + enabled: false + latencies: + - 0 + - 1 + - 2 + - 3 + - 4 + num_episodes: 5 + max_steps_per_episode: 3600 + task: flappy + initialization_mode: scratch + action_carrier: native +model: openvla +env: flappy +init: scratch +mode: single +checkpoint: + load: none + hf_repo_id: null + save_best_model: false + save_final_model: true + save_pt_file: true + save_training_state: true + save_safetensors_file: false + local: + keep_last_n: 2 + sync: + enabled: false + repo_id: null + keep_last_n: 0 + sync_every_n_checkpoints: 1 + resume_policy: local_latest +run_id: flappy-qwenoft-mean-3090-s42 +output_dir: /home/ubuntu/lzj/mean-profiling/flappy/vla/flappy-qwenoft-mean-3090-s42 +config_yaml: /home/ubuntu/lzj/mean-profiling/flappy/vla.yaml +is_debug: false +version_id: '0.21' +wandb_name: flappy-qwenoft-mean-3090-s42 +wandb_group: mean-profiling-3090-blackwell +wandb_tags: +- flappy +- qwenoft +- hist8-v2 +- history01 +- scratch +- profile-latency +training_latency_condition: mean-profile diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.yaml b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a5bd02b498b3702c16436ae4721301020a7abb4b --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/config.yaml @@ -0,0 +1,45 @@ +framework: + name: QwenOFT + qwenvl: + base_vlm: Qwen/Qwen3-VL-4B-Instruct + attn_implementation: flash_attention_2 + enable_gradient_checkpointing: false + action_model: + action_model_type: MLP + action_dim: 2 + state_dim: 24 + action_hidden_dim: 2560 + future_action_window_size: 0 + past_action_window_size: 0 + loss_type: discrete_ce + state_encoding: continuous_projector + task_objective: null + action_horizon: 1 + action_env_dim: 2 + kv_memory: + enabled: false + window: 4 + rollout_len: 8 + packed_train: false + rebased_sink: true +version_id: '0.21' +datasets: + vla_data: + include_state: true + obs_image_size: null + image_mode: single + stitch_grid: + - 2 + - 2 + num_obs_frames: 1 +trainer: + pretrained_checkpoint: null +backbone: + repo_id: Qwen/Qwen3-VL-4B-Instruct + revision: ebb281ec70b05090aa6165b016eac8ec08e71b17 + allow_patterns: + - '*.json' + - '*.safetensors' + - '*.txt' + - '*.jinja' + - '*.model' diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics.json new file mode 100644 index 0000000000000000000000000000000000000000..6736f190a37ec0d0731999f6be04246820d76d39 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics.json @@ -0,0 +1,194 @@ +{ + "new_embodiment": { + "action": { + "mean": [ + 0.9008839726448059, + 0.09911604970693588 + ], + "std": [ + 0.30056583881378174, + 0.30056583881378174 + ], + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ], + "q01": [ + 0.0, + 0.0 + ], + "q99": [ + 1.0, + 1.0 + ], + "mask": [ + true, + true + ] + }, + "state": { + "mean": [ + 0.9995555281639099, + 0.09905370324850082, + 0.09904845803976059, + 0.9996111392974854, + 0.09906204044818878, + 0.09905370324850082, + 0.999666690826416, + 0.09907067567110062, + 0.09906204044818878, + 0.9997222423553467, + 0.09909043461084366, + 0.09907067567110062, + 0.9997777938842773, + 0.09909876435995102, + 0.09909043461084366, + 0.999833345413208, + 0.09910740703344345, + 0.09909876435995102, + 0.9998888969421387, + 0.09911327064037323, + 0.09910740703344345, + 0.9999444484710693, + 0.09911450743675232, + 0.09911327064037323 + ], + "std": [ + 0.02107249759137688, + 0.30049213767051697, + 0.30048587918281555, + 0.019712645560502656, + 0.30050185322761536, + 0.30049213767051697, + 0.018251324072479345, + 0.30051174759864807, + 0.30050185322761536, + 0.016662079840898097, + 0.3005351126194, + 0.30051174759864807, + 0.014903813600540161, + 0.3005451261997223, + 0.3005351126194, + 0.012907790020110239, + 0.3005552887916565, + 0.3005451261997223, + 0.01053975615650543, + 0.30056232213974, + 0.3005552887916565, + 0.0074531468562811926, + 0.3005639910697937, + 0.30056232213974 + ], + "max": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "q01": [ + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0 + ], + "q99": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "num_transitions": 3240000, + "num_trajectories": 180 + } +} \ No newline at end of file diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics_eval.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics_eval.json new file mode 100644 index 0000000000000000000000000000000000000000..1e5ffe2d5a01eca477cd301def0bbcbecc6bf721 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/dataset_statistics_eval.json @@ -0,0 +1,194 @@ +{ + "new_embodiment": { + "action": { + "mean": [ + 0.9010527729988098, + 0.09894721955060959 + ], + "std": [ + 0.2985910475254059, + 0.2985910475254059 + ], + "max": [ + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0 + ], + "q01": [ + 0.0, + 0.0 + ], + "q99": [ + 1.0, + 1.0 + ], + "mask": [ + true, + true + ] + }, + "state": { + "mean": [ + 0.9995555281639099, + 0.09889999777078629, + 0.09889444708824158, + 0.9996111392974854, + 0.09890277683734894, + 0.09889999777078629, + 0.999666690826416, + 0.09890833497047424, + 0.09890277683734894, + 0.9997222423553467, + 0.09892222285270691, + 0.09890833497047424, + 0.9997777938842773, + 0.09893333166837692, + 0.09892222285270691, + 0.999833345413208, + 0.09894166886806488, + 0.09893333166837692, + 0.9998888969421387, + 0.09894444793462753, + 0.09894166886806488, + 0.9999444484710693, + 0.09894721955060959, + 0.09894444793462753 + ], + "std": [ + 0.02107250504195682, + 0.29852861166000366, + 0.2985208034515381, + 0.019712593406438477, + 0.2985321879386902, + 0.29852861166000366, + 0.01825134269893312, + 0.2985396385192871, + 0.2985321879386902, + 0.01666202954947938, + 0.2985576391220093, + 0.2985396385192871, + 0.014903815463185194, + 0.29857251048088074, + 0.2985576391220093, + 0.01290779560804152, + 0.29858362674713135, + 0.29857251048088074, + 0.010539757087829197, + 0.2985873222351074, + 0.29858362674713135, + 0.0074531468562811926, + 0.2985910475254059, + 0.2985873222351074 + ], + "max": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "q01": [ + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0, + 1.0, + 0.0, + 0.0 + ], + "q99": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "num_transitions": 360000, + "num_trajectories": 20 + } +} \ No newline at end of file diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/files.sha256.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/files.sha256.json new file mode 100644 index 0000000000000000000000000000000000000000..319c5ce60ad20d325db1b70348a477403b0ec0b0 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/files.sha256.json @@ -0,0 +1,102 @@ +{ + "README.md": { + "bytes": 1513, + "sha256": "1f4036fe39bcc14657ad3dce517a5ee46ae764e030e38c60c808b7d29859b255" + }, + "checkpoints/model.pt": { + "bytes": 9785137569, + "sha256": "f784cb7d6c19872b4ac419f8a31459b395c12f23809f561ae134080a74c6e80a" + }, + "collection_quality_report.json": { + "bytes": 532, + "sha256": "0741f81a3b2bd9cf7b55d7b8478695532968bcf64abb7640535bea425bac6590" + }, + "config.full.yaml": { + "bytes": 6375, + "sha256": "d6da13357b405aafb9f5b6e07934a2cd59a28ab3a7578fd81b01bcfea40e8eb2" + }, + "config.yaml": { + "bytes": 979, + "sha256": "6c33e3ebf0f2a5327163329289b4b225c418bc01f65730ff8f7599702e50d61f" + }, + "dataset_statistics.json": { + "bytes": 3299, + "sha256": "2c7e8a74a07ca7bec408a0e32cd00957d1af68ecc58fb83571cea5258fe178d7" + }, + "dataset_statistics_eval.json": { + "bytes": 3302, + "sha256": "a57b1ff610f31dbd61bdb28f5c176e5945adfaa03be75f590e7cd550f658c3dc" + }, + "latency_prompt_map.json": { + "bytes": 189, + "sha256": "e5bdad8c4747fb2e8101f5d7265e89e2c8794c573ee42bac764365a42b6bc3a4" + }, + "launch_audit.json": { + "bytes": 2140, + "sha256": "6441da61d2da9190ddc6fd4d7a031acd1d455fc102c3ac40ae3e997aada1fb95" + }, + "manifest.json": { + "bytes": 2295, + "sha256": "0ee6164ded3e87ffb0ea956b700bc1fae82c1a4de2c3f4b432163fa070f40fc4" + }, + "provenance.json": { + "bytes": 3432, + "sha256": "17416c9020e50a6abac5e82f2001ec7e0962b479cbde84702061af45ec5116d9" + }, + "summary.jsonl": { + "bytes": 159, + "sha256": "2905acb79c5fffb33fd4689d87af3bd05d74f4184b9d36ff3eae0c64deecd930" + }, + "task_contract.json": { + "bytes": 982, + "sha256": "958afa1b69927f50ef9f92e50875b0f6ec937e98ce0a7a86732342a05b94f76c" + }, + "training-code/QWen3.py": { + "bytes": 17586, + "sha256": "5fe76fc98eaa84e215c3c25c11326815499d2a4b0683c6ab95382b881f535370" + }, + "training-code/QwenOFT.py": { + "bytes": 62854, + "sha256": "acad1b0dcde6e9fed6e2912b6534db0f8e33a74ec7f6630bbf1b0161fc298b0d" + }, + "training-code/datasets.py": { + "bytes": 154347, + "sha256": "33e22556471128a2bad18a1ef8b84c399847b4d98b2979d785d139de0cdf36df" + }, + "training-code/gym-language-contract.patch": { + "bytes": 688, + "sha256": "9f5dee2c5b52d5507aff27373a8cf6def4959361d2c5264d5079b416f28a4c49" + }, + "training-code/loader-spawn-cache.patch": { + "bytes": 711, + "sha256": "24532ce84e5aa9aef381493fe699b4bb4987afd954422191ae852b0f5eb5b2cd" + }, + "training-code/loader-spawn-test.patch": { + "bytes": 1500, + "sha256": "a36db15b13d68defeecb75ddc9efa1ac202d9aa0a40f66ba5baaee2dcaef21f1" + }, + "training-code/mean-profile-preparation.patch": { + "bytes": 7053, + "sha256": "de5fe558376c98515a1cfb186ffdc09b618acc207eb8a5f667b0cbb303767c09" + }, + "training-code/train_starvla.py": { + "bytes": 125159, + "sha256": "f872648f941cec272af724772e9d6fc3721e9ed6eaf0c8683ab285eb9396212e" + }, + "training-code/trainer_tools.py": { + "bytes": 29144, + "sha256": "9a48bdfb99b405b03fececfc1e051d3ebb179eb423c15141f02b9be62e2e1791" + }, + "training-code/worker_context.py": { + "bytes": 2279, + "sha256": "8493631104269f0630655ee2faae592a84ebfb3119aca142c8ac2701f5214464" + }, + "training_code_snapshot.json": { + "bytes": 626, + "sha256": "136c2cbb92daa93a6dab1aed5644e57491da4f95075c7f4f5d12b3ca8aa16adb" + }, + "training_results.json": { + "bytes": 512, + "sha256": "b08fa8927249eed1bb0a1c82fc7a75e59e05d7c2fbaf4c6c8ed6f14dc214d488" + } +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/latency_prompt_map.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/latency_prompt_map.json new file mode 100644 index 0000000000000000000000000000000000000000..465788c1cf15573a239a3146b6aca2bb8b5deaa4 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/latency_prompt_map.json @@ -0,0 +1,7 @@ +{ + "1": { + "prompt": "You are playing Flappy Bird. Pass through the pipe gaps and stay alive. Choose the action: NOOP, FLAP.", + "latency_raw_frames": 1, + "latency_ms": 100.0 + } +} \ No newline at end of file diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/launch_audit.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/launch_audit.json new file mode 100644 index 0000000000000000000000000000000000000000..7a977514c1f2e540ddf1577263d34a389c78b83f --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/launch_audit.json @@ -0,0 +1,62 @@ +{ + "host": "ubuntu@136.115.188.185", + "reference_repo_revision": "180da0effdaaaeacef218cf5fbaa4db41af67495", + "reference": "/home/ubuntu/lzj/mean-profiling/reference/checkpoint-configs/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-hist8-scratch-s42-v2/config.full.yaml", + "config_sha256": "0d8e33d18da69ac470a3aac5973babdb36b3eb8bfaa02c0f0d3ae8aeb912850f", + "base_revision": "ebb281ec70b05090aa6165b016eac8ec08e71b17", + "physical_gpus": [ + 0, + 1 + ], + "micro_batch_per_gpu": 64, + "gradient_accumulation": 1, + "global_batch": 128, + "gradient_checkpointing": false, + "optimizer_updates": 5000, + "seed": 42, + "horizon": 1, + "preflight_optimizer_updates": 20, + "preflight_discarded": true, + "formal_start_step": 0, + "preflight_gpu_peaks": [ + { + "rank": "0", + "logical_gpu": 0, + "gpu_peak_allocated_gib": 92.39531517028809, + "gpu_peak_reserved_gib": 92.84375, + "main_peak_rss_gib": 18.482311248779297, + "wall_seconds_with_initialization": 66.88179596900227, + "optimizer_updates": 20, + "formal_updates": 0, + "global_batch": 128, + "micro_per_gpu": 64, + "gradient_accumulation": 1, + "gradient_checkpointing": false, + "status": "passed" + }, + { + "rank": "1", + "logical_gpu": 1, + "gpu_peak_allocated_gib": 92.39531517028809, + "gpu_peak_reserved_gib": 93.5078125, + "main_peak_rss_gib": 18.478984832763672, + "wall_seconds_with_initialization": 66.89783567699851, + "optimizer_updates": 20, + "formal_updates": 0, + "global_batch": 128, + "micro_per_gpu": 64, + "gradient_accumulation": 1, + "gradient_checkpointing": false, + "status": "passed" + } + ], + "data_workers_per_rank": 2, + "eval_workers_per_rank": 2, + "spawn_cache_payload_fix_test": "9 relevant tests passed", + "memory_high_gib": 400, + "memory_max_gib": 450, + "post_train_rollout_eval": false, + "evaluation": "pending until four VLA trainings complete", + "allocator": "expandable_segments:True", + "formal_retry_reason": "CUDA allocator fragmentation/near-capacity initial failure, 20 same-path steps verified" +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/manifest.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..4c89937ccfd7ef0b0c61ca46519b17784507ba0a --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/manifest.json @@ -0,0 +1,111 @@ +{ + "dataset_name": "lerobot", + "env_name": "flappy", + "episodes": 180, + "frames": 3240000, + "task_prompts": [ + "You are playing Flappy Bird. Pass through the pipe gaps and stay alive. Choose the action: NOOP, FLAP." + ], + "format": "starvla_lerobot_v2_decision_v1", + "source": "/home/ubuntu/lzj/mean-profiling/flappy/data/raw", + "robot_type": "rl_games_flappy", + "action_layout": "flappy_discrete", + "source_action_layout": "flappy_discrete", + "action_labels": [ + "NOOP", + "FLAP" + ], + "action_dim": 2, + "active_action_dim": 2, + "state_source": "decision_v1", + "state_dim": 24, + "state_labels": [ + "decision_history_0", + "decision_history_1", + "decision_history_2", + "decision_history_3", + "decision_history_4", + "decision_history_5", + "decision_history_6", + "decision_history_7", + "decision_history_8", + "decision_history_9", + "decision_history_10", + "decision_history_11", + "decision_history_12", + "decision_history_13", + "decision_history_14", + "decision_history_15", + "decision_history_16", + "decision_history_17", + "decision_history_18", + "decision_history_19", + "decision_history_20", + "decision_history_21", + "decision_history_22", + "decision_history_23" + ], + "state_normalization": { + "min": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "max": [ + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0, + 1.0 + ] + }, + "action_history_decisions": 8, + "rows_unit": "decision_step", + "obs_fps": 10.0, + "obs_stride_raw_frames": 1, + "latency_prompt_map_path": "/home/ubuntu/lzj/mean-profiling/flappy/data/lerobot/latency_prompt_map.json", + "custom_mixtures_path": "/home/ubuntu/lzj/mean-profiling/flappy/data/_generated_mixtures/lerobot.json", + "validation_dataset_name": "lerobot__val", + "validation_episodes": 20, + "validation_frames": 360000 +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/provenance.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/provenance.json new file mode 100644 index 0000000000000000000000000000000000000000..096ffd593812c859d934bd03e9828e322adb7979 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/provenance.json @@ -0,0 +1,93 @@ +{ + "task": "flappy", + "model": "qwenoft", + "run_id": "flappy-qwenoft-mean-3090-s42", + "training_latency_condition": "mean-profile", + "training_hardware": { + "gpu": "NVIDIA RTX PRO6000 Blackwell Server Edition", + "count": 2, + "physical_indices": [ + 0, + 1 + ] + }, + "latency_profile_hardware": "1x-RTX3090", + "fixed_latency_ms": 75.87417450998383, + "effective_latency_raw_frames": 1, + "env_fps": 10, + "obs_fps": 10, + "horizon": 1, + "history_encoding": "binary_0_1", + "state_dim": 24, + "action_dim": 2, + "global_batch": 128, + "micro_per_gpu": 64, + "gradient_accumulation": 1, + "gradient_checkpointing": false, + "precision": "bf16", + "optimizer_backend": "ZeRO2", + "teacher": { + "repo_id": "latency-sensitive-bench/benchmark-models", + "revision": "3ca75d71b55ff42889a4f058d6ad90b2e9b3668f", + "path": "/home/ubuntu/lzj/mean-profiling/flappy/restored-teacher/latency-aware/flappy/small-policy/sample-factory-qwenoft-rtx3090-mean-hist8-capacity1-s42-v1", + "local_checkpoint": "/home/ubuntu/lzj/mean-profiling/flappy/restored-teacher/latency-aware/flappy/small-policy/sample-factory-qwenoft-rtx3090-mean-hist8-capacity1-s42-v1/best_000048808_25034752_reward_2216.841.pth", + "env_steps": 25034752, + "hash_verified_files": 8, + "weights_only_load": true + }, + "dataset": { + "dataset_repo": "latency-sensitive-bench/Standard-Pipeline", + "revision": "a568aa3792b49189d72c02781956c46f50d81b4e", + "verified_hashes": 29, + "episodes": 200, + "train_episodes": 180, + "val_episodes": 20, + "train_rows": 3240000, + "val_rows": 360000, + "state_dim": 24, + "action_dim": 2, + "action_horizon": 1, + "mean_latency_ms": 75.87417450998383, + "effective_latency_raw_frames": 1, + "effective_latency_ms": 100, + "data_root": "/home/ubuntu/lzj/mean-profiling/flappy/data", + "canonical_data_recollected": false + }, + "source_reference_revision": "180da0effdaaaeacef218cf5fbaa4db41af67495", + "runtime": { + "repo": "c3c6a39365a151e9b7a5e215452fd64e957c2b29", + "starvla": "ccca13c5177fe3d3c884b6e2de4965d916016649", + "runtime_fixes": [ + "mean-profile-preparation.patch", + "gym-language-contract.patch", + "loader-spawn-cache.patch", + "loader-spawn-test.patch" + ], + "pytorch3d": { + "revision": "33824be3cbc87a7dd1db0f6a9a9de9ac81b2d0ba", + "build": "transforms-only, no native render extension; QwenOFT uses transforms only" + }, + "decord": { + "version": "0.6.0", + "build": "official source CPU decoder CP310", + "wheel_sha256": "e193b356b1e984b4eff08d23b62e482c2c9e5037a6efdc0b1af47079ae2e4c47" + } + }, + "wandb_url": "https://wandb.ai/dongqianyu99-zhejiang-university/starvla_tasks/runs/mean3090-flappy-vla-blackwell-20260930", + "training_results": { + "training_complete": true, + "optimizer_updates": 5000, + "selection": "final_5000", + "train_loss": 0.028774918988347054, + "validation_action_loss": 0.034965552389621735, + "validation_samples": 6400, + "final_backbone_lr": 1e-07, + "final_action_lr": 3.3333333333333333e-06, + "closed_loop_evaluation": "pending until all four VLA trainings complete", + "tensor_keys": 732, + "serialized_tensor_elements_including_tied_aliases": 4892433410, + "weights_only_load": "passed", + "all_tensors_finite": true + }, + "optimizer_recovery_states": "retained on training host; this bundle contains inference weights" +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/summary.jsonl b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/summary.jsonl new file mode 100644 index 0000000000000000000000000000000000000000..a0e21985e6b7ed5b88fddcc5f74f6ec45063b603 --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/summary.jsonl @@ -0,0 +1,10 @@ +{"steps": 500} +{"steps": 1000} +{"steps": 1500} +{"steps": 2000} +{"steps": 2500} +{"steps": 3000} +{"steps": 3500} +{"steps": 4000} +{"steps": 4500} +{"steps": 5000} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/task_contract.json b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/task_contract.json new file mode 100644 index 0000000000000000000000000000000000000000..98570c6679a6f0d6328807e819406d4bb2c7999d --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/task_contract.json @@ -0,0 +1,43 @@ +{ + "task": "flappy", + "model": "qwenoft", + "action_horizon": 1, + "image_frames": 1, + "state_source": "transport", + "state_dim": 24, + "history_decisions": 8, + "history_encoding": "binary_0_1", + "history_normalization": "identity", + "history_reset": "all_zero", + "history_order": "oldest_to_newest", + "history_entry_fields": [ + "admission_bit", + "admitted_command_non_noop_bits", + "last_applied_action_non_noop_bits" + ], + "history_action_bit_order": [ + "FLAP" + ], + "action_dim": 2, + "action_layout": "flappy_discrete", + "action_labels": [ + "NOOP", + "FLAP" + ], + "task_prompts": [ + "You are playing Flappy Bird. Pass through the pipe gaps and stay alive. Choose the action: NOOP, FLAP." + ], + "env_fps": 10, + "obs_fps": 10, + "evaluation": { + "episodes": 100, + "seeds": [ + 1000000, + 1000099 + ], + "parallel_envs": 32, + "capacity": 1, + "max_raw_frames": 3600, + "protocol_version": "hist8-history01-par32-v3" + } +} diff --git a/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/training-code/QWen3.py b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/training-code/QWen3.py new file mode 100644 index 0000000000000000000000000000000000000000..21484c44de5403fbc0f71ad3c5bfec321d6c738e --- /dev/null +++ b/latency-aware/flappy/vla/starvla-qwenoft-h1/flappy-qwenoft-mean-3090-s42/training-code/QWen3.py @@ -0,0 +1,444 @@ +# Copyright 2025 starVLA community. All rights reserved. +# Licensed under the MIT License, Version 1.0 (the "License"); +# Implemented by [Jinhui YE / HKUST University] in [2025]. + +import time +from collections import OrderedDict +from functools import wraps +from inspect import signature +from typing import Optional + +import torch +from starVLA.model.profiling import stage_timer as _stage +from starVLA.training.trainer_utils import initialize_overwatch +from transformers import AutoProcessor, Qwen3VLForConditionalGeneration +from transformers.modeling_outputs import CausalLMOutputWithPast + +logger = initialize_overwatch(__name__) + +IGNORE_INDEX = -100 +IMAGE_TOKEN_INDEX = 151655 +VIDEO_TOKEN_INDEX = 151656 +DEFAULT_IMAGE_TOKEN = "" +DEFAULT_VIDEO_TOKEN = "