Laguna XS 2.1 on Intel Arc Pro B70 — SYCL Serving Package
Serving scripts, validated configuration, and benchmark receipts for running
poolside's Laguna XS 2.1 (Q4_K_M GGUF) on a single Intel Arc Pro B70
GPU with an optimized llama.cpp SYCL build.
No model weights are included. Download the official GGUF from
poolside/Laguna-XS-2.1-GGUF
(license: OpenMDW-1.1). The optimized kernels ship here as
patches/lx-champion-vs-b10167.patch, applicable to upstream llama.cpp commit
7e1e28cae (build instructions below). The tuning harness, experiment notes,
and raw benchmark receipts behind these numbers live in
newjordan/lagunaX. An upstreaming
effort to mainline llama.cpp (cleaned, per-feature PRs) is in progress.
*Baseline: pinned base-control build of the same-era upstream source, same
GPU/model/flags, pinned 2026-07-29 (receipts/20260809T191208Z-score.json).
Claim boundary (from the receipt itself): serial one-stream pp512+tg128 only —
not multi-slot aggregate tok/s, and not comparable across different
quants/silicon.
*short-prompt "prompt eval" is dominated by launch overhead, not throughput;
see pp512 for sustained prefill. The 24K ingest used llama-cli defaults
(-c 32768, default ubatch); the tuned server config (-ub 2048) prefills
faster. Raw receipts: lagunaX repo, results/lx-usage-receipts-20260810T154850Z/
and results/lx-fattn-depth-ab-20260810T*/.
Multi-slot campaign (separate track, measured 2026-07-29, campaign notes in
docs/): aggregate decode ~513–522 t/s banked at -np 64 -c 32768 -ub 1024 -b 8192 with continuous batching under synthetic load. Single-request full
context serving decodes ~85 t/s at -c 131072 depth (2026-08-05 A/B,
serving/ab-ubatch-laguna.sh header).
Mirrors the CMake cache of the receipt binary (CMAKE_BUILD_TYPE=Release,
GGML_SYCL=ON, GGML_SYCL_F16=ON, GGML_SYCL_TARGET=INTEL, icpx,
GGML_NATIVE=ON, GGML_OPENMP=ON).
Serve — single stream, full 131,072-token context (port 8092)
serving/serve-laguna.sh. Edit REPO (and the binary path) to point at your
build from the step above, and MODEL at your GGUF, then:
./serving/serve-laguna.sh # PORT=8092 CTX=131072 NPARALLEL=1 by default
Key flags: -ngl 99 -fa on -ctk f16 -ctv f16 -c 131072 -np 1 -b 4096 -ub 2048 --jinja --chat-template-file poolside-Laguna-XS-2.1.jinja --temp 1.0 --top-k 20 --top-p 1.0 --min-p 0.0. A copy of the chat template ships in serving/.
Bench-validated env for the B70 (from the 2026-08-09 receipt):
bash
1exportONEAPI_DEVICE_SELECTOR=level_zero:gpu
2exportZE_AFFINITY_MASK=03exportGGML_SYCL_DISABLE_GRAPH=14exportGGML_SYCL_DISABLE_DNN=15# REQUIRED for the receipt decode numbers: enables the fused RMS-norm+RoPE6# KV-cache-write kernels, which default OFF in this tree. Without it decode7# lands ~3-5% lower.8exportGGML_SYCL_FUSE_NORM_ROPE=1
Two gotchas that look like "truncated output" (diagnosed 2026-08-04)
-c is the TOTAL KV pool split across -np slots.-c 131072 -np 4
gives each request only 32,768 tokens. Use -np 1 for the full trained
context (VRAM is identical, ~25 GiB either way; 262,144 total does not fit
in 30.3 GiB). Check curl :8092/props →
default_generation_settings.n_ctx (per-slot, not total).
Laguna is a thinking model; reasoning tokens bill against the client's
max_tokens. A small cap (e.g. 400) can be consumed entirely inside the
reasoning block, returning empty content with finish_reason: "length".
Send no max_tokens (server default n_predict: -1) or a generous one
(>1500), or disable thinking per-request with
"chat_template_kwargs": {"enable_thinking": false}.
Why -ub 2048 and not 4096
A/B'd at -c 131072 on 2026-08-05 (serving/ab-ubatch-laguna.sh): 4096 is
slower at every depth — prefill −7.1/−6.0/−3.6% at 6.5K/26K/52K tokens, decode
−10% (84.6 → 75.9 t/s) — and costs +1.3 GiB VRAM.
Serve — multi-slot throughput
serving/env.sh (shared campaign env; adjust the TB_PKG/LAGUNA_* paths to
your build) plus serving/max-push-2h.sh (multi-slot llama-server + concurrent
load via serving/max-push-load.py + telemetry). Campaign status and banked
numbers: docs/OPERATIONAL.md, docs/CAMPAIGN-README.md.
Package contents
serving/serve-laguna.sh single-stream :8092 launcher (full 131K ctx)
serving/env.sh shared B70/Laguna env (paths + GGML_SYCL_* knobs)
serving/ab-ubatch-laguna.sh -ub 2048 vs 4096 A/B harness (receipt in header)
serving/max-push-2h.sh multi-slot serve + load + telemetry campaign
serving/max-push-load.py concurrent load generator
serving/poolside-Laguna-XS-2.1.jinja chat template used with --jinja
docs/ multi-slot campaign status notes
receipts/20260809T191208Z-* llama-bench receipt for 152.55 / 1170.98
Licensing
Laguna XS 2.1 weights and the official GGUF: OpenMDW-1.1 (permissive
open model weights license) — see the
model card.
llama.cpp and this fork: MIT (upstream llama.cpp license).
Scripts in this package: same license as the lagunaX repository.
Note: scripts reference absolute paths from the original box
(/home/frosty40/..., /mnt/data2tb/...); edit the path variables at the top
of each script for your machine.