Qwen Team (Alibaba), 2026

Qwen-VLA: One Brain for
Every Robot Body

A single vision-language-action model that drives manipulators, dual-arm humanoids, and navigating robots — by casting wildly different control problems into one shared "predict the next chunk of motion" task, conditioned only on a sentence describing the robot.

Prerequisites: Transformers + Flow Matching (we re-derive both)
11
Chapters
6
Simulations

Chapter 0: The Problem

Picture three robots in three rooms. In the first, a single-arm WidowX is asked to "put the spoon on the towel." In the second, a dual-arm Mobile ALOHA must "fold the laundry." In the third, a wheeled robot hears "go to the kitchen and stop at the fridge." Today, each of those robots almost certainly runs a different neural network, trained on its own data, predicting its own kind of output.

The first predicts end-effector position deltas. The second predicts absolute joint angles for two arms plus two grippers. The third predicts ground-plane waypoints — relative displacement and heading change. Different sensors, different control frequencies, different action dimensions, different evaluation protocols. Fragmentation is the word the paper uses. Every new robot or task family means starting over.

The core question: Vision-language models scaled because all of text and images could be poured into one transformer. Can embodied control scale the same way — can manipulation, navigation, and even human hand motion all be absorbed into a single model, so that learning to grasp a cup in one lab transfers to a different robot folding clothes in another?

Why this is genuinely hard

The surface differences look fatal. Manipulation outputs live in 3D Cartesian or joint space; navigation outputs live in a 2D ground plane. A WidowX has 7 controllable numbers per step; a dexterous hand has 20+. One robot runs at 5 Hz, another at 30 Hz. If you build one output head per robot, you have not built a generalist — you have built a switchboard of specialists sharing a lobby.

And yet, the paper argues, underneath the surface every one of these tasks has the same computational shape:

Observe
One or more camera images of the scene right now.
+
Read
A language instruction: "pick up the red cup."
Predict
A short sequence of future actions/waypoints that are physically and semantically right.

Condition on vision + language + the robot's own constraints; emit a chunk of future motion. That is true whether the motion is a gripper trajectory or a navigation path. Qwen-VLA is the bet that this shared shape is enough to train one model on all of it at once.

A worked sense of scale — the dimensionality gap

Here is the asymmetry that drives the whole design. Compare what the model is told to what it must produce:

QuantitySizeWhy it matters
Instruction "pick up the red cup"~6 tokensThe entire task intent, compactly encoded
Embodiment prompt~30 tokensWhich robot, how many arms, control rate
One manipulation episode1000s of joint valuesThe actual high-frequency motor signal
Compression ratio~100× or moreA handful of words must "decompress" into a trajectory

The paper frames action learning as decompression: a tiny linguistic seed unfolds into a long, high-dimensional, embodiment-specific motor program. Holding that idea in your head explains nearly every architectural and training choice ahead.

What is the central obstacle Qwen-VLA sets out to overcome?

Chapter 1: The Key Insight

The unification trick is to write every embodied task as one conditional distribution. At time step t the model sees a visual context ot, a language instruction x, an embodiment description e, and an optional task identifier z. It predicts a chunk of the future over a horizon H:

pθ(yt:t+H−1 | ot, x, e, z)

Read each symbol slowly, because they recur in every chapter. ot is what the cameras see (one frame, several frames, or a short history). x is the human's command. e is a sentence describing the robot — "dual arms, mobile base, 30 Hz." z just names the task family when it helps. And yt:t+H−1 is the predicted future: actions for manipulation, waypoints for navigation, hand-and-wrist motion for human video.

The insight: Don't unify the physics — unify the tensor. Manipulation and navigation keep their own native meanings. But all of them become "a sequence of real-valued vectors predicted over a horizon," so a single network with a single output interface can be trained on the whole mixture at once. The robot-specific meaning is supplied entirely by the prompt e, not by the architecture.

