研究

AI osu! mania mapperを支えるデータセットの中身

ManiaGAI v2は、約14,500人のmapperによる人が作った150,622のosu! mania譜面から学習しました — Rankedセクションをはるかに超える規模です。キー数・難易度・出典別のコーパスの中身と、その設計理由。

AI beatmapジェネレーターの仕事の大半は、モデルではありません。データです:どの譜面から学ぶ価値があるかを決め、すべての学習サンプルのタイミングが正しいことを確かめ、譜面をプレイアビリティの本質をとらえる形で表現すること。この記事では、ManiaGAI v2のモデルが学習したコーパスの中身を見ていきます — 何が入っていて、なぜそうなっているのか。

コーパスの概要

譜面
150,622
曲
86,255
mapper
~14,500
重複なしの音声
4,227 h

つまり、人が作った150,622のosu! mania譜面が86,255曲にわたり、約14,500人のmapperによって書かれています — 重複なしの音声で4,227時間分です。最初からこの規模だったわけではありません:学習セットは、バージョン2につながる作業の中で、約83,000譜面から現在の規模まで増えました。

Ranked譜面だけではない

素直に考えれば、Ranked譜面だけで学習させるのが自然です — レビューを経ていて、タイミングもチェック済みで、コミュニティの品質基準を体現しています。私たちはあえてそうしませんでした。Ranked譜面は、人々が実際に作って遊んでいる譜面のうち、小さくスタイルの幅も狭い一部にすぎません:このコーパスでは六譜面に一つです。

osu!でのステータス別の学習譜面
osu!でのステータス譜面数割合
Ranked / Qualified24,89616.5%
Loved2,5301.7%
Pending、WIP、Graveyard114,21275.8%
osu!に未投稿(主にBMS / O2Jamからの変換)8,9846.0%

ステータスは2026年10月時点のosu!のもの。

譜面の四分の三はPending、WIP、Graveyardです — Ranked審査を通っていない譜面ですが、それは質が悪い譜面という意味ではありません:誰もレビューしていないというだけで、審査に落ちたわけではないのです。Ranked譜面だけで学習したモデルはRankedセクションの癖を学び、コミュニティ全体から学習したモデルは、人々の譜面づくりの幅をまるごと見ることになります。

osu!の外へ:BMSとO2Jam

コーパスはすでに、複数の縦スクロール型リズムゲームのエコシステムにまたがっています。21,379譜面 —セットの14%で、すべてのステータスにまたがります — がBMSまたはO2Jam由来としてタグ付けされています:BMSから16,188譜面、 O2Jamから5,491譜面、両方のタグが付いたものが300譜面です。これらのゲームにはそれぞれ独自の譜面文化があり、モデルが目にするものの幅を広げてくれます。

キー数別

キー数別の学習譜面
キー数譜面数割合
4K72,36248.0%
5K8,4425.6%
6K13,2358.8%
7K49,12932.6%
8K5,0903.4%
9K2,3641.6%

4Kと7Kが大半を占め、合わせてコーパスの約80%です。8Kと9Kは少なく、それぞれ数千譜面です。この偏りは学習に影響するため、学習中はサンプルをキー数(と難易度)ごとにバランスさせ、8Kや★10の譜面が4Kや★4に埋もれないようにしています。

難易度別

★レートはosu!自身のアルゴリズムで測定。中央値★4.2、範囲★0.5–13。

コーパスの大部分は★1から★7の間にあり、★9を超える高難度譜面が長い裾野を作っています。ManiaGAIの難易度範囲★1〜★10は、サンプルがあるところに合わせています:★10未満のどの★にも千譜面以上ありますが、それを超えると急に少なくなります。また、譜面の15.8%は曲の途中でテンポが変わるため、可変テンポは例外的なケースではなく、モデルが学ぶものの一部です。

除外しているもの

幅広いといっても、何でも取り込むわけではありません。間違ったことを教えてしまう譜面は除外しています:

  • 未完成の譜面 — 途中までしか作られていない曲は、モデルに途中で譜面づくりをやめることを教えてしまいます。
  • レート変更による重複 — 同じ譜面を速くしたり遅くしたりしたものは、一人のmapperのパターンを何重にも数えることになります。
  • AIが生成した譜面(私たち自身のものも含む) — 生成された譜面で学習したモデルは、mapperではなくジェネレーターを真似ることを学んでしまいます。

すべてに共通のタイミンググリッド

コーパスのすべての譜面は、ジェネレーターが音声から作るのと同じ種類のタイミンググリッドに合わせてタイミングを取り直しています。細かいことに聞こえるかもしれませんが、データセットにおける最も重要な判断の一つです。生成時、モデルは人間のタイミングではなく、ManiaGAIが検出したタイミングに対してノーツを置きます — だから、同じ種類のグリッドに対するノーツ配置を学ぶべきなのです。mapper自身のタイミングで学習し、検出したタイミングで生成すると、あるグリッドを教えたうえで別のグリッドを渡すことになります。(検出したタイミングがどれだけ正確かは、別の記事で扱っています:タイミングのベンチマーク。)

学習に必要なもの

音声は一度だけ、グリッドに整列した音楽特徴量にエンコードされます — ディスク上で約0.7 TBです。学習はすべて、16 GBメモリのNVIDIA RTX 4070 Ti SUPER 1枚で行っています。変更のたびにゼロから学習し直すのではなく、データやタイミンググリッドの進化に合わせてノーツモデルを継続的にファインチューニングしています。グリッドの始まり方を変えたときには、両方のモデルをそのグリッドで学習し直しました。v2ノーツモデルの系譜全体で記録上約540 GPU時間 — 最後の学習だけで約4日、16.9M個の学習ウィンドウを約五周しました — で、プランナーの分がさらに約40時間加わります。

学習損失だけで判断することは一切ありません。すべての変更は、生成された譜面そのもので確認します:タイミング精度、目標に対する測定難易度、そしてプレイアビリティです。

幅広いデータで得られるもの — 得られないもの

幅広さがあるからこそ、一つのモデルで4Kも9Kも、★1も★10も、ロングノーツ主体の譜面もjack主体の譜面も書け、指定したスタイルに沿うことができます:そのパターンはコーパスのどこかに存在するからです。幅広さで得られないのは、均一な品質基準です — コミュニティのコーパスには良い譜面もそうでない譜面もあり、モデルはそのすべてから学びます。

データに何が入っていて、なぜそうなのかは公開していますが、データの入手、フィルタリング、構築の詳細は公開していません。テクノロジーページではシステム全体の中でのデータの位置づけを説明しており、Planner + Noterの記事では、このデータから学ぶ二つのモデルを紹介しています。