GUI-JEPA: Candidate-Conditioned JEPA Latents as a Fast Action Policy for Mobile GUI Agents
Organizations: Shanghai Jiao Tong University · Nanyang Technological University · Alibaba Cloud Computing
Abstract
Mobile GUI agents are typically fine-tuned 7B-scale vision-language models (VLMs) that generate each action as text. However, these VLMs decode every action token by token, and even agents that score candidate actions keep a large language model or VLM in the loop, making them slow and memory-hungry. To address these issues, we propose GUI-JEPA, to our knowledge the first decoder-free GUI agent policy built on a Joint-Embedding Predictive Architecture (JEPA), which selects actions in the latent space of a JEPA encoder pretrained on unlabelled GUI screenshots. Its action- and region-conditioned latent predictor turns the screen latent into one latent per candidate action, letting lightweight heads score all candidates against the instruction in a single batched pass, without decoding a token. We further show that the scorer relies on this latent pathway and that the predictor is trained for the decision itself: a randomly initialised predictor does just as well as one pretrained on screen dynamics. On AndroidControl, GUI-JEPA is 2.8-4.0x faster on the same GPU than a Qwen2.5-VL-7B agent we fine-tune with the same inputs, while reaching 86-92% of its in-distribution accuracy with 6% of its parameters. Code is available at https://github.com/bcwang-sjtu/GUI-JEPA
Figures & tables
| System | Params | Input | Judge | Split | AC-Low | AC-High |
| EM scores reported by other papers (screenshot input) | ||||||
| Aguvis-7B a | 7B | img | EM | unspec. | 89.4 | 54.2 |
| OS-Atlas-7B a | 7B | img | EM | unspec. | 67.3 | 56.5 |
| Qwen3-VL-8B m | 8B | img | EM ∗ | all-split | 77.7 | 60.8 |
| Qwen2.5-VL-7B, released a | 7B | img | EM | unspec. | 85.0 | 62.9 |
| MIRAGE-4B m | 4B | img | EM ∗ | all-split | 77.6 | 64.4 |
| Stage | IDD | full | OOD | val. |
| Base policy | 56.84 | 49.79 | 43.85 | 57.54 |
| + span ranker | 59.69 | 52.44 | 46.34 | 60.43 |
| + click reranker | 60.99 | 53.75 | 47.67 | 62.46 |
| total | +4.15 | +3.96 | +3.82 | +4.92 |
| System | Serving | p50 | p90 | Mem. | ours |
| 7B SFT, merged | HF | 506.7 | 588.9 | 15.9 | 6.8/9.8 |
| 7B SFT, merged | vLLM | 206.7 | 247.9 | 16 | 2.8 / 4.0 |
| GUI-JEPA , fp32 | PyTorch | 74.3 | 127.8 | 3.45 | 1 |
| GUI-JEPA , bf16 | PyTorch | 51.5 | 79.7 | 2.48 | 1 |
Appendix figures & tables19 assets
Supplementary material from the paper’s appendix.
Appendix
| AC-High | AC-Low | ||||||||
| Split | Stage | seed 1 | seed 2 | seed 3 | mean sd | seed 1 | seed 2 | seed 3 | mean sd |
| IDD | Base policy | 56.35 | 55.21 | 56.84 | 56.13 0.84 | 82.71 | 81.88 | 83.72 | 82.77 0.92 |
| + span ranker | 59.49 | 58.24 | 59.69 | 59.14 0.79 | 82.63 | 81.78 | 83.64 | 82.68 0.93 | |
| + click reranker | 60.26 | 59.10 | 60.99 | 60.12 0.95 | 83.18 | 82.04 | 84.06 | 83.09 1.01 | |
| Full test | Base policy | 49.05 | 48.51 | 49.79 | 49.12 0.64 | 78.13 | 76.65 | 78.74 | 77.84 1.07 |
| + span ranker | 51.79 | 51.21 | 52.44 | 51.81 0.62 | 77.43 | 75.99 | 78.06 | 77.16 1.06 | |
| IDD AC-Low | IDD AC-High | |||||
| Condition | s1 | s2 | s3 | s1 | s2 | s3 |
| Inference-time lesions (text matcher untouched unless stated) | ||||||
| Base policy (as is) | 82.79 | 81.80 | 83.88 | 56.48 | 55.39 | 56.84 |
| no predictor ( ) | 61.79 | 62.05 | 59.02 | 41.16 | 40.93 | 42.87 |
| within-type action shuffle | 72.01 | 71.12 | 72.65 | 46.47 | 44.95 | 46.06 |
| all-candidate action shuffle | 55.83 | 55.81 | 56.64 | 35.17 | 34.63 | 33.41 |
| Subsplit | Episodes / steps | Base | + ranker | + reranker | PaLM 2S | |
| IDD | 716 / 3,858 | 56.13 0.84 | 59.14 0.79 | 60.12 0.95 | +3.98 | 70.8 |
| app_unseen | 631 / 3,475 | 41.30 0.27 | 43.39 0.26 | 44.56 0.83 | +3.25 | 58.5 |
| task_unseen | 803 / 4,464 | 43.03 0.70 | 45.79 0.68 | 46.87 1.00 | +3.84 | 59.6 |
| category_unseen | 700 / 3,891 | 41.71 0.45 | 44.06 0.44 | 45.20 0.83 | +3.48 | 57.4 |
| OOD union | 827 / 4,586 | 43.21 0.55 | 45.65 0.60 | 46.74 0.94 | +3.52 | – |
| Full test | 1,543 / 8,444 | 49.12 0.64 | 51.81 0.62 | 52.85 0.94 | +3.73 | – |
| Subsplit | Base | + ranker | + reranker | PaLM 2S |
| IDD | 82.77 | 82.68 | 83.09 1.01 | 83.2 |
| app_unseen | 72.99 | 71.75 | 72.37 1.58 | 78.5 |
| task_unseen | 73.66 | 72.65 | 73.15 1.46 | 77.3 |
| category_unseen | 72.84 | 71.75 | 72.30 1.68 | 76.8 |
| OOD union | 73.69 | 72.51 | 73.04 1.44 | – |
| Full test | 77.84 | 77.16 | 77.64 1.23 | – |
| IDD | app_unseen | task_unseen | category_unseen | ||
| Condition | AC-Low | AC-High | Low / High | Low / High | Low / High |
| Base policy (as is) | 82.8 1.0 | 56.2 0.8 | 72.9 / 40.8 | 73.6 / 42.6 | 72.7 / 41.3 |
| no predictor ( ) | 61.0 1.7 21.9 | 41.7 1.1 14.6 | 53.8 / 32.6 | 53.7 / 33.1 | 52.8 / 32.2 |
| within-type action shuffle | 71.9 0.8 10.9 | 45.8 0.8 10.4 | 62.1 / 32.3 | 63.5 / 34.5 | 61.9 / 32.7 |
| all-candidate action shuffle | 56.1 0.5 26.7 | 34.4 0.9 21.8 | 49.9 / 26.7 | 50.3 / 27.6 | 49.3 / 26.8 |
| swapped, non-fine-tuned predictor | 66.5 1.9 16.3 | 45.5 0.5 10.7 | – | – | – |
| IDD | app_unseen | task_unseen | |
| Probe steps / episodes | 1,579 / 300 | 116 / 24 | 1,671 / 300 |
| cos(prediction, true next latent) | 0.467 | 0.467 | 0.460 |
| cos(copy , true next latent) | 0.788 | 0.773 | 0.786 |
| cos(predicted change, true change) | 0.006 | 0.003 | 0.004 |
| Right direction (%) | 52.6 | 47.4 | 51.6 |
| Variant | Setting | Reference | Variant | Reading |
| Scoring head | ||||
| Concat-MLP head over replacing the structural head (ROI-conditioned predictor) | pilot, 2 ep | 40.59 / 19.62 | 34.58 / 26.88 | Low, High; its scores do not depend on the predictor |
| Encoder and resolution | ||||
| DINOv2-L at 518 px as main features | 4K, 4 ep | 77.32 / 47.12 | 59.88 / 37.35 | encoder and resolution change together |
| System (source) | Params | Input | Judge | Split | AC-Low | AC-High |
| HiconAgent-3B ( Zhou et al., 2026 , Tab. 1) | 3B | img | OS-Atlas | unspec. (“OOD setting”) | – | 52.40 |
| UI-TARS-2B ( Qin et al., 2025 , Tab. 8) | 2B | img | OS-Atlas | 7,708 (inferred) | 89.3 | 68.9 |
| LAMO-3B ( Wang et al., 2026 , Tab. 2) | 3B | img | own (type + value match) | unspec. | 92.1 | 65.5 |
| SecAgent-3B ( Xie et al., 2026 , Tab. 3) | 3B | img | unspec. | unspec. | – | 69.5 |
| GUI-Libra-3B ( Yang et al., 2026a , Tab. 3) | 3B | img | own | AC-v2 (398) | 85.9 | 57.3 |
| Qwen2.5-VL-3B, re-run by GUI-Libra ( Yang et al., 2026a , Tab. 3) | 3B | img | own | AC-v2 (398) | 71.1 | 36.4 |
| System (source) | Params | Input | Judge | Split | AC-Low | AC-High |
| GPT-4o, zero-shot ( Wu et al., 2025 , Tab. 5) | n/a | img | OS-Atlas | 7,708 | 28.4 | 21.2 |
| OS-Atlas-7B, zero-shot ( Wu et al., 2025 , Tab. 5) | 7B | img | OS-Atlas | 7,708 | 50.9 | 29.8 |
| M3A (GPT-4-Turbo, text-only), zero-shot ( Li et al., 2024 , Tab. 4) | n/a | a11y | relaxed | r500-IDD | 55.0 | 42.1 |
| Aguvis-7B, SFT ( Xu et al., 2025 , Tab. 3) | 7B | img | relaxed (inferred) | r500 | 80.5 | 61.5 |
| Aguvis-72B, SFT ( Xu et al., 2025 , Tab. 3) | 72B | img | relaxed (inferred) | r500 | 84.4 | 66.4 |
| OS-Atlas-7B, SFT ( Wu et al., 2025 , Tab. 5) | 7B | img | OS-Atlas | 7,708 | 85.22 | 71.17 |
| Component | Params | Setting |
| Encoder pretraining (frozen afterwards) | ||
| JEPA encoder, ViT-L/16 | 303.3M | vit_large_patch16_224 , 224 px, patch tokens; ImageNet initialisation; JEPA objective after I-JEPA with random-patch masking at ratio 0.5 (the student sees the screenshot with the masked patches zeroed and regresses the EMA target’s tokens at those positions, smooth-L1); 189,262 unlabelled screenshots (118,791 GUI-Odyssey mobile, 70,471 VideoCUA desktop); 2 epochs at batch 96, 3,942 optimiser steps (the policy uses the epoch-2 checkpoint); EMA target decay 0.996; peak learning rate with warm-up; JEPA loss 1.28 0.68; target-token std 1.8–2.2 (min 1.82, final 2.17; no collapse); 2,739 s 0.76 GPU-hour on one H20 |
| Policy (trained end to end with the listwise loss) | ||
| Action code | – | 16-d: action-type one-hot plus normalised coordinates or scroll direction |
| Residual latent predictor | 39.9M | ROI-pooled encoder feature (1,024-d) MLP added to a learned query token; 3 transformer layers over the 196 patch tokens and the query, 2-D sine–cosine positional embeddings; residual output ; initialised from a dynamics predictor trained on AndroidControl transitions, then fine-tuned with the policy loss |
| Structural head | 2.1M | cosine, with a learned scale, between an MLP of and an MLP of the conditioning vector, plus a learned per-type bias; its only candidate-dependent visual input is |
| Qwen2.5-VL-7B | Qwen2.5-VL-7B | GUI-JEPA | GUI-JEPA | |
| zero-shot | LoRA SFT | (ours, seed 3) | (ours, 3 seeds) | |
| Parameters | 8.29B | 8.29B | 0.50B | 0.50B |
| ms/step (H20, batch 1, 100 real steps) | 505 (HF) | 207 (vLLM) / 507 (HF) | 74 (fp32) / 51.5 (bf16) | |
| Overall step acc. | 43.2 | 70.9 | 61.0 | 60.1 1.0 |
| share of SFT (High / params) | – | – | 86.1% / 6.0% | 84.8% / 6.0% |
| Type accuracy | 72.1 | 87.0 | 80.6 | 78.8 3.4 |
| Step acc. | Type acc. | |||||
| Action type | 7B | ours | 7B | ours | Gap | |
| All | 3,858 | 70.9 | 61.0 | 87.0 | 80.6 | 9.9 |
| click | 2,419 | 72.0 | 62.8 | 91.3 | 86.3 | 5.8 |
| scroll | 505 | 71.7 | 59.8 | 83.8 | 64.4 | 1.6 |
| input_text | 282 | 67.0 | 52.5 | 92.2 | 87.6 | 1.1 |
| open_app | 253 | 81.0 | 68.0 | 87.7 | 92.9 | 0.9 |
| Configuration | Steps | p50 ms | p90 ms | mean ms | peak mem | vs 7B vLLM | vs 7B HF (merged) |
| Real steps, fp32 (precision of all accuracy tables) | shared 100 | 74.3 | 127.8 | 86.9 | 3.45 GB | 2.8 | 6.8 |
| Real steps, bf16 autocast | shared 100 | 51.5 | 79.7 | 56.2 | 2.48 GB | 4.0 | 9.8 |
| Real steps, fp32 | all 200 | 74.8 | 134.0 | 87.5 | 3.45 GB | – | – |
| Real steps, bf16 autocast | all 200 | 48.0 | 79.0 | 53.4 | 2.48 GB | – | – |
| Synthetic fixed , fp32, / 23 / 57 / 100 | – | 28.6 / 53.9 / 95.8 / 151.5 | – | – | 1.9–3.3 GB | – | – |
| Synthetic fixed , bf16, / 10 / 23 / 57 / 100 | – | 19.4 / 22.2 / 28.3 / 43.6 / 63.8 | – | – | 1.8–2.4 GB | – | – |
Mobile GUI Agents
Mobile GUI agents use visual and structured interface information to carry out tasks across smartphone apps.
See all 84 papers