The two pieces that make it concrete

This single formulation collapses into two engineering commitments we will build out over the lesson:

A cognitive brain
A pretrained vision-language model (Qwen3.5) that already perceives, grounds language, and reasons spatially.
↓ hidden states
A motor cerebellum
A DiT flow-matching "action expert" that turns those hidden states into smooth, continuous motion chunks.

The paper leans on a biological analogy: the VLM is the cerebrum (understanding, planning) and the action expert is the cerebellum (fine motor coordination). The rest of the architecture is how you wire a cerebrum that already exists to a cerebellum that is born blank — without one wrecking the other.

In the unified formulation, what role does the embodiment description e play?

Chapter 2: Background — Two Tools You Need First

Before the architecture, two ingredients. If you already know flow matching and VLMs, skim — but the action expert is built entirely out of these, so it's worth being precise.

Tool 1: A natively-multimodal VLM backbone

The backbone is Qwen3.5-4B, a vision-language model with early fusion: a ViT (vision transformer) turns an image into visual tokens, and those tokens are interleaved directly into the text token stream. The transformer then processes image and text tokens together, so by the time you read out hidden states, each one is already a fusion of "what I see" and "what I was told."

Why does this matter for control? Because grounding — mapping the word "red cup" to the actual pixels of a red cup — happens inside the backbone, for free, inherited from billions of tokens of web pretraining. The action expert never has to learn perception from robot data alone.

Tool 2: Flow matching — generating actions as a tiny ODE

An action chunk is continuous and often multimodal: at a fork in a task there may be two equally good motions (reach left vs. reach right). Regressing a single mean would average them into a useless in-between. Flow matching sidesteps this by learning to transport noise into data.

Here is the whole idea in three lines. Take a clean target action Y0 and pure Gaussian noise Y1 ∼ N(0,I). Draw a straight line between them, parameterized by τ ∈ [0,1]:

Yτ = (1 − τ) Y0 + τ Y1

The line moves at constant velocity (Y1 − Y0). We train a network vθ to predict that velocity from a noisy point Yτ and the time τ. To generate, start at noise (τ=1) and integrate the velocity field backward to τ=0 with a few Euler steps. No 1000-step diffusion chain — a handful of steps gives real-time control.

Why velocity, not the clean sample? Predicting the velocity Y1−Y0 turns generation into following a smooth vector field. The field can bend toward different modes depending on where you are, so two valid motions get two valid trajectories instead of one blurry average. That multimodality is exactly what motor control needs.
Flow Matching — Noise Becomes Action

Two equally-valid target actions (orange dots) sit on the right. The blue cloud is noise at τ=1. Hit Integrate and watch the learned velocity field carry each noise sample toward one of the modes — never the average. Fewer Euler steps = faster but coarser; this is the latency/quality dial.

Why does Qwen-VLA use flow matching for actions instead of regressing the action directly?

Chapter 3: The Architecture

Now we wire the cerebrum to the cerebellum. The design goal: let the action expert specialize in fine motor generation without disturbing the backbone's hard-won perception. The mechanism is a single-stream DiT — a Diffusion Transformer used here for flow matching.

The data flow, tensor by tensor

This is the part to internalize. Watch what shape goes where:

StepTensorWhat happens
Backbone outputVLM hidden states, [Tctx, dvlm]Prompt + images encoded into a sequence of context vectors
Project to DiT spacelinear → [Tctx, ddit]A 3.9M-param linear maps VLM dim to the DiT channel dim
Noisy action chunkYτ ∈ RH×K → MLP → [H, ddit]Action projection MLP lifts raw action dims into latent tokens
Concatenate[Tctx + H, ddit]Context tokens and action tokens become ONE sequence
16 DiT blocks (joint self-attention)same shapeAction tokens attend to context tokens AND each other
Outputvelocity vθ ∈ RH×KAdaLN modulation + projection back to action dims

