GO TO A SECTION

↑ ↓ to navigate · Enter to openExplore all sections →
FDEInterviews logo

DiffusionGemma: A Practical Guide to Coding, Decisions and Deployment

Learn how DiffusionGemma generates text, run its Python pipeline, build coding and decision-support workflows, compare serving options, fine-tune and benchmark usable output.

BY LUKAS HOFFMANN · FDEINTERVIEWS EDITORIAL · UPDATED OCTOBER 28, 2026 · 17 MIN READ

PRACTICE THIS:Learn inference serving ·Measure throughput versus latency ·Give a model a typed decision ·Practice validating generated code

DiffusionGemma is an experimental text-generating model that refines blocks of tokens in parallel. It is worth evaluating for interactive drafting, coding tools and bounded decision-support tasks when a dedicated accelerator spends much of its time serving one or a few users. Its deployment case rests on the time needed to produce a correct, usable result. Google's June 10, 2026 announcement reports up to fourfold faster generation under selected conditions and explicitly cautions that high-concurrency cloud workloads can behave differently.

This guide follows a build: understand the generation loop, run a reference pipeline, design useful applications, add validation, choose a serving environment and evaluate whether tuning helps. Interfaces were checked on October 28, 2026. The companion EmbeddingGemma 2 tutorial covers retrieving the evidence you might put into the prompt.

What changes when text is generated by diffusion?

An ordinary autoregressive language model extends a sequence one token at a time. DiffusionGemma uses a causal encoder for the prompt and completed context, then repeatedly refines a block called a canvas with a bidirectional denoiser. Once that block is complete, it becomes context for the next block. There is still an order between blocks; positions inside a block can be updated together. Transformers architecture documentation.

The released model uses 256-token canvases. A token is a piece of text, not necessarily a word. During refinement, early candidate text can change. A UI that displays that text must label it as a preview and keep it separate from committed output.

A preview can change before commitmentOnly committed output proceeds to application validation. Drafts never authorize tools or customer actions.. A synthetic eight-position canvas changes from random placeholders to a candidate sentence, then a revised sentence. The new-write phrase is replaced by an old-receipt phrase. This is a conceptual illustration, not actual tokenization or a recorded model trace. A preview can change before commitment Illustrative eight-position canvas; the released baseline uses 256 tokens. Initial noise ? x ? z ? ? q ? Candidate draft Check the new write then retry it . Refined block Check the old receipt before retry ing . Only committed output proceeds to application validation. Drafts never authorize tools or customer actions.

The diagram deliberately shows a small illustrative canvas, not the model's actual token count or a recorded inference trace. Follow one position across the rows: a plausible early token may be revised before the block is accepted. That is why a partial draft cannot safely trigger an external action.

DiffusionGemma is not an image-generation pipeline. It accepts text, images and video and produces text. Audio input is not supported by the released model. The checkpoint, google/diffusiongemma-26B-A4B-it, is based on a mixture-of-experts architecture with approximately 26 billion total parameters and 4 billion active per token. Official model overview.

“Four billion active” describes the selected computation, not a four-billion-parameter download. The complete weight set and runtime allocations still need somewhere to live. Before committing to hardware, budget weights, caches, activations, framework buffers and concurrent requests.

Which applications deserve a trial?

Start with a task whose output can be checked cheaply and where lower latency would noticeably improve the experience. The following are proposed applications; they are not measured performance claims for this model.

ApplicationInput and outputWhy diffusion is worth evaluatingRequired acceptance check
Inline code editingSelected function and requested change → proposed patchShort interactive iteration on dedicated hardwarePatch applies, tests pass, no unauthorized files
Test generationFunction and contract → candidate test casesSeveral tests can be drafted in one responseTests fail on meaningful mutations and pass the correct implementation
Configuration assistanceCurrent config and constraints → revised configWhole-block consistency may help editingSchema plus environment-specific validation
Incident update draftingVerified incident facts → internal status noteOperators can revise a short draft quicklyEvery factual claim matches supplied evidence
Support decision assistanceTicket and allowed evidence → candidate queueA bounded answer can use a compact representationValid category, relevant evidence and review policy
Visual troubleshootingScreenshot and question → explanationImage context may help interpret an interfaceCheck against the actual system state
Interactive documentationAPI contract → example or explanationFast review-and-revise cycleGenerated example runs against the contract
Data-labeling supportExample and label definitions → suggested labelHuman review can be the limiting workflow stepAgreement by slice and an explicit abstain route

