Instructions to use OpenMobile-2/OpenMobile-2-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use OpenMobile-2/OpenMobile-2-27B with Transformers:
# 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]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use OpenMobile-2/OpenMobile-2-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "OpenMobile-2/OpenMobile-2-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "OpenMobile-2/OpenMobile-2-27B", "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/OpenMobile-2/OpenMobile-2-27B
- SGLang
How to use OpenMobile-2/OpenMobile-2-27B 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 "OpenMobile-2/OpenMobile-2-27B" \ --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": "OpenMobile-2/OpenMobile-2-27B", "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 "OpenMobile-2/OpenMobile-2-27B" \ --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": "OpenMobile-2/OpenMobile-2-27B", "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 OpenMobile-2/OpenMobile-2-27B with Docker Model Runner:
docker model run hf.co/OpenMobile-2/OpenMobile-2-27B
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