Запуск больших языковых моделей с MLX

MLX на Mac с Apple silicon позволяет исследователям и разработчикам ИИ экспериментировать локально с новейшими моделями и методами в приватной среде. Open-source фреймворк для работы с массивами использует архитектуру единой памяти Apple silicon, давая возможность каждому запускать новые методы вывода и fine-tuning на собственном оборудовании и изучать другие техники ИИ. Ранее в отдельной статье рассмотрели преимущества архитектуры M5 и её GPU Neural Accelerators.

В этом материале показано, как запустить новейшую frontier-class модель — Muse Spark Open с почти триллионом параметров — прямо со своего рабочего стола, используя свежевышедшую версию MLX. На кластере из четырёх Mac Studio модель генерирует более 36 токенов в секунду (см. Figure 1) — это значительно превышает среднюю скорость чтения человека.

Начиная с одного Mac Studio (вплоть до 512GB единой памяти), а затем масштабируя на несколько Mac через RDMA over Thunderbolt драйвер, ниже представлен обзор диапазона моделей, которые теперь можно запускать на Mac Studio.

Скорость декодирования Muse Spark Open

Размер контекста: 8 192 токена

Figure 1: Скорость декодирования Muse Spark Open в токенах в секунду на Mac Studio с M5 Ultra при размере контекста 8 192 токена. Выше — лучше. Результаты показаны для трёх схем параллелизации: pipeline parallelization на двух Mac Studio (2 M5 Pipeline) и tensor parallelization на двух (2 M5 Tensor) и четырёх Mac Studio (4 M5 Tensor).

Проведены тесты нескольких популярных LLM с открытыми весами на Mac Studio, используя пакет MLX LM, как описано в предыдущей статье. Сравнены два поколения Mac Studio: недавно выпущенный M5 Ultra и предыдущее поколение M3 Ultra. Поколение M5 получило GPU Neural Accelerator, поддерживающий специализированные операции матричного умножения, критически важные для многих ML-задач.

Оценены три frontier-class модели (Table 1) с широким диапазоном размеров (в миллиардах параметров, B): недавно выпущенная Muse Spark Open (816 B), Mistral Medium 3.5 (128 B) и Qwen 3.8 (27 B). Muse Spark Open — это модель архитектуры mixture of experts (MoE), которая держит активными лишь часть экспертов и, соответственно, параметров, снижая требования к вычислениям при выводе, и оценивается в NVFP4 точности. Mistral Medium 3.5 и Qwen 3.8 — плотные архитектуры, где все параметры активны при выводе, и они оценены в своей исходной точности (FP8 и BF16 соответственно).

МодельВсего параметровАктивных параметровИсходная точностьТочность оценки
Muse Spark Open816B42BBF16NVFP4
Mistral Medium 3.5128B128BFP8FP8
Qwen 3.827B27BBF16BF16
Table 1: Языковые модели, использованные в этом материале. Модели распространяются в различных форматах точности; Qwen 3.8 и Mistral Medium 3.5 оценены в своей исходной точности, а Muse Spark Open — в 4-битной (NVFP4) точности.

При оценке измеряются три метрики на диапазоне размеров контекста: время до первого токена (TTFT, в секундах), пропускная способность генерации (в токенах/секунду) и пиковое потребление мощности (в ваттах). Все результаты производительности получены с помощью mlx_lm.benchmark. Например, запуск Qwen 3.8 с контекстом из 8 192 токенов и генерация 128 токенов выполняется командой:

mlx_lm.benchmark --model Qwen/Qwen3.8-27B -p 8192 -g 128 -b 1

Популярное использование локальных LLM на Mac Studio — запуск agentic-приложений в приватной среде, включая agentic coding tools, часто требующие больших контекстов. Поэтому результаты приведены для размеров контекста 8 192 и 65 536 токенов.

Raw значения TTFT и пропускной способности декодирования представлены в Table 2 и Table 3 соответственно.

Производительность вывода на одном Mac Studio

Qwen 3.8 27B и Mistral Medium 3.5 128B комфортно размещаются на одном Mac Studio с 512GB, занимая до 68GB и 158GB оперативной памяти в конфигурации с большим контекстом (65 536 токенов). На Figure 2 сравнена производительность вывода на одном Mac Studio с 512GB оперативной памяти, как для M3 Ultra, так и для M5 Ultra.

Время до первого токена (TTFT) в основном ограничено вычислениями, и это именно то, где GPU Neural Accelerators в M5 Ultra сияют: специализированная аппаратная поддержка быстрого матричного умножения напрямую даёт значительное ускорение для TTFT, до 4,6× быстрее в сравнении с M3 Ultra (см. Figure 2). Это делает Mac Studio с M5 Ultra идеальным выбором для задач с очень большими контекстами.

