thinkingmachines/Inkling-Small
Natively multimodal 276B-parameter MoE from Thinking Machines Lab — 12B active parameters, text/image/audio in, text out, and up to 1M context.
276B total / 12B active Inkling architecture for lower-cost, lower-latency deployment
Guide
Overview
TML Inkling-Small is a natively multimodal 276B-parameter Mixture-of-Experts model from Thinking Machines Lab. It activates 12B parameters per token and uses the same Inkling architecture and vLLM serving configuration as its larger 975B-parameter sibling, while substantially reducing the deployment footprint.
Inkling-Small accepts text, image, and audio inputs and generates text. It supports Inkling's relative-attention and short-convolution serving path, tool and reasoning parsers, and MTP speculative decoding.
Variants
- NVFP4 (default): Requires at least 180 GB aggregated VRAM. Run W4A4 with TP1 on B300/GB300 or TP2 on B200/GB200. On H200, run W4A16 with TP2; the MoE kernel dequantizes the NVFP4 weights to BF16 on the fly.
- BF16: Requires at least 600 GB aggregated VRAM. Run TP4 on B300/GB200/GB300 or AMD MI300X/MI325X/MI355X, and TP8 on B200/H200. MI355X TP4 is validated; direct MI300X/MI325X BF16 smoke is pending.
- MXFP4 (AMD):
EmbeddedLLM/Inkling-Small-MXFP4keeps the full 1M-token context at TP1 on MI355X or TP2 on MI300X. MI355X runs native AITER MXFP4 MoE; MI300X uses the supported Triton on-the-fly MXFP4 emulation path.
Prerequisites
- Hardware: B300/GB300 TP1 or B200/GB200/H200 TP2 for NVFP4; B300/GB200/GB300/MI300X/MI325X/MI355X TP4 or B200/H200 TP8 for BF16; MI355X TP1 or MI300X/MI325X TP2 for AMD MXFP4.
- vLLM: A nightly build with Inkling support.
- Audio: Install the optional
vllm[audio]extra only when serving audio inputs.
Client Usage
Launch the NVFP4 checkpoint in W4A4 mode on B300:
export VLLM_USE_V2_MODEL_RUNNER=1
export FLASH_ATTENTION_CUTE_DSL_CACHE_ENABLED=1
vllm serve thinkingmachines/Inkling-Small-NVFP4 \
--tokenizer-mode inkling \
--reasoning-parser inkling \
--tool-call-parser inkling \
--enable-auto-tool-choice \
--tensor-parallel-size 1 \
--kernel-config.enable_flashinfer_autotune=False \
--trust-remote-code
Select GB300 for W4A4 with TP1, or B200/GB200 for W4A4 with TP2. On H200, the builder emits TP2 and vLLM runs W4A16 with on-the-fly dequantization.
On AMD, select the MXFP4 variant. To fit 1M context, MI300X TP2 and MI355X TP1.
MI355X uses --moe-backend aiter; MI300X uses --moe-backend auto
because native AITER W4A4 is gated to gfx950, while gfx942 falls back to
OCP_MXQuantizationEmulationTritonExperts. Inkling relative attention remains
on its model-specific Triton path (INKLING_GFX950_GLUON=0), which was faster
than the optional gfx950 Gluon path in the serving benchmark.
Equivalent MI355X launch:
export VLLM_USE_V2_MODEL_RUNNER=1
export VLLM_ROCM_USE_AITER=1
export VLLM_ROCM_USE_AITER_MOE=1
export INKLING_GFX950_GLUON=0
vllm serve EmbeddedLLM/Inkling-Small-MXFP4 \
--tensor-parallel-size 1 \
--tokenizer-mode inkling \
--reasoning-parser inkling \
--tool-call-parser inkling \
--enable-auto-tool-choice \
--moe-backend aiter \
--block-size 128 \
--trust-remote-code
Query the server with the OpenAI SDK:
from openai import OpenAI
client = OpenAI(api_key="EMPTY", base_url="http://localhost:8000/v1")
response = client.chat.completions.create(
model="thinkingmachines/Inkling-Small-NVFP4",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Describe this image."},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
],
}],
)
print(response.choices[0].message.content)