A high-volume shared chatbot is a different experiment. Autoregressive servers can fill their accelerators with concurrent work, reducing the advantage of parallel refinement within one request. A tiny classification model may also be a better fit for a stable routing problem. Choose the smallest baseline that can satisfy the customer's acceptance criteria, then compare DiffusionGemma against it.

Run the reference Python pipeline

Hugging Face now treats Diffusers as the primary home for new DiffusionGemma sampling features, while Transformers supplies the model implementation and a compatible generation interface. That makes the Diffusers pipeline a useful starting point for a new experiment. Transformers integration note.

Use a separate Python environment from an existing production service. Install a hardware-compatible PyTorch build first. These are the package versions used for the interface checks accompanying this article:

bash
python3 -m venv .venv-diffusion
source .venv-diffusion/bin/activate
python -m pip install "transformers==5.21.0" "diffusers==0.42.1" accelerate torchvision pillow

The following is a full-checkpoint inference example for adequately provisioned hardware. The BF16 weight payload alone is approximately 26 billion × 2 bytes = 52 GB, before overhead. Automatic device placement may offload weights to host memory; that is not evidence that the resulting speed represents accelerator-resident inference. This article does not claim a local full-model benchmark on a 12 GB GPU.

python
import torch
from transformers import AutoProcessor, DiffusionGemmaForBlockDiffusion
from diffusers import DiffusionGemmaPipeline, EntropyBoundScheduler

checkpoint = "google/diffusiongemma-26B-A4B-it"
revision = "f7f5b7f5fa82ffc52addd066915886d497f5517b"
model = DiffusionGemmaForBlockDiffusion.from_pretrained(
    checkpoint, revision=revision, dtype=torch.bfloat16, device_map="auto",
)
processor = AutoProcessor.from_pretrained(checkpoint, revision=revision)
pipe = DiffusionGemmaPipeline(
    model=model, processor=processor,
    scheduler=EntropyBoundScheduler(entropy_bound=0.1),
)
result = pipe(
    messages=[{"role": "user", "content": (
        "Write a Python function retry_delay(attempt) that returns "
        "min(30, 2 ** attempt) for integer attempts from 0 through 10. "
        "Reject other inputs. Return only the function."
    )}],
    gen_length=256,
    num_inference_steps=48,
)
print(result.texts[0])

Printing the result does not execute it. Review the generated function, then run it in an isolated test environment. Test negative attempts, booleans, floats and values above ten as well as the ordinary path. In Python, bool is a subclass of int, so a superficial integer check may accept True unexpectedly.

The Diffusers pipeline documentation describes the sampler, output object and cache options. The example chooses an entropy-bound scheduler explicitly. Do not assume that two runtimes with the same model ID use the same scheduler or stopping rules.

Understand the knobs before changing them

Google's recommended configuration uses a maximum of 48 denoising steps, a temperature schedule from 0.8 to 0.4, entropy-bound token selection, and adaptive stopping based on both confidence and stable predictions. Those settings belong to the sampling algorithm; they are not interchangeable with an ordinary chat API's temperature and top-p controls. Recommended serving configuration.

Start from the supported defaults. Change one variable at a time and keep the evaluation set fixed. Fewer steps can reduce time and also reduce correctness. A different canvas size can change how much output fits and what computation happens per step. Support for those changes depends on the runtime.

Compilation is a second experiment. First get a correct uncompiled response. Then evaluate static caches and compiler settings supported by the chosen pipeline. Record cold compilation separately from warmed inference. A demo that times only the warmed path should not be used to promise a fast first request after scale-to-zero.

Thinking mode also changes the work performed. Configure it through the supported chat template, preserve the separation between reasoning and the final answer, and compare equivalent modes. Keep previous turns' final responses in conversation history according to the model's usage guidance. Do not count internal reasoning tokens as useful output to the customer.

Build a coding assistant that produces reviewable changes

Give the model a bounded task: edit one function, add one test, or explain one failure. Supply the relevant code and its contract, including what must not change. Retrieve supporting symbols and tests with the EmbeddingGemma code-search workflow, then verify that the retrieved commit matches the working checkout.

A practical patch proposal should include a target file and a change that can be applied to a known base. The controller owns that base revision, the allowed paths and the test commands. The model's output should not be allowed to invent a shell command and execute it with the developer's credentials.

