DanceGAI, yapay zekâlı bir osu! mania beatmap oluşturucusu olan ManiaGAI'ın arkasındaki ekip. DanceGAI, müziği oynanabilir deneyimlere dönüştüren yapay zekâ altyapısı geliştiriyor ve ManiaGAI onun ilk ürünü: bir şarkı yüklersin, o da eksiksiz, oynanabilir bir osu! mania mapset'i üretir — zamanlama, notalar ve bir zorluk yelpazesi — ve bunu standart bir .osz olarak paketler. Şarkı, yüklenmiş bir ses dosyası ya da bağlantısını verdiğin bir osu! beatmapset'inin şarkısı olabilir; her iki durumda da yalnızca ses kullanılır, mevcut map'ler asla kullanılmaz. Sistemin 2. sürümü bu sitede yayında. osu! mania ilk çıktı formatı: sistem genel olarak dikey kaydırmalı ritim oyunları (VSRG) için geliştirildi.
Bu sayfa nasıl çalıştığını ve neden bu şekilde tasarlandığını anlatıyor. Mimari ve mühendislik kararları konusunda açığız; birinin onu yeniden inşa etmesi için gereken ayrıntıları ise yayımlamıyoruz. Bir sayı henüz açıklanmadıysa, sayfa tahmin yürütmek yerine bunu söylüyor.
Teknik özet
| Görev | Ses → oynanabilir osu! mania mapset'i (.osz), çalıştırma başına tam bir zorluk yelpazesi |
|---|---|
| Kapsam | Dikey kaydırmalı ritim oyunları (VSRG) — önce osu! mania; diğer VSRG formatları planlanıyor |
| Zamanlama | Beat This aktivasyonları → tescilli ızgara oturtma (değişken tempo). Benchmark'ımızda, sabit tempolu 2.501 ranked şarkının %97,1'i mapper'ın zamanlamasına 40 ms içinde zamanlandı |
| Müzik temsili | MERT-v1-95M, zamanlama ızgarasına vuruş vuruş hizalanmış |
| Planlayıcı | Bölüm başına oynanış durumu üzerinde Gauss difüzyonu, ~6M parametre |
| Nota modeli | Pattern token'ları üzerinde MaskGIT tarzı otoregresif olmayan transformer, ~51M parametre |
| Kontroller | 4K–9K · ★1–10 hedefleri · 5 stil boyutu (LN oranı, LN inverse, jack, mini LN, delay) |
| Eğitim verisi | İnsan yapımı 150.622 map · 86.255 şarkı · ~14.500 mapper · 4.227 saat ses |
| Doğrulama | Zamanlama ızgarası kontrolleri, geçersiz nota temizliği, sessizlik koruması, osu! yıldız derecesi ölçümü, mapset tutarlılığı |
| Eğitim | Tek bir RTX 4070 Ti SUPER · canlı modellerin soy ağacı boyunca kayıtlı ~580 GPU-saati |
| Üretim | İstenen zorluklar tek bir toplu GPU geçişinde birlikte üretilir · tam bir mapset için ~20 sn GPU hesaplaması |
| Sunum | Bir bellek anlık görüntüsünden (snapshot) geri yüklenen sunucusuz GPU çalışanları; ses tarayıcıda normalize edilir |
Beatmap bir transkripsiyon değildir
Otomatik beatmap üretimini çerçevelemenin bariz yolu “ses girer, sinir ağı, notalar çıkar”dır. Pratikte bu çerçeve teknik olarak müziği takip eden ama oynaması keyifsiz map'ler üretir. İyi bir osu! mania map'i transkripsiyondan çok bir aranjmana yakındır: mapper hangi seslerin nota hak ettiğine, bir bölümün ne kadar yoğun hissettirmesi gerektiğine, nereye jack ya da uzun nota koyacağına, pattern'lerin eller arasında nasıl aktığına ve tüm bunların Easy ile Expert zorluk arasında nasıl değiştiğine karar verir.
Bu yüzden ManiaGAI beatmap üretimini bir dizi ayrı problem olarak ele alır — müziği anlamak, oynanışı planlamak, notaları yerleştirmek ve sonucu kontrol etmek:
- Müzik
- Anlama
- Planlama
- Üretim
- İyileştirme
- Beatmap
1. Müziği anlama
Sonraki her şey şarkının hassas bir resmine bağlıdır. İlk aşama ham sesi iki şeye dönüştürür: bir zamanlama ızgarası ve şarkının her anının yüksek çözünürlüklü müzikal temsili.
Zamanlama. Vuruş ve ölçü başı (downbeat) aktivasyonları, açık kaynaklı bir vuruş takip modeli olan Beat This'ten gelir. Bu aktivasyonları bir osu! zamanlama ızgarasına — tempo değişen şarkılar dahil BPM ve offset — dönüştürmek ise bizim kendi ızgara oturtma yöntemimizdir ve üretim modellerinin eğitildiği ızgaralarla aynı ailedeki ızgaraları üretir. Zamanlama, oyuncuların ilk fark ettiği kısımdır: vuruştan birkaç milisaniye kaymış bir map, pattern'leri ne kadar iyi olursa olsun oynanamaz; bu yüzden bir ön işleme adımı olarak değil, birinci sınıf bir problem olarak ele alınır.
Müzikal özellikler. Ses, kendi kendine denetimli bir müzik temsil modeli olan MERT-v1-95M ile kodlanır ve zamanlama ızgarasına hizalanır — böylece modeller müziği vuruş vuruş görür: onset'ler, doku, yoğunluk ve bunların şarkı boyunca nasıl değiştiği. Sessiz kısımlar ayrıca algılanır, böylece onların üzerine hiçbir şey map'lenmez.
2. Beatmap planlama
ManiaGAI'daki temel tasarım tercihi, ne olması gerektiğini notaların nasıl yerleştirileceğinden ayırmaktır.
Özel bir planlama modeli müzikal temsili okur ve henüz tek bir nota yokken tüm şarkının oynanış yapısına karar verir: her bölümün ne kadar yoğun olması gerektiği, hangi tür pattern'lerin nereye ait olduğu, zorluğun nasıl yükselip alçalması gerektiği ve tüm bunların istenen zorluğa ve stile nasıl oturduğu. Çıktısı notalar değil, map'i bölüm bölüm tarif eden bir plandır — yerel zorluk ve uzun notalar, jack'ler ve diğer pattern türlerinin karışımı.
Planlayıcı bir Gauss difüzyon modelidir (yaklaşık 6M parametre). Müziğe, tuş sayısına ve hedef zorluk ile stile koşullanarak şarkının her bölümü için planı birlikte üretir. Difüzyon bu işe uygundur: plan bir şarkının pürüzsüz, sürekli bir tarifidir ve onu bir bütün olarak üretmek planlayıcının tüm şarkıyı aynı anda dengelemesini sağlar.
Bu seviyede planlama, sisteme nota nota çalışan bir modelde olmayan bir şey kazandırır: tüm şarkıyı görebilmek. Bir nakarat, kendinden önceki kıtadan daha sert vuracak şekilde planlanabilir; bir breakdown nefes alacak şekilde planlanabilir.
3. Nota üretimi
İkinci bir model planı gerçek nota yerleşimine dönüştürür — hangi sütunlar, hangi notaların tap hangilerinin uzun nota olduğu, pattern'lerin nasıl bağlandığı. Planlama yapıyı belirler; nota üretimi bu yapıyı hem plana hem de sese uyan oynanabilir notalara dönüştürür.
Nota modeli MaskGIT tarzı otoregresif olmayan bir transformer'dır (yaklaşık 51M parametre). Map'ler ayrık pattern token'ları olarak temsil edilir ve model bunları baştan sona tek tek yazmak yerine tüm map'i doldurur, sonra birkaç geçişte iyileştirir — emin olduğu notaları sabitler, geri kalanlara yeniden bakar. Her geçiş her bölümün iki tarafındaki bağlamı görür; pattern'leri şarkı boyunca tutarlı tutan da budur. Bu geçişlerin bir şarkı boyunca nasıl planlandığı ise bizim kendi iyileştirme yöntemimizdir.
ManiaGAI neden Planner + Noter kullanıyor (İngilizce) →
4. Kontrol edilebilir üretim
ManiaGAI bir “üret ve umut et” sistemi değil. Aynı şarkı açık kontrollerle üretilebilir ve bu kontroller, modellerin uymak üzere eğitildiği şeyin bir parçasıdır:
- Tuş sayısı — 4K'dan 9K'ya.
- Zorluk — ★1'den ★10'a kadar herhangi bir yıldız derecesi seçimi. Tek bir şarkı, tek bir çalıştırmada Easy'den Expert'e kadar tam bir mapset üretir.
- Stil — uzun notaların payı ve bir map'in ne kadar jack, inverse LN, kısa LN ve delay pattern'i içerdiği gibi oynanış özellikleri; her biri oluşturucuda ayarlanabilir.
- Yoğunluk — sabit bir kuraldan değil, hedef zorluktan ve plandan doğar.
Her zorluk şarkının aynı şekilde anlaşılmasından üretilir, böylece bir mapset birbiriyle ilgisiz map'ler gibi değil, tek bir map ailesi gibi okunur. Sırada, öğrenilmiş stil temsilleri üzerinde çalışıyoruz — bir mapping stilini bir avuç kaydırıcı yerine örnekle tarif etmek.
5. Doğrulama ve kalite kontrolü
Bir map sana ulaşmadan önce sistem onu kontrol eder:
- Zamanlama — yazılan timing point'ler algılanan ızgaraya karşı kontrol edilir.
- Geçersiz ve oynanamaz notalar — üst üste binen notalar, bozuk uzun notalar ve oyunun temsil edemeyeceği yerleşimler düzeltilir; bariz şekilde sessiz sesin üzerine hiçbir şey map'lenmez.
- Ölçülen zorluk — her map'in yıldız derecesi osu!'nun kullandığı aynı yıldız derecesi algoritmasıyla ölçülür ve zorluk, istenen değere göre değil, ölçülen değere göre adlandırılır.
- Mapset genelinde tutarlılık — altında durması gereken map'ten daha kolay çıkan ya da zorluk olarak komşusuyla neredeyse aynı olan bir map gönderilmek yerine elenir. Oluşturucuda hangi yıldızların neden elendiğini görürsün.
- Çıktı geçerliliği — sonuç; ses, arka plan ve hitsound'larla birlikte osu!'ya doğrudan aktarılabilen standart bir .osz olarak paketlenir.
Rakamlarla
- Eğitim setindeki şarkılar
- 86.255
- Eğitim map'leri
- 150.622
- Mapper'lar
- ~14.500
- Benzersiz ses
- 4.227 sa
- Diskteki eğitim özellikleri
- ~0,7 TB
- Eğitim hesaplaması (kayıtlı, canlı soy ağacı)
- ~580 GPU-saati
- Son nota modeli eğitimi
- ~4 gün
- Model parametreleri
- ~57M (51M nota + 6M planlayıcı)
- Tam mapset üretimi
- ~20 sn
- Tuş modları
- 4K–9K
- Zorluk aralığı
- ★1–★10
- Çalıştırma başına zorluk
- en fazla 10 (uzun şarkılarda daha az)
Eğitim verisi
Canlı modeller, yaklaşık 14.500 mapper tarafından yapılmış, 86.255 şarkıya yayılan — 4.227 saat benzersiz ses — insan yapımı 150.622 osu! mania map'inden öğreniyor. Böyle bir sistemdeki işin çoğu model değil, veridir: neyin öğrenmeye değer bir map sayılacağına karar vermek, her eğitim örneğinin zamanlamasının doğru olduğundan emin olmak ve map'leri onları oynanabilir kılan şeyi yakalayan bir biçimde temsil etmek.
Eğitim veri setini inceleyin (İngilizce) →
Değerlendirme: zamanlama doğruluğu
Zamanlamamızı, değerlendirebildiğimiz tek ve sabit tempolu her ranked osu! mania mapset'inde — 2.501 şarkı — insan zamanlamasına karşı; açık kaynaklı Mapperatorinator timing modu ve önceki algılayıcımız ManiaGAI v1 ile birlikte test ettik. Bir şarkı, BPM'i mapper'ınkiyle eşleştiğinde (yarım/çift tempoya izin verilerek) ve vuruş fazı verilen tolerans içinde olduğunda doğru sayılır.
| Yöntem | ≤10 ms | ≤20 ms | ≤40 ms | BPM doğru | Tek timing çizgisi |
|---|---|---|---|---|---|
| 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 |
Yalnızca sabit tempolu ranked şarkılar; “tek timing çizgisi” = şarkı, mapper'ın yaptığı gibi tek bir çizgiyle zamanlandı (sabit tempolu bir şarkıda fazladan bir çizgi, yanlış bir tempo değişimidir). Yayındaki yapılandırmayla aynı değil, ona yakın bir yapılandırmada ölçülmüştür.
Tam timing benchmark'ını okuyun (İngilizce) →
Eğitim
Planlayıcı ve nota modeli ayrı ayrı, her biri kendi çalıştığı temsil üzerinde eğitilir — planlayıcı, her bölümün oynanışının Gauss dağılımına dönüştürülmüş bir tarifi üzerinde bir Gauss difüzyon modeli olarak; nota modeli ise pattern token'ları üzerinde maskeli token tahminiyle. Eğitim örnekleri tuş sayıları ve zorluk seviyeleri arasında dengelenir, böylece 8K ve ★10 map'ler 4K ve ★4 arasında kaybolmaz; nota modeli karma hassasiyetle (mixed precision) eğitilir.
Her değişiklik yalnızca eğitim kaybına göre değil, üretilen map'lerin kendisine göre değerlendirilir — zamanlama doğruluğu, hedefe göre ölçülen zorluk, oynanabilirlik.
Çıkarım ve performans
Kullanışlı bir yapay zekâ sistemi yalnızca model kalitesiyle ilgili değildir; kullanılacak kadar hızlı da olması gerekir. Bir ManiaGAI isteği şöyle çalışır:
- Tarayıcında: dosyayı seçtiğin anda, sen hâlâ ayarları seçerken şarkı çözülür, ses yüksekliği normalize edilir ve yeniden kodlanır — böylece GPU asla ses işlemeyi beklemez.
- GPU'da müziği anlama: Beat This ve MERT; ızgara oturtma ise MERT ile eşzamanlı olarak CPU'da çalışır.
- İstenen her zorluk için tek bir toplu geçişte planlama ve nota üretimi.
- Doğrulama — yıldız derecesi ölçümü, tutarlılık kontrolleri.
- .osz paketleme, ardından indirme.
GPU çalışanları önceden yüklenmiş bir anlık görüntüden (snapshot) başlar; böylece soğuk bir çalışan bile o süreyi modelleri yüklemekle harcamak yerine saniyeler içinde hazır olur. Tipik bir şarkı için tam bir mapset yaklaşık 20 saniyelik GPU hesaplama süresi alır — yükleme, kuyruk ve indirme hariç; ölçülen bir örnekte beş zorluklu 2:50'lik bir şarkı bir NVIDIA T4 üzerinde 12,7 saniye sürdü — zamanlama ve müzik özellikleri 3,8 sn (eşzamanlı çalıştırılarak), planlama 1,0 sn, beş zorluğun tamamı için nota üretimi 6,1 sn.
Üretimi nasıl hızlandırdık (İngilizce) →
Neleri yayımlamıyoruz?
Mimari ilkeleri, bunların arkasındaki mühendislik kararlarını ve sistemin ne yapıp ne yapmadığını yayımlıyoruz — üzerine inşa ettiğimiz açık modeller (Beat This, MERT) ve kendi modellerimizin ait olduğu aileler (Gauss difüzyonu, MaskGIT) dahil. Kendi geliştirdiğimiz yöntemleri ya da birinin sistemi yeniden üretmesini sağlayacak ayrıntıları yayımlamıyoruz: zamanlama ızgarasının nasıl oturtulduğu ve tempo bölümlerinin nasıl birleştirildiği, nota modelinin iyileştirme geçişlerinin bir şarkı boyunca nasıl planlandığı, modellerin nasıl koşullandırıldığı, tam mimariler, kayıp fonksiyonları ve hiperparametreler, ve eğitim verisinin nasıl temin edildiği, filtrelendiği ve oluşturulduğu. Ne inşa ettiğimiz konusunda şeffaf olmak ile tarifi teslim etmek arasındaki çizgi bu. Kalite hakkında iddiada bulunduğumuzda, bunları sıfatlarla değil, yayımlanmış benchmark'larla desteklemeyi amaçlıyoruz.
Sırada ne var?
osu! mania'nın ötesi. ManiaGAI, osu! mania'ya özgü olmayan bir oynanış temsili etrafında tasarlandı: sütunlardaki notalar ve uzun notalar, bir zamanlama ızgarasına yerleştirilmiş ve bir hedef zorluğa koşullanmış. osu! mania sistemin sınırı değil, ilk çıktı formatı.
Derinlemesine
ManiaGAI'ın arkasındaki araştırma ve mühendislik, ayrıntılı olarak:
ManiaGAI'ı dene
Şarkından eksiksiz bir osu! mania mapset'i üret — ücretsiz, saniyeler içinde.
Mapset oluştur →