A 13-year-old iPad Air and a standard Xiaomi TV box can now run 16B parameter mixture-of-experts (MoE) models at speeds between 2.6 and 5.1 tokens per second. This is achieved through the 'smolmaxxing' project, which optimizes for the specific hardware bottlenecks of low-power devices—namely limited RAM, slow flash storage, and basic CPU instructions—to unlock capabilities that were previously thought to be inaccessible on such hardware.

Screenshot of the live token-stream page served by llama-server on the Xiaomi TV box.
The live token-stream interface running on the Xiaomi TV box hardware.github.com

This screenshot demonstrates the actual user interface for the model's output on the TV box hardware.

Comparison chart of generation speeds for various model sizes on a Xiaomi TV box and an iPad Air.
Comparison of generation speeds across different model size classes on the two target low-power devices.github.com

This chart visualizes the performance gains across different model sizes, specifically highlighting the 16B MoE model's performance on both devices.

Overcoming Compute and Memory Limits

To run models on devices like the Xiaomi TV Box S, which features an Amlogic S7D chip and only 1.9 GB of RAM, the project implements several compute-focused innovations. These include Q2_K and ternary repacks for vdotq_laneq instructions, 1-bit bit planes, and a specialized 1-bit lookup-table kernel that works on base NEON instructions without requiring dotprod support.

Memory constraints are addressed through 'headless' modes and pruned LM heads, which can free up 0.2 to 0.5 GB of RAM per model. These optimizations allow the system to maintain a larger pool of free memory, which is critical for keeping the model resident in RAM rather than constantly swapping to disk.

“Every device around you is more capable than it looks.”

— GitHub - hyperionaidev/smolmaxxing: maxxing the ability to run different LLMs on the smallest devices possible

Weight Streaming and Expert Paging

For models larger than the device's physical RAM, smolmaxxing utilizes a weight streaming engine with O_DIRECT and an 'expert pager.' This mechanism pages non-expert weights from flash memory on demand and prefetches layers ahead to minimize latency. This is particularly effective for Mixture-of-Experts (MoE) models, which only require a fraction of their total weights to be active at any given time.

On the 2013 iPad Air, this approach allowed a 16B MoE model to run at 2.6-4.5 tokens per second. The system uses cache-aware routing and a decayed-frequency eviction policy to ensure that the most frequently used experts remain accessible, reducing the impact of flash storage's 278 MB/s speed limit.

Scoreboard showing model performance and token speeds on the iPad Air.
Performance metrics for models running on the first-generation iPad Air, including token speeds and latency.github.com

This scoreboard provides specific data points for the iPad Air's performance, including the 16B MoE model's speed.

Performance Trade-offs and Bottlenecks

The project demonstrates that for models larger than 2B parameters, the primary bottleneck shifts from CPU compute to flash storage speeds. A model's generation speed is strictly limited by the device's ability to stream weights from flash; for example, a 9B model running on the TV box achieves only 0.27 tokens per second because it is heavily flash-bound.

There is a measurable trade-off between speed and output quality. On the iPad Air, increasing the number of experts for the Moon-Beam-8B-A1B model can boost the generation speed to 5.0 tokens per second, but this results in a 27% increase in perplexity, meaning the model's responses become less coherent.

Graph showing the trade-off between generation speed and perplexity for different models on the iPad Air.
Visual representation of the trade-off between model output quality (perplexity) and generation speed.github.com

This graph illustrates the specific trade-off mentioned in the final paragraph regarding increasing active experts.

What Hacker News readers are saying

  • Experience: One commenter shared their experience successfully running 16B models on first-generation iPad Airs and Xiaomi TV boxes with less than 1GB of memory. comment ↗
  • Experience: Another user noted that similar efforts have already succeeded in running models on a Nintendo Wii with GPU acceleration. comment ↗
  • Alternative: Several commenters suggested testing the project on older flagship mobile devices, first-generation Raspberry Pis, or ESP32 devices. comment ↗

Summarized opinions from the Hacker News thread, not verified facts. Read the full discussion ↗