Instructions to use knowlet/Gemma-4-12B-Unified-System-One with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use knowlet/Gemma-4-12B-Unified-System-One with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="knowlet/Gemma-4-12B-Unified-System-One") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("knowlet/Gemma-4-12B-Unified-System-One") model = AutoModelForMultimodalLM.from_pretrained("knowlet/Gemma-4-12B-Unified-System-One", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use knowlet/Gemma-4-12B-Unified-System-One with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "knowlet/Gemma-4-12B-Unified-System-One" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "knowlet/Gemma-4-12B-Unified-System-One", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/knowlet/Gemma-4-12B-Unified-System-One
- SGLang
How to use knowlet/Gemma-4-12B-Unified-System-One with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "knowlet/Gemma-4-12B-Unified-System-One" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "knowlet/Gemma-4-12B-Unified-System-One", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "knowlet/Gemma-4-12B-Unified-System-One" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "knowlet/Gemma-4-12B-Unified-System-One", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use knowlet/Gemma-4-12B-Unified-System-One with Docker Model Runner:
docker model run hf.co/knowlet/Gemma-4-12B-Unified-System-One
Gemma 4 12B Unified System One
A BoolQ specialist using the System One decision interface: one multimodal backbone forward produces probabilities over declared answer candidates. The BF16 artifact contains the complete model with its LoRA adaptation merged, plus the source processor and native image/audio modules.
The training recipe is one epoch of LoRA updates on 2,048 English BoolQ examples. It does not update every base parameter. The checkpoint is a full model rather than an adapter that requires a separate base download.
Release date: 2026-10-04 (Asia/Taipei)
Public BF16 repository: knowlet/Gemma-4-12B-Unified-System-One
Companion MLX 8-bit repository: knowlet/Gemma-4-12B-Unified-System-One-MLX-8bit
Immutable HF weights revision: 66626de5cbcf8c5fecb8e9b58710805a02a42f67
Checkpoint identity SHA-256: fa96debc68209c193338d8edee4ec4258a9f603e4f2156d4688c16364703d15d
Weight files: 1 file, 23919549408 bytesmodel.safetensors SHA-256: 11144621122123135eb79c9cfd0466a2c51f230109124aefe401cdbec8c71a53
Intended use and limits
The measured task is passage-grounded, English yes/no classification using the
Noul primitive. The implementation also exposes Choice and Score schemas, but
this training run does not establish their quality, multilingual quality,
multi-question independence, or general assistant performance.
A scalar temperature is fitted on the 256-case BoolQ calibration split only. That temperature does not establish calibration for images, audio, other tasks, or deployment traffic. Native image/audio weights remain present; their results are reported separately below. This is a small, single-seed public-data study, not a production-readiness claim. Foundation-model pretraining overlap with BoolQ is unknown.
Use the decision interface
Clone the source repository and install the pinned S1 runtime. The model weights are downloaded separately from Hugging Face in the Python example.
git clone https://github.com/knowlet/Gemma-4-12B-Unified-System-One.git
cd Gemma-4-12B-Unified-System-One
git checkout d4ea1ef79af2e22f666374e529fa56c1de9d3f53
uv sync --locked --extra inference
Run the following with uv run --no-sync python from that repository root.
snapshot_download pins the weights, processor and s1_config.json to the same
immutable Hub commit, then UnifiedDecisionModel loads that local snapshot.
from huggingface_hub import snapshot_download
from s1.contracts import DecisionRequest
from s1.unified import UnifiedDecisionModel
model_directory = snapshot_download(
repo_id="knowlet/Gemma-4-12B-Unified-System-One",
revision="66626de5cbcf8c5fecb8e9b58710805a02a42f67",
)
model = UnifiedDecisionModel(
model_directory,
device="auto",
)
request = DecisionRequest.model_validate({
"state": {
"passage": "Paris is the capital of France.",
"question": "Is Paris the capital of France?",
},
"questions": {
"answer": {
"type": "noul",
"instructions": "Answer the question using the supplied passage.",
}
},
})
result = model.predict(request)
print(result["answers"]["answer"])
device="auto" selects CUDA, then Apple MPS, then CPU. The runtime chooses its
default weight dtype for that device and OS. The saved s1_config.json
temperature is loaded automatically. Calling a generic chat or text-generation
runner does not reproduce this prompt construction, selected-head readout, or
calibrated candidate probabilities.
Training and artifact provenance
| Item | Value |
|---|---|
| Base checkpoint | google/gemma-4-12B-it |
| Base revision | 707f0a3b8a3c7ad586ed01e27eafbad8a27dd0f7 |
| Updates | One pass over 2,048 examples; 2,048 / 2,048 completed updates |
| Adaptation | LoRA rank 8, alpha 16; q_proj, k_proj, v_proj, o_proj |
| Objective / learning rate | Cross-entropy / 2e-5 |
| Training seed | 42 |
| Weight format | Complete merged multimodal BF16 safetensors |
| Training source revision | b2a46b1 |
| Runtime source revision | d4ea1ef |
| Training recipe identity | 2a708e5f4acfea4b688e88ba338aa62991608db875fef039ee6b4f33c3a74d73 |
| Training hardware | NVIDIA A100-SXM4-80GB |
| Training environment | PyTorch 2.8.0; Transformers 5.17.0; PEFT 0.21.0 |
| Training / complete stage time | 1,349.35 / 1,541.93 seconds |
| Peak allocated CUDA memory during training | 24,698,445,824 bytes |
| Calibration temperature | 2.7830344470383452 |
| Calibration NLL, before / after temperature fitting | 0.541142 / 0.291505 on 256 cases |
s1_config.json SHA-256 |
322ffa1c6bfa7c4069da43265be1e79071eee6fbcff07cd4a74f9ed04774b962 |
The adapter is preserved before merging. Calibration is performed after the merged checkpoint is reloaded. The training and evaluation protocol, archived data, exclusions, and artifact receipts are described in the release documentation.
Evaluation
Calibration and fresh test passages are disjoint from the selected training
examples, all official BoolQ training passages, and previously sampled local
cases. The dataset manifest SHA-256 is
e0ab28e3435a910c19abf3a9a7e58df8b5cff7a806b6c7f4f18021db1d3804dd.
| Dataset | Scored coverage | Accuracy | NLL | Brier | ECE |
|---|---|---|---|---|---|
| Fresh BoolQ test, pinned base | 256 / 256 | 80.078125% | 0.440918 | 0.287375 | 0.067065 |
| Fresh BoolQ test, trained | 256 / 256 | 89.843750% | 0.272659 | 0.158027 | 0.052127 |
| Historical native media, trained | 52 / 52 | 65.384615% | 1.072631 | 0.423565 | 0.218368 |
The 52 media cases contain 32 MNIST images and 20 FSDD recordings. Image accuracy: 87.5% (28 / 32); audio accuracy: 30.0% (6 / 20). These cases have informed previous experiments and are regression evidence, not fresh held-out evidence. No media labels are used for training or temperature fitting. A separate historical 128-case BoolQ regression result is 92.1875% (118 / 128), with all 128 cases scored. The pinned base has the same media accuracy, but lower media NLL (1.049982), Brier (0.416844), and ECE (0.157409); text-only fine-tuning and calibration did not improve these media probability metrics.
Metrics and hardware/latency scope come from the saved evaluation report:
evaluation receipt (evaluation receipt SHA-256
07da695983a341ed1b488dedb7edd610b426fc86681a9fb45fbf9fe29f6fc280).
Evaluation ran on an NVIDIA A100-SXM4-80GB. The trained fresh-test request
latency was 88.96 ms p50 / 92.60 ms p95; the 52-case media latency was 111.59 ms
p50 / 113.65 ms p95. These are the saved single-request evaluation measurements,
not throughput or Apple MPS measurements.
NLL uses a probability floor of 1e-12; Brier is the sum of squared errors over
the legal candidates; ECE uses 15 equal-width confidence bins. No result from
the earlier base-model MPS profiling workload is substituted for this evaluation.
Attribution and licenses
The source model is by Google. Its Apache-2.0 license and applicable notices
are retained in LICENSE and NOTICE; this derivative identifies the LoRA
fine-tuning and merged checkpoint changes.
BoolQ is by Christopher Clark, Kenton Lee, Ming-Wei Chang, Tom Kwiatkowski, Michael Collins, and Kristina Toutanova (2019), Google Research. The pinned BoolQ source and transformed BoolQ data are CC-BY-SA-3.0. The frozen data archive preserves the attribution, source hashes, transformations, and license links. The media regression data retains the separate MNIST MIT and FSDD CC-BY-SA-4.0 licenses. These dataset licenses are distinct from the model's source license.
The decision implementation builds on system-one-open; the pinned System One implementation defines the inference contract used here.
- Downloads last month
- 43
Model tree for knowlet/Gemma-4-12B-Unified-System-One
Base model
google/gemma-4-12B