Repository navigation
Conversation
QwenVLA never mentioned Qwen outside its constructor: prompt assembly, batch plumbing, norm stats and the eval contract are all backbone-agnostic. Rename the chassis so a second backbone can sit on it, drop FlowVLAModel's QwenVLBackbone type hint in favour of the documented duck-typed contract, and label the LR-group dict 'backbone' instead of 'vlm'. No behaviour change. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
The only new module of the FlowVLA ResNet+text arm. One ResNet per canonical camera role (front is the same module for every vendor, since VIZ_IMAGE_KEY is), each fed a single frame because ResNet.forward's reshape is only channel-correct at F == 1; the frozen Qwen3-Embedding per-token features and their mask concatenated after them; modality embeddings so a patch token is distinguishable from a word. Returns the one context once per DiT block - the head's per-layer projectors are what give each block its own view. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
…omparison train_zarr_mecka_flagship_kp_flowvla is train_zarr_mecka_flagship_kp_hpt with one line changed, so the three arms share data, evaluators, val heads and step budget by construction. embodiment_label off makes the prompt string exactly the HPT arm's bare "fold clothes"; dit_hidden 768 != the backbone's 1024 keeps the head's per-layer projectors real Linears instead of nn.Identity. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Two optimizer steps through the real trainHydra.train() path, with the text encoder swapped for the fixtures stub so no 596M checkpoint is loaded. The proprio override records a real difference: FlowVLA concatenates every proprio key, while HPT selects them with stem_specs, so plain data/mecka is 164-wide here where the flagship keypoint config (ee_pose off) is 144. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This was referenced Sep 17, 2026
This was referenced Sep 17, 2026
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Turns QwenVLA into a chassis that accepts any backbone, then adds the second one.
0d1a5c3f3rename QwenVLA to FlowVLA. The chassis never mentioned Qwen outside its constructor — prompt assembly, batch plumbing, norm stats and the eval contract are all backbone-agnostic. DropsFlowVLAModel'sQwenVLBackbonetype hint in favour of the documented duck-typed contract and relabels the LR-group dictbackboneinstead ofvlm. No behaviour change.4e27d41a1ResNetTextBackbone— the only new module of the ResNet+text arm. One ResNet per canonical camera role (front is the same module for every vendor, sinceVIZ_IMAGE_KEYis), each fed a single frame becauseResNet.forward's reshape is only channel-correct atF == 1; the frozen Qwen3-Embedding per-token features and their mask concatenated after them; modality embeddings so a patch token is distinguishable from a word. It returns the one context once per DiT block — the head's per-layer projectors are what give each block its own view.4a2afe70frecipe config —train_zarr_mecka_flagship_kp_flowvlaistrain_zarr_mecka_flagship_kp_hptwith one line changed, so the three arms share data, evaluators, val heads and step budget by construction.embodiment_labeloff makes the prompt exactly the HPT arm's bare "fold clothes";dit_hidden768 != the backbone's 1024 keeps the head's per-layer projectors realLinears instead ofnn.Identity.2f54b0542train-step arm — two optimizer steps through the realtrainHydra.train()path with the text encoder swapped for the fixtures stub, so no 596M checkpoint is loaded. The proprio override records a real difference: FlowVLA concatenates every proprio key while HPT selects them withstem_specs, so plaindata/meckais 164-wide here where the flagship keypoint config (ee_poseoff) is 144.Testing
83 passed across
test_flowvla_algo.py,test_flowvla_nets.py,test_flowvla_configs.pyandtest_pi05_norm_rot6d.py.🤖 Generated with Claude Code