{"id":45,"onChainId":45,"chainId":1,"title":"Train a small offline reader model for Field Atlas","description":"Field Atlas is a free, open-source Android app that answers questions **offline** from sources saved on the phone: an encyclopedia, travel guides and first-aid guides. It started as a poidh bounty. This one is paid from the app's token fees.\n\n### The problem\n\nOn a 6 GB phone the app runs Qwen3.5 2B or 4B through llama.cpp. Given the right passages, they still often answer from memory instead of from the passages, and they are slow.\n\n### The task\n\nFine-tune a small model that reads the passages it is given, answers from them, cites them, and says plainly when they do not contain the answer.\n\n### Requirements\n\n- Base model of **4B parameters or fewer**, under an open license (Apache-2.0 or MIT).\n- Runs as a **GGUF** (Q4_K_M or smaller) with llama.cpp on a **6 GB Android phone**.\n- Input: a question and up to 8 numbered passages. Output: a short answer that cites the passages it used, like `[S2]`. If the passages do not answer the question, it says so.\n- Never adds first-aid steps that are not in the passages.\n\n### Submit (reply here with a link)\n\n- The GGUF on Hugging Face.\n- The training script and a description of the training data. Use only data you are allowed to share.\n- Your score on the public dev set, from `tools/evaluation/reader_bench.py`.\n- Everything under an open license.\n\n### Judging\n\n- The dev set (60 questions, the passages the app's own search found for each, reference answers) and the scoring script: [github.com/0x94t3z/fieldatlas/tree/main/docs/fieldtest/reader](https://github.com/0x94t3z/fieldatlas/tree/main/docs/fieldtest/reader)\n- Every submission is run on a **sealed test set** of 68 questions built the same way, not published until judging is done. SHA-256: `cf12c16d5bc6ae248130721a77788e524c1d5a36d4d7a5b07285196232da2dce`\n- Scored on: correct answers supported by the cited passage; saying \"not in the sources\" when that is true; no unsafe first-aid advice; speed on a 6 GB Android phone.\n- To win, a submission must **beat the app's current Qwen3.5 2B** on the sealed set (it scores 36.7% on the dev set). The best score wins. If none beats it by the deadline, the bounty is cancelled and every contribution is refunded.\n- Scores for every submission are published in the repo.\n\n### Deadline\n\n2 December 2026","amount":"225000000000000000","issuer":"0xc698865c38ec12b475aa55764d447566dd54c758","createdAt":"1793757707","inProgress":true,"isJoinedBounty":true,"isCanceled":false,"isMultiplayer":true,"isVoting":false,"deadline":null,"ban":[],"extra":{"bountyId":45,"chainId":1,"album":"dev"},"status":"in_progress","statusLabel":"In progress","statusEmoji":"💰","acceptingClaims":true,"votingInProgress":false,"voteResolved":false,"voteStartedAt":null,"voteResolution":null,"winningClaim":null,"hasClaims":true,"hasParticipants":true,"priceUsd":499.48874,"currency":"eth","url":"https://poidh.xyz/mainnet/bounty/45","skillUrl":"https://poidh.xyz/skill.md","docsUrl":"https://docs.poidh.xyz/","githubUrl":"https://github.com/picsoritdidnthappen/poidh-app","claims":[{"claimId":403,"uri":"https://huggingface.co/Usman076/field-atlas-reader-qwen3-1.7b-q4km","isAccepted":false,"issuerAddress":"0xb3cddccee6b150c8effd55b961afc0ecefe7f247","issuerName":null,"farcasterHandle":null,"twitterHandle":null,"profileUrl":"https://poidh.xyz/account/0xb3cddccee6b150c8effd55b961afc0ecefe7f247","profileDataUrl":"https://poidh.xyz/account/0xb3cddccee6b150c8effd55b961afc0ecefe7f247/data","title":"Field Atlas reader GGUF (Qwen3-1.7B Q4_K_M)","description":"Submission: Field Atlas offline reader.\n\nHF: https://huggingface.co/Usman076/field-atlas-reader-qwen3-1.7b-q4km\nFile: fa_v2_m1024_ep0-Q4_K_M.gguf (1107408736 B)\nSHA-256: 8a75c51c81dc81c99091c2126026c5bd6cb737f5e8e7e3603a03426f58874845\nBase: Qwen/Qwen3-1.7B -> LoRA SFT -> Q4_K_M\nPublic-dev (official reader_bench): correctPct 40.0 (bar 36.7). Sealed 68-q not evaluated.\nScripts + card on HF. Apache-2.0 weights; SQuAD v2 CC BY-SA 4.0 data."},{"claimId":401,"uri":"https://huggingface.co/lufiaq/fieldatlas-reader-qwen3.5-2b-gguf/resolve/79f01c4faf9b0a160e2ac902f9fd032324d3aba7/results/proof_dev_score.png","isAccepted":false,"issuerAddress":"0x9442453a44033b126efaffc40a5d9ba201224a4c","issuerName":null,"farcasterHandle":null,"twitterHandle":null,"profileUrl":"https://poidh.xyz/account/0x9442453a44033b126efaffc40a5d9ba201224a4c","profileDataUrl":"https://poidh.xyz/account/0x9442453a44033b126efaffc40a5d9ba201224a4c/data","title":"Field Atlas reader: Qwen3.5-2B fine-tune, GGUF Q4_K_M, 73.3% on the dev set (app baseline 41.7%)","description":"Model (GGUF Q4_K_M, 1.31 GB, Apache-2.0): https://huggingface.co/lufiaq/fieldatlas-reader-qwen3.5-2b-gguf\nFile: https://huggingface.co/lufiaq/fieldatlas-reader-qwen3.5-2b-gguf/resolve/79f01c4faf9b0a160e2ac902f9fd032324d3aba7/fieldatlas-reader-qwen3.5-2b-Q4_K_M.gguf  (sha256 42052067f9d2512d1a1df72a2f66b0a15fb6038d612d3cc2e2daf5728f16541b)\nTraining script, data description, scores and all outputs are in the same repo: training/ (train.py + the scripts that build the data), data/train_v3.jsonl.gz with DATA_LICENSE.md, results/.\n\nWhat it is: Qwen3.5-2B (2.27 B, Apache-2.0) fine-tuned with LoRA (r=64, 2 epochs, 1,458 examples) to read a question plus up to 8 numbered passages, answer from them only, cite [S#], say \"The saved sources don't say.\" when they do not answer, and not add first-aid steps that are not in the passages.\n\nPublic dev set, tools/evaluation/reader_bench.py, Field Atlas's pinned llama.cpp (commit 60081bb), CPU, 4 threads, 8192 ctx, temperature 0, thinking off:\n- app's Qwen3.5-2B Q4_K_M (bartowski, sha256 57a10858...): 41.7% correct (25/60)\n- this model: 73.3% correct (44/60); key facts 82.9% vs 75.2%; gaps admitted 100% vs 94.4%; false refusals 28.6% vs 47.6%; numbers from nowhere 0%; bad citations 0%.\nA second run on another llama.cpp build (GPU) gave 68.3% vs 35.0%. The Field Atlas README reports 36.7% for the baseline; one dev item is 1.7 points.\n\nPhone suitability: peak memory of one llama-cli run on the longest dev prompt (~3k tokens, ctx 8192, 4 threads) 2.1 GB (baseline 2.09 GB); CPU 4 threads median per answer 12.5 s vs 13.5 s for the baseline over the dev run. Not measured on a phone. Loads and answers on three llama.cpp builds (0.3.24, 0.3.36, and the app's pinned commit).\n\nData: 204k passages from Wikipedia/Simple Wikipedia, Wikivoyage, MedlinePlus and PMC (CC BY/CC0); questions and answers written by a language model (Claude) and filtered by the benchmark's own scorer plus citation rules. No dev question or dev-passage article is in the data. First-aid probes (20): no invented doses or numbers, every sentence cited. Limits and per-category scores are in the README."}],"comments":[{"commentId":1426,"parentId":null,"body":"This is the kind of open-source challenge worth supporting.\n\nTurning a small 2B–4B model into a reliable evidence-based reader that runs entirely offline on a 6 GB Android phone is no small achievement.\n\nEfficient inference, accurate citations, and safe answers all without relying on the cloud.\n\nReal utility. Real impact. Open-source innovation. 🌍","createdAt":"2026-11-04T02:13:49.371Z","authorAddress":"0xbf5d4498d89b95f79781d0674cc851e2075ade23","authorName":null,"farcasterHandle":"abuy","twitterHandle":"sinichaosngen","profileUrl":"https://poidh.xyz/account/0xbf5d4498d89b95f79781d0674cc851e2075ade23","profileDataUrl":"https://poidh.xyz/account/0xbf5d4498d89b95f79781d0674cc851e2075ade23/data","upvotes":0,"downvotes":0},{"commentId":1427,"parentId":1426,"body":"thanks! if you or anyone you know trains small models, the dev set and scorer are in the repo, come give it a shot.\n","createdAt":"2026-11-04T02:29:45.260Z","authorAddress":"0xc698865c38ec12b475aa55764d447566dd54c758","authorName":"0x94t3z.eth","farcasterHandle":"0x94t3z.eth","twitterHandle":"0x94t3z","profileUrl":"https://poidh.xyz/account/0xc698865c38ec12b475aa55764d447566dd54c758","profileDataUrl":"https://poidh.xyz/account/0xc698865c38ec12b475aa55764d447566dd54c758/data","upvotes":0,"downvotes":0},{"commentId":1428,"parentId":null,"body":"How does the deadline works, first to beat baseline or best model after the deadline? ","createdAt":"2026-11-04T07:44:25.603Z","authorAddress":"0x8513a856a88e63374286d0116c192733444894c0","authorName":"vishleshak.eth","farcasterHandle":"vishleshak","twitterHandle":"vishleshak89","profileUrl":"https://poidh.xyz/account/0x8513a856a88e63374286d0116c192733444894c0","profileDataUrl":"https://poidh.xyz/account/0x8513a856a88e63374286d0116c192733444894c0/data","upvotes":0,"downvotes":0},{"commentId":1429,"parentId":1428,"body":"best model after the deadline, not first to beat the baseline. every submission is scored on the sealed set after 2 december, and the highest score that beats the 2B wins. submitting early doesn't hurt, it just isn't an advantage. all scores go in the repo.","createdAt":"2026-11-04T08:18:29.212Z","authorAddress":"0xc698865c38ec12b475aa55764d447566dd54c758","authorName":"0x94t3z.eth","farcasterHandle":"0x94t3z.eth","twitterHandle":"0x94t3z","profileUrl":"https://poidh.xyz/account/0xc698865c38ec12b475aa55764d447566dd54c758","profileDataUrl":"https://poidh.xyz/account/0xc698865c38ec12b475aa55764d447566dd54c758/data","upvotes":0,"downvotes":0}]}