For the retry-delay example, an acceptance contract might be:

RequirementExample check
Input is a real integer in the permitted rangeReject True, 2.5, -1 and 11
Delay is cappedAttempts 5 through 10 return 30
Ordinary values follow the formulaAttempts 0, 1 and 4 return 1, 2 and 16
Function is side-effect freeNo file, network or process access

The first three checks can be expressed as unit tests. The last requires execution isolation and inspection; a unit test that happens not to observe a network call does not forbid one. Run generated code in a disposable environment with no production credentials, restricted filesystem access, resource limits and an explicit network policy. The generated-code validation question develops the sequence from cheap static checks to behavior under failure.

For test generation, hold back the implementation's known defects or mutations. A generated suite that passes the current implementation may simply repeat its behavior. Deliberately change the cap from 30 to 31 and check that the suite catches it. Remove the boolean rejection and repeat. These are small, interpretable checks of whether the tests enforce the contract.

Keep a human review step before merging a meaningful patch. Fast generation is valuable when it reduces the time to a trustworthy change. It is expensive when it produces more plausible code than reviewers can inspect.

Separate draft streaming from committed output

Diffusion previews can be useful in an editor: the user sees a candidate paragraph evolve rather than waiting for a blank screen. They are dangerous if another component treats every update as a final answer.

Define a small output protocol in your application. A draft update may replace earlier preview text. A committed block is eligible for downstream parsing. A validated result has passed the application's checks. Cancellation invalidates the active generation identity, so a late callback from an abandoned request cannot replace the new result.

Persist final responses separately from preview telemetry. If you retain drafts for debugging, apply the same data-handling policy as prompts and outputs. Drafts may contain unsupported claims or sensitive content that never appears in the final result.

Do not execute a tool call when a draft temporarily resembles valid JSON. A later denoising step may change the action or its arguments. A completed block is still only model output; the application must validate the whole required object and its policy before dispatch.

Use it for decisions with a controller around it

There are two distinct approaches to decision support. You can ask for a final structured answer and validate it. Some runtimes also expose structured reads over a constrained set of labels. In either approach, the application defines the questions, allowed answers, evidence and consequences.

For a support triage system, start with three queues: documentation, incident and human review. Retrieve only evidence permitted for the user. Ask the model for a proposed queue and evidence IDs. Do not ask it to decide its own permissions or to invent a confidence threshold.

The controller owns the action boundaryPermitted evidence: Ticket + source IDs + allowed queues. Completed model output: A proposed queue and cited evidence. Validate and apply policy: Shape, evidence, current authority. Human review: Missing or invalid result. Authorized next step: Controller dispatches; records outcome. Permitted evidence enters the model. Only completed model output reaches validation. Invalid structure, unsupported evidence or missing authority routes to human review. A passing result can proceed only through the controller under current policy. No draft dispatches an action. The controller owns the action boundary Model output proposes a route. Evidence and policy determine what follows. Permitted evidence Ticket + source IDs + allowed queues Completed model output A proposed queue and cited evidence Validate and apply policy Shape, evidence, current authority Human review Missing or invalid result Authorized next step Controller dispatches; records outcome fail pass

The branch to human review is a normal outcome in this diagram. An absent or invalid answer should not fall through to an action. The typed-decision lesson shows how a controller can own the action vocabulary.

This executable validator handles the outer shape and evidence membership. Save it as validate_decision.py and run it with ordinary Python. It intentionally returns a review state, not an instruction to change a customer system.

python
"""Validate a draft classification; never execute the model's proposed action."""
import json

def review_route(raw, allowed_evidence):
    try:
        value = json.loads(raw)
    except (ValueError, TypeError):
        return "human_review"
    if not isinstance(value, dict) or set(value) != {"queue", "evidence_ids"}:
        return "human_review"
    if value["queue"] not in ("documentation", "incident", "human_review"):
        return "human_review"
    if value["queue"] == "human_review":
        return "human_review"
    ids = value["evidence_ids"]
    if not isinstance(ids, list) or not ids or not all(isinstance(x, str) for x in ids):
        return "human_review"
    if not set(ids).issubset(allowed_evidence):
        return "human_review"
    # Matching IDs only establishes membership, not whether they support the claim.
    return "review_proposed_" + value["queue"]

