Instructions to use PNPM244/oak1.1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use PNPM244/oak1.1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="PNPM244/oak1.1") 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("PNPM244/oak1.1") model = AutoModelForMultimodalLM.from_pretrained("PNPM244/oak1.1", 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 PNPM244/oak1.1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "PNPM244/oak1.1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "PNPM244/oak1.1", "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/PNPM244/oak1.1
- SGLang
How to use PNPM244/oak1.1 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 "PNPM244/oak1.1" \ --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": "PNPM244/oak1.1", "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 "PNPM244/oak1.1" \ --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": "PNPM244/oak1.1", "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 PNPM244/oak1.1 with Docker Model Runner:
docker model run hf.co/PNPM244/oak1.1
oak1.1
oak1.1 is a 31B decision model. Give it a state (text, a document, JSON, a conversation or an agent trajectory) and a question with a set of options, and it returns one option together with a probability for every option, in a single forward pass.
It is the successor of linne-oak-1.0, with the same interface and serving code.
Highlights
- 68.19 on the Decision Index public suite (complete run, 140,620 requests): +4.25 over linne-oak-1.0 (63.94).
- Better in every area: arts +12.4, tools +7.2, language +4.3, retrieval +2.7, knowledge +0.1.
- Sees all the questions first: when a request asks several questions about the same state, the prompt lists them before the state, so the state is read knowing what will be asked.
- Reads the whole prompt at once: the full-attention layers attend in both directions over the prompt (sliding-window layers keep their native behavior).
- Fast: one forward pass per decision; median 67 ms per request on one H200.
Decision Index, public suite
Complete run of the public 0.3 suite (140,620 requests, all answered), scored with the leaderboard's code. Results: PNPM244/oak1.1-decision-index. Official Full scores (private tests run by the maintainers) will be added when available.
| Model | Public index | Knowledge | Language | Retrieval | Tools | Arts |
|---|---|---|---|---|---|---|
| oak1.1 (31B) | 68.19 | 54.4 | 70.9 | 71.8 | 85.7 | 57.5 |
| linne-oak-1.0 (31B) | 63.94 | 54.3 | 66.6 | 69.1 | 78.5 | 45.1 |
Training data
Fine-tuned from google/gemma-4-31B-it on decision-format data (state, question, options) covering
classification, NLI, retrieval, tool selection and agent safety. The training data is not released.
Usage
The prompt is one user message (chat template, thinking off): a short list of the questions asked about the state,
Context: and the state (compact JSON when not a string), a blank line, Question: <instructions>, one line
<label>: <name> - <description> per option, and Answer with the letter of one option only. The answer is the softmax
over the next-token logits of the option letters (with the model's final logit soft-capping), read at the last prompt
position, with the full-attention layers bidirectional.
linne_engine.py (with nc_hook.py) in this repository implements exactly this, as a Decision Index engine and as a
library. Its defaults (noncausal=True, layout="header") are the settings this model was evaluated with.
import sys
from huggingface_hub import snapshot_download
path = snapshot_download("PNPM244/oak1.1")
sys.path.insert(0, path)
from linne_engine import LinneEngine
model = LinneEngine(model=path, device="cuda:0")
result, _ = model(
"My Stripe integration keeps failing. Please help ASAP.",
{"team": {"type": "choice", "instructions": "Which team should handle this request?",
"criteria": {"billing": "Charges and refunds", "technical_support": "Integration errors",
"sales": "Questions about buying a product"}}},
)
print(result["answers"]["team"]) # chosen option and a probability for every option
Run the Decision Index public suite:
PYTHONPATH=<path> python -m decision_index pipeline --engine linne_engine:LinneEngine \
--option model=<path> --option device=cuda:0 --option noncausal=1 --option layout=header --out runs/oak1.1
BF16 weights are about 62 GB and fit one 80 GB GPU.
License
CC BY-NC 4.0: free for non-commercial use with attribution. Commercial use requires prior written permission from the author.
Built on Gemma 4 (Apache 2.0); see NOTICE and LICENSE-APACHE-2.0.
Citation
@misc{oak_1_1,
title = {oak1.1: A 31B Non-Causal Decision Model},
author = {Tran, Minh Duc},
year = {2026},
howpublished = {\url{https://huggingface.co/PNPM244/oak1.1}},
note = {Version 1.1}
}
- Downloads last month
- 12