Скорость генерации (в токенах в секунду) ограничена пропускной способностью памяти. Чип M5 Ultra обеспечивает пропускную способность единой памяти 1,2 TB/s, что выше, чем 819 GB/s для M3 Ultra. И снова это напрямую переводится в скорость генерации (см. Figure 3) — Mac Studio с M5 Ultra показывает 1,6× более быстрые токены в секунду.

Ускорение TTFT

Один Mac Studio, M5 Ultra против M3 Ultra (baseline 1.0×)

Figure 2: Ускорение времени до первого токена (TTFT) на M5 Ultra относительно M3 Ultra для Qwen 3.8 и Mistral Medium 3.5 при размерах контекста 8 192 и 65 536 токенов. GPU Neural Accelerator M5 Ultra показывает преимущество на вычислительно-ограниченных задачах.

Ускорение декодирования

Один Mac Studio, M5 Ultra против M3 Ultra (baseline 1.0×)

Figure 3: Ускорение декодирования на M5 Ultra относительно M3 Ultra для Qwen 3.8 и Mistral Medium 3.5 при размерах контекста 8 192 и 65 536 токенов. Декодирование ограничено пропускной способностью памяти, и пропускная способность единой памяти M5 Ultra в 1,2 TB/s (против 819 GB/s на M3 Ultra) — ключевое преимущество.

Mac Studio также энергоэффективен при выводе LLM (см. Figure 4): пиковое потребление мощности составляет около 200W для Mac Studio с M3 Ultra и 300W для Mac Studio с M5 Ultra — доля мощности, потребляемой обычным тостером. Главное — такое скромное потребление мощности означает, что Mac Studio может быть развёрнут для работы с ИИ в любой домашней или офисной среде.

Пиковое потребление мощности

Размер контекста: 65 536 токенов

Figure 4: Пиковое потребление мощности (в ваттах) при выводе Qwen 3.8 и Mistral Medium 3.5 при размере контекста 65 536 токенов на Mac Studio с M3 Ultra и M5 Ultra.

Хотя обе модели Qwen и Mistral размещаются на одном Mac Studio с 512GB оперативной памяти, Muse Spark Open в исходной точности (BF16) потребовала бы более 1,6TB оперативной памяти только для параметров модели. В 4-битном квантованном формате (NVFP4) требования к памяти снижаются примерно до 493GB. С добавлением памяти, необходимой для промежуточных вычислений при выводе, модель не может поместиться на одной машине. Требуется параллелизация на нескольких Mac Studio.

Пипелайн вывода на двух Mac Studio

Очень большие frontier-class модели, такие как Muse Spark Open, не поместятся на одной машине. Однако возможно разместить половину модели на одном Mac Studio и другую половину на другом. Затем можно сделать пипелайн вывода модели на двух компьютерах: первый Mac Studio выполняет первую половину слоёв модели, затем отправляет выход на второй Mac Studio, который выполняет вторую половину. Эта схема параллелизации называется pipeline parallelization (см. Figure 5) и чрезвычайно проста в реализации, требуя только минимальных изменений кода.

Разделение больших моделей на несколько компьютеров

Figure 5: MLX поддерживает два подхода к разделению больших моделей на несколько компьютеров. При pipeline parallelization модель разделяется по глубине, при tensor parallelization — по ширине.

MLX поддерживает различные схемы параллелизации, как описано в документации по распределённому MLX. Они полагаются на быструю коммуникацию между машинами: macOS 26.2 представила низколатентный RDMA драйвер через Thunderbolt 5, а MLX (версия 0.30.1 и позже) строится на основе этого драйвера и предоставляет новые коммуникационные примитивы (jaccl, произносится как «jackal») для различных схем параллелизации. В нашей настройке два Mac Studio подключены двумя кабелями Thunderbolt (чтобы удвоить пропускную способность канала), обеспечивая RDMA-over-Thunderbolt линк, который использует jaccl. После настройки хостов MLX предоставляет mlx.launch — вспомогательную команду для запуска заданий на нескольких узлах:

mlx.launch --hostfile hostfile.json --backend jaccl --env MLX_METAL_FAST_SYNCH=1 -- \
mlx_lm.benchmark --model mistralai/Mistral-Medium-3.5-128B -p 8192 -g 128 -b 1 --prefill-step-size 8192 --pipeline

В этой команде --backend jaccl указывает RDMA Thunderbolt драйвер. Флаг --env MLX_METAL_FAST_SYNCH=1 включает экспериментальную функцию MLX для быстрой синхронизации CPU-GPU, снижая накладные расходы коммуникации между CPU (инициирующей коммуникацию Thunderbolt) и GPU (выполняющей вычисления).

