Nghiên cứu
Bên trong tập dữ liệu của một AI mapper osu! mania
ManiaGAI v2 học từ 150.622 chart osu! mania do khoảng 14.500 mapper làm tay — vượt xa mảng ranked. Kho dữ liệu gồm gì theo số phím, độ khó, nguồn, và vì sao.
Phần lớn công sức trong một công cụ AI tạo beatmap không nằm ở mô hình. Nó nằm ở dữ liệu: quyết định chart nào đáng để học, đảm bảo mọi ví dụ huấn luyện đều được timing chính xác, và biểu diễn chart ở dạng nắm bắt được điều làm nên tính chơi được của nó. Bài viết này nhìn vào bên trong kho dữ liệu mà các mô hình của ManiaGAI v2 đã học — trong đó có gì, và vì sao nó lại như vậy.
Tổng quan kho dữ liệu
- Chart
- 150.622
- Bài hát
- 86.255
- Mapper
- ~14.500
- Âm thanh không trùng lặp
- 4.227 h
Tức là 150.622 chart osu! mania do người làm, trên 86.255 bài hát, được viết bởi khoảng 14.500 mapper khác nhau — 4.227 giờ âm thanh không trùng lặp. Ban đầu nó không lớn như vậy: tập huấn luyện đã tăng từ khoảng 83.000 chart lên quy mô hiện tại trong quá trình làm việc dẫn tới phiên bản 2.
Không chỉ map ranked
Lựa chọn hiển nhiên là chỉ huấn luyện trên map ranked — chúng đã được review, timing đã được kiểm tra, và chúng đại diện cho chuẩn chất lượng của cộng đồng. Chúng tôi cố ý không làm vậy. Map ranked chỉ là một lát cắt nhỏ và hẹp về phong cách so với những gì mọi người thực sự map và chơi: trong kho dữ liệu này, cứ sáu chart mới có một chart ranked.
| Trạng thái trên osu! | Chart | Tỉ lệ |
|---|---|---|
| Ranked / Qualified | 24.896 | 16,5% |
| Loved | 2.530 | 1,7% |
| Pending, WIP & Graveyard | 114.212 | 75,8% |
| Chưa từng submit lên osu! (phần lớn là chuyển đổi từ BMS / O2Jam) | 8.984 | 6,0% |
Trạng thái lấy từ osu! tính đến tháng 10 năm 2026.
Ba phần tư số chart là pending, đang làm dở (WIP) hoặc đã vào graveyard — những map chưa từng qua quá trình ranking, điều này không có nghĩa là map tệ: nó có nghĩa là chưa ai review chúng, chứ không phải chúng đã trượt review. Một mô hình chỉ học từ map ranked sẽ học thói quen của mảng ranked; một mô hình học từ cả cộng đồng sẽ thấy được toàn bộ cách mọi người map.
Vượt ra ngoài osu!: BMS và O2Jam
Kho dữ liệu đã trải rộng trên nhiều hệ sinh thái game nhịp điệu cuộn dọc. 21.379 chart — 14% tập dữ liệu, ở mọi trạng thái — được gắn tag có nguồn gốc từ BMS hoặc O2Jam: 16.188 từ BMS và 5.491 từ O2Jam, với 300 chart được gắn cả hai. Những game đó có truyền thống làm chart riêng, và chúng mở rộng những gì mô hình được thấy.
Theo số phím
| Số phím | Chart | Tỉ lệ |
|---|---|---|
| 4K | 72.362 | 48,0% |
| 5K | 8.442 | 5,6% |
| 6K | 13.235 | 8,8% |
| 7K | 49.129 | 32,6% |
| 8K | 5.090 | 3,4% |
| 9K | 2.364 | 1,6% |
4K và 7K chiếm ưu thế — cộng lại khoảng 80% kho dữ liệu. 8K và 9K thì hiếm: mỗi loại vài nghìn chart. Sự mất cân bằng đó ảnh hưởng tới việc huấn luyện, nên các mẫu được cân bằng theo số phím (và mức độ khó) trong quá trình huấn luyện, để chart 8K và ★10 không bị lấn át bởi 4K và ★4.
Theo độ khó
Star rating đo bằng chính thuật toán của osu!; trung vị ★4,2, khoảng ★0,5–13.
Phần lớn kho dữ liệu nằm trong khoảng ★1 đến ★7, với một đuôi dài các chart khó trên ★9. Dải độ khó của ManiaGAI, ★1 đến ★10, nằm đúng chỗ có ví dụ: mọi mức sao dưới ★10 đều có hơn một nghìn chart; trên mức đó, số chart thưa đi nhanh chóng. Và 15,8% số chart đổi tempo giữa bài, nên tempo thay đổi là một phần những gì mô hình học, chứ không phải trường hợp ngoại lệ.
Những gì chúng tôi loại ra
Rộng không có nghĩa là lấy tất cả. Một số chart bị loại vì chúng sẽ dạy sai:
- Chart chưa hoàn thành — một bài mới map được một nửa sẽ dạy mô hình dừng map giữa chừng.
- Bản sao rate-edit — cùng một chart được tăng hoặc giảm tốc sẽ khiến pattern của một mapper bị tính lặp lại nhiều lần.
- Chart do AI tạo, kể cả của chính chúng tôi — một mô hình huấn luyện trên map được tạo sẽ học bắt chước công cụ tạo map, chứ không phải mapper.
Một lưới timing cho tất cả
Mọi chart trong kho dữ liệu đều được timing lại lên cùng loại lưới timing mà công cụ tạo map sinh ra từ âm thanh. Nghe có vẻ là chi tiết nhỏ; thực ra đây là một trong những quyết định quan trọng nhất của tập dữ liệu. Khi tạo map, mô hình đặt nốt theo timing mà ManiaGAI nhận diện được, không phải theo timing của người — nên chúng cũng nên học cách đặt nốt trên chính loại lưới đó. Huấn luyện trên timing của mapper rồi tạo map trên timing nhận diện được sẽ dạy mô hình một lưới rồi lại đưa cho chúng một lưới khác. (Timing nhận diện được chính xác đến đâu có hẳn một bài viết riêng: benchmark timing.)
Cần gì để học từ nó
Âm thanh được mã hóa một lần thành các đặc trưng âm nhạc căn theo lưới — khoảng 0,7 TB trên ổ đĩa. Toàn bộ quá trình huấn luyện chạy trên một card NVIDIA RTX 4070 Ti SUPER duy nhất với 16 GB bộ nhớ. Thay vì huấn luyện lại từ đầu mỗi khi có thay đổi, mô hình nốt được fine-tune liên tục khi dữ liệu và lưới timing thay đổi; khi chúng tôi đổi cách lưới bắt đầu, cả hai mô hình đều được huấn luyện lại trên lưới mới. Toàn bộ lịch sử huấn luyện của mô hình nốt v2 tốn khoảng 540 GPU-giờ được ghi lại — riêng lần chạy cuối đã mất khoảng bốn ngày và khoảng năm lượt qua 16,9 triệu cửa sổ huấn luyện — còn planner tốn thêm khoảng 40 giờ nữa.
Không thay đổi nào được đánh giá chỉ dựa trên training loss. Mọi thay đổi đều được kiểm tra trên chính các chart được tạo ra: độ chính xác timing, độ khó đo được so với mục tiêu, tính chơi được.
Dữ liệu rộng mang lại gì — và không mang lại gì
Độ rộng là thứ giúp một mô hình viết được cả 4K lẫn 9K, ★1 lẫn ★10, chart nặng long note lẫn chart nặng jack, và theo được phong cách bạn yêu cầu: các pattern đó đều tồn tại đâu đó trong kho dữ liệu. Điều độ rộng không mang lại là một chuẩn chất lượng đồng đều — trong một kho dữ liệu cộng đồng, có chart tốt hơn chart khác, và mô hình học từ tất cả.
Chúng tôi công bố dữ liệu gồm những gì và vì sao; chúng tôi không công bố chi tiết cách dữ liệu được thu thập, lọc và xây dựng. Trang Công nghệ giải thích dữ liệu nằm ở đâu trong toàn bộ hệ thống, và bài viết về Planner + Noter trình bày hai mô hình học từ nó.