Skip to content
NetProjects
Menu

Insights

SenseNova-Loop-9B on a Mac: a looped language model in MLX

Paris Michalas, Partner, NetProjects (Internet Projects Ltd)

Most language models run each layer once per token. SenseNova-Loop-9B-Preview is SenseNova's preview of a looped language model built on Qwen3.5: its middle layers, 4 to 27, run twice with the same weights, so a 9B model does 56 layer passes per token, and a two-stream routing scheme, mHC, mixes the passes.

It is a preview model, and it reads and writes text only. We ported it to MLX, Apple's machine-learning framework, so it runs on a Mac with Apple Silicon in standard mlx-lm. SenseNova's original: https://huggingface.co/sensenova/SenseNova-Loop-9B-Preview

Always up to date. We keep these builds and the engine that runs them current on Hugging Face and GitHub. When SenseNova releases a new version of SenseNova-Loop-9B, we rebuild, re-test and publish it there, so the links on this page always point to the latest version. The numbers in this article were measured on the version named in each section; the README on GitHub and the model card on Hugging Face carry the current figures and a dated change log.

What we released

Three MLX builds on Hugging Face. They run in standard mlx-lm, and the routers stay in float32.

Hugging FacePrecisionSize
netprojects/SenseNova-Loop-9B-Preview-MLX-8bit (recommended)8-bit9.6 GB
netprojects/SenseNova-Loop-9B-Preview-MLX-6bit6-bit7.3 GB
netprojects/SenseNova-Loop-9B-Preview-MLX-4bit4-bit5.1 GB

How well it matches the original

We compared every build with SenseNova's PyTorch code in bf16 on 16 prompts, and ran two small benchmarks.

Measured on sensenova-loop-mlx v0.1.0, 7 November 2026.

BuildSame top tokenARC-Challenge (300), acc / acc_normGSM8K (50)
8-bit97.6%48.7 / 50.394.0
6-bit97.2%47.7 / 49.088.0
4-bit89.2%45.7 / 45.092.0

The benchmark sets are small, so a difference of a few points between builds is noise.

How fast is it?

Measured on sensenova-loop-mlx v0.1.0, 7 November 2026, MacBook Pro M5 Max (128 GB).

The builds generate about 18, 20 and 22 tokens a second at 8-bit, 6-bit and 4-bit. The loop doubles the work per token; that is the price of the design.

Try it

pip install -U "mlx-lm>=0.32"
mlx_lm.server --model netprojects/SenseNova-Loop-9B-Preview-MLX-8bit --trust-remote-code

From Python:

from mlx_lm import load
model, tokenizer = load("netprojects/SenseNova-Loop-9B-Preview-MLX-8bit", trust_remote_code=True)

You need Python 3.11 or later; the macOS system Python is too old. The README has the full commands: https://github.com/internet-projects/sensenova-loop-mlx

Honest limits

  • It is a preview model.
  • Text only.
  • It needs trust_remote_code.
  • Our evaluations are small.
  • All figures come from one machine.
  • We have no memory or prompt-reading speed figures yet.

Links

Always up to date. We keep these builds and the engine that runs them current on Hugging Face and GitHub. When SenseNova releases a new version of SenseNova-Loop-9B, we rebuild, re-test and publish it there, so the links on this page always point to the latest version. The numbers in this article were measured on the version named in each section; the README on GitHub and the model card on Hugging Face carry the current figures and a dated change log.

Credits

SenseNova-Loop-9B-Preview is by SenseNova, built on Qwen3.5, under the Apache-2.0 licence; our code is Apache-2.0 licensed too. The MLX port is by Paris Michalas, Partner, NetProjects (Internet Projects Ltd). Not affiliated with SenseTime / SenseNova.

Paris Michalas is a partner at NetProjects, the trading name of Internet Projects Ltd: https://netprojects.com. This article was drafted with AI assistance, then edited and approved by people on our team. You can read more about how we use AI at https://netprojects.com/standards/ai.