--- license: apache-2.0 base_model: unsloth/gemma-4-26B-A4B library_name: transformers pipeline_tag: text-generation language: - ja tags: - quiz - buzz-quiz - hayaoshi - japanese - reasoning - gemma4 - unsloth --- # quiz-main-gemma-merged ⚡ — 早押しクイズ 回答モデル (Answering model) The **answering model** of a two-model Japanese competitive **buzz-quiz** (早押しクイズ) system. Given a *partial* question (the prefix read so far at buzz time), it reasons inside `` and emits a short answer. - 🕹️ **Live demo (HF Space):** https://huggingface.co/spaces/build-small-hackathon/quiz-buzzer-ai - 💻 **Code (GitHub):** https://github.com/YUGOROU/quiz-ai - 🔔 **Buzz-timing companion model:** [`YUGOROU/quiz-buzz-reg-1.2bjp-merged`](https://huggingface.co/YUGOROU/quiz-buzz-reg-1.2bjp-merged) ## Role in the system | | Model | Job | |---|---|---| | 🔔 Buzz | `YUGOROU/quiz-buzz-reg-1.2bjp-merged` (LFM2.5-1.2B + regression head) | Reads the question char-by-char, buzzes when `conf ≥ θ` (~9 ms/char). | | 🧠 **Answer (this model)** | **gemma-4-26B-A4B SFT** | From the partial question at buzz time, `` reasoning → answer. | Total ≈ 27.2B params (≤ 32B), built for the **HF Build Small Hackathon**. ## Usage ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch repo = "YUGOROU/quiz-main-gemma-merged" tok = AutoTokenizer.from_pretrained(repo) model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype=torch.bfloat16, device_map="auto") prefix = "日本の首都は東京ですが、アメリカの首都は" # partial question at buzz time msgs = [{"role": "user", "content": f"早押しクイズ({len(prefix)}文字目時点):\n{prefix}"}] ids = tok.apply_chat_template(msgs, enable_thinking=True, add_generation_prompt=True, return_tensors="pt").to(model.device) out = model.generate( ids, max_new_tokens=320, do_sample=False, eos_token_id=[1, 106], # gemma-4 closes the turn with =106, not only =1 ) print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)) # ワシントンD.C. ``` > **Important:** gemma-4 ends an assistant turn with `` (id **106**). If you only stop on > `` (id 1) the model will keep hallucinating new turns. Always include **106** in your stop set > (vLLM: `--stop-token-ids 1 106`). `` reasoning is **required** — disabling it collapses accuracy. ## Training - Base: `unsloth/gemma-4-26B-A4B` (MoE, 26B total / 4B active), `gemma-4-thinking` chat template. - SFT (Unsloth bf16 LoRA, merged to 16-bit) on a quiz-grammar corpus built from AI王 / JAQKET: user = partial question at the statistically-decidable buzz position (S-buzz), assistant = `{reasoning}{answer}` with adaptive think budget by difficulty. - Full-question QA ≈ **76%**; at the buzz position ≈ **62–74%** depending on threshold θ (later buzz → higher accuracy). ## Attribution & license This model is a fine-tune of Google **Gemma 4**, which Google releases under the [Apache License 2.0](https://ai.google.dev/gemma/apache_2.md.txt). The model weights are therefore distributed under Apache 2.0. Training data derived from **AI王 (Project AIO) / JAQKET**. Quiz questions © abc/EQIDEN実行委員会 / 株式会社キュービック / クイズ法人カプリティオ. **Non-commercial research use only. No dataset redistribution** — only model weights and inference code are released.