How to use from the
Use from the
Transformers library
# Use a pipeline as a high-level helper
from transformers import pipeline

pipe = pipeline("image-text-to-text", model="OpenMobile-2/OpenMobile-2-27B")
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 AutoProcessor, AutoModelForMultimodalLM

processor = AutoProcessor.from_pretrained("OpenMobile-2/OpenMobile-2-27B")
model = AutoModelForMultimodalLM.from_pretrained("OpenMobile-2/OpenMobile-2-27B", device_map="auto")
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?"}
        ]
    },
]
inputs = processor.apply_chat_template(
	messages,
	add_generation_prompt=True,
	tokenize=True,
	return_dict=True,
	return_tensors="pt",
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=256)
print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:]))
Quick Links

HuggingFace | Paper | GitHub | HomePage

Introduction

OpenMobile-2-27B is a mobile GUI agent fine-tuned from Qwen3.6-27B on OpenMobile-Data-v2. It completes Android tasks from screenshots, and can call app-native tools when the foreground app exposes them.

Results

Model AndroidWorld Pass@1 MobileWorld GUI MobileGym SR MobileGym++ Hybrid SPA-Bench L3
Qwen3.6-27B 67.1 35.9 37.1 50.7 31.9
GUI-Owl-1.5-32B 69.4 43.9 18.4 23.3 --
MAI-UI-32B 73.3 36.2 -- -- --
MAI-UI-235B-A22B 76.7 39.7 -- -- --
Gemini-3.1-Pro 70.7 58.1 -- -- 70.2
GPT-5.6-Sol -- 70.1 -- -- 68.1
OpenMobile-2-27B 79.9 50.4 51.2 67.0 59.6

Deploy

The commands below use a context length of 65536 and tensor parallel 2.

vLLM

We use vLLM 0.19.1.

pip install vllm==0.19.1
vllm serve OpenMobile-2/OpenMobile-2-27B \
  --tensor-parallel-size 2 \
  --max-model-len 65536 \
  --gpu-memory-utilization 0.90 \
  --max-num-seqs 16 \
  --reasoning-parser qwen3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --gdn-prefill-backend triton

Citation

If you find this model useful, please cite our paper:

@article{openmobile2,
  title={OpenMobile-2: Building Versatile Mobile Agents with Scalable Environments and App-Native Tools},
  author={Chenyang Yan and Yingying Zhang and Kanzhi Cheng and Qiushi Sun and Zhengyuan Pan and Zheng Ma and Hang Yan and Yian Wang and Nuo Chen and Jialin Cao and Xingdong Gong and Wenpo Song and Han Chen and Zichen Ding and Fangzhi Xu and Shujian Huang and Xinyu Dai and Yichen Liu and Tiankuo Yao and Bo Wang and Ben Kao and Jianbing Zhang and Lewei Lu and Dahua Lin},
  journal={},
  year={}
}
Downloads last month
39
Safetensors
Model size
27B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for OpenMobile-2/OpenMobile-2-27B

Base model

Qwen/Qwen3.6-27B
Finetuned
(412)
this model
Quantizations
1 model