if __name__ == "__main__":
    assert review_route('{"queue":"incident","evidence_ids":["runbook-7"]}',
                        {"runbook-7"}) == "review_proposed_incident"
    assert review_route('{"queue":"refund","evidence_ids":["runbook-7"]}',
                        {"runbook-7"}) == "human_review"
    assert review_route('{"queue":"incident","evidence_ids":["private"]}',
                        {"runbook-7"}) == "human_review"
    assert review_route('draft {', {"runbook-7"}) == "human_review"
    assert review_route('[]', set()) == "human_review"
    assert review_route('{"queue":"human_review","evidence_ids":[]}', set()) == "human_review"
    print("Decision validation checks passed")

This is one layer. Matching an evidence ID does not prove that the evidence supports the proposed queue. Check the content, apply the routing policy and evaluate the complete outcome. Include prompt-injected documents, nonexistent IDs, urgent incidents described politely, and tickets spanning multiple queues in the test set.

What structured diffusion reads add

vLLM's versioned structured-read example exposes an experimental path for reading bounded answers from the diffusion canvas. Its helper service accepts a question schema and can report distributions across selected labels and repeated noise draws. This is a useful reference for a classification experiment; it does not turn every reported score into a calibrated business probability.

A label-normalized distribution answers a narrower question than “How likely is this action to be correct in the world?” If the allowed labels omit the right outcome, the system still has to distribute mass among the options it was given. Include an abstain or review option and validate calibration on held-out outcomes. Variation across noise draws measures one source of instability, not all model or data uncertainty.

Keep the answer template inside the configured canvas. Add a schema test when a category or identifier changes. Check runtime limitations explicitly: the vLLM Metal integration documents text-only scope and restrictions that differ from the model's native multimodal capabilities.

For consequential actions, recheck authorization against current application state immediately before acting. A correct classification at 10:00 may no longer authorize the same operation after a policy change at 10:01. The decision-rights concept explains how to assign the owner and escalation path independently of model quality.

Serve the model on appropriate hardware

Start with the full-precision Python path to understand behavior if you have suitable hardware. If memory is the constraint, investigate a supported quantized checkpoint and runtime, then compare its outputs with the reference. Four-bit weight arithmetic gives approximately 13 GB for 26 billion parameters before scales, metadata, caches and other allocations. It is not a guarantee that a 16 GB GPU can serve your desired context and concurrency.

For a vLLM experiment, the versioned documentation provides this model and canvas interface. Use an environment installed according to that release's accelerator requirements. The command below is a source-checked serving recipe, not a claim that this article ran the 26B checkpoint on its authoring machine.

bash
vllm serve google/diffusiongemma-26B-A4B-it \
  --revision f7f5b7f5fa82ffc52addd066915886d497f5517b \
  --served-model-name diffusiongemma \
  --host 127.0.0.1 --port 8000 \
  --diffusion-config '{"canvas_length":64}' \
  --max-logprobs 32 --enable-prefix-caching

The smaller canvas comes from vLLM's structured-read example. Treat it as a decision-workload configuration to evaluate, not as a replacement for the released 256-token baseline in every application. Pin the runtime version as well as the checkpoint, and follow that version's supported configuration.

A normal non-streaming text request can then be made against the local chat endpoint:

bash
curl --fail http://127.0.0.1:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"diffusiongemma","messages":[{"role":"user","content":"Explain why a timed-out write should be reconciled before retrying."}],"max_tokens":256,"stream":false}'

Keep the endpoint on loopback for development. A shared service needs authentication, request limits, timeouts, cancellation and a bounded queue. Disable arbitrary remote media fetching or put it behind a controlled fetcher; otherwise a multimodal API can become a path to internal network resources. Store weights in an approved location and expose readiness only after loading and a smoke inference succeed.

Pick the environment by the workload

EnvironmentReason to consider itWhat can invalidate the choice
Dedicated NVIDIA workstationInteractive local work with a compatible quantized runtimeInsufficient memory or unsupported kernels
Apple Silicon with MLX-based toolingExisting local workflow and sufficient unified memoryDifferent acceleration behavior or text-only runtime support
Private GPU VMControlled shared experiment and reproducible environmentIdle cost and a queue that grows under bursts
Kubernetes or managed GPU deploymentExisting operational platform and team expertiseCold startup, poor utilization or unsupported model integration

Google's GKE serving tutorial supplies infrastructure patterns for Gemma workloads. Check the exact model and image combination rather than assuming every generic Gemma example supports diffusion. The same principle applies to AWS or Azure GPU hosting: cloud availability does not imply model-specific runtime support.

