Swift-1.5-Qwen3.8-27B-Splash

Change coming in the next Splash release. Splash's main now loads upstream MLX 4-bit (affine, group 64) and GGUF checkpoints directly and prepares its own weights (incoai/splash#133, #134), so pre-converted packages like this one become Splash's legacy path. This package keeps working, and on Splash 1.0.x (current) it is still the way to run this model. After the next release you should be able to skip it:

splash serve --model ukisai/Swift-1.5-4bit-MLX

This package is an exact repack of ukisai/Swift-1.5-4bit-MLX, and Splash states that MLX 4-bit models prepare to the same weights, so expect the same output and speed. GGUF quants (ukisai/Swift-1.5-Qwen3.8-27B-GGUF) should also load, on separate kernels.

ukisai/Swift-1.5-Qwen3.8-27b, quantized to 4-bit and packaged for Splash, Inco AI's inference engine for Apple silicon.

17.4 GB, uniform 4-bit (group 64, affine). Apple silicon + Splash only β€” which includes LM Studio's Splash runtime (LM Studio Bionic 1.1.5 or later: Settings β†’ Runtime β†’ Splash, then download this repository). It does not load in Transformers, MLX or llama.cpp.

Quick start

  1. Install Splash (Apple silicon, via Homebrew):

    brew install incoai/tap/splash
    
  2. Serve this model. The first run downloads the 17.4 GB package from Hugging Face:

    splash serve --model SiliconSpecies/Swift-1.5-Qwen3.8-27B-Splash
    

    Wait for Ready Β· SiliconSpecies/Swift-1.5-Qwen3.8-27B-Splash Β· … Β· http://127.0.0.1:8000. Leave it running; Ctrl+C stops it.

  3. Chat in the browser at http://127.0.0.1:8000.

  4. Or call the OpenAI-compatible API from another terminal. The model id is the repository name:

    curl http://127.0.0.1:8000/v1/chat/completions \
      -H 'Content-Type: application/json' \
      -d '{
        "model": "SiliconSpecies/Swift-1.5-Qwen3.8-27B-Splash",
        "messages": [{"role": "user", "content": "Write a haiku about the sea."}],
        "temperature": 1.0, "top_p": 0.95, "top_k": 20,
        "max_tokens": 2048
      }'
    

    Any OpenAI client works the same way: base URL http://127.0.0.1:8000/v1, model SiliconSpecies/Swift-1.5-Qwen3.8-27B-Splash, any API key unless you started the server with --api-key.

  5. Or connect a coding agent to the running server: splash claude, splash codex, splash opencode or splash hermes.

Send the sampling values in step 4 yourself β€” the API is greedy when they are omitted (see Sampling) β€” and leave room in max_tokens for thinking (see Reasoning effort). Useful splash serve options: --max-memory 28G, --max-context 100K, --api-key KEY, --no-webui.

