Image-Text-to-Text
Transformers
Safetensors
Generated from Trainer
trl
sft
conversational
Eval Results (legacy)
🇪🇺 Region: EU
Instructions to use macpaw-research/GUIrilla-See-7B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use macpaw-research/GUIrilla-See-7B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="macpaw-research/GUIrilla-See-7B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("macpaw-research/GUIrilla-See-7B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use macpaw-research/GUIrilla-See-7B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "macpaw-research/GUIrilla-See-7B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macpaw-research/GUIrilla-See-7B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/macpaw-research/GUIrilla-See-7B
- SGLang
How to use macpaw-research/GUIrilla-See-7B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "macpaw-research/GUIrilla-See-7B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macpaw-research/GUIrilla-See-7B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "macpaw-research/GUIrilla-See-7B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "macpaw-research/GUIrilla-See-7B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use macpaw-research/GUIrilla-See-7B with Docker Model Runner:
docker model run hf.co/macpaw-research/GUIrilla-See-7B
|
Download README.md from macpaw-research/GUIrilla-See-7B: direct link, hf CLI and curl.
- Browser
- Download file 4.21 kB
-
https://huggingface.co/macpaw-research/GUIrilla-See-7B/resolve/main/README.md
- Command line
-
hf download hf://macpaw-research/GUIrilla-See-7B/README.md
-
curl -L -o README.md https://huggingface.co/macpaw-research/GUIrilla-See-7B/resolve/main/README.md
4.21 kB
metadata
base_model: Qwen/Qwen2.5-VL-7B-Instruct
library_name: transformers
pipeline_tag: image-text-to-text
model_name: GUIrilla-See-7B
tags:
- generated_from_trainer
- trl
- sft
license: mit
datasets:
- macpaw-research/GUIrilla-Task
model-index:
- name: GUIrilla-See-7B
results:
- task:
type: image-text-to-text
name: GUI Grounding
dataset:
type: macpaw-research/GUIrilla-Task
name: GUIrilla-Task
split: test
metrics:
- type: accuracy
value: 75.59
name: Success Rate (%)
GUIrilla-See-7B
Vision–language grounding for graphical user interfaces
Summary
GUIrilla-See-7B is a 7 billion-parameter Qwen 2.5-VL model fine-tuned to locate on-screen elements of macOS GUI. Given a screenshot and a natural-language task, the model returns a single point (x, y) that lies at (or very near) the centre of the referenced region.
Quick-start
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
import torch, PIL.Image as Image
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
"macpaw-research/GUIrilla-See-7B",
torch_dtype="auto",
device_map="auto",
attn_implementation="flash_attention_2",
trust_remote_code=True,
)
processor = AutoProcessor.from_pretrained(
"macpaw-research/GUIrilla-See-7B",
trust_remote_code=True,
use_fast=True,
)
image = Image.open("screenshot.png")
task = "the search field in the top-right corner"
conversation = [{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text",
"text": (
"Your task is to help the user identify the precise coordinates "
"(x, y) of a specific area/element/object on the screen based on "
"a description.\n"
"- Your response should aim to point to the centre or a representative "
"point within the described area/element/object as accurately as possible.\n"
"- If the description is unclear or ambiguous, infer the most relevant area "
"or element based on its likely context or purpose.\n"
"- Your answer should be a single string (x, y) corresponding to the point "
"of interest.\n"
f"\nDescription: {task}"
"\nAnswer:"
)},
],
}]
texts = processor.apply_chat_template(conversation, tokenize=False,
add_generation_prompt=True)
image_inputs = [image]
inputs = processor(text=texts, images=image_inputs,
return_tensors="pt", padding=True).to(model.device)
with torch.no_grad():
output_ids = model.generate(**inputs, max_new_tokens=16, num_beams=3)
generated_ids = output_ids[:, inputs.input_ids.shape[1]:]
answer = processor.batch_decode(generated_ids,
skip_special_tokens=True)[0]
print("Predicted click:", answer) # → "(812, 115)"
Training Data
Trained on GUIrilla-Task.
- Train data: 25,606 tasks across 881 macOS applications (5% of apps from it for validation)
- Test data: 1,565 tasks across 227 macOS applications
Training Procedure
- 2 epochs LoRA fine-tuning on 2 × H100 80 GB.
- Optimiser – AdamW (β₁ = 0.9, β₂ = 0.95), LR = 2 e-5 with cosine decay and 0.05 warm up ratio.
Evaluation
| Split | Success Rate % |
|---|---|
| Test | 75.59 |
Ethical & Safety Notes
- Always sandbox or use confirmation steps when connecting the model to real GUIs.
- Screenshots may reveal sensitive data – ensure compliance with privacy regulations.
License
MIT (see LICENSE).
Citation
@article{garkot2025guirilla,
title={GUIrilla: A Scalable Framework for Automated Desktop UI Exploration},
author={Garkot, Sofiya and Shamrai, Maksym and Synytsia, Ivan and Hirna, Mariya},
journal={arXiv preprint arXiv:2510.16051},
year={2025},
url={https://arxiv.org/abs/2510.16051}
}