OTel 2.0 Turns Google's Gemma 4 Into a One-Token Decision Model

A 4-bit Gemma 4 MoE build turns a telecom LLM into a probability-driven decision engine, running at 32k tokens per second on a single AMD MI350P.

·
·
·
OTel 2.0 Turns Google's Gemma 4 Into a One-Token Decision ModelPRO
Read2 min
TypeModel
TopicLlms · Gpus
  • Farbod Tavakkoli released OTel-2.0-Decision-26B-A4B-4bit, a 4-bit Gemma 4 MoE for typed decisions.
  • Reads label probabilities instead of generating prose: classification, Yes/No, ordered levels.
  • Scores 86.58 to 87.45 percent on the 231-task JevBench public benchmark.
  • Runs on a single AMD MI350P via vLLM 0.30.0 on ROCm.
  • Prebuilt image with corrected MoE kernel delivers 32.3k tok/s, 42 percent faster than the official image.
  • Apache 2.0 license, part of the broader Open Telco AI project.

Farbod Tavakkoli has published OTel-2.0-Decision-26B-A4B-4bit, a 4-bit quantized derivative of Google’s Gemma 4 26B mixture-of-experts instruction model. The checkpoint exposes Gemma through a fixed-label decision interface for classification, yes-or-no questions, and ordinal scoring.

The release matters for systems that need constrained outputs and usable confidence signals. Each request generates one token, while the application reads the probabilities assigned to labels such as A, B, and C. That removes free-form response parsing and supports thresholds, abstention, and routing through an OpenAI-compatible API.

  • Inputs: messages, tickets, transcripts, logs, or documents paired with a question and fixed labels.
  • Output: one label token plus its probability and the total probability assigned to valid labels.
  • Serving: vLLM 0.30.0, with documented ROCm paths for AMD Instinct GPUs.
  • Excluded workloads: open-ended chat, retrieval, document ranking, and long-form generation.

A chat endpoint for fixed labels

Developers send the source text, a question, and a compact answer set through the chat-completions API. The prompt should require a single letter, and every label should map to one tokenizer token.

python
question = """State:
Order #1182. Status: shipped on 3 September. Carrier: DHL.

Question: Has the order been shipped?

Options:
A. Yes
B. No

Answer with the letter only."""

r = client.chat.completions.create(
    model="OTel-2.0-Decision-26B-A4B-4bit",
    temperature=0,
    max_tokens=1,
    logprobs=True,
    top_logprobs=64,
    messages=[{"role": "user", "content": question}],
)

The first generated position contains the candidate probabilities. A minimal extraction path looks like this:

vim
from math import exp

labels = {"A", "B"}
top = r.choices[0].logprobs.content[0].top_logprobs

label_probs = {label: 0.0 for label in labels}
seen = set()

for item in top:
    label = item.token.strip()
    if label in labels:
        label_probs[label] += exp(item.logprob)
        seen.add(label)

if seen != labels:
    raise RuntimeError(
        "Some labels were omitted from top_logprobs; "
        "increase the limit or reject the result."
    )

decision = max(label_probs, key=label_probs.get)
answer_mass = sum(label_probs.values())

Pro article

This story is for Pro members

You've reached the end of the free preview. Upgrade to AlphaSignal Pro to read the full article - and everything else behind the paywall.

Trending
  • No trending articles

Comments

avatar

Next Reads