d1-3B · Radiance BF16
Community conversion of LiquidAI/d1-3B to the
Radiance .rad container format. The model weights
and original model development are by Liquid AI. The conversion preserves BF16 weights and
includes the text model, SigLIP2 vision encoder, and image projector in one file.
Experimental: requires the Radiance System One / LFM2 support branch and runtime ABI 16.
The public implementation is pinned at support commit 83113d4 on
codex/systemone-lfm2. See the System One serving and API guide.
The implementation is proposed in Radiance PR #50; this support is not yet an upstream release.
The support branch is based on Radiance 1.2.4, upstream commit
7d84086.
Post-merge runtime validation used d99d124;
the pinned support commit differs only by a GPU test-fixture correction, with no runtime source
changes. Build the engine and all plugins from the same compatible source revision. A stock
Radiance release without this support cannot load and serve this model correctly. The .rad
file is for Radiance; it is not a Transformers checkpoint or a GGUF file.
File and provenance
| File | Contents | Size |
|---|---|---|
d1-3B-vision-bf16.rad |
BF16 text model, vision encoder, projector, tokenizer, and d1 metadata | 6,253,752,320 bytes (about 5.82 GiB) |
- Source: LiquidAI/d1-3B at revision
da1fe36a861f24690f27f622dca1d8688503d113. - The original safetensors checkpoint was converted directly. No GGUF intermediate, fine-tuning, or lower-bit quantization was used.
- Conversion writes Radiance tensor names/layouts and embeds its tokenizer and multimodal
configuration. It adds
decision.type=d1to select the d1 prompt and answer readout. - The converter reported 569 output weights with no weights quantized by the recipe.
- This artifact was originally converted using the development support based on Radiance
commit
05af4db(1.2.3). The exact converter commit was not recorded. The later 1.2.4 support and validation above use the same converted file; it has not been reconverted. - Original source metadata and attribution are retained in upstream/. See conversion.json for machine-readable provenance.
What it does
Send a state and named questions to POST /v1/systemone. The state can be text, any JSON value,
images, or a combination. The response contains typed decisions and
usage.output_tokens: 0:
| Question type | Answer |
|---|---|
noul |
noul: the probability of yes |
choice |
A named option, confidence, and an option probability distribution |
score |
The expected index of 2–10 ordered levels, confidence, probabilities, and a legend |
This model is intended for decisions rather than conversational text generation. The original model card describes its intended uses, training context, and upstream evaluations: LiquidAI model card. The language metadata above is inherited from that card; conversion validation did not evaluate every listed language.
Serve with Radiance
Use a compatible Radiance build with the lfm2_bf16 architecture plugin and appropriate kernels
for your hardware. Image decoding requires FFmpeg support; configure Radiance with
-DRAD_WITH_FFMPEG=ON. Initial GPU validation used an AMD Radeon AI PRO R9700 with ROCm and
gfx1201 kernels, at tensor parallel size 1. Other hardware has not been established by these tests. The initial LFM2 plugin requires
--tp 1; tensor parallel serving is not supported.
build/bin/radiance \
--radiance-home build/radiance_home \
--model d1-3B-vision-bf16.rad \
--served-model-name d1-3b \
--host 127.0.0.1 --port 8000 \
--tp 1 --kv-cache-dtype bf16 --num-speculative-tokens 0 \
--max-model-len 32768 --max-num-batched-tokens 2048 --max-num-seqs 4
The file already includes the image encoder; no separate mmproj is needed. Keep image
processing enabled when serving pictures (--mm-max-patches 0 disables it).
curl http://127.0.0.1:8000/v1/systemone \
-H 'Content-Type: application/json' \
-d '{
"state": "I was charged twice; please refund the duplicate charge.",
"questions": {
"refund": {"type": "noul", "instructions": "Is a refund requested?"},
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {"billing": "Charges and refunds", "technical": "App faults"}
},
"urgency": {
"type": "score",
"instructions": "How urgent is this?",
"criteria": ["Can wait", "Today", "Blocking now"]
}
}
}'
For pictures, add an images array of base64 data-URL strings. A picture-only request uses
state: null:
{
"state": null,
"images": ["data:image/png;base64,..."],
"questions": {
"animal": {
"type": "choice",
"instructions": "Which animal is visible?",
"criteria": {"cat": "A cat", "dog": "A dog", "other": "Neither"}
}
}
}
Replace the example's ... with the image's actual base64 data. Images are read in array order
before the text state; Radiance inserts all image markers automatically. Remote image URLs and
filesystem paths are not accepted by this endpoint. Streaming and sampling parameters are not
part of this API. Each image is prepared and encoded once per request, with features shared
across its questions.
Limits and numerical behavior
The checkpoint declares a 32,768-token context. Each individual question must fit its state,
question text, prompt template, expanded image tokens, and image markers within the serving
limit. The server rejects oversized prompts with HTTP 400 without truncation. Reported
usage.input_tokens sums full prompts across questions, including their repeated state, so a
multi-question request's usage can exceed 32,768 while each individual prompt remains valid.
This context declaration and boundary testing do not establish decision quality at that limit.
Images above 1,048,576 source pixels are resized to that area, following the official runner. The default decoded-source limit is 67,108,864 pixels. Tiling can expand one image to as many as 2,829 prompt tokens with this checkpoint. Extreme aspect ratios exceeding the encoder's 1,024-patch segment limit are rejected. The default HTTP request body limit is 512 MiB, including base64 and JSON. These are serving limits, separate from model quality.
Radiance uses the published d1 prompt and readout: it takes the strongest single-token alias
for each candidate answer, then applies softmax across candidate scores. confidence is the
maximum option probability; score is the expected level index. No extra temperature
calibration is applied.
Validation covered text decisions, single images, a tiled image, two-image requests, concurrent requests, and the 32,768/32,769-token acceptance boundary. Image preprocessing matched six small official processor fixtures byte for byte. All tested categorical choices matched the pinned official Python reference. Maximum observed absolute numeric differences were about 0.0384 for text answer fields and 0.0305 for image answer fields. BF16 rounding, batching, and kernel execution can change probabilities and scores; these checks do not establish bitwise parity, calibration equivalence, or broad task accuracy.
After integration with Radiance 1.2.4, the reference comparison was repeated on five text cases and four image cases. All categorical choices and input-token counts matched the pinned reference, and the returned probabilities were finite. Maximum absolute differences across numeric answer fields were 0.030545 for text and 0.030490 for images. These are results for those nine cases; they do not replace the broader earlier observations above. The original model's published benchmark scores have not been rerun for this conversion. No new training or quality claims are made for the format conversion.
Reproduce the conversion
Download the complete original source repository at the pinned revision above, including its safetensors, tokenizer, and configuration files. With the compatible Radiance branch built:
build/bin/rad-convert /path/to/d1-3B \
-o d1-3B-vision-bf16.rad \
--set decision.type=d1
The original multimodal safetensors supplies the image encoder automatically. LFM2 GGUF import, including BF16 GGUF, is not implemented by this initial support branch.
License and attribution
This model remains under the LFM Open License v1.0. The original LICENSE is included unchanged; its conditions apply to use and redistribution. NOTICE identifies the conversion and upstream source. The converted file changes the storage format and serving metadata; it does not transfer ownership of the underlying model or change its license.
Original work: Liquid AI, Open d1: Edge decision models for text, vision, and audio, 2026. The unmodified upstream model card retains its original citations and attribution.