part source treatment
target/ β€” 64 layers, embedding, head ukisai/Swift-1.5-Qwen3.8-27b, via UkisAI's own 4-bit release ukisai/Swift-1.5-4bit-MLX (affine 4-bit, group 64) repacked into Splash 4-bit with the values unchanged β€” this is the conversion
draft/ β€” DFlash 2 incoai/Qwen3.8-27B-DFlash2 byte-identical copy
vision/ incoai/Qwen3.8-27B-Splash byte-identical copy (equals Qwen3.8-27B's own tower, 333/333 tensors β€” the Swift-1.5 fine-tune left it untouched)
tokenizer/ ukisai/Swift-1.5-4bit-MLX unmodified, except one chat-template line patched exactly as in the official package β€” see below

Quality

95 short-answer tasks with checkable answers (multi-step arithmetic, word problems, sequences, logic, code output, recall, units) β€” the same saturated set as the base and Swift-1.0 packages, greedy, identical scoring throughout:

configuration precision score
this package (Swift-1.5) uniform 4-bit 95/95
SiliconSpecies/Swift-Qwen3.8-27B-Splash (Swift-1.0) uniform 4-bit 95/95
incoai/Qwen3.8-27B-Splash (base model) uniform 4-bit 95/95

Indistinguishable from base at this difficulty β€” the set saturates, so it cannot rank them, and it is not a claim of parity with full-precision Swift-1.5 β€” it cannot detect a small regression; the fidelity measurement below can.

The old Swift-1.0 package scored the same here, so the useful comparison is behaviour: on 61 shared prompts the two fine-tunes are word-level identical 59 times (mean common prefix 0.973) β€” near-identical on short canonical answers, genuinely distinct on long-form free text, as two separate fine-tunes should be.

Fidelity to BF16

Next-token KL divergence against BF16 ukisai/Swift-1.5-Qwen3.8-27b, on the corpora and protocol of the agentionai/Qwen3.8-27B-AP-GGUF card (15 Γ— 2,048 tokens per corpus, second half of each chunk scored):

KL, neutral web KL, wikitext-2 KL p99 (web / wiki) top-1 agreement perplexity
this package 0.031 0.060 0.22 / 0.46 90% +2.4% / +2.0%

For scale, that card's 4-bit GGUFs of base Qwen3.8-27B score 0.010–0.018 (web) and 0.015–0.024 (wikitext); like the Swift-1.0 package, this one sits nearer their 3-bit files. The cost is the format's: splash-packed-q4 stores every tensor, output head included, at uniform 4-bit, where llama.cpp's 4-bit mixes keep sensitive tensors at 5–6 bits.

Caveats: the GGUF figures are for base Qwen3.8 via llama.cpp, ours for Swift-1.5 via MLX using this package's exact 4-bit values, with a 16-bit KV cache β€” Splash's 8-bit KV cache adds a little more. KL is computed over the reference's top 64 tokens plus one tail bucket, which slightly understates it.

Speed

Measured on an M5 Max (40-core GPU, 128 GB, mains power), back to back against the Swift-1.0 package on the same engine (Splash 1.0.2); greedy, and every prompt salted so nothing is served from the prefix cache:

Swift-1.0 package this package
decode, 1,024-token replies 74–85 tok/s 75–84 tok/s
prefill, 2k / 8k tokens 1,045 / 931 tok/s 993 / 920 tok/s
prefill, 31k / 62k tokens 831 / 730 tok/s 825 / 723 tok/s
4 requests at once 195 tok/s total 179 tok/s total
draft acceptance 0.44 0.44

On par with Swift-1.0 β€” same format, size and drafter; the differences are within run-to-run noise.

Sampling

Swift recommends temperature 1.0, top_k 20, top_p 0.95. The format has nowhere to carry generation_config.json β€” the installer accepts exactly five tokenizer files β€” and Splash deliberately keeps sampling out of the model.

  • Splash's chat page already sends those values. Browser users need do nothing.
  • The /v1 API defaults to greedy (temperature 0.0, top_p 1.0, top_k 0) when a client omits them. Send them explicitly.
  • If your client cannot β€” DSH, for one, has no top_p/top_k in its request model at all β€” a ~50-line proxy that fills them in works and costs no measurable latency.

Reasoning effort

Swift's chat template implements low, medium, xhigh, defaulting to xhigh. Splash passes reasoning_effort straight into the template, so a value outside that set raises a template error (high/max alias to xhigh, minimal to low).

The levels change the instructions the template writes, not a token budget, so higher effort can be shorter.

Conversion notes

The source is the MLX affine-4-bit release. MLX's affine 4-bit/group-64 rule is Splash's own (w = cΒ·s + b, bf16 scale and bias per 64 weights), so the codes, scales and biases are repacked into splash-packed-q4 as stored, not re-quantized: the weights are exactly those of ukisai/Swift-1.5-4bit-MLX. This package has been improved to do so, bringing it closer to BF16 at the same size and speed.

For scale: that release was checked tensor-for-tensor against the pinned BF16 ukisai/Swift-1.5-Qwen3.8-27b β€” 498 quantized tensors, cosine 0.99335–0.99585, relative RMSE ≀ 0.116 (the worst five are heavy-tail in_proj/k_proj matrices in the top layers; the limit is 4-bit storage, not conversion), and 353 bf16 tensors bit-exact.

Two provenance checks that save you the conversion entirely:

  • Vision β€” the Swift-1.5 fine-tune left the tower byte-identical to Qwen3.8-27B base (333 of 333 tensors), so this file is the official package's, unchanged.
  • Drafter β€” DFlash 2 is reused from the official release unchanged; Swift-1.5's drafter acceptance matches Swift-1.0's (see Speed).

If you attempt the target yourself: every bf16 norm section stores Ξ³ + 1, including query-norm and key-norm, with gdn-norm the lone exception. Getting the attention norms wrong leaves the model fluent while destroying multi-step reasoning β€” and per-section error metrics will not show it.

Chat template. Swift's template rejects a system message anywhere but first, so clients that send a second one β€” JetBrains' commit-message generation through LM Studio's Splash runtime, for one β€” fail with messages could not be rendered. The official incoai/Qwen3.8-27B-Splash template renders such a message in place; this package applies the same one-line patch, and drops the unpatched copy from tokenizer_config.json as the official package does. Conversations that rendered before render byte-for-byte the same.

Licence

Swift contribution under the Swift Open License v1.0 (LICENSE); base model Apache 2.0 (LICENSE-APACHE-2.0). See NOTICE for attribution and the full list of changes.

Commercial use is free under US$1,000,000 gross annual revenue. Above that it requires a Swift Enterprise License from UkisAI. That condition travels with these weights and applies to you.

Credit: Swift-1.5 fine-tune by UkisAI; Qwen3.8-27B by Alibaba Cloud; Splash engine, packed format and DFlash 2 drafter by Inco AI.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for SiliconSpecies/Swift-1.5-Qwen3.8-27B-Splash

Base model

Qwen/Qwen3.8-27B
Quantized
(20)
this model