Tuna: Taming Unified Visual Representations for Native Unified Multimodal Models
Paper: arXiv:2512.02014 Project: tuna-ai.org Code: wren93/tuna(论文主页入口,README-only); facebookresearch/tuna-2(Tuna / Tuna-R / Tuna-2 inference 与训练代码) Code reference:
wren93/tunamain@c1c9cc29(2026-04-28);facebookresearch/tuna-2main@b53594e(2026-05-12)
1. Motivation (研究动机)
Unified multimodal models (UMMs) 想把 image/video understanding、text-to-image/video generation 和 image editing 放进同一个模型,但现有路线常在“理解需要语义表征”和“生成需要可重建表征”之间摇摆。理解模型偏好 CLIP / SigLIP / Qwen2.5-VL 这类 semantic encoder;生成模型偏好 VAE latent diffusion / flow matching。把两套表征并排接到模型里会形成 format mismatch;强行使用单一 discrete tokenizer 又会损失高频细节和生成 fidelity。
Tuna 要解决的具体问题是:能不能构造一个 continuous unified visual representation,使同一组 visual tokens 同时服务于文本理解和视觉生成,而不是让模型在 SigLIP features 与 VAE latents 之间做 late fusion 或任务切换。作者指出 Show-o2 虽然也自称 unified representation,但它把 VAE branch 和 semantic branch late-fusion,后续 CKNNA 分析显示最终 fused feature 更像 understanding branch,因此 generation 侧仍然受损。
这个问题值得做的原因在于:如果 visual representation 真的被统一,generation signal 可以反向改善 representation encoder 的细节建模,understanding signal 也可以给 generation 提供更强语义约束。Tuna 的实验直接验证了这一点:联合训练后的 Model 12 不仅在 generation 指标超过 generation-only 模型 6,也在理解指标上恢复并超过仅使用 understanding 数据训练的模型 3。
Figure 1 解读:这张 teaser 把 Tuna 的目标浓缩成一个 native UMM:同一个模型覆盖 image/video understanding、image/video generation 和 image editing。关键不是简单把多个模块串起来,而是把所有视觉任务都投到同一个 continuous visual representation space,使理解和生成在内部 token 层面共享状态。
2. Idea (核心思想)
Tuna 的核心 insight 是:不要把 VAE latent 和 semantic representation 当成两套彼此独立的接口,而是把 continuous VAE latent 作为 representation encoder 的输入,让 semantic encoder 在 VAE latent space 上直接学习统一 visual tokens。这样 visual token 同时保留 VAE 的可生成性和 representation encoder 的语义结构。
具体创新可以概括为三点:第一,用 Wan 2.2 3D causal VAE 把 image/video 压到 continuous latent;第二,把 SigLIP 2 的 patch embedding 改成适配 VAE latent 的 embedding,让 representation encoder 直接处理 noisy / clean latents;第三,在同一个 LLM decoder 后接 text LM head 和 flow matching head,文本理解走 autoregressive next-token prediction,视觉生成走 velocity prediction。
它和 Show-o2 的根本区别在于 fusion 时机:Show-o2 是 VAE branch 与 semantic branch 后期融合,Tuna 是“VAE latent → representation encoder”的早期深融合。它也不同于 Chameleon / Transfusion 这类 discrete visual token route,因为 Tuna 保持 continuous latent,避免 quantization 给图像/video fidelity 带来的损失。
3. Method (方法)
3.1 Overall framework:VAE latent 上的统一 visual tokens

