inclusionAI/Ling-3.1-flash
Ling-3.1-flash MoE model with block-FP8 weights, tool calling, and reasoning support
Block-FP8 weights with BF16 compute and TP8 + EP8 deployment
Guide
Overview
inclusionAI/Ling-3.1-flash uses the BailingMoeV3ForCausalLM
architecture with a hybrid MLA/KDA attention stack, 72 layers, 512 routed
experts (8 active per token), and one shared expert. The checkpoint uses
serialized block-FP8 E4M3 weights with 128x128 block scaling and dynamic
activation quantization. Non-quantized modules use BF16.
Prerequisites
- vLLM: nightly build
- Deployment: a single node with 8 GPUs, using TP8 + EP8
- Precision: serialized block FP8 weights with BF16 compute
- Context length: 262,144 tokens
- Memory: approximately 689 GB aggregate VRAM as a loading estimate; allow additional capacity for KV cache and the intended workload
Launching the Server
vllm serve inclusionAI/Ling-3.1-flash \
--trust-remote-code \
--tensor-parallel-size 8 \
--enable-expert-parallel \
--gpu-memory-utilization 0.9 \
--enable-chunked-prefill \
--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE"}' \
--enable-prefix-caching \
--enable-auto-tool-choice \
--tool-call-parser ling3 \
--reasoning-parser ling3
Thinking Mode
Thinking is selected per request through the chat template rather than by a server flag:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="inclusionAI/Ling-3.1-flash",
messages=[{"role": "user", "content": "Solve the problem step by step."}],
temperature=0.0,
max_tokens=16384,
extra_body={"chat_template_kwargs": {"enable_thinking": True}},
)
msg = response.choices[0].message
print(msg.reasoning)
print(msg.content)
--reasoning-parser ling3 separates thinking traces from the final answer.
Keep the prompt and requested output within the configured context limit.