Об этом проекте
edge-llm-bench — это нейтральный воспроизводимый стенд для бенчмаркинга локальных LLM-движков, работающих на реальных устройствах; он рассчитан на непрерывную работу, а не на разовые измерительные кампании. Целевое оборудование — macOS, iOS и Android.
Среди охваченных движков — LiteRT-LM, llama.cpp, MLX, Apple Core AI и Cactus; каждая зафиксированная версия записана в environment.lock.json. Среди упомянутых устройств — Mac Studio (M4 Max), iPhone 17 Pro, Pixel 8a и Galaxy S26. Все результаты используют одну схему (schema/result.v1.json), один слой накопления и один формат таблицы лидеров.
Репозиторий поставляет конвейер, каждую запись сырых измерений и машиночитаемые вердикты о регрессиях, но намеренно не публикует межрантаймовые рейтинги. Пользователи строят свою таблицу лидеров локально из поставленных сырых данных с помощью build_summary.py и render_leaderboard.py, получая игнорируемый git-ом LEADERBOARD.md.
Основные команды включают release-watch (сравнивает апстрим-релизы с зафиксированными версиями), matrix (запускает файл ячеек с конфигурациями бенчмарков) и regress (сравнивает версию движка с базовой). Добавление модели — одна строка в файле ячеек.
Каждый запуск выдаёт JSON схемы v1 на запись плюс её сырой консольный лог в results/raw/. Производные CSV лежат в results/summary/, а вердикты о регрессиях сохраняются как JSON в results/regression-reports/. CI поддерживает их согласованность.
Пути настройки различаются по платформам. Ветка Mac использует Homebrew, скрипт начальной загрузки для встроенных движков и сборку CLI. Ветка Android использует готовые бинарники движков со страницы релизов, избегая сборок bazel/NDK. Ветка iPhone требует подписи Xcode и прав на память только через GUI, что делает её самой тяжёлой в настройке.
Механизмы честности и достоверности — центральная особенность. Каждая строка записывает свой рецепт, включая квантизацию и зафиксированную версию движка, потому что более быстрое число при другом рецепте представляет другой профиль развёртывания. Широкий разброс испытаний приводит к тому, что ячейка помечается как UNRELIABLE, а не оценивается. Неудачные запуски, падения и OOM остаются в таблице с указанием причин. Межсессионные дельты нормализуются через якоря сессий. Несовпадающие бюджеты или режимы отказываются оцениваться. Записи Mac и iPhone автоматически помещаются в карантин и повторяются один раз, когда запуск начинается «горячим» или показывает широкий разброс.
Покрытие отслеживается как measured (сохранённые записи существуют), wired (собирается на зафиксированной версии, но записей пока нет) или n/a с указанной причиной. LiteRT-LM измеряется на всех четырёх устройствах; llama.cpp измеряется на устройствах Android; MLX и Core AI — только Apple; у Cactus нет ветки для Mac, а поддержка Android запланирована. Раскрытые пробелы включают: Android LiteRT NPU доступен только в режиме Early Access, Android llama.cpp использует официальный CPU-бинарник релиза, а Android v1 не имеет прогретого режима и измерения TTFT.
Задача на выносливость (endurance-chat-30m) измеряет устойчивое поведение, а не скорость одного хода: один процесс движка, один разговор с накапливающимся KV-кэшем, фиксированный скрипт из 12 промптов и нативный лимит 256 токенов на ход. Каждый ход записывает скорость декодирования, заполнение KV, память, тепловое состояние и дегенерацию. Падение на 37-м ходу сохраняет ходы 1–36 как доказательство. Сессии выводят четыре вердикта: затухание декодирования, наклон памяти, начало дегенерации и завершение. Ветки существуют для Mac и Android (Galaxy S26), пока только для LiteRT-LM.
Репозиторий включает начальную базовую линию из прогона регрессии LiteRT-LM v0.15.0 → v0.16.0 от 2026-08-17 на Pixel 8a и Mac Studio M4 Max. Она была выделена из apple-silicon-llm-bench, который остаётся архивом измерений. Лицензия MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.