Tool

mlx-lm

Local LLMs · Apple silicon inference · github.com/ml-explore/mlx-lm

A Python package for generating text and fine-tuning large language models on Apple silicon — built on Apple’s MLX array framework and the Hugging Face Hub, not a CUDA GPU stack.

What it is

mlx-lm (from Apple machine learning research’s ml-explore org) sits on MLX: generate and chat from the CLI (mlx_lm.generate, mlx_lm.chat), load models in Python, quantize/convert weights, and optionally fine-tune (LoRA and full). Models pull from Hugging Face; many ready-made MLX quants live under the mlx-community org. Install is typically pip install mlx-lm or conda-forge. MLX uses a unified memory model on Apple silicon (CPU/GPU share memory without the usual discrete-VRAM copy story).

What it replaces

On a Mac, it replaces “I need a CUDA box just to try open weights” for everyday local generation and light fine-tuning, and replaces wrapping raw llama.cpp when you want an MLX-native Python/CLI path that speaks Hugging Face.

It does not replace Ollama/LM Studio polish for non-technical users, does not run on Windows/Linux NVIDIA the way CUDA stacks do, and does not rewrite model licenses. Large models still need enough unified memory — and wiring tricks for big models need macOS 15+ per upstream README.

License

The mlx-lm package and the core MLX framework are released under the MIT License, verified from the GitHub repos (ml-explore/mlx-lm, ml-explore/mlx) and PyPI metadata. Model licenses vary — MIT on the runner does not make every Hugging Face weight free-for-anything. Read each model card.

Where it falls over

  • Apple silicon only for the intended path — this is not your RTX 3090 toolkit.
  • Unified memory is shared with macOS and other apps; budget weights + KV cache + headroom, not “total RAM on the sticker.”
  • Models large relative to RAM get slow; upstream notes memory wiring needs macOS 15.0+, and may warn when a model is too heavy for the machine.
  • Raising iogpu.wired_limit_mb (documented upstream) can help fit/speed — also a foot-gun if you starve the rest of the system.
  • Some tokenizers need trust_remote_code — that is a trust decision, not a free checkbox.
  • Not a multi-user production GPU cluster; for high-throughput serving on discrete GPUs look at vLLM-class stacks instead.

Who it's for

Mac users (M-series) who want a MIT-licensed, HF-friendly local LLM path without buying a discrete GPU. Developers fine-tuning or scripting generation in Python. Not for people on NVIDIA-only boxes, and not a ChatGPT subscription replacement for frontier closed models.

Related in this cluster

  • llama.cpp — cross-platform GGUF engine many wrappers sit near
  • Ollama — MIT runner with a simpler pull/run UX (also on Mac)
  • LM Studio — proprietary desktop GUI; often uses MLX paths on Apple silicon
  • VRAM & RAM guide — sizing notes (on Mac, think unified memory)
  • Local LLMs hub — more runners and UIs

Verdict

Use mlx-lm when you have Apple silicon and want MIT tooling to chat, generate, quantize, or fine-tune open weights via MLX and Hugging Face. Size unified memory honestly, stay on current macOS for large-model wiring, and read model licenses separately from the package license.

← Tools · Local LLMs · Home · GitHub · MLX docs