Paper: arXiv link pending.
Overview · Dataset · Method · Results · Getting Started · Training · Evaluation
ScreenRef and Distillation-to-Reinforcement Learning (D2RL) are the core contributions of GroundGUI. ScreenRef is a high-quality GUI grounding dataset spanning desktop, web, and mobile environments. It pairs diverse screenshots with referring expressions and localization annotations, covering text recognition, visual matching, spatial understanding, and refusal.
Building on ScreenRef, we train GroundGUI-8B from Qwen3-VL-8B-Instruct with supervised fine-tuning and D2RL, improving precise localization in complex interfaces.
ScreenRef (Screen Referring Grounding Dataset) pairs GUI screenshots with natural language referring expressions and bounding-box or point annotations.
The data is built through two complementary pipelines: screenshot crawling with metadata filtering and instruction verification, and tutorial video processing with keyframe extraction, action annotation, and visual grounding.
ScreenRef data construction through screenshot crawling and tutorial video crawling. Click the figure to view it at full resolution.
| Capability | What the model learns | Instances |
|---|---|---|
| Text recognition | Locate an element by its visible text. | 319,293 |
| Visual matching | Identify a target by its icon, shape, or color. | 136,771 |
| Spatial understanding | Resolve relative positions and layout relationships. | 154,830 |
| Refusal | Abstain when the requested target is absent. | 22,475 |
| Platform | Text | Visual | Spatial | Refusal | Total |
|---|---|---|---|---|---|
| Desktop | 128,018 | 61,951 | 63,291 | 13,912 | 267,172 |
| Web | 167,115 | 62,294 | 67,799 | 6,582 | 303,790 |
| Mobile | 24,160 | 12,526 | 23,740 | 1,981 | 62,407 |
| Total | 319,293 | 136,771 | 154,830 | 22,475 | 633,369 |
Qwen3-VL-8B is fine-tuned on each dataset under its recommended settings. UI-Vision is excluded from this comparison because of source overlap with GroundCUA.
| SFT data | ScreenSpot-Pro | OSWorld-G | MMBench-GUI L2 | ScreenSpot-V2 | Average |
|---|---|---|---|---|---|
| ScaleCUA | 52.8 | 61.7 | 83.6 | 93.6 | 72.9 |
| GroundCUA | 58.5 | 59.6 | 84.9 | 91.9 | 73.7 |
| ScreenRef | 62.4 | 64.9 | 84.5 | 93.9 | 76.4 |
Explore ScreenRef on Hugging Face →
After supervised fine-tuning on ScreenRef, D2RL strengthens the grounding policy in two stages: on-policy self-distillation (OPSD) provides dense teacher guidance, then REINFORCE Leave-One-Out (RLOO) optimizes click success.
GroundGUI-8B improves over Qwen3-VL-8B on all five evaluated benchmarks and outperforms the larger Qwen3-VL-32B baseline in this comparison.
| Model | ScreenSpot-V2 | ScreenSpot-Pro | MMBench-GUI L2 | OSWorld-G | UI-Vision |
|---|---|---|---|---|---|
| Qwen3-VL-8B | 91.7 | 49.9 | 81.3 | 54.8 | 17.5 |
| Qwen3-VL-32B | 93.0 | 54.9 | 85.3 | 60.6 | 26.9 |
| GroundGUI-8B | 95.2 | 63.9 | 86.8 | 65.4 | 38.3 |
| Gain over Qwen3-VL-8B | +3.5 | +14.0 | +5.5 | +10.6 | +20.8 |
git clone https://github.com/PrentisAI/GroundGUI.git
cd GroundGUI
| Resource | Link | Use |
|---|---|---|
| GroundGUI-8B | Model weights | Download a checkpoint for evaluation. |
| ScreenRef | Dataset | Prepare the training data. |
| Qwen3-VL-8B-Instruct | Base model | Starting point for SFT and tokenizer template for checkpoint conversion. |
The recorded environments use Python 3.12.13. Prepare a separate environment for each stage using its requirements.lock.txt as the version reference. These are environment snapshots with CUDA-specific packages and builds; use wheel sources and CUDA tooling appropriate to your GPU system.
| Stage | Dependency snapshot | Transformers | Environment variable |
|---|---|---|---|
| SFT | sft/requirements.lock.txt | 5.12.1 | CONDA_ENV: environment prefix |
| OPSD / RLOO | rl/requirements.lock.txt | 4.57.6 | ENV_BIN: environment's bin/ directory |
| Evaluation | eval/requirements.lock.txt | 4.57.6 | ENV_PREFIX: environment prefix |
Keep these environments separate. SFT requires Transformers 5.x for correct sequence packing; using 4.x can silently produce incorrect training. The RL and evaluation stacks use 4.57.6. Use the lock files above as the reference for the tested versions.
SCREENREF_PARQUET to the ScreenRef directory and DATA_ROOT to the ScreenRef-Annotations directory; the screenshots are unpacked into $DATA_ROOT/images/ on the first run (about 330 GB).DATASET to the RL corpus, either its Parquet directory or a JSONL file. Parquet is converted once into rl/data/.eval/dataset_info.template.json. The evaluation wrapper creates eval/dataset_info.json from this template on its first run.Run the commands below from the repository root and replace /path/to/... with your local paths. The paper uses 4 B300 GPUs for SFT and 8 B300 GPUs for D2RL, with 12K grounding samples for post-training.
CONDA_ENV="/path/to/sft-env" \
DATA_ROOT="/path/to/ScreenRef-Annotations" \
SCREENREF_PARQUET="/path/to/ScreenRef" \
GPUS=4 \
bash scripts/sft.sh out/sft "/path/to/Qwen3-VL-8B-Instruct"
The default data configuration is meta/meta_non_refusal.json in ScreenRef-Annotations. Pass a custom configuration as the third argument to scripts/sft.sh if needed. The trained model is saved under out/sft/.
export ENV_BIN="/path/to/rl-env/bin"
export DATASET="/path/to/rl-corpus"
# The SFT model from Stage 1.
SFT_MODEL="/path/to/sft-model"
# Stage 2: distill from the privileged teacher.
bash scripts/opsd.sh "$SFT_MODEL" groundgui-opsd
# Stage 3: optimize click success from the OPSD model.
OPSD_MODEL="/path/to/opsd-model"
bash scripts/rloo.sh "$OPSD_MODEL" groundgui-d2rl
Trained models are saved under rl/output/opsd_rloo/<run_name>/. By default, the SFT model also initializes the frozen OPSD teacher.
The evaluation wrapper runs ScreenSpot-V2, ScreenSpot-Pro, MMBench-GUI L2, UI-Vision, and OSWorld-G sequentially with vLLM at temperature 0.
ENV_PREFIX="/path/to/eval-env" \
DATA_ROOT="/path/to/benchmarks" \
TP=2 \
bash scripts/eval.sh "/path/to/GroundGUI-8B" out/eval/groundgui-8b
Replace the checkpoint path with a downloaded GroundGUI-8B model directory or a locally trained model. For an SFT model, also set INSTRUCT_DIR="/path/to/Qwen3-VL-8B-Instruct"; RL models are evaluated as is. Results are saved to out/eval/groundgui-8b/<benchmark>/.
To evaluate the D2RL run above:
D2RL_MODEL="/path/to/d2rl-model"
ENV_PREFIX="/path/to/eval-env" \
DATA_ROOT="/path/to/benchmarks" \
bash scripts/eval.sh "$D2RL_MODEL" out/eval/groundgui-d2rl
GroundGUI/
├── assets/ # ScreenRef construction and D2RL method figures
├── scripts/ # Entry points: SFT, OPSD, RLOO, refusal SFT, evaluation
├── sft/ # Supervised fine-tuning and data configurations
├── rl/ # OPSD / RLOO training, based on GUI-SD and ms-swift
├── eval/ # Grounding benchmarks, prompts, and re-scoring
├── tools/ # Checkpoint conversion and serving utilities
├── LICENSE # Apache-2.0 code license
└── NOTICE # Third-party attribution and modified-file inventory
Our implementation builds on the following projects:
See NOTICE for full attribution and the inventory of modified files.
The code is licensed under Apache-2.0, except where noted in NOTICE. ScreenRef is distributed under its own license and is not covered by the repository's code license. Refer to the model and dataset pages for their respective terms.
The paper is titled GroundGUI: GUI Grounding by High-Quality Data and Distillation-to-Reinforcement Learning. The arXiv link and BibTeX entry will be added when the preprint is available.
Paper: arXiv link pending.
Overview · Dataset · Method · Results · Getting Started · Training · Evaluation
ScreenRef and Distillation-to-Reinforcement Learning (D2RL) are the core contributions of GroundGUI. ScreenRef is a high-quality GUI grounding dataset spanning desktop, web, and mobile environments. It pairs diverse screenshots with referring expressions and localization annotations, covering text recognition, visual matching, spatial understanding, and refusal.
Building on ScreenRef, we train GroundGUI-8B from Qwen3-VL-8B-Instruct with supervised fine-tuning and D2RL, improving precise localization in complex interfaces.
ScreenRef (Screen Referring Grounding Dataset) pairs GUI screenshots with natural language referring expressions and bounding-box or point annotations.
The data is built through two complementary pipelines: screenshot crawling with metadata filtering and instruction verification, and tutorial video processing with keyframe extraction, action annotation, and visual grounding.
ScreenRef data construction through screenshot crawling and tutorial video crawling. Click the figure to view it at full resolution.
| Capability | What the model learns | Instances |
|---|---|---|
| Text recognition | Locate an element by its visible text. | 319,293 |
| Visual matching | Identify a target by its icon, shape, or color. | 136,771 |
| Spatial understanding | Resolve relative positions and layout relationships. | 154,830 |
| Refusal | Abstain when the requested target is absent. | 22,475 |
| Platform | Text | Visual | Spatial | Refusal | Total |
|---|---|---|---|---|---|
| Desktop | 128,018 | 61,951 | 63,291 | 13,912 | 267,172 |
| Web | 167,115 | 62,294 | 67,799 | 6,582 | 303,790 |
| Mobile | 24,160 | 12,526 | 23,740 | 1,981 | 62,407 |
| Total | 319,293 | 136,771 | 154,830 | 22,475 | 633,369 |
Qwen3-VL-8B is fine-tuned on each dataset under its recommended settings. UI-Vision is excluded from this comparison because of source overlap with GroundCUA.
| SFT data | ScreenSpot-Pro | OSWorld-G | MMBench-GUI L2 | ScreenSpot-V2 | Average |
|---|---|---|---|---|---|
| ScaleCUA | 52.8 | 61.7 | 83.6 | 93.6 | 72.9 |
| GroundCUA | 58.5 | 59.6 | 84.9 | 91.9 | 73.7 |
| ScreenRef | 62.4 | 64.9 | 84.5 | 93.9 | 76.4 |
Explore ScreenRef on Hugging Face →
After supervised fine-tuning on ScreenRef, D2RL strengthens the grounding policy in two stages: on-policy self-distillation (OPSD) provides dense teacher guidance, then REINFORCE Leave-One-Out (RLOO) optimizes click success.
GroundGUI-8B improves over Qwen3-VL-8B on all five evaluated benchmarks and outperforms the larger Qwen3-VL-32B baseline in this comparison.
| Model | ScreenSpot-V2 | ScreenSpot-Pro | MMBench-GUI L2 | OSWorld-G | UI-Vision |
|---|---|---|---|---|---|
| Qwen3-VL-8B | 91.7 | 49.9 | 81.3 | 54.8 | 17.5 |
| Qwen3-VL-32B | 93.0 | 54.9 | 85.3 | 60.6 | 26.9 |
| GroundGUI-8B | 95.2 | 63.9 | 86.8 | 65.4 | 38.3 |
| Gain over Qwen3-VL-8B | +3.5 | +14.0 | +5.5 | +10.6 | +20.8 |
git clone https://github.com/PrentisAI/GroundGUI.git
cd GroundGUI
| Resource | Link | Use |
|---|---|---|
| GroundGUI-8B | Model weights | Download a checkpoint for evaluation. |
| ScreenRef | Dataset | Prepare the training data. |
| Qwen3-VL-8B-Instruct | Base model | Starting point for SFT and tokenizer template for checkpoint conversion. |
The recorded environments use Python 3.12.13. Prepare a separate environment for each stage using its requirements.lock.txt as the version reference. These are environment snapshots with CUDA-specific packages and builds; use wheel sources and CUDA tooling appropriate to your GPU system.
| Stage | Dependency snapshot | Transformers | Environment variable |
|---|---|---|---|
| SFT | sft/requirements.lock.txt | 5.12.1 | CONDA_ENV: environment prefix |
| OPSD / RLOO | rl/requirements.lock.txt | 4.57.6 | ENV_BIN: environment's bin/ directory |
| Evaluation | eval/requirements.lock.txt | 4.57.6 | ENV_PREFIX: environment prefix |
Keep these environments separate. SFT requires Transformers 5.x for correct sequence packing; using 4.x can silently produce incorrect training. The RL and evaluation stacks use 4.57.6. Use the lock files above as the reference for the tested versions.
SCREENREF_PARQUET to the ScreenRef directory and DATA_ROOT to the ScreenRef-Annotations directory; the screenshots are unpacked into $DATA_ROOT/images/ on the first run (about 330 GB).DATASET to the RL corpus, either its Parquet directory or a JSONL file. Parquet is converted once into rl/data/.eval/dataset_info.template.json. The evaluation wrapper creates eval/dataset_info.json from this template on its first run.Run the commands below from the repository root and replace /path/to/... with your local paths. The paper uses 4 B300 GPUs for SFT and 8 B300 GPUs for D2RL, with 12K grounding samples for post-training.
CONDA_ENV="/path/to/sft-env" \
DATA_ROOT="/path/to/ScreenRef-Annotations" \
SCREENREF_PARQUET="/path/to/ScreenRef" \
GPUS=4 \
bash scripts/sft.sh out/sft "/path/to/Qwen3-VL-8B-Instruct"
The default data configuration is meta/meta_non_refusal.json in ScreenRef-Annotations. Pass a custom configuration as the third argument to scripts/sft.sh if needed. The trained model is saved under out/sft/.
export ENV_BIN="/path/to/rl-env/bin"
export DATASET="/path/to/rl-corpus"
# The SFT model from Stage 1.
SFT_MODEL="/path/to/sft-model"
# Stage 2: distill from the privileged teacher.
bash scripts/opsd.sh "$SFT_MODEL" groundgui-opsd
# Stage 3: optimize click success from the OPSD model.
OPSD_MODEL="/path/to/opsd-model"
bash scripts/rloo.sh "$OPSD_MODEL" groundgui-d2rl
Trained models are saved under rl/output/opsd_rloo/<run_name>/. By default, the SFT model also initializes the frozen OPSD teacher.
The evaluation wrapper runs ScreenSpot-V2, ScreenSpot-Pro, MMBench-GUI L2, UI-Vision, and OSWorld-G sequentially with vLLM at temperature 0.
ENV_PREFIX="/path/to/eval-env" \
DATA_ROOT="/path/to/benchmarks" \
TP=2 \
bash scripts/eval.sh "/path/to/GroundGUI-8B" out/eval/groundgui-8b
Replace the checkpoint path with a downloaded GroundGUI-8B model directory or a locally trained model. For an SFT model, also set INSTRUCT_DIR="/path/to/Qwen3-VL-8B-Instruct"; RL models are evaluated as is. Results are saved to out/eval/groundgui-8b/<benchmark>/.
To evaluate the D2RL run above:
D2RL_MODEL="/path/to/d2rl-model"
ENV_PREFIX="/path/to/eval-env" \
DATA_ROOT="/path/to/benchmarks" \
bash scripts/eval.sh "$D2RL_MODEL" out/eval/groundgui-d2rl
GroundGUI/
├── assets/ # ScreenRef construction and D2RL method figures
├── scripts/ # Entry points: SFT, OPSD, RLOO, refusal SFT, evaluation
├── sft/ # Supervised fine-tuning and data configurations
├── rl/ # OPSD / RLOO training, based on GUI-SD and ms-swift
├── eval/ # Grounding benchmarks, prompts, and re-scoring
├── tools/ # Checkpoint conversion and serving utilities
├── LICENSE # Apache-2.0 code license
└── NOTICE # Third-party attribution and modified-file inventory
Our implementation builds on the following projects:
See NOTICE for full attribution and the inventory of modified files.
The code is licensed under Apache-2.0, except where noted in NOTICE. ScreenRef is distributed under its own license and is not covered by the repository's code license. Refer to the model and dataset pages for their respective terms.
The paper is titled GroundGUI: GUI Grounding by High-Quality Data and Distillation-to-Reinforcement Learning. The arXiv link and BibTeX entry will be added when the preprint is available.