Keep the previous model behind a configuration switch during rollout. If a request times out, record the outcome and route according to the application's recovery policy. Avoid launching overlapping retries that all continue occupying the GPU. A fallback should preserve the task and evidence, and its behavior must be evaluated too.

Benchmark the time to a usable result

The headline measurement is time from the user's request to an accepted output. Depending on the application, accepted means a tested patch, a supported incident summary or a validated routing proposal. Record failures and timeouts; dropping them from the report rewards the system for not finishing.

Measure the whole waitQueue and evidence: Admission, retrieval, permitted context. Generate: Prefill, denoise, commit each canvas. Validate and finish: Check the output; report failure or acceptance. End-to-end time includes queueing and evidence preparation, generation with prefill and committed canvases, then validation. First preview and first committed block occur inside generation. A faster generation stage does not remove waiting or verification costs. Measure the whole wait Stage layout is conceptual; widths are not a measured latency breakdown. Queue and evidence Admission, retrieval, permitted context Generate Prefill, denoise, commit each canvas Validate and finish Check the output; report failure or acceptance

The diagram separates the waiting that a decode-speed number leaves out. A faster denoising stage may barely change the experience if queueing, retrieval, verification or human correction dominates the workflow.

Measure at least:

  • Time to first preview, if the UI exposes drafts.
  • Time to first committed block and to final output.
  • End-to-end p50 and p95 latency under the expected concurrency.
  • Accepted tasks per unit time and the reasons other tasks failed.
  • Peak accelerator memory, cold startup and compilation time.
  • Cost per accepted task, including idle capacity and retries.

Compare the same prompts, output requirements, concurrency and quality checks. Keep reasoning mode, output limits and quantization visible in the result record. A short answer and a long answer can have different throughput even on the same runtime. A “tokens per second” value that includes revisable draft tokens should not be compared with committed-token throughput.

For a synthetic example, suppose system A completes 100 tasks in 100 seconds and 60 pass validation. System B completes 100 in 140 seconds and 90 pass. A finishes raw generations sooner; B produces about 0.64 accepted tasks per second versus A's 0.60. Those numbers illustrate a metric calculation, not either model's performance. Also inspect the failure types: a small increase in dangerous outputs can disqualify a candidate regardless of throughput.

Use several workload slices. An inline code edit, a two-sentence classification and a long explanation exercise different canvas behavior. Repeat warm runs, report the spread, and preserve failed cases for inspection. The throughput-versus-latency lesson explains why an excellent aggregate throughput number can coexist with an unacceptable user wait.

Fine-tune with the model's actual training objective

Fine-tuning is justified when recurring errors remain after you repair the prompt, retrieval and validation contract. Examples include a consistent formatting failure, weak handling of domain terminology, or poor performance on a well-defined task family. It will not repair a controller that executes unvalidated drafts.

Begin with reviewed input/output pairs and meaningful splits. For code, split repositories or task families so near-identical functions do not leak across training and evaluation. For incident drafting, hold out incidents and time periods. Keep policy versions in the dataset so the model is not trained to imitate superseded behavior.

Diffusion training must supervise denoising. NVIDIA's model-specific training explanation describes a corrupted response canvas, a diffusion loss and a co-trained autoregressive encoder objective. The model uses shared weights in different attention modes. A generic causal-LM fine-tuning script can therefore train a different behavior from the one your inference pipeline needs.

Route 1: Google's Hackable Diffusion integration

The Gemma adapter repository supplies setup instructions, data preparation and training/evaluation configurations. Its examples include Sudoku, which is useful because the output can be checked independently. Read the configuration before running it: checkpoint access, batch size, canvas layout and device requirements are part of the experiment.

A practical adaptation sequence is:

  1. Reproduce the supplied small evaluation on supported hardware and record the exact code revision.
  2. Convert your reviewed examples into the recipe's expected input and target fields. Inspect the tokenized prompt and supervised response positions.
  3. Keep a small overfit check to detect a broken data or loss path, then train on the intended split.
  4. Evaluate the saved checkpoint through the inference sampler that will be deployed. Compare quality and latency with the base model.
  5. Package the checkpoint or adapter together with its base revision, tokenizer, sampler configuration and evaluation record.

The adapter's documented LoRA examples recommend resources comparable to at least two A100s; its full-weight example recommends more. Those are recipe-specific recommendations, not universal minimums. The Hackable Diffusion project also identifies itself as a research toolbox rather than an officially supported Google product.

