Architecture
script.py — entrypoint: reads /tmp/data/test.csv, writes
submission.csv (id, pred JSON list, explanation). Config flags at the
top; submission written before the model loads and after every step.
solver/pipeline.py — orchestration. The model answers every puzzle from
a minimal prompt (no scaffold, no chain-of-thought); output is parsed into one
answer per item and aligned by position. A light greedy-anchored
self-consistency vote refines answers while the clock allows. A deterministic
symbolic layer (solver/) is a last-resort fallback only.
solver/llm.py — batched transformers/AWQ generation, greedy,
repetition_penalty=1.0, per-token deadline.
solver/direct.py — prompt and answer parsing.
Run
python3 script.py [test.csv] [submission.csv] # defaults: /tmp/data/test.csv, submission.csv
Weights are the unmodified
Qwen/Qwen2.5-14B-Instruct-AWQ
release (Apache-2.0; LICENSE retained).