alpaca.swift сравнили с llama.cpp на Apple M5: преимущество зависит от длины промпта

Автор alpaca.swift сообщает о преимуществе в prefill на длинных промптах в сравнении с llama.cpp, но на 16 токенах движок медленнее. Результаты получены на одном Apple M5; физические iPhone и iPad не тестировались.

alpaca.swift сравнили с llama.cpp на Apple M5: преимущество зависит от длины промпта. Тематическая карточка Comrad404.

В README alpaca.swift опубликованы результаты сравнения Swift-движка локального инференса с llama.cpp на одном Apple M5. На промптах от 128 до 4096 токенов автор сообщает о более быстром prefill, но на 16 токенах alpaca.swift уступает. Эти цифры описывают конкретную модель и тестовую конфигурацию, а не обещают такой же результат на другом Mac или iPhone.

Что представляет собой alpaca.swift

В README указана версия 0.2.0-pre: это движок инференса для Apple Silicon, написанный на Swift и использующий собственные Metal-ядра. Автор сообщает, что во время выполнения проекту не нужны llama.cpp, MLX, Core ML, ONNX или Python. Реализованы декодер в стиле Llama с byte-level BPE и форматы весов F16, Q8_0 и Q4_0; README также заявляет о сверке реализации с PyTorch. Для загрузки моделей используется формат GGUF, предусмотрена потоковая генерация.

Результат меняется с длиной входа

В таблице README приведён prefill — обработка входного контекста — для SmolLM2-135M-Instruct в формате Q8_0. При промпте в 128 токенов alpaca.swift показал 24 106 токенов в секунду против 18 326 у llama.cpp; при 2048 токенах — 30 797 против 20 762; при 4096 — 24 069 против 15 388. В этой таблице соотношение результатов составляет соответственно 1,32×, 1,48× и 1,56× в пользу alpaca.swift.

На промпте из 16 токенов результат обратный: 3420 токенов в секунду у alpaca.swift против 4743 у llama.cpp — 0,72× от результата llama.cpp. Поэтому опубликованные измерения показывают зависимость от длины входа, а не безусловное ускорение.

Отдельно автор приводит скорость декодирования: 582 против 441 токена в секунду при контексте 16 токенов и 456 против 367 при контексте 2048, в обоих случаях в пользу alpaca.swift. Это другая стадия работы модели: prefill обрабатывает вход, а декодирование — генерирует продолжение.

Условия и пределы сравнения

Автор указывает Apple M5 с 10-ядерным GPU, 16 ГБ памяти, macOS 27.0 и Swift 6.4. В сравнении использовались одна модель, одинаковые файлы GGUF и greedy decoding; приведена медиана семи запусков. README отмечает фоновую нагрузку на тестовую машину и советует сопоставлять результаты в рамках этого набора измерений. Это тесты, опубликованные разработчиком, а не независимое тестирование.

По README, самый быстрый путь prefill требует GPU семейства Apple10, например M5 или A19, и macOS/iOS 26; на других конфигурациях автор указывает примерно треть или половину пропускной способности. На физических iPhone и iPad проект пока не запускали: библиотека и пример приложения собираются для iOS Simulator. Следовательно, данные с M5 не показывают производительность на телефоне и не гарантируют результат на устройстве читателя.

README помечен версией 0.2.0-pre; дата публикации или обновления самого документа не установлена. Дата 9 октября 2026 года указана рядом с именем автора, но сама по себе не датирует публикацию результатов.

README alpaca.swift и опубликованные таблицы сравнения