Figure 2 解读:Tuna 的视觉输入先进入 Wan 2.2 VAE encoder,得到适合 diffusion / flow matching 的 continuous latent;再进入 modified representation encoder,产出统一 visual tokens。随后这些 visual tokens 和 text tokens 一起送入 Qwen2.5 LLM decoder。理解任务从 LM head 输出文本;生成和编辑任务则从 flow matching head 输出 velocity,用来从 noise 迭代到 image/video latent,再经 VAE decoder 还原视觉结果。
给定输入图像或视频 ,Tuna 先用 Wan 2.2 3D causal VAE encoder 生成 latent 。论文明确写到 VAE 在空间上 downsampling,在时间上 downsampling。训练视觉生成时,采样 和 ,构造 noisy latent: 理解任务固定 ,因此 representation encoder 看到的是 clean latent;生成任务随机采样 ,因此 representation encoder 需要在 noisy latent 上形成可用于 denoising 的语义表示。这个设计是 Tuna 的关键:理解和生成不再分别读“干净语义图像特征”和“扩散 latent”,而是围绕同一个 family 训练。
3.2 Modified SigLIP 2 representation encoder
Tuna 使用 SigLIP 2 作为 representation encoder,但不是直接把 RGB image patch 输入原始 SigLIP。因为 VAE 已经做了 spatial downsampling,作者把 SigLIP 2 原本的 patch embedding 替换成随机初始化的 patch embedding,形成 ,使 与 的 token sequence length 对齐。最终统一视觉表示为: 直觉上,这相当于让 semantic encoder 学会“读 latent diffusion 的坐标系”。VAE latent 保留可重建性,SigLIP-style transformer 提供全局语义组织能力;两者不是 late fusion,而是每一层 representation encoder 都能在 VAE latent 上处理语义与生成信号。
released code 里对应的是 configs/model/tuna_7b.yaml / configs/train/model/tuna_7b.yaml:siglip_model_id=configs/pretrained/siglip2-so400m-patch16-384,siglip_image_size=32,siglip_patch_size=1,siglip_num_channels=48,vae_model_id=Wan-AI/Wan2.2-T2V-5B,llm_model_path=Qwen/Qwen2.5-7B-Instruct。这与论文的“post-VAE representation encoder”一致。
3.3 Video representation:把 frame 维度临时折进 batch
对于 video latent ,如果把所有 latent frames 展平成一个超长 sequence,representation encoder 的代价会过高。论文使用 window-based attention 思路,把 frame dimension reshape 到 batch dimension,让 独立处理每个 latent-frame window: 这里的 是 video token hidden dimension。方法上的含义是:Tuna 在 representation encoder 内部避免跨全部视频帧做 full attention,但在 LLM decoder 层面仍把展开后的 video tokens 与 text tokens 作为统一序列处理。
3.4 LLM decoder、attention mask 与 flow matching head
Figure 3 解读:Tuna 对不同任务使用不同 attention mask。Text tokens 保持 causal mask,适合 autoregressive language modeling;visual tokens 采用 bidirectional mask,允许生成/编辑时 visual tokens 互相通信。带星号的 visual tokens 是 noisy latent tokens,对应 flow matching 的 denoising 输入。理解、生成、编辑都共用 LLM decoder,只是输出 head 与 mask/位置布局不同。
在得到 后,Tuna prepend 一个 timestep token,并把 visual tokens 与 language tokens concat 后送入 Qwen2.5 LLM decoder。理解任务使用 language modeling head 做 next-token prediction;生成和编辑任务使用随机初始化的 flow matching head 预测 velocity。该 head 共享 LLM decoder architecture,并通过 AdaLN-Zero 注入 timestep conditioning;视觉生成和编辑还使用 multimodal 3D-RoPE 处理 interleaved text-visual sequence。
训练目标可写成两部分:
其中 released Tuna VAE config 使用 flow_coeff=1.0、ntp_coeff=0.2(configs/train/model/tuna_7b.yaml / configs/model/tuna_7b.yaml);Tuna-2 pixel variants 才常见 ntp_coeff=1.0。如开启 dispersive loss,则额外加 0.25 * loss_disp。 来自 text token cross entropy, 来自 velocity_prediction(v_pred, image_labels, image_masks),其中 image_labels 是 transport path sampler 产生的 velocity target 。
3.5 Three-stage training pipeline
Tuna 使用三阶段训练:
- Stage 1: unified representation and flow matching head pretraining。冻结 LLM decoder,只训练 representation encoder 和 flow matching head;目标包括 image captioning 与 text-to-image generation。captioning 对齐 strong semantic encoder 的语义目标,T2I 让 generation gradient 回流到 representation encoder。
- Stage 2: full model continue pretraining。解冻 LLM decoder,继续用 Stage 1 的 captioning + T2I 目标;后期加入 image instruction-following、image editing 和 video-captioning 数据。论文写明 linear warm-up 为 2K steps,并继续使用相同 learning rate。
- Stage 3: supervised finetuning (SFT)。用 image editing、image/video instruction-following、高质量 image/video generation 数据做 SFT,learning rate 降到 。论文还说明由于 video training 计算成本较高,7B variant 不使用 video data 训练。
论文给出的 pretraining LR 是 ,base image resolution 是 ,并使用 token 数相近的 alternative aspect ratios。released configs/train/train.yaml 是公开训练模板而非论文生产训练配置:四路混合采样 t2i/edit/mmu/text = 0.50/0.20/0.20/0.10,image size 512,multi-resolution bucket 开启,global fallback batch size 4,warmup 1000,LR ;因此笔记把论文报告的 LR/stage 作为主结论,把 repo config 作为 released-code reference,而不把模板值误当作论文生产训练规模。
3.6 为什么不是 Show-o2 式 late fusion
Figure 4 解读:左侧 Tuna 是 VAE Encoder 后直接进入 Representation Encoder,understanding 与 generation signal 在 representation encoder 的每一层交互;右侧 Show-o2 是 VAE branch 与 semantic projection branch 分别提特征后再 fusion。作者认为 Show-o2 的 late fusion 很容易被 semantic branch 主导,导致生成侧信号进入得太晚、太弱。
Figure 5a–5b 解读:作者用 1,024 张 Wikipedia Captions 图像做 CKNNA representation alignment。Tuna 和 Show-o2 对 SigLIP 2 intermediate features 的 CKNNA 都超过 0.5,说明二者语义理解都不弱;但 Tuna 对 SD3-Medium intermediate features 的 alignment 更高,说明 Tuna 的 representation 更接近 generation-friendly feature space。进一步分析 Show-o2 的 fused features 与两条 branch 的关系:与 understanding branch 的 CKNNA 为 0.45,与 generation branch 只有 0.07,支持“late fusion 被语义侧支配”的解释。
3.7 Qualitative generation/editing/video examples
Figure 6 解读:图像生成对比突出 text rendering、数量关系、空间关系和 prompt following。论文文字中特别提到 whiteboard 例子里,Tuna 正确把 underline 放在 “with everyone” 下方;这类细粒度文本/布局遵循通常依赖理解能力,因此是“理解帮助生成”的定性证据。
Figure 7 解读:图像编辑覆盖风格迁移、环境变化、对象替换和更隐式的属性变化。Tuna 的统一表示让 source image 的内容结构和 text instruction 同时进入同一个 decoder / flow head,因此编辑不是纯文本生成,也不是只对 VAE latent 做局部扰动。
Figure 8 解读:视频生成展示了文本到视频任务中的时序一致性和动作表达。论文中 1.5B Tuna 支持 video understanding 与 video generation;7B variant 因计算成本没有使用 video data,所以视频结果主要说明架构可扩展性,而不是 7B 全能力。
3.8 Pseudocode(基于 released code)
Code reference:
facebookresearch/tuna-2main@b53594e(2026-05-12) — pseudocode and mapping based on this commit. Official paper entry repowren93/tunaismain@c1c9cc29(2026-04-28) and currently README-only.
论文公式与 released code 实现差异:论文主页的 wren93/tuna 仓库当前不含模型源码;可读源码在 facebookresearch/tuna-2,其中包含 --variant vae 的 Tuna 代码和训练模板,但 README 明确说 production-trained model weights 由于组织政策未完整释放,video generation model 也未释放。下面 pseudocode 对应可验证的 released implementation,不代表论文内部生产训练的全部数据/权重配置。
import torch
import torch.nn.functional as F
def prepare_latents_and_labels(vae, transport, pixel_values, data_type, image_masks, und_max_t0=1.0):
"""Mirror tuna.models.tuna.TunaModel.prepare_latents_and_labels."""
if pixel_values.ndim == 4:
pixel_values = pixel_values.unsqueeze(2) # B,C,H,W -> B,C,T,H,W
x1 = vae.sample(pixel_values, deterministic=False) # Wan2.2 latent, 48 channels
xt_list, ut_list, t_list, masks = [], [], [], []
for i, task in enumerate(data_type):
if task in ["mmu", "mmu_vid", "mmu_interleaved", "mmu_text"]:
max_t0 = und_max_t0 # clean/noise cap for understanding
elif task == "edit_interleaved" and i % 2 == 0:
max_t0 = und_max_t0 # source image stays clean-ish
else:
max_t0 = None # generation target samples full flow time
t, x0, target = transport.sample(x1[i:i+1], max_t0=max_t0)
t, xt, ut = transport.path_sampler.plan(t, x0, target)
t_list.append(t); xt_list.append(xt); ut_list.append(ut)
if image_masks is not None:
masks.append(make_task_mask(task, image_masks, i, und_max_t0))
return torch.cat(xt_list), torch.cat(t_list), torch.cat(ut_list), cat_or_none(masks), x1class TunaForward(torch.nn.Module):
"""Condensed flow of tuna.models.tuna.TunaModel.forward + Tuna.forward."""
def forward(self, batch):
text_tokens = batch["text_tokens"]
text_labels = batch["text_labels"]
data_type = batch["data_type"]
if data_type[0] != "mmu_text":
image_latents, t, image_labels, image_masks, clean_latents = self.prepare_latents_and_labels(
batch["images"], data_type, batch["image_masks"]
)
else:
image_latents, image_labels, image_masks = None, None, None
t = torch.zeros(text_tokens.shape[0], device=text_tokens.device)
# Variant A / Tuna: SigLIP path also consumes VAE-latent-compatible inputs.
images_clip = maybe_encode_clip_image_through_vae(batch.get("images_clip"), self.tuna_model.vae)
block_mask, diff_mask = self.create_attention_mask(text_tokens, batch["modality_positions"])
logits, loss_ntp, loss_flow, loss_disp = self.tuna_model(
text_tokens=text_tokens,
image_latents=image_latents,
pixel_values=images_clip,
t=t,
attention_mask=block_mask,
diffhead_attention_mask=diff_mask,
text_labels=text_labels,
image_labels=image_labels,
image_masks=image_masks,
modality_positions=batch["modality_positions"],
)
return self.flow_coeff * loss_flow + self.ntp_coeff * loss_ntp + 0.25 * loss_dispclass UnifiedEmbedAndHeads(torch.nn.Module):
"""Mirror Tuna._prepare_embeds plus task-specific heads."""
def forward(self, text_tokens, image_latents, t, modality_positions):
if image_latents is not None:
# VAE latent/noisy latent is fed to modified SigLIP2 transformer.
image_features = self.encode_pixels_with_siglip(image_latents)
visual_tokens = self.siglip_proj(image_features)
time_token = self.time_embed(t)
else:
visual_tokens, time_token = None, self.time_embed(torch.zeros_like(t))
inputs = interleave_text_visual_time(text_tokens, visual_tokens, time_token, modality_positions)
hidden = self.llm_decoder(inputs)
text_logits = self.lm_head(hidden)
velocity = self.flow_head(hidden, timestep=t)
return text_logits, velocitydef t2i_sample(pipeline, prompt, num_steps=50, guidance_scale=7.5):
"""Mirror TunaPipeline.t2i for --variant vae: text -> latent ODE sampling -> VAE decode."""
text_tokens, null_tokens, positions = pipeline.prepare_gen_input(prompt, guidance_scale)
z = torch.randn(pipeline.latent_shape, device=pipeline.device)
sample_fn, _ = pipeline.sampler.sample_ode(
sampling_method="euler",
num_steps=num_steps,
reverse=False,
)
samples = sample_fn(z, pipeline.model.tuna_model.t2i_generate, text_tokens=text_tokens,
modality_positions=positions, guidance_scale=guidance_scale)
return pipeline._decode_latents(samples)3.9 Code-to-paper mapping
Code reference:
facebookresearch/tuna-2main@b53594e(2026-05-12) — mapping is based on released Tuna/Tuna-2 repository;wren93/tunamain@c1c9cc29is README-only.
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| VAE latent + SigLIP2 unified representation | configs/model/tuna_7b.yaml, configs/train/model/tuna_7b.yaml | siglip_patch_size=1, siglip_num_channels=48, vae_model_id=Wan-AI/Wan2.2-T2V-5B, llm_model_path=Qwen/Qwen2.5-7B-Instruct |
| VAE sampling, flow timestep, noisy latent and velocity target | tuna/models/tuna.py | TunaModel.prepare_latents_and_labels |
| LLM decoder with text and visual tokens | tuna/models/tuna.py | Tuna.forward, Tuna._prepare_embeds |
| Text next-token loss + flow matching loss | tuna/models/tuna.py | next_token_prediction, velocity_prediction, TunaModel.forward |
| Attention masks for multimodal sequence | tuna/models/_wrapper_base.py, tuna/models/tuna.py | create_attention_mask, diffhead_attention_mask |
| Text-to-image inference | tuna/pipelines/tuna_pipeline.py | TunaPipeline.t2i, Sampler.sample_ode, _decode_latents |
| Image editing inference | tuna/pipelines/tuna_pipeline.py, tuna/pipelines/editing.py | TunaPipeline.t2i_edit, edit wrapper |
| Multimodal understanding inference | tuna/pipelines/understanding.py | understand wrapper |
| Training unit and logged losses | tuna/training/unit.py | TunaUnit.compute_loss, on_train_step_end |
| Released training template | configs/train/train.yaml, configs/train/video_t2v.yaml | four-stream weighted sampling; video T2V config |
4. Experimental Setup (实验设置)
4.1 Models and training config
Tuna 验证了两个 scale:Qwen2.5-1.5B-Instruct 与 Qwen2.5-7B-Instruct。pretraining 阶段优化 representation encoder、projection layers 与 diffusion/flow head,optimizer 是 AdamW,learning rate 为 。图像 base resolution 为 ,同时使用 visual token 数相近的 alternative aspect ratios。Stage 2 先 linear warm-up 2K steps,再继续用相同 LR;Stage 3 SFT 使用 。论文未详细说明 GPU 型号、GPU 数量、global batch size、总训练 steps 和训练数据精确样本数。
Released code 的可复现实验入口不是论文完整生产训练:configs/train/train.yaml 默认四路数据流 t2i/edit/mmu/text = 50%/20%/20%/10%,image size 512,multi-resolution buckets 打开;configs/train/video_t2v.yaml 提供 video text-to-video 训练模板,batch size 1、LR 、warmup 100。README 说明 production-trained weights 和 video generation model 因政策约束未完整释放。
4.2 Training datasets / objectives
论文按 objective 描述训练数据,而不是给出完整数据清单与样本规模:Stage 1 使用 image captioning 与 text-to-image generation;Stage 2 延续这两类目标,并在后期加入 image instruction-following、image editing、video-captioning;Stage 3 使用 image editing、image/video instruction-following、高质量 image/video generation 的 SFT corpus。数据 scale 未在论文中详细披露。
4.3 Evaluation benchmarks and metrics
- Image understanding:MME perception、GQA test-dev、RealWorldQA test、SEED image、MMMU val、MMStar avg、AI2D test、ChartQA test、OCRBench test。
- Image generation:GenEval(single object、two object、counting、colors、position、color attribute、overall)、DPG-Bench、OneIG-Bench。
- Image editing:ImgEdit-Bench(Add / Adjust / Extract / Replace / Remove / Background / Style / Hybrid / Action / Overall)和 GEdit-Bench(G-Semantic Consistency, G-Perceptual Quality, G-Overall)。
- Video understanding / generation:MVBench、Video-MME、LongVideoBench、LVBench;VBench 的 QS、SS、subject/background consistency、motion、aesthetic/imaging quality、object/action/style 等维度和 Total。
4.4 Baselines
理解侧对比 LLaVA-1.5、Qwen-VL-Chat、LLaVA-OV、TokenFlow-XL、BLIP3-o、Tar、X-Omni、Show-o、Harmon、JanusFlow、SynerGen-VL、Janus-Pro、Show-o2、BAGEL、Emu3、VILA-U、MUSE-VL、Mogao 等。生成/编辑侧包括 SD3-Medium、FLUX.1、OmniGen2、UniWorld-V1、D-DiT、BAGEL、Mogao、Qwen-Image、FLUX.1 Kontext 等。视频侧对比 Show-o2、VILA-U 和若干 understanding-only / generation-only models。
5. Experimental Results (实验结果)
5.1 Image understanding
Tuna 在 1.5B 与 7B scale 都显著强于同规模 native UMM baselines。关键结果如下:
| Model | Size | MME-p | GQA | RealWorldQA | SEED | MMMU | MMStar | AI2D | ChartQA | OCRBench |
|---|---|---|---|---|---|---|---|---|---|---|
| Show-o2 | 1.5B | 1450.9 | 60.0 | 56.5* | 65.6 | 37.1 | 43.4 | 69.0 | 40.0* | 24.5* |
| Tuna | 1.5B | 1461.5 | 61.4 | 62.5 | 69.3 | 39.1 | 54.6 | 71.4 | 82.1 | 71.9 |
| BAGEL | 14B | 1687.0 | - | 72.8 | 78.5 | 55.3 | - | 89.2 | 78.5 | 73.3 |
| Show-o2 | 7B | 1620.5 | 63.1 | 64.7* | 69.8 | 48.9 | 56.6 | 78.6 | 52.3* | 32.4* |
| Tuna | 7B | 1641.5 | 63.9 | 66.1 | 74.7 | 49.8 | 61.2 | 79.3 | 85.8 | 74.3 |
最突出的点是 OCRBench 与 ChartQA:1.5B Tuna 的 ChartQA/OCRBench 已经到 82.1/71.9,7B 到 85.8/74.3,明显超过 Show-o2。这和作者对 Figure 6 的解释一致:更强语义理解会帮助 text rendering 和视觉文字相关生成。
5.2 Image generation
GenEval 上,Tuna 1.5B overall 0.88,Tuna 7B overall 0.90;对比 Show-o2 1.5B/7B 的 0.73/0.76、BAGEL 14B 的 0.88、Mogao 7B 的 0.89,Tuna 在统一模型中达到或超过当时 SOTA。Tuna 7B 的 GenEval 子项为 Single Obj. 1.00、Two Obj. 0.97、Counting 0.81、Colors 0.91、Position 0.88、Color Attr. 0.83、Overall 0.90。
DPG-Bench / OneIG-Bench 上,Tuna 1.5B 的 DPG overall 为 86.03、OneIG overall 为 0.48;Tuna 7B 的 DPG overall 为 86.76、OneIG overall 为 0.50。对应对比:BAGEL 14B 的 DPG overall 85.07、OneIG overall 0.36;Show-o2 7B 为 86.14 / 0.31;Mogao 7B 的 DPG overall 84.33,但 OneIG 未报告。OneIG 的提升尤其说明 unified representation 对复杂 instruction / visual text 生成有帮助。
5.3 Image editing
ImgEdit-Bench 上 Tuna 7B overall 4.31,是所有 UMMs 中最高,并略高于 Qwen-Image 的 4.27;GEdit-Bench 上 Tuna 7B 的 G-SC/G-PQ/G-Overall 为 7.79/7.48/7.29,低于 Qwen-Image 的 8.00/7.86/7.56,但仍是 unified models 中最高。BAGEL 的 ImgEdit overall 为 3.20、G-Overall 为 6.52;OmniGen2 为 3.44 / 6.41。说明 Tuna 在编辑侧接近 generation-only specialist,同时保留理解能力。
5.4 Video understanding and video generation
视频理解只报告 1.5B Tuna:MVBench 54.4、Video-MME 49.1、LongVideoBench 49.7、LVBench 27.4;Show-o2 1.5B 为 49.8、48.0、49.2、未报告 LVBench。Tuna 在 MVBench 和 Video-MME 明显超过 Show-o2。
VBench video generation 上,Tuna 1.5B Total 84.06,超过 Show-o2 1.5B 的 81.34 和 VILA-U 7B 的 74.01。Tuna 的 QS/SS 为 84.32/83.04,Dynamic Degree 69.39,Multiple Objects 92.31,Human Action 97.50。这里的结论是:即使用 1.5B decoder,统一 continuous representation 也能支持高质量 video generation;但 7B variant 未使用 video data,所以不能把视频结论外推到 7B。
5.5 Ablation: unified representation and mutual benefit
Table 7 是本文最重要的“理解 ↔ 生成互相帮助”证据。关键对比如下:
| ID | Model / Data | MME-p | MMMU | SEED | GQA | GenEval | DPG |
|---|---|---|---|---|---|---|---|
| 2 | Decoupled, Und. Only | 1392 | 38.2 | 62.9 | 58.1 | - | - |
| 3 | Tuna, Und. Only | 1386 | 37.6 | 62.9 | 57.4 | - | - |
| 5 | Decoupled, Gen. Only | - | - | - | - | 77.3 | 82.87 |
| 6 | Tuna, Gen. Only | - | - | - | - | 77.8 | 83.33 |
| 8 | Decoupled, Und. & Gen. | 1346 | 37.2 | 61.4 | 56.5 | 78.3 | 83.50 |
| 12 | Tuna, Und. & Gen. | 1361 | 38.1 | 66.5 | 58.2 | 79.4 | 84.20 |
几个结论很清楚:第一,Tuna unified representation 在联合训练下超过 decoupled representation(ID 12 vs ID 8):MME-p 1361 vs 1346、MMMU 38.1 vs 37.2、SEED 66.5 vs 61.4、GQA 58.2 vs 56.5、GenEval 79.4 vs 78.3、DPG 84.20 vs 83.50。第二,联合训练让 Tuna 的生成超过 generation-only Tuna(ID 12 vs ID 6:GenEval 79.4 vs 77.8,DPG 84.20 vs 83.33),说明 understanding data 不只是没有伤害 generation,还提升了 generation。第三,联合训练也让 Tuna 的理解超过 understanding-only Tuna(ID 12 vs ID 3:MMMU 38.1 vs 37.6,SEED 66.5 vs 62.9,GQA 58.2 vs 57.4),说明 generation data 帮助 representation 学到更细粒度视觉结构。
Representation encoder 选择也重要。Model 10/12/13 分别使用 SigLIP、SigLIP 2、DINOv3:SigLIP 2 相比 SigLIP 在 MMMU、SEED、GQA、GenEval、DPG 上整体更好;DINOv3 MME-p/GQA 较强,但 generation quality 不如 SigLIP 2,因此作者最终采用 SigLIP 2,认为它在理解性能、生成质量和模型尺寸之间更均衡。
5.6 Limitations and caveats
论文显式或间接暴露的限制主要有三类。第一,训练数据规模、GPU 配置、batch size 和总 steps 没有完整披露,公开 repo 也只是模板和部分代码,难以完全复现论文生产训练。第二,README 说明 production-trained model weights 与 video generation model 因 policy constraints 未完整释放;因此现阶段 code verification 只能验证 architecture / training path,而不能验证论文表格中的 checkpoint。第三,Tuna 仍依赖 Wan 2.2 VAE 与 SigLIP 2 representation encoder;后续 Tuna-2 正是沿着“移除 VAE / representation encoder”的方向继续简化,这说明 TUNA 的统一表示虽然有效,但仍不是端到端 pixel-native 的最终形态。