Документация

Демо Snake для публикации

Превью Snake на Core ML

README открывается 15-секундным GIF реального прогона Core ML в терминале. Соответствующий 20-секундный MP4 в 1920×1080 подходит для поста в соцсети. Оба воспроизводят исходную запись на скорости 1× реального времени.

Что было записано

Установленное колесо laya-coreml работало в настоящем псевдотерминале 112 столбцов × 38 строк на M3 Max. Модель была скачана из публичного закреплённого снимка ANE FP16 в Hub до начала игры. Игра шла офлайн в рантайме Core ML, без установленных в том окружении Torch, Transformers или MLX.

Настройка или результат Значение
Поле / seed 24×16 / 7
Начальная длина змейки 6
Запрошенная частота показа 12 решений/с
Фактическая длительность прогона 75.034 с
Новые вызовы решений / выполненные ходы 855 / 855
Наблюдаемая частота решений 11.395/с
Итоговый счёт / длина 26 / 32
Смерти / вмешательства системы безопасности 0 / 0
P50 / P95 для predict с тремя вопросами 26.63 / 28.09 мс
Выходные токены модели 0
Фрагмент MP4 Секунды 45–65, 30 видеокадров/с
Фрагмент GIF Секунды 45–60, 10 видеокадров/с
Статичное превью Секунда 55

Видеокадры выбираются из исходных решений. Они не вызывают дополнительных предсказаний и не ускоряют змейку. Рендерер использует ту же композицию ячеек терминала, что и живой интерфейс, и помечает экспорты RECORDED RUN · 1×. GIF весит около 1.6 МБ; MP4 — около 0.7 МБ.

Модель получает точные признаки планировщика. Слой защиты от циклов включён, и его счётчик вмешательств остаётся видимым, хотя этому прогону не потребовалось переопределений. Ноль смертей здесь — ограниченное наблюдение, а не доказательство неограниченной игры без помощи. Показанные риск и достижимость еды — это оценки модели.

Таймер инференса в интерфейсе включает три последовательных типизированных вопроса. Отдельный бенчмарк на 4.98 мс измеряет один короткий вопрос под устойчивой нагрузкой. Эти рабочие нагрузки, темп и границы измерения различаются. Полные тесты частоты игрового цикла — в SNAKE_BENCHMARKS.md.

Воспроизведите запись

Установите laya-coreml[demo]==0.1.0, скачайте закреплённую модель из RELEASE.md и выполните:

laya-coreml-snake --model ./models/ane --seed 7 --fps 12 \
  --duration 75 --record snake.jsonl
laya-coreml-snake export snake.jsonl --start 45 --seconds 20 \
  --output snake-demo.mp4 --gif snake-demo.gif --gif-seconds 15
laya-coreml-snake export snake.jsonl --start 55 --output snake-preview.png

Для скриптованной записи настоящего терминала в исходной копии есть scripts/record_terminal.py:

python scripts/record_terminal.py --log artifacts/session.ansi -- \
  laya-coreml-snake --model ./models/ane --seed 7 --fps 12 \
  --duration 75 --record snake.jsonl

Предлагаемый текст поста

Английский:

Модель принятия решений на 322M играет в Snake на Neural Engine моего Mac. Ноль сгенерированных токенов. Офлайн-инференс, живые вероятности и видимый слой защиты. Рантайм Core ML, открытые веса, воспроизводимые бенчмарки: https://github.com/mizorewww/laya-coreml

中文:

把一个 3.22 亿参数的决策模型搬到了 Mac 的 Neural Engine 上,用它实时玩贪吃蛇。 概率实时变化,0 个生成 token,下载模型后完全离线。视频是原速实录,安全层和干预 次数直接显示在界面上。代码、权重、PyPI 包和完整 benchmark 都已开放: https://github.com/mizorewww/laya-coreml

Для продолжения с акцентом на производительность используйте точную формулировку: 4.98 мс P50 для одного короткого многоязычного решения, при оценке энергии всей системы на решение в 2.78× ниже, чем у скомпилированного MLX FP16, в парном эксперименте на M3 Max. Ссылайтесь на метод измерения, сохраняйте оговорку о рабочей нагрузке и не называйте это временем кадра Snake или результатом 10×.