Who is this for?

This Learning Path is for Android and machine learning developers who want to run an optimized vision-language model locally on an Arm-based Android device.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Prepare the Android command-line tools and connect an Arm-based Android phone.
  • Download and run the supported Qwen3-VL model package from the Arm AI Portal.
  • Trace how Vision Chat validates and extracts the model package ZIP, prepares an image and prompt, runs llama.cpp, and generates text.
  • Interpret model-load, image-and-prompt, and token-generation measurements on a physical phone.

Prerequisites

Before starting, you will need the following:

  • A macOS, Linux, or Windows development machine
  • An Arm-based Android phone with Android 9 or later, asimddp and i8mm CPU features, and at least 4 GB of free storage
  • Basic familiarity with terminal commands and Android applications
  • Git installed on the development machine
  • Python 3 with the venv and pip modules on the machine
  • Java Development Kit (JDK) 17 or later on the machine, available on your PATH
  • A tool for downloading files and a tool for extracting ZIP archives on the machine
  • A data-capable USB cable
  • A Hugging Face account
  • Network access for the first Gradle build and model downloads

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll prepare Android command-line tools, build Vision Chat, and run an Arm-optimized Qwen3-VL model locally on an Arm-based Android phone. First, you’ll install the required SDK packages, connect a compatible phone, and build the application with llama.cpp. You’ll then download and import the supported model package before generating text from an image and prompt. Finally, you’ll trace package validation, multimodal inference, Arm CPU kernel selection, and timing measurements.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
How do I confirm that my Android phone is connected and authorized for debugging?
Run adb devices -l and confirm that your phone appears as an authorized device. If you see unauthorized, unlock your phone, accept the USB debugging prompt, and run the command again. If your phone doesn’t appear, see Run apps on a hardware device .
Which model ZIP should I use with Vision Chat?
Use the supported Qwen3-VL 2B Instruct package from the Arm AI Portal. You’ll get one GGUF file for the language model and one for the vision projector, both targeting llama.cpp. When you import the ZIP, Vision Chat validates both files before extracting them.
What do I need to provide to run a vision-language inference?
Provide one image and a text prompt. After you import the model package, select Choose a photo and choose an image. Enter your prompt, then select Ask Qwen3-VL to generate text locally on your phone.
What result should I expect after running Vision Chat?
You’ll receive generated text based on your selected image and prompt. You’ll also see the model-load time, image-and-prompt evaluation time, output-token count, and decode speed measured on your phone.
Why does the model package contain two GGUF files?
The ZIP file that you import contains two GGUF files because llama.cpp separates the language model from the vision encoder and projector. When you run inference, Vision Chat loads the Q4_K_M language-model GGUF and the matching Q8_0 mmproj GGUF together.
Next