инструменты 1 мин

В macOS-виртуалках можно запускать LLM в 16 раз быстрее: патч для Llama.cpp раскрывает Metal на Apple Silicon

Команда Cua выпустила патч для macOS-виртуалок на Virtualization.framework, который разблокирует современные Metal-ядра для Llama.cpp. Результат: скорость инференса LLM вырастает в 11–16 раз, почти догоняя bare-metal. Проблема в том, что виртуальная GPU Apple по умолчанию притворяется устаревшей (Apple 5 family), хотя способна исполнять новые инструкции. Авторы написали shim-слой, который подменяет ответы на capability-запросы, заставляя llama.cpp использовать SIMD-группы, матричные умножения и bfloat16. Код открыт под пермиссивной лицензией.

Если вы разворачиваете LLM в macOS-виртуалках (например, для тестирования iOS-агентов или автоматизации на Mac), вы теряли 90% скорости GPU просто так. Теперь можно вернуть её одним патчем.

Что произошло

Команда Cua (авторы Lume — стека виртуализации для macOS) опубликовала исследование и готовый патч, который решает проблему медленного инференса LLM в macOS-виртуалках на Apple Silicon.

Виртуализация через Virtualization.framework использует паравиртуализацию GPU: гостевая ОС видит виртуальное устройство, которое выполняет Metal-код на физическом GPU хоста. Проблема в том, что это виртуальное устройство по умолчанию докладывает о себе как об устаревшем (примерно уровень Apple 5 family, 32 КБ threadgroup memory, без поддержки SIMD-матриц). Llama.cpp верит этим ответам и выбирает старые, медленные пути.

На самом деле железо способно исполнять современные инструкции — просто виртуальный драйвер скрывает возможности. Авторы написали Metal capability shim — прокладку, которая перехватывает Metal capability queries внутри процесса и подменяет ответы на актуальные значения (Apple 9 family, больше памяти, SIMD-группы, bfloat16).

Результаты на M1 Ultra:

  • TinyLlama 1.1B: prompt processing ×11.08, генерация токенов ×16.36, prompt достиг 98% от bare-metal
  • Gemma 4 12B QAT: prompt ×7.20, генерация ×14.54, 99.59% от хоста по промптам, 94.82% по генерации
  • Muse Glimmer 30B: prompt ×7.55, генерация ×8.87

Код выложен под той же лицензией, что Lume и Cua. Авторы призывают сообщество протестировать на других чипах, версиях macOS и моделях.

Автор: Юлия Тарасова · Источник: hnrss.org

Разработчикам. Если разворачиваете LLM-воркеры в macOS-виртуалках, патч даст прирост в 7–16 раз без смены железа или переписывания кода. Shim работает на уровне процесса, не требует патчинга ядра. Готовые скрипты и бенчмарки в репозитории — можно воспроизвести за полчаса. Применимо к любому Metal-приложению, которое полагается на runtime capability queries.

Бизнесу. Если считаете или планируете флоты macOS-виртуалок для LLM-инференса (например, для тестирования iOS-агентов, скрининга контента, локальных ассистентов), эта прокладка сокращает расходы на железо в несколько раз. Cua Cloud и Fleets уже встраивают решение. Альтернатива — покупать больше хостов или переходить на Linux, что дороже по времени и инфраструктуре.

Инвесторам. Виртуализация macOS для AI-воркеров до сих пор была узким местом — CPU-fallback убивал экономику. Если патч стабилен, сектор macOS-as-a-Service (Cua, Tart, RunCloud) получает конкурентное преимущество перед облаками на Linux. Снижение latency и cost-per-token открывает нишу локальных LLM-агентов для iOS/macOS-разработки, CI/CD пайплайнов, скрининга контента в Apple-экосистеме.

Хайп15
Реальная польза72
Заработать68
  • Запустить сервис macOS-виртуалок для LLM-инференса: аренда подов с предустановленным патчем, фокус на iOS-разработчиков и компании с требованиями к Apple-экосистеме.
  • Форкнуть патч под конкретные модели (Whisper, Stable Diffusion, CodeLlama) и продавать как оптимизированные образы для CI/CD.
  • Интегрировать shim в Ollama, LM Studio, Jan для автоматической активации в macOS-виртуалках — убрать боль один раз для всех пользователей.
  • Создать benchmark-as-a-service для Metal-workloads в виртуалках: помочь командам подобрать конфигурацию, не покупая железо.
  • Если у вас флот Mac mini / Mac Studio — сдавать виртуалки с патчем как managed LLM inference для компаний, которые не хотят возиться с bare-metal.
  • Патч — это hack на уровне capability reporting, а не официальная поддержка. Apple может закрыть эту лазейку в будущих версиях Virtualization.framework или macOS.
  • Работает только на Apple Silicon, только macOS-гости, только Metal-приложения, только если они используют runtime queries. Узкая ниша.
  • Не решает проблему VM overhead целиком: генерация всё ещё отстаёт от bare-metal на 5–28% в зависимости от модели. Если нужна максимальная скорость, виртуалки проигрывают.
  • Cua ещё не GA-продукт, это research release. Стабильность в проде под вопросом, нет SLA, могут быть регрессии на других чипах (M2/M3/M4 не тестировались в релизе).

Это редкий случай, когда open-source решает боль, которую вендор игнорирует годами. Apple знает, что Virtualization.framework душит GPU в виртуалках, но молчит — видимо, боится регрессий или считает нишу слишком узкой. Команда Cua взяла и написала shim за пару недель, и теперь любой может запустить Llama.cpp в VM почти так же быстро, как на голом железе.

Но не обольщайтесь: это костыль, а не фича. Apple может закрыть лазейку в любом апдейте macOS, и ваш CI/CD сломается. Используйте патч, если виртуалки — необходимость (например, iOS-разработка или требования безопасности), но если можете выбирать — bare-metal или Linux всё ещё лучше по скорости и предсказуемости. А если строите бизнес на macOS-виртуалках — держите запасной вариант на случай, если Apple скажет нет.

Инструменты из статьи

Ollamaбез VPN

Локальный запуск открытых LLM (Llama, Qwen, GLM) на своём железе. Бесплатно...

Доступ из РФ →

Ещё по теме

Комментарии