Quick start
Use Python 3.10+ and a compatible PyTorch/CUDA installation. requirements.txt records the versions used for the export validation.
pip install torch torchvision transformers accelerate pillow safetensors huggingface_hubhf download ayushadarsh7/RuntimeLabs-Kayak-Qwen3-VL-4B infer.py --local-dir kayak-inferencepython kayak-inference/infer.py --model ayushadarsh7/RuntimeLabs-Kayak-Qwen3-VL-4B --image screenshot.png --instruction "Click the Search button."
For a fill action, add --value "Chennai" and provide an instruction such as Enter Chennai as the departure city.
Download all model files for offline use:
hf download ayushadarsh7/RuntimeLabs-Kayak-Qwen3-VL-4B --local-dir kayak-modelpython kayak-model/infer.py --model ./kayak-model --image screenshot.png --instruction "Click the Search button."
The inference script automatically uses a CUDA GPU when available. CPU inference uses more memory and is slower. A GPU with at least 16 GB VRAM is a practical starting point for a single screenshot; memory needs depend on image resolution and input length.
Screenshot grounding model fine-tuned on Kayak flight-search interfaces. Given a clean screenshot and a single-step instruction, it predicts JSON containing an action and a normalized bounding box, plus a value when applicable.
This is not an autonomous booking agent. It does not plan or execute browser actions.
bbox is [x, y, width, height] on a 0–1000 scale, with x/y at the top-left corner. For an image of width W and height H: pixel x = x/1000W, pixel y = y/1000H, and similarly for width/height. For clicking, use the box centre. Fill actions may also include value.
Training and evaluation
- Base model: Qwen/Qwen3-VL-4B-Instruct
- Training: 548 samples, 6 epochs, batch size 1, gradient accumulation 4, learning rate 2e-4, LoRA rank 16 and alpha 16.
- Original adapter evaluation: 69 held-out screenshots, deterministic generation.
- Predicted centre inside labelled box: 63/69 (91.30%).
- IoU >= 0.5: 62/69 (89.86%). Mean IoU: 0.8558.
- Action accuracy: 100%; fill-value exact match: 8/8.
These are single-step offline grounding metrics, not end-to-end browser task success rates. They describe the original adapter evaluation, not a new full benchmark of the merged export.
Merge validation: standalone BF16 reload succeeded; 3/3 checked predictions exactly matched the unmerged adapter. See merge_validation.json. BF16 merging can introduce small numerical differences.
Limits
Fine-tuned on a small domain-specific dataset; UI changes, different screen sizes, and unfamiliar sites can reduce accuracy. Inspect generated coordinates before executing consequential actions. No booking, payment, or personal-data workflow was evaluated here.
License and provenance
This derivative uses the base model's Apache-2.0 license. Original base revision: ebb281ec70b05090aa6165b016eac8ec08e71b17. Original adapter SHA-256: adf546ef4902717cfbeca735e9f764688dbf3cb335279935ddfb448b70ae26e3. The upstream license is included when supplied by the base repository.