Uzu — движок для ускорения локальных языковых моделей
Uzu — открытый движок локального запуска языковых моделей от Mirai. Он использует speculative decoding, чтобы ускорить генерацию на Apple Silicon, и доступен для интеграции из нескольких языков программирования.
Uzu — движок инференса от Mirai Labs: программа, которая загружает языковую модель и выполняет её на устройстве. Это инструмент прежде всего для разработчиков, которые хотят встроить локальную модель в своё приложение, а не готовый чат-бот. В проекте есть API для Rust, Swift, Python и TypeScript, а код распространяется по лицензии MIT.
Главная особенность Uzu — ускорение генерации на компьютерах Apple с помощью speculative decoding, или спекулятивного декодирования. Вместо того чтобы вычислять каждый следующий токен отдельно, движок предлагает модели сразу несколько вероятных продолжений и проверяет их за один проход.
- Сравнение Uzu, MLX и llama.cpp на M5
- Результат одного прогона с Qwen3.5-9B
- Почему обычная генерация ограничена памятью
- Как speculative decoding ускоряет работу
- Драфтер предлагает, основная модель проверяет
- Зачем нужны специальные модели и ядра
- Для чего подходит Uzu
- Встраивание моделей в приложения
- Исходный код и материалы Mirai
- Открытый движок и технические подробности
Сравнение Uzu, MLX и llama.cpp на M5
Результат одного прогона с Qwen3.5-9B
В показанном сравнении Qwen3.5-9B запускали по очереди в трёх движках на MacBook Pro с базовым чипом M5 и 16 ГБ объединённой памяти. По данным этого теста, скорость генерации составила:
| Движок | Скорость |
|---|---|
| llama.cpp | 22,0 токена/с |
| MLX | 25,1 токена/с |
| Uzu | 92,1 токена/с |
В этой конкретной конфигурации Uzu выдал примерно в 4,2 раза больше токенов в секунду, чем llama.cpp, и в 3,7 раза больше, чем MLX. Это результат одной модели на одном компьютере, а не гарантия такого ускорения для любой модели, задачи или настроек. Сама по себе разница также не говорит о плохой оптимизации MLX или llama.cpp: обычная генерация упирается в пропускную способность памяти.
Почему обычная генерация ограничена памятью
При стандартном декодировании модель обычно проходит по своим весам для каждого нового токена. Если используемые веса занимают около 5,2 ГБ, а память базового M5 передаёт до 153 ГБ данных в секунду, простая оценка даёт теоретический предел около 29 токенов в секунду: 153 разделить на 5,2. Это грубая оценка для одного прохода без учёта других расходов, но она объясняет, почему ускорение вычислительных ядер не всегда заметно увеличивает скорость генерации.
Как speculative decoding ускоряет работу
Драфтер предлагает, основная модель проверяет
Небольшая вспомогательная модель заранее предлагает несколько следующих токенов. Затем основная модель — в данном сравнении Qwen3.5-9B — проверяет варианты за один проход и принимает подходящую последовательность. Основная модель проверяет предложения и определяет, какие из них принять; вспомогательный драфтер не подменяет её.
Uzu развивает этот подход с помощью Weaver: независимые предположения объединяются в дерево возможных продолжений. Основная модель проверяет несколько ветвей, после чего движок сохраняет состояние только для принятого пути. По описанию этого прогона, один проход Qwen3.5-9B в среднем давал 7,5 выходного токена вместо одного при обычной генерации.
Зачем нужны специальные модели и ядра
Для черновых предложений Uzu использует отдельный компактный драфтер, а для основного запуска — подготовленные Mirai версии моделей. Команда также оптимизирует вычисления под Metal и ускорители Neural Accelerator в M5: в техническом описании Mirai указывает динамическое 8-битное квантование активаций и специализированные ядра проверки. Поэтому результат зависит не только от алгоритма декодирования, но и от сочетания конкретной модели, её формата и поколения чипа.
Для чего подходит Uzu
Встраивание моделей в приложения
Uzu позволяет разработчикам загружать поддерживаемые модели, создавать сессии, получать ответы потоком и подключать структурированный вывод или инструменты. Основной фокус проекта — локальный запуск на Apple Silicon, включая Mac и мобильные устройства Apple. В репозитории доступны интерфейсы для Rust, Swift, Python и TypeScript; поддержка других платформ отмечена как находящаяся в разработке.
Локальный расчёт позволяет не отправлять запросы облачному API и не платить за токены провайдеру, но требует подходящего устройства и расходует его память и энергию. Uzu — движок выполнения, а не сама языковая модель: для знакомства с моделью из демонстрации откройте страницу Qwen3.5-9B. Для сравнения уровней: Atomic Agent — приложение и агентная среда, тогда как Uzu отвечает за запуск модели внутри программы.
Исходный код и материалы Mirai
Открытый движок и технические подробности
Исходный код Uzu доступен на GitHub под лицензией MIT. В репозитории есть примеры для языковых API, а команда Mirai отдельно описывает speculative decoding, построение дерева кандидатов и оптимизации для Apple M5. На сайте проекта можно посмотреть список поддерживаемых моделей и актуальные измерения для разных устройств.
Источники: репозиторий Uzu, техническая статья Mirai о speculative decoding и страница движка. Отдельные измерения Mirai для других устройств опубликованы в таблице бенчмарков.