← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· TUTORIAL
Запуск LLM на Apple Silicon: единая память и что туда влезает
Apple Silicon исключительно хорошо подходит для запуска LLM, потому что его единая память общая, с высокой пропускной способностью и большого объёма — Mac на 64 ГБ может запустить модель 70B. Это руководство рассказывает о том, что помещается на каждом уровне RAM, MLX против llama.cpp, единственном реальном слабом месте (обработка промптов) и доступных инструментах.
Почему единая память — это преимущество
Apple Silicon совместно использует единый пул памяти с высокой пропускной способностью между CPU, GPU и Neural Engine — нет отдельного VRAM и нет медленного копирования через шину PCIe. Вот почему Mac на 64 ГБ может загрузить модель, которая не помещается в дискретный GPU на 24 ГБ: весь пул доступен GPU.
Это важно, потому что генерация токенов в LLM [ограничена пропускной способностью памяти](/articles/running-llms-on-cpu) — каждый токен требует чтения модели из памяти — а единая пропускная способность Apple достаточно высока, чтобы быть по-настоящему конкурентоспособной при декодировании. Пропускная способность, а не вычислительная мощность — вот параметр, определяющий скорость генерации здесь.
Что помещается, по уровню памяти
Единая память — это определяющее ограничение, поэтому подбирайте модель под свой Mac (цифры при 4-битном квантовании):
- 16 ГБ: модели 7B–8B без проблем.
- 32 ГБ: до примерно 30B.
- 64 ГБ: модель 70B становится осуществимой (70B при Q4 занимает около 40 ГБ), хотя запас для контекста ограничен — это практическая точка входа для 70B.
- 128 ГБ: 70B при более высокой точности (Q5/Q8) с запасом для большого контекста.
- Уровень Ultra (192 ГБ+): 70B при высокой точности, очень большие модели или несколько моделей одновременно в памяти.
Правило большого пальца: рассчитывайте примерно 0,5–0,6 ГБ на миллиард параметров для весов при Q4, затем оставляйте место для KV-кэша, который растёт с длиной контекста и часто определяет, поместится ли контекст на 16K или 32K.
MLX против llama.cpp
На Mac доминируют два рантайма. Metal-бэкенд llama.cpp транслирует вычисления GPU в Metal-шейдеры и использует кроссплатформенный формат GGUF с самой большой библиотекой моделей. MLX — собственный фреймворк Apple, созданный с нуля для единой памяти — как правило, быстрее на небольших моделях (часто заметно ниже ~14B), с сокращением разрыва выше ~27B, где оба упираются в потолок пропускной способности.
MLX набирает обороты: Apple позиционирует его как предпочтительный фреймворк для Apple Silicon, популярные рантаймы добавили MLX-бэкенды, и он отлично показывает себя на моделях типа mixture-of-experts. Прагматичный вывод: MLX для максимальной скорости на небольших моделях и MoE-моделях, llama.cpp/GGUF для наибольшего выбора моделей и кроссплатформенной совместимости.
Реальное слабое место: обработка промптов
Честное ограничение Apple Silicon — не генерация, а обработка промптов (время до первого токена). Prefill ограничен вычислениями, включает большие матричные умножения, и у GPU Apple нет специализированных тензорных ядер, которые делают NVIDIA быстрой в этой задаче. Поэтому даже когда генерация токенов конкурентоспособна, модель может заметно медленно начинать отвечать на длинный промпт, что доминирует в реальном ощущении от работы с длинным контекстом.
Другое ограничение — экосистема: большинство инструментов нацелено на CUDA, предквантованных MLX-моделей меньше, чем GGUF, а высококлассный GPU NVIDIA по-прежнему имеет в несколько раз большую сырую пропускную способность. Для интерактивного локального использования одним пользователем Apple Silicon отличен; для длинного контекста или высокопроизводительного обслуживания эти разрывы имеют значение.
Инструменты и квантование
Экосистема инструментов для Mac зрелая: Ollama (CLI плюс совместимый с OpenAI API, самый простой старт), LM Studio (лучший GUI), MLX-LM (максимальная производительность и fine-tuning через Python) и офлайн-приложения, ориентированные на конфиденциальность. GGUF — доминирующий межинструментальный формат квантования; формат MLX является нативным для Apple и быстрее, но имеет меньшую библиотеку.
Как везде, [квантование](/articles/llm-quantization-explained-gguf) — это то, что делает всё возможным — переход на 4 бита уменьшает модель примерно в четыре раза (70B с ~140 ГБ до ~40 ГБ) с умеренной потерей качества, и Q4_K_M обычно является оптимальной точкой. Переходите на Q5 или Q8, если ваша единая память позволяет.
Apple Silicon в osFoundry
osFoundry запускает локальный инференс на Apple Silicon через пути Metal и MLX, поэтому модель выполняется полностью на GPU вашего Mac с использованием его единой памяти — данные не покидают устройство и нет штрафа за копирование через PCIe. Поскольку ограничение — это просто объём имеющейся единой памяти, osFoundry помогает вам выбрать модель, подходящую для вашего Mac — модель 7B–8B на машине с 16 ГБ, до 70B на машине с 64 ГБ и выше — и выбирает квантование для того, чтобы модель поместилась в доступную память с сохранением максимально возможного качества, чтобы вам не приходилось вручную разбираться в форматах GGUF или компромиссах Q4/Q5/Q8. Результат — полностью приватный офлайн-инференс, настроенный под уровень памяти каждого Mac, и та же модель может масштабироваться на выделенный GPU-эндпоинт, когда вам нужна более быстрая обработка промптов или более высокая пропускная способность. (О лежащей в основе истории с пропускной способностью смотрите наше [руководство по CPU-инференсу](/articles/running-llms-on-cpu).)
Frequently asked questions
- Может ли Mac запускать большие языковые модели локально без выделенного GPU?
- Да — в этом сила Apple Silicon. Его единая память разделяется между CPU и GPU с высокой пропускной способностью, поэтому GPU может использовать весь пул памяти. Mac на 64 ГБ может запустить модель 70B при 4-битном квантовании, с чем не справится дискретный GPU на 24 ГБ, а небольшие модели работают быстро. Отдельный GPU не нужен.
- Сколько единой памяти нужно для запуска модели 7B, 30B или 70B?
- При 4-битном квантовании: около 16 ГБ для модели 7B–8B, 32 ГБ для до примерно 30B, и 64 ГБ для 70B (около 40 ГБ весов, с ограниченным запасом для контекста). 128 ГБ позволяют запускать 70B при более высокой точности с запасом для большого контекста. Всегда оставляйте запас для KV-кэша, который растёт с длиной контекста.
- MLX быстрее, чем llama.cpp на Apple Silicon?
- Часто, на небольших моделях — MLX является фреймворком Apple, созданным для единой памяти, и заметно быстрее ниже около 14B, а также отлично проявляет себя на моделях типа mixture-of-experts. Выше примерно 27B два рантайма сближаются, потому что оба упираются в ограничение пропускной способности. Преимущество llama.cpp — большая библиотека моделей GGUF и кроссплатформенная совместимость. Используйте MLX для максимальной скорости на небольших моделях и MoE-моделях.
- Почему мой Mac медленно начинает отвечать на длинные промпты?
- Потому что обработка промптов (время до первого токена) — слабое место Apple Silicon. Prefill ограничен вычислениями, а у GPU Apple нет специализированных тензорных ядер, которые NVIDIA использует для этого, поэтому длинный промпт требует некоторого времени до появления первого токена — даже когда последующая генерация токенов быстрая. Это основное специфичное для Apple ограничение при работе с длинным контекстом.
- Какой самый быстрый инструмент для запуска LLM на Mac?
- Для максимальной производительности — MLX-LM (фреймворк Apple), особенно на небольших моделях и MoE-моделях. Для простоты использования Ollama (CLI плюс совместимый с OpenAI API) или LM Studio (лучший GUI) — популярные варианты, и многие теперь используют MLX-бэкенды на Apple Silicon. Правильный выбор зависит от того, что вам важнее: максимальная скорость или максимальное удобство.
- Можно ли запустить модель 70B на MacBook Pro на 64 ГБ?
- Да, при 4 битах — 70B при Q4 занимает около 40 ГБ, что помещается в 64 ГБ с запасом для рантайма и скромного контекстного окна. Это практическая точка входа для 70B на Mac; запас контекста ограничен, поэтому для большого контекста или более высокой точности вам понадобится 128 ГБ. Ожидайте хорошую скорость генерации, но более медленное время до первого токена на длинных промптах.
- Apple Silicon или NVIDIA для локальных LLM?
- Apple Silicon отлично подходит для частного локального инференса одного пользователя — большой единый объём памяти позволяет одному Mac запускать модели, требующие нескольких дискретных GPU, при меньшем энергопотреблении. NVIDIA побеждает по сырой пропускной способности (в несколько раз выше), скорости обработки промптов, высоконагруженному обслуживанию и экосистеме (CUDA). Выбирайте Apple для личного локального использования и больших моделей на одной машине; NVIDIA — для пропускной способности и обслуживания с длинным контекстом.
Sources