13.2tok/s
Lenovo Yoga 7 2-in-1 16ILL10 · Core Ultra 5 226V · 16 GB
35B model larger than the laptop's memory, streamed from its SSD
- Cosmos
- 13.2tok/s
- Ubuntu + llama.cpp
- 1.8tok/s
7.3× the speed of Ubuntu + llama.cpp on the same laptop
Benchmarks
Qwen3.6-35B-A3B decoding at 13.2 tok/s on the Lenovo Yoga 7 2-in-1 16ILL10 (Core Ultra 5 226V, 16 GB), a model larger than the laptop's memory streamed from its SSD, and at 42.5 tok/s on the MSI Prestige 16 AI+ C3MTG (Core Ultra X7 358H, 32 GB), where every weight fits in memory. On the Lenovo Yoga 7 2-in-1, the SSD reads at its own ceiling. Each workload also ran on the same laptop under Ubuntu, with the standard Linux tool for the job — llama.cpp for inference, fio with io_uring for storage — as the reference. Every number on this page is read off a screenshot of the run, and every screenshot is here.
13.2tok/s
Lenovo Yoga 7 2-in-1 16ILL10 · Core Ultra 5 226V · 16 GB
35B model larger than the laptop's memory, streamed from its SSD
7.3× the speed of Ubuntu + llama.cpp on the same laptop
42.5tok/s
MSI Prestige 16 AI+ C3MTG · Core Ultra X7 358H · 32 GB
35B model, every weight resident in memory
2.8× the speed of Ubuntu + llama.cpp on the same laptop
6.02GB/s
Lenovo Yoga 7 2-in-1 16ILL10 · Core Ultra 5 226V · 16 GB
5 of 7 read patterns within 1% of the drive's 6.0 GB/s ceiling
+13.3% over Ubuntu with io_uring, sequential
Local LLM inference with Qwen3.6-35B-A3B, MTP and NVFP4 weights — the same weights on both laptops and both systems, running entirely on the device — asked for a merge sort in C. Speed is each runtime's own generation readout.
Qwen3.6-35B-A3B · MTP · NVFP4
Lenovo Yoga 7 2-in-1 16ILL10 · Core Ultra 5 226V · 16 GB
The model is bigger than the machine's memory. Cosmos keeps each layer's dense weights and a share of its experts resident, and streams the rest from NVMe into GPU-visible memory as the router asks for them. llama.cpp runs the same weights, with expert-cache support.
(open full size)Loading Qwen3.6-35B-A3B on the 16 GB Yoga 7 2-in-1: a 5 GiB expert pool (75 of 257 slots per layer), 4.97 GiB of experts read at 5.98 GB/s, ready in 4.3 s. The vision encoder is staged on the NPU.
Decode speed on this laptop · 7.3× the speed of Ubuntu + llama.cpp on the same machine
Readouts, as shown on screen
1948 tokens at 13.2 tok/s · context 3039 of 13312
Context 3,039 / 13,312 · Expert reads 2.43 GB/s¹
Avg speed 1.8t/s
Context 3,088 / 20,480
¹ Bytes read divided by time spent waiting on reads — not whole-run SSD throughput.
Evidence
(open full size)
(open full size)Qwen3.6-35B-A3B · MTP · NVFP4
MSI Prestige 16 AI+ C3MTG · Core Ultra X7 358H · 32 GB
With 32 GB every weight fits in memory on both systems. This pair compares captured generation rates for the same weights and the same kind of request, a merge sort in C.
Decode speed on this laptop · 2.8× the speed of Ubuntu + llama.cpp on the same machine
Readouts, as shown on screen
1117 tokens at 42.5 tok/s · context 4058 of 197632 · 4.12 tokens a step
Context 4,058 / 197,632 · 4.12 tokens per decode step
3,193 tokens · 3min 33s · 14.95 t/s
3,193 tokens in 3 min 33 s
Evidence
(open full size)
(open full size)The 64 GiB pack partition on the Lenovo Yoga 7 2-in-1's SSD, read 7 ways: runs of 64 MiB to 1 GiB scattered over 8–64 GiB, and one sequential pass. 5 of them land within 1% of 6.0 GB/s — the drive's own limit, below the PCIe 4.0 ×4 link's 7.9 GB/s raw rate. Ubuntu's fastest path, io_uring with direct I/O, is shown for reference.
Reads straight off the 64 GiB partition Cosmos keeps model packs on, through each system's fastest path: Kore's pack engine, and fio with io_uring, direct I/O and registered buffers.
| Pattern | Cosmos | Ubuntu | Δ | Comparison |
|---|---|---|---|---|
| Random64 MiB / 64 GiB | 5.78 | 5.559 | +4.0% | |
| Random1,024 MiB / 64 GiB | 6.01 | 5.916 | +1.6% | |
| SequentialContiguous · see note | 6.02 | 5.313 | +13.3% | |
| Random64 MiB / 8 GiB | 5.64 | 5.027 | +12.2% | |
| Random256 MiB / 16 GiB | 5.95 | 5.177 | +14.9% | |
| Random256 MiB / 64 GiB | 5.99 | 5.396 | +11.0% | |
| Random512 MiB / 64 GiB | 6.00 | 5.387 | +11.4% |
GB/s, decimal · group / span · bars share one scale from zero
Group = one contiguous read run, not the device I/O size. 12 GiB per case; the last case reads 18 GiB.
Sequential layouts differ: Kore declares one 64 GiB span; fio reads eight adjacent 1.5 GiB regions, one per job.
fio, shared by every case
sudo fio --name=pack --filename=/dev/nvme0n1p6 --readonly --direct=1 --ioengine=io_uring --fixedbufs=1 --registerfiles=1 --thread --numjobs=8 --group_reporting --bs=128k --iodepth=16 --invalidate=0 --norandommap --randrepeat=0
Evidence
(open full size)
(open full size)
(open full size)The raw terminal behind the storage results: seven pack bench runs over the 64 GiB pack partition.