Назад
Як налаштувати локального кодувального агента на macOS з Gemma 4 і llama.cpp
SiTech AI Team3 წთ. საკითხავი

Як налаштувати локального кодувального агента на macOS з Gemma 4 і llama.cpp

Кайл Гауеллс описує локальний стек кодувального агента для macOS: llama.cpp з Metal, Gemma 4 26B-A4B, спекулятивна чернетка MTP і Pi. Швидкість генерації зросла з 58,2 до 72,2 токена за секунду.

Навіщо запускати кодувального агента локально

Кайл Гауеллс кілька разів залишався без інтернету і без кодувального агента, тож коли побачив оновлення «Gemma 4 тепер працює вдвічі швидше з MTP» про Multi-Token Prediction, вирішив запустити агента на власному Mac.

Вимоги були практичні: достатня швидкість для реальної роботи; OpenAI-сумісний API, щоб інші інструменти могли з ним працювати; і бажано підтримка скриншотів та зображень, аби показувати агенту фото того, що він щойно створив.

На якому стеку він зупинився

Фінальна конфігурація: llama.cpp, зібраний із Metal на macOS; Gemma 4 26B-A4B у форматі GGUF; модель-чернетка Q8 MTP для спекулятивного декодування; мультимодальний проєктор Gemma 4; і Pi як термінальний кодувальний агент. Тестування відбувалося на Apple M1 Max із 64 ГБ уніфікованої пам'яті під macOS 15.7.7.

Основна модель — gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf із репозиторію Unsloth на Hugging Face, близько 16 ГБ; разом із чернеткою та проєктором тека зростає приблизно до 17 ГБ. Для бенчмарків використовувався один запит — компактна функція Python, що розбирає unified diff; кожен запуск генерував близько 128 токенів.

MTP прискорює генерацію приблизно на 24%

Базовий llama.cpp з прискоренням Metal давав 298,0 токена/с на обробці запиту і 58,2 токена/с на генерації — придатно, але повільно для агента з безліччю викликів інструментів. Додавання чернетки Q8 MTP підняло генерацію до 72,2 токена/с. Гауеллс перебрав довжину чернетки від 1 до 6: найшвидшим було значення 3 (72,2), значення 2 майже не відрізнялося (72,0), а більші падали до 63,7 і 61,2. Обробка запиту майже не змінилася — близько 296 токенів/с, загальне прискорення 1,24x.

Він також порівняв MLX-LM, очікуючи, що на техніці Apple переможе саме він: найкращий запуск MLX дав 45,8 токена/с, а спільнотні 4-бітні варіанти були ще повільнішими — 43,9 і 38,1. Спроба використати MTP через gemma-4-swift-mlx не вдалася, бо 4-бітні MLX-чекпойнти 26B не збігалися з очікуваними ключами ваг завантажувача.

Зображення, налаштування та альтернатива Qwen

Для скриншотів серверу llama.cpp потрібен мультимодальний проєктор Gemma 4, адже лише 12B-модель є нативно мультимодальною; із завантаженим проєктором сервер заявляє підтримку мультимодальності, і Pi може передавати зображення. У записі моделі для Pi також треба вказати текст і зображення, інакше вивід інструментів із картинками не доходив до моделі. Повторний текстовий бенчмарк із проєктором не показав уповільнення.

Збірка стандартна: встановіть cmake, git, tmux і Python 3.11 через Homebrew, скомпілюйте llama.cpp з увімкненими Metal та Accelerate, завантажте модель, MTP-чернетку й mmproj-BF16.gguf, а потім запустіть llama-server на 127.0.0.1:8080 з --spec-type draft-mtp, --spec-draft-n-max 3 і контекстом 65 536 токенів. Це дає OpenAI-сумісний ендпойнт /v1, на який Pi вказує у своєму models.json.

Висновок: чернетка MTP варта використання — вона піднімає Gemma 4 з 58,2 до 72,2 токена/с і залишає конфігурацію простою. Він згадує поширену пораду взяти Qwen3.6 35B-A3B: знайдені бенчмарки свідчать, що Qwen кращий як кодувальний агент, але повільніший — близько 55 токенів/с у тій самій конфігурації проти 72 у Gemma 4.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.