KMK040412/guiowl-aw-mix-hybrid
GUI-Owl AndroidWorld SFT Mix — HYBRID / recommended Purpose: AndroidWorld (116-task) SFT for a GUI-Owl-1.5-2B block-diffusion VLA. This dataset is an action-balanced, source-mixed SFT corpus assembled from five Android GUI-agent trajectory sources. It is built for in-domain supervised fine-tuning ahead of RL. The mix deliberately includes AndroidWorld task-family coverage (via the openmobile anchor, whose app field holds AW task-family names) and accepts in-domain overlap by… See the full description on the dataset page: https://huggingface.co/datasets/KMK040412/guiowl-aw-mix-hybrid.
GUI-Owl AndroidWorld SFT Mix — HYBRID / recommended
Purpose: AndroidWorld (116-task) SFT for a GUI-Owl-1.5-2B block-diffusion VLA. This dataset is an action-balanced, source-mixed SFT corpus assembled from five Android GUI-agent trajectory sources. It is built for in-domain supervised fine-tuning ahead of RL. The mix deliberately includes AndroidWorld task-family coverage (via theopenmobileanchor, whoseappfield holds AW task-family names) and accepts in-domain overlap by design.
This version: HYBRID
Balanced mix (~593k steps). openmobile ~26% + gui_odyssey ~26% + AITW ~22% visual ballast + amex/androidcontrol. Per-family soft cap (310) to avoid AW-family memorization skew. Recommended default trade-off between specialization and generalization.
- Total steps: 593,016
- Shards: 149 parquet files (
balanced-*.parquet, ~4000 rows each) - Build seed: 7
Action distribution
Source mix
Swipe direction (overall)
Note: a direction-balanced swipe subset (up40/down30/left17/right13) is enforced up to 19,069 swipes; the remainder keeps the natural (up-heavy) distribution as ballast, so the overall swipe split above is up-heavy by design.
Schema (unified 13-column)
source string # origin dataset: androidcontrol_par | amex | openmobile | gui_odyssey | aitw
src_key string # original sample key in the source corpus
app string # app / AndroidWorld task-family label (may be empty)
instruction string # natural-language goal for the episode
history string # prior-step context
screenshot binary # PNG/JPEG screen bytes
screen_width int
screen_height int
episode_id string
target_json string # ground-truth action as JSON (canonical label)
action_type string # parsed action: click|type|swipe|system_button|terminate|wait|open|long_press|answer
coordinate list # parsed primary coordinate (normalized 0-1000) or null
coordinate2 list # parsed secondary coordinate (swipe end) or nullCoordinates are normalized to a 0-1000 grid (origin top-left).
How the mix was built
Balanced via a parallel 2-stage builder (build_balanced_mix.py): actions and coordinates are parsed from target_json, then per-action keep_prob, per-(action, coordinate-bin) caps (maxfracpercoordbin = 0.06, 8x8 grid), and per-(action, app) caps (maxfracperapp = 0.22) are applied. Scarce AndroidWorld verbs (open / answer / longpress / terminate) are up-weighted via sampling-with-replacement (replication caps: {'open': 6, 'answer': 8, 'longpress': 8, 'terminate': 5}). Full provenance and exact targets are in balance_report.json.
Sibling datasets
- guiowl-aw-mix-full — generalization
- guiowl-aw-mix-targeted — in-domain
- guiowl-aw-mix-hybrid — recommended
- guiowl-curated-corpus — base curated sources
