Downloads · 30 days
5
5% of all-time downloads
EmpathicRobotics/vla-1.7b-qwen3-v6
vla-1.7b-qwen3-v6 is a text generation model from EmpathicRobotics. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
A 1.7B parameter Vision-Language-Action model, third Qwen3-backbone release from this project. v6 rebuilds the window=8 architecture that produced vla-1.7b-qwen3-v2 (still the project's strongest baseline) and adds ne…
Downloads · 30 days
5
5% of all-time downloads
All-time downloads
98
Public
Parameters
2B
4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors3.9 GB · 98%
From the Hugging Face model README
A 1.7B parameter Vision-Language-Action model, third Qwen3-backbone release from this
project. v6 rebuilds the window=8 architecture that produced
vla-1.7b-qwen3-v2 (still the
project's strongest baseline) and adds newly-integrated data sources on top of it —
Harmony4D (multi-person close-interaction motion capture), MV-Omni
(MixtureVitae-Omni, audio+image+text), and the <listen>/<speak> audio-token
convention (replacing v2's bare <snac> wrapper). This checkpoint uses
seq_length=8192, the best-performing of three seq_length variants (4096/8192/16384)
trained in parallel as an ablation.
| Architecture | Qwen3 (28 layers, hidden 2048, intermediate 6144, 16 attn heads / 8 KV heads (GQA), qk-layernorm, RoPE θ=1e6, tied embeddings) |
| Parameters | 1.97B (including embeddings for 274,688 padded vocab) |
| Vocab size | 274,688 padded (274,561 real tokens: Qwen3 base ~151,669 + ~122,892 VLA tokens) |
| Tokenizer | EmpathicRobotics/tokenizer-vla-qwen3-v2 |
| Training data | ~33.83B tokens across 6 sources: FineVideo-VLA (window=8 rebuild), OmniVideo-100K, Harmony4D, MixtureVitae-Omni, synth-llava, emotional-roleplay |
| Training | 4,033 iters (1 epoch), 64 nodes × 4 GH200 GPUs, global batch 1024, seq len 8192, micro batch size 2 |
| Final loss | Train: 1.7067, Val: 1.8056 (PPL 6.08), Test: 1.7886 (PPL 5.98) |
| Precision | bf16 |
| Context length | 8,192 tokens |
Given a text prompt (activity description, image seed2 block, or partial modality sequence), the model generates an interleaved multimodal token sequence spanning 6 categories it was trained on:
<seed2_N> ... # 1 FPS semantic image/video keyframes (vocab 8192)
<cosmos_N> ... </cosmos> # 8-frame spatial video tokens (vocab 64000)
<listen> <snac_N> ... </listen> # SNAC audio codec tokens, "heard" role
<speak> <snac_N> ... </speak> # SNAC audio codec tokens, model-generated "spoken" role
<caption> ... </caption> # inline visual caption text
<agent> <fps_30> <pelvis> ... </agent> # 3D human pose, 17 H36M joints
The project trained v3/v4/v5 on a window=24 architecture (longer temporal chunks, different cosmos token cost, doc-packing, adjusted cosmos dropout). None of v3/v4/v5 beat v2 on any measured axis (perplexity, modality-persistence over time, or caption accuracy) — see the project's full eval writeup. v6 abandons window=24 and rebuilds on v2's window=8 recipe instead, only adding new data sources on top. Result: test PPL recovers to 5.98–6.36 across the 3 seq_length variants, close to v2's 5.77 and far better than v3 (27.58) / v4 (15.78) / v5 (16.75). This seq8192 checkpoint had the best test PPL of the three and produced all 5 trained modalities in a single full-chain generation test.
Cosmos-continuity: this checkpoint returned to <cosmos> and generated 3
consecutive real chunks in one sampled-decoding run — the best cosmos-persistence
observed across the whole v2→v6 lineage for a multi-chunk (not just single-return) case.
<agent>
blocks in one run (best in project history), but only verified on 1 of 4 standard eval
seeds — treat any single-seed persistence claim (including this checkpoint's
cosmos-continuity result above) as encouraging, not proven-robust.avc_lm tokens are essentially unused — discarded at the data-flatten stage before
training (to control token count), so the model rarely if ever produces them.seed2→image reconstruction is generative, not a deterministic round-trip (see
tools/decode/decode_seed2.py — conditions a diffusion img2img pipeline on the token
embeddings, unlike cosmos/snac's lossy-but-deterministic codec decoders).from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
"EmpathicRobotics/vla-1.7b-qwen3-v6",
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("EmpathicRobotics/vla-1.7b-qwen3-v6")
prompt = (
"### Context: Person raises both arms above head.\n"
"<seed2_3758> <seed2_2157> <cosmos_58567> "
"<fps_30> <pelvis> <pelvis_t_0> <pelvis_x_128> <pelvis_y_128> <pelvis_z_128>"
)
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
output = model.generate(
input_ids, max_new_tokens=500,
do_sample=True, temperature=0.8, top_p=0.9, repetition_penalty=1.3,
)
print(tokenizer.decode(output[0]))
The ## Usage prompt above uses pre-picked token ids as a demo. To send the
model real media -- e.g. "here's a photo, continue the scene" or "here's
a real motion clip, keep going" -- encode it first with the 4 encoders below.
Bundled in this repo the same way as the decoders (tools/encode/), no
separate git clone needed.
# Image -> <seed2_N> tokens (32 ids, auto-downloads the Q-Former checkpoint
# from ontocord/seed2 if not cached locally)
python tools/encode/encode_seed2.py --image photo.jpg
# 8 video frames -> <cosmos_N> tokens (200 ids -- window=8/square-crop
# convention; the window=24/aspect-preserving convention (896 tokens) was NOT
# used for this model)
python tools/encode/encode_cosmos.py --frames f0.png f1.png f2.png f3.png f4.png f5.png f6.png f7.png
# Audio/video file -> <snac_N> tokens, wrapped in <listen> (this model's
# "heard" convention, replacing v2's bare <snac>)
python tools/encode/encode_snac.py --input clip.wav
# Real 3D pose (8 frames x 17 joints x xyz, metres, root-centred) -> <agent>
# tokens -- for "give the model a real motion capture / pose-pipeline output,
# have it continue"
python tools/encode/encode_agent.py --input pose.npy # shape (8, 17, 3)
Splice the printed token block into your prompt (e.g. after ### Context: ...) the same way the ## Usage example does, then call model.generate()
as shown there.
The decoder scripts + their vendored dependencies are bundled directly in
this repo (tools/) -- one snapshot_download gets everything, no
separate git clone needed.
python -c "
from huggingface_hub import snapshot_download
snapshot_download('EmpathicRobotics/vla-1.7b-qwen3-v6', allow_patterns=['tools/*', 'tools/**/*'])
"
pip install scipy numpy torch torchvision imageio-ffmpeg soundfile snac huggingface_hub
cd <snapshot-download-cache-dir-printed-above>
Agent tokens -> 3D pose (pure Python, no extra downloads):
python tools/eval/decode_agent_tokens.py --input generated_tokens.txt --output poses.json
Cosmos tokens -> video (auto-downloads the ~350MB decoder checkpoint from nvidia/Cosmos-Tokenizer-DV8x16x16 on first run):
python tools/decode/decode_cosmos.py --tokens 58345,57843,... --output out.mp4
# this model's cosmos chunks are exactly 200 raw ids each (8 frames, 160x160,
# square-cropped) -- the window=24/aspect-preserving convention (896 tokens)
# does NOT apply to this model.
SNAC tokens -> audio (auto-downloads hubertsiuzdak/snac_24khz from HF):
python tools/decode/decode_snac.py --tokens 130911,134940,... --format listen --output out.wav
# use --format listen for <listen>-wrapped tokens (input/"heard" role) or
# --format speak for <speak>-wrapped tokens (model-generated "spoken" role) --
# this model was trained on both, unlike v2 which only ever saw bare <snac>.
Seed2 tokens -> image (auto-downloads the ~2.6GB Q-Former checkpoint from the tokenizer's own public repo, ontocord/seed2, plus a ~5GB diffusion img2img pipeline on first run -- this one is a generative reconstruction, not a deterministic decode, so expect run-to-run and prompt-to-prompt variation in the exact pixels even for the same tokens):
python tools/decode/decode_seed2.py --tokens 6750,680,2472,... --output out.png
# exactly 32 raw ids per image (Seed2Tokenizer's fixed Q-former query length)
| Iter | Loss |
|---|---|
| 50 | 6.634 |
| 500 | 2.801 |
| 1000 | 2.142 |
| 1500 | 1.980 |
| 2000 | 1.890 |
| 2500 | 1.828 |
| 3000 | 1.905 |
| 3500 | 1.801 |
| 4000 | 1.707 |
| 4033 (val) | 1.8056 (PPL 6.08) |
| 4033 (test) | 1.7886 (PPL 5.98) |
| Source | Tokens | Role |
|---|---|---|
| MixtureVitae-Omni | 20.39B | Audio+image+text, largest source, "language backbone" |
| FineVideo-VLA (window=8 rebuild) | 10.93B | Flagship video+pose branch |
| OmniVideo-100K | 1.98B | Video + multimodal QA |
| Harmony4D | 0.32B | Multi-person close-interaction pose (20x oversampled from 416 real tracks) |
| emotional-roleplay (SNAC TTS, "speak") | 0.05B | Teaches the <speak> (model-generated audio) role |
| synth-llava / synth-llava2 | 0.02B (seed2-only count) | Static image + caption pairs |
| Total | ~33.83B |
@misc{empathicrobotics2026vlaqwen3v6,
title={VLA 1.7B Qwen3 v6: Window=8 Architecture Rebuild with Expanded Multimodal Sources},
author={EmpathicRobotics},
year={2026},
url={https://huggingface.co/EmpathicRobotics/vla-1.7b-qwen3-v6}
}