DanceGAI — команда, которая стоит за ManiaGAI, ИИ-генератором beatmap для osu! mania. DanceGAI создаёт ИИ-инфраструктуру, которая превращает музыку в играбельный опыт, а ManiaGAI — её первый продукт: вы загружаете песню, и он генерирует полный играбельный mapset для osu! mania — тайминг, ноты и набор сложностей, — упакованный в стандартный .osz. Песней может быть загруженный аудиофайл или песня из beatmapset в osu!, на который вы даёте ссылку; в любом случае используется только аудио, а не существующие карты. На этом сайте работает версия 2 системы. osu! mania — первый выходной формат: система построена для ритм-игр с вертикальной прокруткой (VSRG) в целом.
На этой странице объясняется, как всё работает и почему устроено именно так. Мы открыто рассказываем об архитектуре и инженерных решениях, но не публикуем детали, которые понадобились бы, чтобы воссоздать систему. Там, где цифра ещё не опубликована, страница так и говорит, а не гадает.
Техническая сводка
| Задача | Аудио → играбельный mapset для osu! mania (.osz), полный набор сложностей за один запуск |
|---|---|
| Охват | Ритм-игры с вертикальной прокруткой (VSRG) — сначала osu! mania; другие форматы VSRG в планах |
| Тайминг | Активации Beat This → собственный метод подгонки сетки (переменный темп). В нашем бенчмарке 97,1% из 2501 ranked-песни с постоянным темпом получили тайминг в пределах 40 мс от тайминга mapper |
| Представление музыки | MERT-v1-95M, выровненный по сетке тайминга доля за долей |
| Планировщик | Гауссова диффузия над посекционным игровым состоянием, ~6M параметров |
| Модель нот | Неавторегрессионный трансформер в стиле MaskGIT над токенами паттернов, ~51M параметров |
| Управление | 4K–9K · цели ★1–10 · 5 параметров стиля (доля LN, LN inverse, jack, mini LN, delay) |
| Обучающие данные | 150 622 карты, сделанные людьми · 86 255 песен · ~14 500 мапперов · 4227 ч аудио |
| Проверка | Проверка сетки тайминга, очистка некорректных нот, защита от тишины, измерение звёздного рейтинга osu!, согласованность mapset |
| Обучение | Одна RTX 4070 Ti SUPER · ~580 залогированных GPU-часов по всей линейке продакшен-моделей |
| Генерация | Запрошенные сложности генерируются вместе за один пакетный проход на GPU · ~20 с вычислений GPU на полный mapset |
| Развёртывание | Serverless GPU-воркеры, восстанавливаемые из снапшота памяти; нормализация аудио в браузере |
Beatmap — это не транскрипция
Самый очевидный способ описать автоматическую генерацию beatmap — «на входе аудио, посередине нейросеть, на выходе ноты». На практике такой подход даёт карты, которые формально следуют за музыкой, но играть их неприятно. Хорошая карта osu! mania ближе к аранжировке, чем к транскрипции: mapper решает, какие звуки заслуживают нот, насколько плотной должна ощущаться секция, где поставить jack или длинную ноту, как паттерны перетекают между руками и как всё это меняется между сложностями Easy и Expert.
Поэтому ManiaGAI рассматривает генерацию beatmap как последовательность отдельных задач — понять музыку, спланировать геймплей, расставить ноты и проверить результат:
- Музыка
- Понимание
- Планирование
- Генерация
- Доработка
- Beatmap
1. Понимание музыки
Всё дальнейшее зависит от точной картины песни. Первый этап превращает сырое аудио в две вещи: сетку тайминга и высокодетальное музыкальное представление каждого момента песни.
Тайминг. Активации долей и сильных долей берутся из Beat This — open-source-модели для определения долей. Превращение этих активаций в сетку тайминга osu! — BPM и offset, включая песни со сменой темпа, — наш собственный метод подгонки сетки, и он даёт сетки того же типа, на которых обучались модели генерации. Тайминг — то, что игроки замечают первым: карта, сдвинутая на несколько миллисекунд от доли, неиграбельна, какими бы хорошими ни были её паттерны, поэтому тайминг для нас — первостепенная задача, а не шаг предобработки.
Музыкальные признаки. Аудио кодируется с помощью MERT-v1-95M, самообучаемой модели представления музыки, и выравнивается по сетке тайминга — так модели видят музыку доля за долей: атаки звуков, фактуру, интенсивность и то, как они меняются по ходу песни. Беззвучные участки определяются отдельно, и ноты на них не ставятся.
2. Планирование beatmap
Центральное решение в ManiaGAI — отделить то, что должно происходить, от того, как ставятся ноты.
Отдельная модель планирования читает музыкальное представление и определяет игровую структуру всей песни ещё до появления первой ноты: насколько плотной должна быть каждая секция, какие паттерны где уместны, как сложность должна нарастать и спадать и как всё это соответствует запрошенным сложности и стилю. Её результат — план, описывающий карту по секциям (локальная сложность и соотношение длинных нот, jack и других типов паттернов), а не ноты.
Планировщик — это гауссова диффузионная модель (около 6M параметров). Она генерирует план для всех секций песни совместно, с учётом музыки, количества клавиш, целевой сложности и стиля. Диффузия хорошо подходит для этой задачи: план — это гладкое непрерывное описание песни, и генерация его целиком позволяет планировщику сбалансировать всю песню сразу.
Планирование на этом уровне даёт системе то, чего нет у модели, работающей нота за нотой: взгляд на песню целиком. Припев можно спланировать так, чтобы он бил сильнее предшествующего куплета; брейкдаун — так, чтобы дать передышку.
3. Генерация нот
Вторая модель превращает план в реальную расстановку нот — какие колонки, какие ноты будут тапами, а какие длинными, как соединяются паттерны. Планирование задаёт структуру; генерация нот превращает эту структуру в играбельные ноты, которые следуют и плану, и аудио.
Модель нот — это неавторегрессионный трансформер в стиле MaskGIT (около 51M параметров). Карты представлены дискретными токенами паттернов, и вместо того чтобы писать их по одному от начала до конца, модель заполняет всю карту, а затем дорабатывает её за несколько проходов — закрепляя ноты, в которых уверена, и пересматривая остальные. Каждый проход видит контекст с обеих сторон каждой секции, и именно это сохраняет согласованность паттернов по всей песне. То, как эти проходы распределяются по песне, — наш собственный метод доработки.
Почему ManiaGAI использует Planner + Noter (на английском) →
4. Управляемая генерация
ManiaGAI — не система «сгенерируй и надейся». Одну и ту же песню можно сгенерировать с явными настройками, и следовать этим настройкам модели обучены:
- Количество клавиш — от 4K до 9K.
- Сложность — любой набор звёздных рейтингов от ★1 до ★10. Одна песня даёт целый mapset, от Easy до Expert, за один запуск.
- Стиль — игровые характеристики, такие как доля длинных нот и то, сколько в карте jack, inverse-LN, коротких LN и delay-паттернов; каждую можно настроить в генераторе.
- Плотность — вытекает из целевой сложности и плана, а не из фиксированного правила.
Все сложности генерируются из одного и того же понимания песни, поэтому mapset воспринимается как одно семейство карт, а не как набор несвязанных. Дальше мы работаем над обучаемыми представлениями стиля — чтобы описывать стиль маппинга примером, а не горсткой ползунков.
5. Проверка и контроль качества
Прежде чем карта попадёт к вам, система её проверяет:
- Тайминг — записанные тайминг-поинты сверяются с найденной сеткой.
- Некорректные и неиграбельные ноты — перекрывающиеся ноты, сломанные длинные ноты и расстановки, которые игра не может отобразить, исправляются, а на явно беззвучное аудио ноты не ставятся.
- Измеренная сложность — звёздный рейтинг каждой карты измеряется тем же алгоритмом, что использует osu!, и сложность называется по измеренному значению, а не по запрошенному.
- Согласованность внутри mapset — карта, которая получилась легче той, что должна стоять ниже неё, или почти совпадает по сложности с соседней, отбрасывается, а не выдаётся. В генераторе видно, какие звёзды были отброшены и почему.
- Корректность результата — результат упаковывается в стандартный .osz с аудио, фоном и хитсаундами, который напрямую импортируется в osu!.
В цифрах
- Песен в обучающем наборе
- 86 255
- Обучающих карт
- 150 622
- Мапперов
- ~14 500
- Уникального аудио
- 4227 ч
- Обучающих признаков на диске
- ~0,7 ТБ
- Вычисления на обучение (залогированные, продакшен-линейка)
- ~580 GPU-часов
- Финальный запуск модели нот
- ~4 дня
- Параметры моделей
- ~57M (51M ноты + 6M планировщик)
- Генерация полного mapset
- ~20 с
- Раскладки
- 4K–9K
- Диапазон сложности
- ★1–★10
- Сложностей за запуск
- до 10 (меньше для длинных песен)
Обучающие данные
Продакшен-модели учатся на 150 622 картах для osu! mania, сделанных людьми, по 86 255 песням — 4227 часов уникального аудио — от примерно 14 500 мапперов. Большая часть работы в подобной системе — это не модель, а данные: решить, какая карта достойна того, чтобы на ней учиться, убедиться, что тайминг каждого обучающего примера верен, и представить карты в форме, которая передаёт то, что делает их играбельными.
Подробнее о датасете (на английском) →
Оценка: точность тайминга
Мы сравнили наш тайминг с таймингом, выставленным людьми, на каждом ranked-mapset для osu! mania с единым постоянным темпом, который мы могли оценить, — 2501 песня, — вместе с режимом тайминга open-source-инструмента Mapperatorinator и ManiaGAI v1, нашим предыдущим детектором. Песня считается правильной, если BPM совпадает с BPM mapper (с допуском на половинный/двойной темп), а фаза долей укладывается в заданный допуск.
| Метод | ≤10 мс | ≤20 мс | ≤40 мс | BPM верен | Одна линия тайминга |
|---|---|---|---|---|---|
| ManiaGAI v2 | 71,4 % | 92,3 % | 97,1 % | 98,0 % | 100 % |
| Mapperatorinator | 78,0 % | 90,9 % | 91,7 % | 92,6 % | 11,0 % |
| ManiaGAI v1 | 74,8 % | 88,0 % | 90,7 % | 94,0 % | 92,8 % |
Только ranked-песни с постоянным темпом; «одна линия тайминга» = песня затайминжена одной линией, как это сделал mapper (лишняя линия в песне с постоянным темпом — ложная смена темпа). Измерено на конфигурации, близкой к выпущенной, но не идентичной ей.
Полный бенчмарк тайминга (на английском) →
Обучение
Планировщик и модель нот обучаются раздельно, каждая на своём представлении: планировщик — как гауссова диффузионная модель над гауссианизированным описанием игрового содержания каждой секции, модель нот — предсказанием замаскированных токенов паттернов. Обучающие примеры сбалансированы по количеству клавиш и уровням сложности, чтобы карты 8K и ★10 не тонули среди 4K и ★4, а модель нот обучается со смешанной точностью.
Каждое изменение оценивается по самим сгенерированным картам — точности тайминга, измеренной сложности относительно целевой, играбельности, — а не только по функции потерь при обучении.
Инференс и производительность
Полезная ИИ-система — это не только качество модели; она ещё должна быть достаточно быстрой, чтобы ею пользоваться. Запрос к ManiaGAI выполняется так:
- В вашем браузере: песня декодируется, нормализуется по громкости и перекодируется сразу, как только вы выбрали файл, пока вы ещё выбираете настройки, — так что GPU никогда не ждёт обработки аудио.
- Понимание музыки на GPU: Beat This и MERT, при этом подгонка сетки идёт на CPU параллельно с MERT.
- Планирование и генерация нот для всех запрошенных сложностей за один пакетный проход.
- Проверка — измерение звёздного рейтинга, проверки согласованности.
- Упаковка в .osz, затем скачивание.
GPU-воркеры запускаются из заранее загруженного снапшота, поэтому даже холодный воркер готов за секунды, а не тратит это время на загрузку моделей. Полный mapset для типичной песни занимает около 20 секунд вычислений на GPU — без учёта загрузки, очереди и скачивания; одна измеренная песня длиной 2:50 с пятью сложностями заняла 12,7 секунды на NVIDIA T4: тайминг и музыкальные признаки — 3,8 с (параллельно), планирование — 1,0 с, генерация нот для всех пяти сложностей — 6,1 с.
Как мы ускорили генерацию (на английском) →
Что мы не публикуем
Мы публикуем принципы архитектуры, стоящие за ними инженерные решения и то, что система делает и чего не делает, — включая открытые модели, на которых мы строим (Beat This, MERT), и семейства, к которым относятся наши собственные модели (гауссова диффузия, MaskGIT). Мы не публикуем методы, разработанные нами самими, и детали, которые позволили бы воспроизвести систему: как подгоняется сетка тайминга и объединяются её темповые сегменты, как распределяются по песне проходы доработки модели нот, как обусловливаются модели, точные архитектуры, функции потерь и гиперпараметры, а также как собираются, фильтруются и формируются обучающие данные. Это граница между прозрачностью в том, что мы построили, и передачей рецепта. Когда мы делаем заявления о качестве, мы намерены подкреплять их опубликованными бенчмарками, а не прилагательными.
Что дальше
За пределами osu! mania. ManiaGAI построен вокруг игрового представления, которое не привязано к osu! mania: ноты и длинные ноты в колонках, расставленные по сетке тайминга и обусловленные целевой сложностью. osu! mania — первый выходной формат, а не граница системы.
Подробнее
Исследования и инженерия ManiaGAI в подробностях:
Попробуйте ManiaGAI
Сгенерируйте полный mapset для osu! mania по своей песне — бесплатно, за несколько секунд.
Создать mapset →