Laya-MLX — локальная модель решений для Apple Silicon

Laya-MLX запускает модель Laya на Mac с Apple Silicon через MLX. Она возвращает вероятности для заданных вариантов, оценки и ответов да/нет, не генерируя свободный текст.

Laya-MLX — независимая реализация для запуска модели Laya на компьютерах Apple с процессорами серии M. Она использует фреймворк MLX, работает локально и возвращает структурированные решения: выбранный вариант, оценку по шкале или вероятность ответа «да». В отличие от обычного чат-бота, модель не пишет абзацы текста.

Исходную модель Laya и ее веса разработали Convai Innovations и участники проекта; репозиторий MLX — отдельный порт, созданный сообществом. После загрузки весов запросы обрабатываются на устройстве, без обращения к облачному API.

Что умеет Laya-MLX

Решения по заданной схеме

Приложение передает модели текстовое или структурированное состояние и задает вопросы с допустимыми типами ответа. Choice распределяет вероятности между именованными вариантами, Score оценивает состояние по упорядоченным критериям, а Noul возвращает вероятность истинности утверждения. Такой ответ удобно использовать в классификаторе, локальном агенте или игровом цикле.

Работа без постоянного подключения к облаку

Для запуска нужны Apple Silicon, macOS 14 или новее и Python 3.11+. При первой загрузке скачивается выбранная контрольная точка; дальнейший расчет выполняется локально. В репозитории есть пример игры «Змейка», где Laya выбирает ход, а отдельная логика безопасности может скорректировать опасное действие.

Производительность на M3 Max

Задержка и использование памяти

В опубликованном автором измерении на M3 Max с 40 графическими ядрами и 128 ГБ объединенной памяти одна короткая задача для англоязычной версии занимала 13,42 мс по медиане, а для многоязычной — 7,39 мс. Пиковое выделение памяти MLX составило соответственно около 944 МиБ и 688 МиБ. Это измерения короткого одиночного запроса: время загрузки модели не включено, а результат зависит от длины состояния и вопросов.

Демонстрация со «Змейкой»

В оптимизированном тесте автора игра обработала 75,4 хода в секунду на протяжении 2 400 ходов; в тесте не было смертей, а защитная логика вмешалась дважды. Это результат конкретной конфигурации с компиляцией и повторным использованием префикса, а не гарантия такой частоты для произвольных задач или компьютеров.

Вариант для Core ML и Neural Engine

Отдельный порт с собственными измерениями

Для запуска через Core ML доступен отдельный проект Laya-CoreML. В одном тесте короткого многоязычного решения на M3 Max вариант Core ML с Neural Engine показал медиану 4,98 мс против 6,94 мс у скомпилированного MLX FP16. Энергия на одно решение оценивалась в 0,154 Дж против 0,429 Дж — примерно на 64% меньше в этом измерении. Это не оценка энергопотребления всего приложения или полного игрового цикла.

Как понимать сравнение с Jev

Не универсальное обещание ускорения

В исходном анонсе Laya-MLX заявлялось ускорение в 50 раз относительно Jev. Однако актуальная документация репозитория приводит воспроизводимые замеры Laya на M3 Max, но не описывает прямое сравнение двух моделей на одинаковом оборудовании, с одинаковыми запросами и условиями обслуживания. Поэтому цифру «50 раз» нельзя считать универсальным результатом. О самой модели TypeSafe AI читайте в статье Jev; другие открытые решения для структурированных ответов — Cloudflare Clef и DiffusionGemma-Jev.

Источники: репозиторий Laya-MLX и методика тестирования; проект Laya-CoreML.