Route 2: NVIDIA NeMo Automodel

NeMo Automodel documents full-parameter and LoRA support for this architecture. Use its DiffusionGemma guide and matching repository revision to select the model-specific recipe. Preserve its corruption and loss configuration when replacing the sample dataset. Choose the distributed and precision settings for your hardware rather than copying a machine count from a benchmark.

After installing Automodel through its supported container or uv workflow, the repository's example can be launched from its root as follows. This is an eight-GPU reference recipe, not a laptop command:

bash
python examples/dllm_sft/prep_gsm8k.py
torchrun --standalone --nproc-per-node=8 examples/dllm_sft/finetune.py \
  -c examples/dllm_sft/diffusion_gemma_lora.yaml

The preparation script creates the sample dataset. First reproduce that path, then replace the dataset configuration with your reviewed records. Preserve the model-specific chat template: it marks which response tokens receive training supervision. Changing only the GPU count is insufficient when the configuration also specifies expert parallelism. Record the selected repository revision and inspect the YAML before allocating a training job.

Before a long run, check that a small training step changes the intended trainable parameters, frozen parameters stay unchanged, and the saved artifact reloads in the intended serving path. Then inspect generated outputs. A successful optimizer step establishes that the program ran, not that the tuned model learned the desired behavior.

Keep adapter behavior and serving behavior aligned

The Diffusers integration loads compatible PEFT adapters on pipe.model, using the Transformers adapter API. Its current guidance keeps adapters active rather than merging them into tied encoder/decoder weights. Follow the adapter-specific instructions for the runtime version you use; a generic “merge LoRA and export” recipe is not enough.

Evaluate the base model with the old sampler, the tuned model with that same sampler, and any proposed sampler change separately. Include malformed inputs, unsupported requests, prompt injection and the abstain path. Check that a gain on your target tasks does not destroy ordinary instructions or the modalities you still need.

This tutorial's authoring environment does not provide the memory needed to claim a full DiffusionGemma fine-tuning run. The training routes above are checked against the maintainers' implementations; they are not presented as measured training results. Keep that distinction in your own project report too.

Learn from public implementations without inheriting their claims

AX Engine's DiffusionGemma notes explicitly separate first-block telemetry from autoregressive decoding numbers. That distinction is useful even if you never use AX Engine: define the output boundary before comparing latency. Its support is described as experimental, and its hardware results should not become your capacity plan.

Hugging Face Diffusers makes schedulers and callbacks inspectable. Read it when deciding how draft updates, adaptive stopping and adapters behave. vLLM's structured-read example is a separate reference for bounded answers. Keep its helper service and model-server versions together.

For each repository, check the exact checkpoint, supported modalities, quantization, current tests and limitations. Open source lets you inspect the mechanism; it does not remove the need to verify it on your workload.

A project worth showing in an FDE review

Build a small internal code-review assistant around a fixed set of repository tasks. Retrieve relevant functions with EmbeddingGemma 2, generate a proposed patch with DiffusionGemma, and validate it in a disposable environment. Return the patch, evidence locations, test results and a clear failure explanation when it cannot finish.

Compare it with an autoregressive baseline under the same tasks and resource budget. Include a task with missing evidence, an outdated index, a cancellation and a patch that passes syntax checks but violates the requirement. Present the accepted-task results and the failed cases together. A reviewer should be able to follow the chain from requirement to source, proposed change and verified behavior without trusting the model's own success message.

PRACTICE THIS

Turn it into offers. Work the real questions and concepts this maps to:

FAQ

DiffusionGemma is Google's experimental open-weight model for generating text through repeated refinement of token blocks. The released checkpoint has approximately 26 billion total parameters and 4 billion active parameters per token. It can take text, images and video as inputs; audio is not a supported input modality.

Discussion (3)

Mei LinEditor

The first visible token is an ambiguous benchmark boundary when a UI can display revisable drafts. Record first preview, first committed block and final validated result separately. The user should be able to tell which state they are seeing.

Arjun MehtaEditor

A shorter decision canvas is interesting, but the entire answer template must fit. A list of choices that fits in one test can overflow when a new category or a longer identifier is added. Test the schema and tokenizer together.

hannahContributor

A tuned model and a tuned sampler are two changes. Compare them separately before combining them, or a quality improvement can be mistakenly attributed to the adapter when it came from spending more denoising steps.