df5542f7d6a8baf625eeb84b89de19f65c3326e4
Three-arm harness under scripts/native-bakeoff/: - arm A: /api/chat with JSON tools (current default) - arm B: /api/generate raw:true with canonical HF jinja template rendered directly - arm C: google-deepmind/gemma JAX ToolSampler (env-gated, JAX required) Interim finding from A+B sweep on matt-strix gemma4:26b Q4: Ollama's bidirectional JSON↔native tool-call translator is faithful. The "long" multi-tool task produces identical behavior (7 steps / 6 tools) on both arms. Earlier arm-B parser bug that looked like a divergence was a harness issue: preserving the model's <|channel>thought\n<channel|> prefix as assistant content tripped the jinja template's tool_response-following conditional, appending a spurious <turn|>\n that corrupted the next step's prompt. Fixed by dropping the channel prefix on the assistant message. Arm C left as scaffolded-but-not-run — the JAX/bf16 reference path would answer "does the GGUF runtime diverge from DeepMind's implementation" but requires a separate env with the `gemma` PyPI package. Parked pending SDXL eviction or vast-h100 session. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
gemma4-research
Research corpus and implementation guidance for Google Gemma 4, based on production use in Seth's homelab.
Files
| File | What | When to Read |
|---|---|---|
SYNTHESIS.md |
Start here. Opinionated guide — how to build with Gemma 4 | Before any new Gemma 4 implementation |
GOTCHAS.md |
Known issues and workarounds, severity-ranked | When debugging Gemma 4 issues or starting a new project |
IMPLEMENTATIONS.md |
Patterns from Simon and AI_Visualizer | When designing a new Gemma 4 integration |
CORPUS_architecture.md |
Model architecture details (layers, attention, PLE, MoE) | When you need to understand WHY Gemma 4 behaves a certain way |
CORPUS_ollama_variants.md |
Available models, sizes, VRAM, Ollama settings | When choosing a model variant or configuring Ollama |
CORPUS_capabilities.md |
Modalities (vision, audio, video, tools), what it can/can't do | When scoping what Gemma 4 can handle |
CORPUS_benchmarks.md |
Full benchmark table vs Gemma 3, arena scores, agentic scores | When comparing Gemma 4 to alternatives |
CORPUS_tool_calling_format.md |
Native token format + JSON API format for function calling | When implementing tool calling |
CORPUS_cli_coding_agent.md |
Positioning Gemma 4 for CLI coding agent use (openclaw / open code / pi / hermes / aider style). Honest take on what Google did and didn't measure, head-to-head with qwen3-coder:30b, homelab setup pointer |
When scoping a CLI coding agent or deciding Gemma 4 vs Qwen3-Coder |
docs/openwebui-setup.md |
How to configure Gemma 4 inside OpenWebUI — per-setting reference, two ready-to-bake Workspace Model profiles (chat + extract), and a symptom→cause troubleshooting table mapped back to GOTCHAS.md. Assumes Ollama + OpenWebUI are already running. | When setting up or debugging a Gemma 4 model in OpenWebUI, or handing the front-end config to someone else |
docs/reference/bakeoff-2026-04-18.md |
CLI-coding-agent bakeoff on 3090 Ti. Rounds 1/2 misidentified the cause; Round 3 (the correct one): think: false silent-stops gemma4:26b at certain multi-turn states on 32K context. 31B and Qwen3-Coder robust to the flag. Harness at scripts/bakeoff/ |
When deciding which model to back a CLI agent with, writing a custom agent payload, or debugging a silent tool-call halt |
docs/reference/mort-bakeoff-2026-04-18.md |
mort-bot-specific think=true vs think=false bakeoff on mort's actual loop shape (gemma4:26b, num_ctx=8192). Thinking does NOT accumulate in context on Ollama 0.20.4 — strips it from serialized history. Both settings behave identically on step counts, tool counts, wall clock. Harness at scripts/mort-bakeoff/ |
When deciding mort-bot's THINK env var, or when someone claims "think=true eats context" without pinning an Ollama version |
tooling/ |
Canonical upstream tooling — real scripts, notebooks, model cards, and configs pulled from Google / HF / framework maintainers (147 files). Subdirs: google-official/, huggingface/, inference-frameworks/, gemma-family/, fine-tuning/. See tooling/README.md for index and findings that update the older CORPUS_* docs |
When you need authoritative source material — model cards, chat templates, fine-tuning recipes, serving commands for vLLM / llama.cpp / MLX, or to scope a specialized sibling (ShieldGemma, EmbeddingGemma, etc.) |
Source Projects
- Simon (
~/bin/FreibergFamily/simon/) — Multi-turn chat agent with 6 tools, genealogy historian - AI Visualizer (
~/bin/AI_Visualizer/) — Music video generator, 4-stage Gemma pipeline + vision
Key Insight
Gemma 4 is ultra-compliant and highly capable but doesn't know who it is. It needs explicit system prompts, not hand-holding. Due to fast local inference, sequential tool calls beat long JSON requests.
Description
Languages
Jupyter Notebook
79.5%
HTML
12.5%
Python
7.5%
Jinja
0.4%