The crucial move is concatenation, then joint self-attention. The action tokens don't get the context through a thin bottleneck — they sit in the same attention window as the VLM hidden states and pull from them directly. Three timestep-conditioning details make it work:

Parameter budget (the paper's own breakdown). The action expert is ~1.15B params: 16 DiT blocks at 70.8M each = 1.13B (the bulk), plus action projection MLPs (4.9M) mapping raw action dims ↔ DiT latent, a linear VLM→DiT adapter (3.9M), timestep embedding (2.8M), and output AdaLN modulation (4.7M). Knowing where the parameters live tells you where the capacity — and the learning — actually is: in the DiT blocks doing the motor reasoning.
Single-Stream DiT — Context and Action in One Sequence

The teal tokens are VLM context (prompt + image). The orange tokens are the noisy action chunk. Hit Show attention: every action token attends to all context tokens and all other action tokens in one joint self-attention — that direct line is how vision and language reach the motor output without a bottleneck.

How does the action expert receive information from the VLM backbone?

Chapter 4: Embodiment-Aware Prompt Conditioning

Here is the move that makes "one model, many robots" actually work, and it is almost shockingly low-tech. To tell the model which robot it is driving, you don't add a new head or a one-hot embedding. You prepend a sentence. The paper's literal template:

# Embodiment prompt prepended to every training example
The robot is {robot_tag} with {single arm / dual arms}[, waist][, and mobile base].
The control frequency is {FPS} Hz. Please predict the next {chunk_size} control
actions to execute the following task: {ori_instruction}.

Fill the braces per dataset. A WidowX example becomes "The robot is widowx with single arm. The control frequency is 5 Hz. Please predict the next 16 control actions to execute the following task: put the spoon on the towel." A Mobile ALOHA example swaps in "dual arms, and mobile base" and a different FPS. The navigation prompt instead states the waypoint convention and horizon.

Why text is the right interface: The backbone already understands language. So "dual arms at 30 Hz" is not an opaque ID it must memorize — it is a compositional description it can reason about, the same way it reasons about any sentence. New robot? Write a new sentence. No retraining of an embedding table, no architecture change. The prompt is, in the paper's words, "the sole interface through which the model is informed of embodiment-specific control semantics."

Camera views are tagged the same way

Robots often have several cameras — a head ego-view and one or two wrist cameras. Rather than separate input channels, each image is wrapped with boundary tokens that name its source:

<|tag_start|> <image> <|tag_end|>   # tag ∈ {ego, cam_left_wrist, cam_right_wrist}

Now the backbone forms view-aware representations and the action expert can attend selectively — "trust the wrist cam for the final grasp" — with zero architectural change. Everything embodiment-specific is pushed into text, which the model is already brilliant at.

What happens when the prompt is wrong?

This reveals the design. At deployment you simply replace the prompt with your real robot's description; the VLM and DiT are untouched. But if the prompt lies — says "single arm" to a dual-arm robot, or the wrong FPS — the model will produce motion shaped for the described robot, not the physical one. The prompt is not a hint; it is the contract that selects the control convention. Get it wrong and the unified action tensor gets decoded under the wrong assumptions.

How does Qwen-VLA support a new robot embodiment without changing its architecture?

Chapter 5: The Unified Action Tensor (showcase)

We keep saying "one shared action space." Time to see the actual bytes. The promise: a WidowX (7 numbers), a dual-arm robot (16+ numbers), and a navigation waypoint (3 numbers) all flow through the same DiT output with one set of parameters. The trick is a fixed-size tensor plus a mask.

The fixed tensor and the channel layout

Every training sample contributes a target Y ∈ RH×K: a fixed horizon H of time steps, each a fixed-width vector of K channels shared across all control modes. A given robot uses only c ≤ K channels. Those c meaningful values go in the leading dimensions; the rest are zero-padded.

A binary mask M ∈ {0,1}H×K records validity: Mh,k = 1 if and only if channel k < c AND time step h falls within this task's chunk length Htask ≤ H. Pad entries are masked out so they never touch the gradient.

Two families, one tensor. Manipulation channels can be delta end-effector position (Δx,Δy,Δz), rotation (Euler/quaternion), absolute joint angles, gripper aperture, or dexterous-hand angles. Navigation channels follow the VLN convention: (Δx, Δy, Δθ) per waypoint — relative displacement and heading change in the ground plane. Different physical meaning, identical tensor shape. The action expert treats them identically; the prompt e tells the model what they mean.

Per-dataset quantile normalization (the WHY)

Raw action numbers have wildly different scales — millimeters of gripper travel vs. radians of joint rotation. Pour them into one network and the big-scale channels dominate the loss. So each dimension d in dataset k is normalized by its 1st/99th percentiles q01, q99:

ãd = 2 · (ad − q01k) / (q99k − q01k) − 1

then clip to [−1, 1]. Why percentiles, not min/max? A single jittery outlier sample would blow up the min/max range and squash all the real motion into a sliver near zero. The 1st/99th percentiles ignore those outliers, so the useful motion fills the [−1,1] box. Every embodiment ends up on the same numeric footing while keeping its internal motion structure.

Pack Any Robot Into the Shared H×K Tensor

Click an embodiment. Green cells are valid channels (mask=1), gray cells are zero-padded (mask=0). Notice every robot uses the same H×K grid — only the leading c channels light up, and only within this task's chunk length Htask. One set of DiT weights handles them all; the mask keeps padding out of the gradient.

One subtlety: human hands need 32 channels

Egocentric human video is folded in too. For each hand, wrist motion is the SE(3) transform relative to the start frame — a 3D translation + axis-angle rotation = 6 dims. The 45-dim finger pose is compressed by PCA to its top 10 eigengrasp coefficients (the dominant modes of hand-pose variation). So (6 + 10) × 2 hands = 32 dims per step — still just the leading channels of the same K-wide tensor. Human demonstrations become "just another embodiment."

How does one set of DiT parameters handle robots with different action dimensions?

Chapter 6: The Flow-Matching Action Loss

We have the tensor and the mask. Now the training signal that teaches the DiT to turn noise into motion. The naive flow-matching loss is "predict the velocity, minimize squared error." But the mask forces a careful, two-level average — and that averaging is itself a teaching point.

Build the loss from the inside out

Recall the interpolant Yτ = (1−τ)Y0 + τY1 and that the true velocity is the constant (Y1 − Y0). The expert vθ predicts it from the noisy point, the time, and the context. For a single active channel k, average the squared error only over valid time steps:

k = ∑h Mh,k · ||vθ(Yτ, τ | o, x, e, z) − (Y1−Y0)||2h,k  /  ∑h Mh,k

The denominator h Mh,k is just "how many valid time steps did this channel have." Dividing by it gives a per-step mean, so a task with a short chunk isn't penalized merely for being short. Then average uniformly over the c active channels:

Lact = Eτ,Y0,Y1 [ (1/c) ∑k=0..c−1k ]
Why two levels of averaging (the subtle, important part): If you summed raw squared errors, a dexterous hand with 20 channels would dominate the gradient over a 3-channel navigation sample — purely because it has more numbers, not because it matters more. The per-channel mean (level 1) and the uniform per-channel average (level 2) make each control dimension contribute equally, and the mask makes padding contribute nothing. Without this, the high-dimensional embodiments would quietly hijack training.

A worked numerical example

Take a navigation sample: c=3 channels (Δx,Δy,Δθ), chunk length Htask=8, in a tensor of H=16, K=32. Suppose at the sampled τ the per-step squared errors average to 0=0.04, 1=0.02, 2=0.06 for the three channels. Then:

And the second objective: keep the brain smart

Heavy action co-training could make the backbone forget how to perceive and reason — catastrophic forgetting. So a standard next-token loss is kept on auxiliary vision-language data (VQA, action captions, general VL corpora):

Lvl = − ∑i log pθ(wi | w<i, o)

The total loss is a weighted sum, with weights tuned to balance the two gradient magnitudes:

L = λact Lact + λvl Lvl
Reading the loss as architecture: Lact's gradient flows into the DiT (and back into the backbone), shaping motor generation. Lvl's gradient flows only through the backbone's language head, anchoring perception/reasoning. The two terms are literally pulling on different parts of the model — that is how the cerebrum stays sharp while the cerebellum learns.
python
import torch, torch.nn.functional as F

def flow_matching_action_loss(v_theta, ctx, Y0, mask):
    # Y0:   [B, H, K]  clean (normalized) action targets
    # mask: [B, H, K]  1 = valid channel/step, 0 = padding
    B = Y0.shape[0]
    tau = torch.rand(B, 1, 1, device=Y0.device)   # sample flow time
    Y1  = torch.randn_like(Y0)                    # noise ~ N(0, I)
    Ytau = (1 - tau) * Y0 + tau * Y1               # linear interpolant
    target_v = Y1 - Y0                            # constant true velocity

    pred_v = v_theta(Ytau, tau, ctx)              # [B, H, K]
    se = (pred_v - target_v).pow(2) * mask        # zero out padding

    # level 1: per-channel mean over VALID steps
    per_ch = se.sum(dim=1) / mask.sum(dim=1).clamp(min=1)  # [B, K]
    # level 2: uniform mean over ACTIVE channels (c per sample)
    active = (mask.sum(dim=1) > 0).float()              # [B, K]
    L_act = (per_ch.sum(dim=1) / active.sum(dim=1).clamp(min=1)).mean()
    return L_act
Why is the flow-matching loss averaged at two levels (per active channel, then uniformly over channels)?

Chapter 7: The Four-Stage Training Recipe

Now the problem the whole recipe exists to solve. The backbone arrives already smart (web-scale pretraining); the DiT action expert is randomly initialized. Launch joint training naively and two bad things happen: every step wastes compute encoding images for a decoder that can't yet use them, and the fresh decoder's noisy gradients can destabilize the pretrained backbone before it has learned anything useful.

The fix is staged, and each stage is defined by the gap it closes in the previous one. Remember the decompression framing from Chapter 0 — it justifies Stage I.

The Training Pipeline — What's Frozen, What Trains

Click through the four stages. Watch which module is frozen vs training, what inputs are fed (text only? + images? + environment reward?), and read the one-line purpose of each stage.

Stage I — Text-to-Action (T2A): the decompressor warm-start

Freeze the VLM, train only the DiT, and withhold images. The decoder must reconstruct high-dimensional action distributions from the language + embodiment prompt alone — no visual shortcut. This installs a structured action prior: language selects the region of action space, the embodiment prompt sets the platform-specific parameterization, and the flow dynamics learn to generate. The paper insists this is "more than a warm-start" — the decoder learns how different phrasings map to different motions and how prompts modulate the same intent into different motor programs.

Why withhold images on purpose? If you let the decoder see images from step one, it would lean on visual cues before it understands action structure at all — and you'd pay the image-encoding cost every step for a decoder that can't use it. T2A forces it to first learn the shape of motion indexed by language. Then later stages spend their capacity on the one thing T2A couldn't do: grounding that motion in pixels.

Stage II — Continued Pretraining (CPT): ground it in vision

Now unfreeze both modules and train on the full heterogeneous mixture (74% manipulation, plus egocentric human, navigation, simulation, VL data). CPT does exactly what T2A couldn't: grounds the action prior in real visual observations and adapts the backbone to embodied perception. It deliberately mixes simulation and real-robot data so the checkpoint has seen both — which lets the next stage specialize toward either.

Stage III — Supervised Fine-Tuning (SFT): two branches

From the CPT checkpoint, SFT splits: one branch does multi-task SFT (VQA, grounding, manipulation, navigation under balanced sampling) for the generalist; the other fine-tunes on in-house teleoperation data for real-world deployment. Same checkpoint, two specializations — the paper tests whether CPT's cross-domain priors transfer to physical hardware.

Stage IV — Reinforcement Learning (RL): optimize success, not likelihood

SFT maximizes the likelihood of demonstrations. But what you actually want is closed-loop task success, which no imitation objective can directly optimize. So from the multi-task SFT checkpoint, RL fine-tunes with sparse binary success rewards — collected in a single simulation environment (SimplerEnv) — producing the final Qwen-VLA-Instruct. The deliberately narrow RL setup tests whether success gains in one sim transfer to out-of-distribution environments. (The how of RL-on-flow-matching is Chapter 8.)

Why does Stage I (T2A) deliberately withhold images while training the DiT?

Chapter 8: RL Meets Flow Matching

Stage IV hides a genuinely hard problem. PPO — the RL algorithm here — needs the log-probability of the action it took, to form the importance ratio. For a normal language policy that's easy: the softmax gives you log p(a) directly. But a flow-matching policy defines its density implicitly, through an iterative denoising process. There is no softmax to read off. How do you get log πθ(a_t | s_t)?

First, the PPO objective (every symbol defined)

Lactor(θ) = − Et [ min( rt(θ) Ât,  clip(rt(θ), 1−ε, 1+ε) Ât ) ]

where rt(θ) = πθ(at|st) / πθold(at|st) is the importance ratio (how much more likely the new policy makes the action than the policy that collected the data), the state st=(ot,x,e) is the familiar vision+instruction+embodiment, at is the predicted action chunk, and Ât is the GAE advantage (was this chunk better or worse than expected?) with γ=0.99, λ=0.95. The clip with ε=0.2 stops any single update from moving the policy too far.

The flow-matching log-prob trick: Convert the deterministic probability-flow ODE into an equivalent SDE by injecting controlled noise at each Euler denoising step. Now each denoising transition is an explicit Gaussian — and a Gaussian's log-probability has a closed form. So instead of integrating an intractable density, you read off log πθ analytically from the per-step Gaussians. During rollout you store the intermediate denoising states; at the PPO update you re-run the velocity field under current params and recompute the Gaussian log-prob. By default they sample a single random denoising step per rollout for the estimate — one extra DiT forward pass, negligible cost.

The granularity that ties it all together

Both log-probabilities and advantages are computed at the action-chunk level: each chunk of H=16 steps gets one scalar reward and one advantage. That matches the flow decoder, which emits a whole chunk at once. The reward is brutally sparse: R=1 if the task succeeds at episode end, R=0 otherwise. GAE propagates that episode-level signal back through a value baseline.

And the value head is a clever cheapskate: rather than a separate critic, a lightweight head mean-pools the VLM hidden states to a scalar. Critically, a stop-gradient sits before it — value gradients do not flow back into the backbone, so a fast-learning critic (learning rate ~20× the actor's) cannot corrupt the pretrained representations while the policy updates stay conservative.

Why this design is conservative on purpose: A 4B backbone is expensive to perturb. Every choice here — chunk-level credit, single-step log-prob, stop-gradient value head, small actor LR (5e-6) — is about extracting a success signal without destabilizing the model that four prior stages built. RL here is a scalpel, not a sledgehammer.
How does Qwen-VLA obtain the action log-probability that PPO requires from a flow-matching policy?

Chapter 9: Experiments & Results

The headline claim is bold: a single generalist model, with one set of weights, beats the majority of specialist policies — each of which was trained for exactly one benchmark. Let's look at the numbers and, more importantly, what each comparison reveals.

Generalist vs Specialists — and the Effect of Each Stage

Toggle the two views. By benchmark: the final Qwen-VLA-Instruct success rates across manipulation and navigation suites. Base → SFT → Instruct: how performance climbs as you add instruction tuning then RL — pretraining gives a strong floor, alignment closes the gap.

The headline numbers

BenchmarkQwen-VLA-InstructWhat it tests
LIBERO97.9%Single-arm tabletop, 4 splits (spatial/object/goal/long)
Simpler-WidowX73.7%Real-to-sim WidowX manipulation
RoboTwin 2.0 (Easy / Hard)86.1% / 87.2%Dual-arm bimanual, 50 tasks
R2R (navigation)69.0% OSRVision-and-language navigation, oracle success
RxR (navigation)59.6% SRMultilingual VLN success rate
Real-world ALOHA (OOD)76.9% avgPhysical dual-arm under distribution shift
DOMINO (zero-shot)26.6%Dynamic manipulation, never trained on

What the comparisons actually prove

The robustness story (the real point): The evaluation isn't just in-domain accuracy — it's whether one model holds up under shifts in object layout, lighting, background, instruction phrasing, sensor noise, and robot embodiment. 76.9% average OOD success on real ALOHA and 26.6% zero-shot on never-seen DOMINO dynamics are the evidence that broad joint pretraining buys generalization a narrow specialist can't.
What is the most significant claim the experiments support?

Chapter 10: Connections & Cheat Sheet

Qwen-VLA sits at the confluence of three lines of work: large multimodal models (the backbone), diffusion/flow generative models (the action expert), and imitation+RL for robots (the training recipe). Its one big idea — unify the tensor interface and let a textual prompt carry all embodiment semantics — is the kind of move that, once seen, feels obvious.

Limitations the paper is honest about

Cheat sheet — every key equation

ConceptFormPlain meaning
Unified predictionpθ(yt:t+H−1 | ot, x, e, z)predict a chunk of future motion from vision + language + embodiment
Flow interpolantYτ = (1−τ)Y0 + τY1straight line from clean action to noise
Velocity targetv* = Y1 − Y0the constant direction the network learns to predict
Action lossLact = E[(1/c)∑kk]masked, two-level mean so every channel/embodiment counts equally
Quantile normã = 2(a−q01)/(q99−q01)−1put every dataset's actions on the same [−1,1] scale, outlier-robust
Joint lossL = λactLact + λvlLvltrain motor + keep the brain from forgetting
PPO ratiort = πθ(a|s) / πθold(a|s)did the new policy make this chunk more likely?
Channel maskMh,k=1 iff k<c and h<Htaskwhich of the fixed H×K cells are real vs padding

Where to go next on Engineermaxxing

The one-paragraph summary you could give on a whiteboard

Qwen-VLA bolts a DiT flow-matching action expert (~1.15B params) onto a pretrained Qwen3.5 vision-language backbone. Every embodied task — manipulation, navigation, human hand motion — is written as one conditional: predict an H×K chunk of future motion from images + instruction + an embodiment prompt. That prompt (a literal sentence: which robot, how many arms, control rate, horizon) is the sole platform-specific interface, so a new robot needs only a new sentence. Active channels fill the leading dims of a fixed tensor; a mask zeros the padding so one set of weights handles any action dimension, and a two-level masked flow-matching loss gives every channel equal voice. Training is staged to handle the asymmetry of a smart backbone and a blank decoder: T2A teaches the decoder to decompress language into action with no images, CPT grounds it in vision, SFT specializes, and RL — with a flow-matching ODE→SDE log-prob trick for PPO — optimizes actual task success. The result is a single generalist that matches or beats specialist policies and generalizes across embodiments and out-of-distribution conditions.

"...manipulation, navigation, and trajectory-centric embodied tasks can be treated as different manifestations of a shared action-and-trajectory prediction problem."
— Qwen Team, Qwen-VLA (2026)