mrkeyoor.com_
Sun 06 Sept 07:51 UTC
AI Toolsevaluationupdated 06 Sept 2026

mlx review

MLX is an array and machine-learning framework designed around Apple silicon, with Python, C++, C, and Swift-facing APIs. It gives NumPy and PyTorch users familiar building blocks for training and inference, while its current packages also cover CPU-only and CUDA-backed Linux systems.

Verdict

Our MLX build completed in 8 seconds, but pytest reached 0 test bodies and stopped with 33 collection/setup errors, so commit 2d27ab0 did not earn a clean Debian CPU baseline. MLX is still worth a focused trial for researchers on Apple silicon who want shared CPU and GPU memory with familiar Python APIs. Use PyTorch or JAX when cross-platform operations and an established surrounding ecosystem outweigh that hardware-specific design.

We ran it

Lab card: what happened when we ran mlxScreenshot of mlx (ml-explore.github.io/mlx)
Install✓ · 55s35 packages · 37 MB
Build✓ · 8s
Tests✗ · 9s0 passed · 0 failed · 33 errors of 33 (pytest)
Known vulns0(pip-audit)
Repo946 files~201,744 lines of source · 10.8 MB · 4 CI workflows · tests dir

Answers from our run

Does mlx build from source?

Dependencies installed in 55 seconds (35 packages), and the build succeeded in 8 seconds. We cloned commit 2d27ab0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do mlx's tests pass?

Yes: 0 of 33 passed when we ran the project's own test command (pytest), with 33 collection errors. Some failures need services or credentials a bare container does not have.

Does mlx have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use mlx?

Teams that require a clean generic Debian CPU test baseline before evaluation: our run reached 0 test bodies and ended with 33 collection/setup errors.

What are the alternatives to mlx?

PyTorch, JAX, tinygrad. Our MLX build completed in 8 seconds, but pytest reached 0 test bodies and stopped with 33 collection/setup errors, so commit 2d27ab0 did not earn a clean Debian CPU baseline.

Setup2/5Install and build passed; all 33 test entries errored before running
Docs5/5Install floors, lazy evaluation, APIs, and native builds are explained
Community5/528,313 stars and active September 2026 issue work
Maturity3/5v0.32.2 is active, with open numerical and compile-cache reports

Who it’s for

Machine-learning researchers working on Apple silicon who want CPU and GPU operations to share one memory pool.
Python developers comfortable with NumPy-shaped arrays, PyTorch-like neural-network layers, and lazy evaluation.
C++ developers who are prepared to compile the native API from source.
Linux teams willing to validate the newer CPU or CUDA backend against their own models and CI environment.

Who it’s NOT for

Teams that require a clean generic Debian CPU test baseline before evaluation: our run reached 0 test bodies and ended with 33 collection/setup errors.
Windows users seeking a documented pip installation path: the README lists macOS and Linux commands, while the detailed requirements do not provide a Windows package route.
Applications built around eager array execution: MLX records lazy graphs, and printing, conversion, scalar control flow, or an explicit eval can trigger computation.
Correctness-sensitive autodiff code without focused regression tests: open issue 4444 reports silently wrong grad and vmap results for a specific single-element strided-slice case in MLX 0.32.2.
Variable-length training that depends on mx.compile without shape controls: open issue 4464 reports an unbounded per-shape compile cache reaching the Metal buffer limit.

Setup reality

Our sandbox installed 35 packages in 55 seconds and used 37 MB on disk. The build succeeded in 8 seconds. Tests exited 1 after 9 seconds: pytest reported 0 passed, 0 failed, and 33 collection/setup errors out of 33. Its final summary was 33 errors in 1.80s. Pip-audit found 0 known vulnerabilities.

No hosted account, credential, or service is required for the framework itself. The simple package route is pip install mlx on Apple silicon. Linux users choose a CPU or CUDA extra, while C++ users build from source with CMake and system development libraries. Models and datasets are separate concerns.

The detailed guide requires Python 3.10 or newer and macOS 14.0 or newer for Apple packages. Linux wheels require glibc 2.35 or newer; CUDA has its own GPU, driver, and toolkit floors. Our fresh Python 3.12 Debian container installed and built the checkout, but the available log tail does not identify why all 33 test entries failed during collection/setup.

MLX 0.32.2 centers Apple silicon and includes Linux backends

MLX is an array framework from Apple machine-learning research, designed first around the shared memory architecture in Apple silicon. Its arrays can be used by CPU and GPU operations without explicit device transfers on that hardware. The current README also documents CPU-only and CUDA extras for Linux, so the project now reaches beyond Macs even though unified memory remains its defining idea.

The repository is compact beside older ML stacks, though it is substantial native software. Our commit 2d27ab0 checkout held 946 files, about 201,744 source lines, and 10.8 MB before dependencies. Python is the easiest front door. C++ is built from source, while C and Swift APIs live in linked projects. Example language models, image generation, and speech recognition are kept in a separate examples repository rather than bundled as finished applications.

NumPy-shaped APIs execute through lazy graphs

