MikCil/IOL-AI-Qwen35-9B-IT-LoRA-Direct-Prompt-v2
IOL-AI Qwen3.5-9B revised-prompt direct solver
Self-contained score-track submission for IOL-AI 2026. The repository combines the Apache-2.0 unsloth/Qwen3.5-9B base at commit 005429cee5cb648998cf2b70eebdd83175989c9a, the final adapter from MikCil/IOL-AI-Qwen35-9B-IT-LoRA-full at commit 87ed34f643359862096c7c0a7a97a51710976a4c, and an audited offline runtime.
Inference
script.py reads only /tmp/data/test.csv, runs one deterministic, non-thinking direct generation per row, and writes submission.csv. Predictions are answer lines parsed and serialized by the script; the model never writes submission JSON directly. No explanation pass is run.
The detailed v2 IOL solver instruction is packaged as a true system message in system_prompt.txt. Decoding is otherwise unchanged from the original direct submission so this variant isolates the prompt change.
The base is loaded in NF4 with FP16 computation on one T4. Repository-local wheels are hash-checked and installed with --no-index --no-deps into an isolated directory under /tmp before importing Transformers or PEFT. The runtime does not download models, packages, or data.
Frozen configuration
- Transformers 5.3.0, PEFT 0.19.1, bitsandbytes 0.49.2, Typer 0.25.1
- matching torchvision 0.19.0+cu121, Pillow 11.3.0, and the HTTPX dependency stack
- greedy decoding,
enable_thinking=False - detailed v2 system prompt with the original DIRECT user payload
- 512 maximum new tokens per problem row
- fixed seed 3407
- 27.5-minute internal hard stop
- exact answer-count validation and UTF-8 JSON serialization
The written competition instructions say runtime installation is unsupported, while a public runner-tested entry demonstrates that repository-local wheels currently execute. Organizer confirmation is still recommended before treating this modern-runtime entry as the only finalist.
Local contract tests
python -m unittest discover -s tests -vThe tests validate count inference over all 160 local Linguini rows, Unicode preservation, parsing, numbering, and serialization. A separate Colab notebook in the project runs the complete repository on five held-out Linguini rows on a real T4.
For faster repeated compatibility tests, use the persistent Modal runner:
pip install modal
modal setup
modal secret create huggingface HF_TOKEN=hf_...
modal run submission_qwen35_direct_promptv2_v4/modal_smoke_test.pyIts iol-ai-submission-cache Volume retains the four base-model shards. After the first run, a new model-repository revision downloads only changed blobs and reuses the cached 19 GB base.
Licenses
The base model and core Hugging Face runtime are Apache-2.0. The model's LICENSE is included at repository root; wheel distributions retain their own embedded metadata and license files. The adapter was trained on the private MikCil/IOL-AI-SFT research dataset. No training examples or reference answers are included in this submission repository.