В целом скорость декодирования при pipeline parallelization (см. Figure 7) очень похожа на скорость одной машины, так как слои всё ещё вычисляются последовательно. Накладные расходы коммуникации также очень низкие, так как нужно обменивать только промежуточные выходы между двумя наборами слоёв.

Однако примечательно, что для очень больших контекстов (65 536 токенов в нашем тесте) pipeline parallelization оказывается быстрее, чем один узел для prefill — до ~1,8× быстрее (см. Figure 6). Это потому, что MLX разбивает большие контексты на более мелкие части (здесь 8 192 токена, как указано параметром --prefill-step-size 8192) и делает пипелайн prefill на машинах: пока вторая машина вычисляет более поздние слои блока kkk, первая машина вычисляет более ранние слои блока k+1k+1k+1, так что последовательные блоки перекрываются во времени. Для ещё лучшей параллелизации вычислений переходим к tensor parallelization.

Ускорение TTFT

Два Mac Studio с pipeline parallelization против одного M5 Ultra (baseline 1.0×)

Figure 6: Ускорение времени до первого токена (TTFT) двух M5 Ultras с pipeline parallelization относительно одного M5 Ultra для Qwen 3.8 и Mistral Medium 3.5 при размерах контекста 8 192 и 65 536 токенов. Разделение контекста (здесь на блоки по 8 192 токена) позволяет MLX перекрывать вычисления на двух машинах — отсюда ускорение при 65 536, но не при 8 192.

Ускорение декодирования

Два Mac Studio с pipeline parallelization против одного M5 Ultra (baseline 1.0×)

Figure 7: Ускорение декодирования двух M5 Ultras с pipeline parallelization относительно одного M5 Ultra для Qwen 3.8 и Mistral Medium 3.5 при размерах контекста 8 192 и 65 536 токенов. Pipeline parallelization оставляет скорость декодирования практически неизменной.

Tensor Parallelization для более быстрого вывода

Tensor parallelization (см. Figure 5) распределяет ширину LLM на несколько компьютеров, в отличие от pipeline parallelization, которая распределяет модель по глубине. Каждая машина теперь содержит часть каждого слоя модели, так что вычисления per-layer параллелизуются. При эффективной реализации tensor parallelization повышает скорость вывода. Однако tensor parallelization сложнее реализовать, чем pipeline parallelization: каждый слой должен быть параллелизован, что повышает сложность кода. Схема также предполагает много мелких операций коммуникации: для каждого входного токена и каждого слоя нужно транслировать входные данные и агрегировать выходные. В результате критически важна очень низколатентная технология коммуникации, такая как Thunderbolt RDMA, поддерживаемая MLX jaccl, для получения любого ускорения.

С высокоуровневым вспомогательным методом mlx.launch MLX легко переключиться на tensor parallelization. Mac Studio подключены в mesh Thunderbolt, где каждая пара машин связана peer-to-peer двумя кабелями Thunderbolt. Предполагая настроенные хосты, просто запускаем тест на нескольких машинах:

mlx.launch --hostfile hostfile.json --backend jaccl --env MLX_METAL_FAST_SYNCH=1 -- \
mlx_lm.benchmark --model meta-models/Muse-Spark-Open-816B-A42B-NVFP4 -p 8192 -g 128 -b 1

Figure 8 и Figure 9 показывают ускорения, полученные с двумя или четырьмя Mac Studio с M5 Ultra, относительно baseline с одной машиной (или для Muse Spark Open — baseline с pipeline parallelization на двух машинах). Примечательно, что плотные архитектуры масштабируются лучше на нескольких компьютерах.

С небольшим числом машин накладные расходы коммуникации tensor parallelization могут перевесить некоторые вычислительные выгоды при очень больших контекстах, хотя это применимо только к prefill. Это видно на примере Muse Spark Open, где отдельная нормализация выходов экспертов добавляет некоторую prefill коммуникацию, достаточную, чтобы при очень больших контекстах (65 536 токенов) tensor parallelization на двух машинах отставал от pipeline parallelization на двух машинах. Однако подход окупается по мере добавления машин, как видно с четырьмя M5 Ultras. Декодирование не подвержено влиянию: Muse Spark Open поддерживает значительное ускорение декодирования при tensor parallelization даже при больших контекстах, сопоставимое с плотными моделями, такими как Qwen 3.8 и Mistral Medium 3.5.

Двухкабельный mesh также даёт результаты во время prefill, где чувствуется дополнительная полоса пропускания канала. Для Muse Spark Open на четырёх M5 Ultras при контексте 65 536 токенов два кабеля на линк снижают TTFT с ~50,5s (один кабель) до 40,6s — значение с двумя кабелями, представленное в Table 2, запуск с одним кабелем — дополнительный эксперимент.

Ускорение TTFT

Два или четыре Mac Studio с tensor parallelization против одного M5 Ultra (baseline 1.0×; Muse Spark Open: два машины pipeline)