MLX exposes array operations that follow NumPy closely, along with neural-network and optimizer interfaces patterned after PyTorch. Automatic differentiation, vectorization, and graph compilation can be combined. Shapes may change without forcing the sort of ahead-of-time compilation pause some graph systems impose, because MLX constructs graphs dynamically. This feels familiar at the call site, yet its execution model deserves attention before existing code is moved over.

Operations record a graph until mx.eval or another materializing action runs it. Printing an array, converting it to NumPy, saving it, taking a scalar with item, or using a scalar array in control flow can cause evaluation. The design can avoid unused computation and reduce peak initialization memory, but evaluation placed too often adds overhead. Our 8-second successful build says the extension compiled in the sandbox; it says nothing about whether an application's evaluation points are efficient.

What happened when we ran it

Our fresh Debian sandbox used Python 3.12, 3 CPUs, and 8 GB of RAM. Installation succeeded in 55 seconds with 35 packages and 37 MB on disk. The build succeeded in another 8 seconds. Pip-audit found 0 known vulnerabilities. The checkout also contained 4 CI workflow files, no Dockerfile, and a tests directory, so test code and upstream automation were both visible.

Pytest exited with code 1 after 9 seconds. It reported 0 passed, 0 failed, and 33 collection/setup errors out of 33; its last summary line said 33 errors in 1.80s. The tail named optimizer, quantization, random, reduction, threads, tree, upsample, vmap, and zero-copy modules among the errors. It did not show a cause, so claiming a missing library, unsupported processor, or broken backend would be guesswork. No test body ran successfully in our environment.

Published packages have exact platform floors

The Apple wheel requires native Python 3.10 or newer on Apple silicon with macOS 14.0 or newer. Linux CPU wheels require glibc 2.35 or newer. CUDA packages add minimum NVIDIA architecture, driver, and toolkit requirements, with separate documented choices for CUDA 12 and CUDA 13. These floors rule out older enterprise Linux images and Macs running Python through Rosetta without changing the environment first.

Source builds add a C++20 compiler, CMake 3.25 or newer, and platform libraries. Linux needs BLAS and LAPACK development headers; Apple builds need Xcode 15.0 and the macOS 14.0 SDK. The Python route has a development extra and an in-place extension command, while C++ uses CMake and make. Our install occupied only 37 MB, but production disk and memory use will also include whichever models, datasets, and compiled kernels the application loads.

Two open reports justify focused numerical tests

Open issue 4444 describes a specific MLX 0.32.2 case where a strided slice selecting one element can return a wrong gradient, and vmap can return the wrong value and shape without raising. The report includes CPU and GPU reproductions plus several workarounds. Anyone using sliced tensors inside autodiff should add a small comparison test for the shapes and strides their model uses rather than assuming a correct forward value proves a correct gradient.

Issue 4464 reports a separate failure in variable-length training: mx.compile retained traces for distinct input shapes until a Metal buffer limit stopped the process. The report concerns MLX 0.32.2 and a particular training pattern, so it is not a verdict on all compiled work. It is still material for teams feeding many sequence lengths. Our own 33 collection/setup errors prevented the upstream suite from giving any counterevidence in the Debian CPU environment.

September 2026 activity is fast and still pre-1.0

GitHub recorded a push on September 6, 2026, one day after the measured commit, and listed 28,313 stars. Its 132 open items combined issues and pull requests; a separate search counted 87 open issues. Release v0.32.2 arrived on August 25 with fixes across casting, division, transforms, sorting, quantization, CPU operations, and Metal kernels, plus changes for CUDA and Windows-related build work.

That pace makes MLX a credible research framework, while the 0.x version and current numerical reports argue for pinning and application-level checks. The MIT license is straightforward, the guides explain lazy execution well, and 4 CI workflows are present. Adoption makes the most sense when Apple silicon is central enough to justify MLX-specific testing. A team that cannot reproduce its core model against known outputs should treat the failed 9-second test run as a stop sign, not a cosmetic CI detail.

Alternatives

ProjectWhat it isPick it when
PyTorch gh↗A widely used tensor and neural-network framework with mature accelerator support.pick this instead when broad platform coverage, third-party integrations, and established production tooling matter more than MLX's Apple memory model.
JAX gh↗A NumPy-oriented system for differentiation, vectorization, and compiled accelerator work.pick this instead when XLA-based deployment across GPUs and TPUs is already part of the stack.
tinygrad gh↗A much smaller tensor and autograd framework built for readable internals and experimentation.pick this instead when learning from a compact implementation matters more than MLX's native Apple integration.

What people are saying

  1. [velocity-scout] ml-explore/mlx
  2. [hf-trending] orcarouter/Qwen3.8-27B-Uncensored-MLX (trending model on Hugging Face)
  3. [github-trending] Blaizzy/mlx-audio

Sources

  1. MLX README at commit 2d27ab0
  2. MLX build and installation guide
  3. MLX lazy evaluation guide
  4. MLX v0.32.2 release notes
  5. MLX issue 4444 on strided-slice grad and vmap
  6. MLX issue 4464 on the per-shape compile cache

More ai tools reviews

onnx · OmniVoice · vibe · deepface · shap · gradio · the whole board →