Figure 8: Ускорение времени до первого токена (TTFT) двух или четырёх M5 Ultras с tensor parallelization относительно одного M5 Ultra для Qwen 3.8, Mistral Medium 3.5 и Muse Spark Open при размерах контекста 8 192 и 65 536 токенов. Muse Spark Open не помещается на одной машине, поэтому baseline — конфигурация с двумя M5 Ultra и pipeline parallelization.

Ускорение декодирования

Два или четыре Mac Studio с tensor parallelization против одного M5 Ultra (baseline 1.0×; Muse Spark Open: два машины pipeline)

Figure 9: Ускорение декодирования двух или четырёх M5 Ultras с tensor parallelization относительно одного M5 Ultra для Qwen 3.8, Mistral Medium 3.5 и Muse Spark Open при размерах контекста 8 192 и 65 536 токенов. Muse Spark Open не помещается на одной машине, поэтому baseline — конфигурация с двумя M5 Ultra и pipeline parallelization.

Время до первого токена (секунды)

Меньше — лучше

МодельM3 UltraM5 Ultra2 M5 Pipeline2 M5 Tensor4 M5 Tensor
Muse Spark Open——8.48.24.8
Mistral Medium 3.595.924.624.514.47.5
Qwen 3.818.24.14.13.11.7
Table 2: Время до первого токена (TTFT) в секундах для Qwen 3.8, Mistral Medium 3.5 и Muse Spark Open при размерах контекста 8 192 и 65 536 токенов. Меньше — лучше. Представлены результаты для одного M3 Ultra, одного M5 Ultra, двух M5 Ultras (pipeline и tensor parallelization) и четырёх M5 Ultras (tensor parallelization).

Скорость декодирования (токены в секунду)

Больше — лучше

МодельM3 UltraM5 Ultra2 M5 Pipeline2 M5 Tensor4 M5 Tensor
Muse Spark Open——15.7424.9936.73
Mistral Medium 3.54.957.707.7013.6923.37
Qwen 3.812.4619.6919.4433.2750.89
Table 3: Скорость декодирования в токенах в секунду для Qwen 3.8, Mistral Medium 3.5 и Muse Spark Open при размерах контекста 8 192 и 65 536 токенов. Больше — лучше. Представлены результаты для одного M3 Ultra, одного M5 Ultra, двух M5 Ultras (pipeline и tensor parallelization) и четырёх M5 Ultras (tensor parallelization). Скорость декодирования измерена на 128 сгенерированных токенах после контекста.

Локальный Agentic AI на Mac

Недавно agentic AI на Mac приобрел значительный импульс, при этом agentic coding tools получают широкое распространение среди разработчиков. С MLX включение этих инструментов локально так же просто, как запуск сервера с помощью инструмента mlx_lm.server. Например, сервер, запускающий Muse Spark Open на порту 8080, запускается командой:

mlx.launch --hostfile hostfile.json --backend jaccl --env MLX_METAL_FAST_SYNCH=1 -- \
mlx_lm.server --model meta-models/Muse-Spark-Open-816B-A42B-NVFP4 --port 8080

Как и с mlx_lm.benchmark, вспомогательный метод mlx_lm.server может быть дополнен mlx.launch для параллелизации вычислений на нескольких Mac Studios. Отсюда agentic AI можно включить с помощью инструментов, таких как OpenCode, который легко настраивается для использования этого локального LLM сервера:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "meta-models/Muse-Spark-Open-816B-A42B-NVFP4",
  "provider": {
    "mlx": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Local MLX",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1"
      },
      "models": {
        "meta-models/Muse-Spark-Open-816B-A42B-NVFP4": {
          "name": "Muse Spark Open 816B (MLX)"
        }
      }
    }
  }
}

Многие другие локальные agentic AI приложения можно включить через аналогичный подход.

Заключение

За последний год разработчики работали над несколькими ключевыми инновациями в MLX, чтобы облегчить и сделать более эффективным запуск state-of-the-art LLM локально на свежих Apple silicon. Это включает поддержку программного обеспечения для Neural Accelerators в GPU семейства M5, низколатентную коммуникацию на нескольких Mac через RDMA over Thunderbolt и эффективные реализации популярных недавних архитектур, таких как mixture of experts (MoE). Каждое из этого помогает само по себе, но их комбинация с последним Apple silicon — Mac Studio с M5 Ultra, Neural Accelerators в M5 Ultra GPU, 512GB единой памяти и RDMA over Thunderbolt 5 — теперь позволяет запускать модели, такие как Muse Spark Open с более чем 800B параметрами локально, с ускорением до 4,6× для скорости запуска (time-to-first-token) относительно предыдущего поколения Mac Studio.

Начните с MLX