Mapperatorinator
আচল জেনাৰেটিভ মডেলটো ইয়াত চেষ্টা কৰক, অথবা MaiMod ইয়াত চেষ্টা কৰক। ভিডিঅ’ শ্ব’কেছটো ইয়াত চাওক।
Mapperatorinator হৈছে এখন বহু-মডেল ফ্ৰেমৱৰ্ক যিয়ে স্পেক্ট্ৰোগ্ৰাম ইনপুট ব্যৱহাৰ কৰি সকলো গেমম’ডৰ বাবে সম্পূৰ্ণ বৈশিষ্ট্যযুক্ত osu! বিটমেপ সৃষ্টি কৰে আৰু বিটমেপ মডিং সহায় কৰে। এই প্ৰকল্পটোৰ লক্ষ্য হৈছে যিকোনো গীতৰ পৰা অধিক কাষ্টমাইজেবিলিটিৰ সৈতে স্বয়ংক্ৰিয়ভাৱে ৰেংকৰ যোগ্য মানদণ্ডৰ osu! বিটমেপ সৃষ্টি কৰা।
এই প্ৰকল্পটো osuT5 আৰু osu-diffusionৰ ওপৰত নিৰ্মিত। এইটো বিকাশত, মই মোৰ ৪০৬০ Ti আৰু vast.ai-ৰ ভাড়া কৰা ৪০৯০ ইন্সটেন্সত মুঠ ১৪২টা ৰানত প্ৰায় ২৫০০ ঘণ্টা GPU কম্পিউট সময় ব্যয় কৰিছিলোঁ।
#### এই সঁজুলি দায়িত্বপূৰ্ণভাৱে ব্যৱহাৰ কৰক। সদায় আপোনাৰ বিটমেপসমূহত AI ব্যৱহাৰৰ কথা প্ৰকাশ কৰক।
সংস্থাপন
তলত থকা নিৰ্দেশনাসমূহে আপোনাক আপোনাৰ স্থানীয় মেশিনত বিটমেপ সৃষ্টি কৰিবলৈ অনুমতি দিব, বিকল্প ৰূপে আপুনি ইয়াক ক্লাউডত colab notebook ব্যৱহাৰ কৰি চলাব পাৰে।
১. ৰেপ’জিটৰী ক্লোন কৰক
git clone https://github.com/OliBomby/Mapperatorinator.git
cd Mapperatorinator2. (বৈকল্পিক) ভার্চুৱেল পৰিৱেশ সৃষ্টি কৰক
Python 3.10 ব্যৱহাৰ কৰক, পিছৰ সংস্কৰণসমূহ সম্ভৱত নিৰ্ভরতাসমূহৰ সৈতে উপযুক্ত নোহোৱা হ’ব পাৰে।
python -m venv .venvIn cmd.exe
.venv\Scripts\activate.bat
In PowerShell
.venv\Scripts\Activate.ps1
In Linux or MacOS
source .venv/bin/activate৩. নিৰ্ভৰশীলতা সমূহ স্থাপন কৰক
- Python 3.10
- Git
- ffmpeg
- CUDA (NVIDIA GPU-সমূহৰ বাবে) বা ROCm (linux-ত AMD GPU-সমূহৰ বাবে)
- PyTorch: দয়া কৰি Get Started গাইড অনুসৰণ কৰক যাতে আপুনি
torchআৰুtorchaudioGPU সমৰ্থনত ইনস্টল কৰে। আপুনি আগৰ খোজত ইনস্টল কৰা সঠিক Compute Platform সংস্কৰণ বাছনি কৰক। - আৰু বাকী Python নিৰ্ভৰশীলতাসমূহ:
pip install -r requirements.txtৱেব GUI (পৰামৰ্শ দিয়া হৈছে)
অধিক ব্যৱহাৰকাৰী-হিতৈষী অভিজ্ঞতাৰ বাবে, ৱেব UI ব্যৱহাৰ কৰিবলৈ বিবেচনা কৰক। ইয়াত উৎপাদন পৰামিতি সংৰক্ষণ, প্ৰক্ৰিয়া আৰম্ভ কৰা, আৰু আউটপুট পৰ্যবেক্ষণ কৰিবলৈ এটা গ্ৰাফিকেল ইণ্টাৰফেচ আছে।
GUI আৰম্ভ কৰক
আপোনাৰ টাৰ্মিনেলত ক্লোন কৰা Mapperatorinator ডিৰেক্টৰিত যাওক আৰু চলাও:
python web-ui.py
এইয়া এটা স্থানীয় ৱেব ছাৰ্ভাৰ আৰম্ভ কৰিব আৰু স্বয়ংক্ৰিয়ভাৱে UI এটা নতুন উইন্ড'ত খুলি দিব।GUI ব্যৱহাৰ কৰি
- সংৰূপ কৰক: ইনপুট/আউটপুট পথসমূহ ফৰ্ম ফিল্ড আৰু "Browse" বুটাম ব্যৱহাৰ কৰি সংৰূপ কৰক। গেমম'ড, কঠিনতা, শৈলী (বৰ্ষ, মেপাৰ ID, বিৱৰণ), টাইমিং, নিৰ্দিষ্ট বৈশিষ্ট্য (hitsounds, super timing) আৰু অধিক, কমাণ্ড-লাইন বিকল্পসমূহৰ সদৃশ ৰূপে সংৰূপ কৰক। (টোকা: যদি আপুনি
beatmap_pathপ্ৰদান কৰে, UI-এ স্বয়ংক্ৰিয়ভাৱেaudio_pathআৰুoutput_pathনিৰ্ধাৰণ কৰিব, গতিকে সেই ফিল্ডসমূহ খালী ৰাখিব পাৰি) - আৰম্ভ কৰক: "Start Inference" বুটামত ক্লিক কৰি বিটম্যাপ উৎপাদন আৰম্ভ কৰক।
- বাতিল কৰক: চলি থকা প্ৰক্ৰিয়া "Cancel Inference" বুটামত ক্লিক কৰি বন্ধ কৰিব পাৰি।
- আউটপুট খোলক: সম্পূৰ্ণ হ'লে "Open Output Folder" বুটাম ব্যৱহাৰ কৰি উৎপাদিত ফাইলসমূহ দ্ৰুত পোৱাৰ সুবিধা গ্ৰহণ কৰক।
inference.py স্ক্ৰিপ্টৰ সুবিধাজনক wrapper হিচাপে কাম কৰে। উন্নত বিকল্প বা সমস্যাৰ সমাধানৰ বাবে কমাণ্ড-লাইন নিৰ্দেশনা চাওক।কমাণ্ড-লাইন Inference
যিসকল ব্যৱহাৰকাৰীয়ে কমাণ্ড লাইন প্ৰাধান্য দিয়ে বা উন্নত সংৰূপৰ প্ৰয়োজন, তলত দিয়া পদক্ষেপসমূহ অনুসৰণ কৰক। টোকা: অধিক সহজ গ্ৰাফিকেল ইন্টাৰফেচৰ বাবে, অনুগ্ৰহ কৰি ওপৰৰ Web UI (Recommended) চাওক।
inference.py চলাওক আৰু বিটম্যাপ উৎপাদনৰ বাবে কিছু আৰ্গুমেন্ট প্ৰদান কৰক। ইয়াৰ বাবে Hydra override syntax ব্যৱহাৰ কৰক। configs/inference_v29.yaml-ত সকলো উপলব্ধ পৰামিতি চাওক।
python inference.py \
audio_path [Path to input audio] \
output_path [Path to output directory] \
beatmap_path [Path to .osu file to autofill metadata, and output_path, or use as reference] \
gamemode [Game mode to generate 0=std, 1=taiko, 2=ctb, 3=mania] \
difficulty [Difficulty star rating to generate] \
mapper_id [Mapper user ID for style] \
year [Upload year to simulate] \
hitsounded [Whether to add hitsounds] \
slider_multiplier [Slider velocity multiplier] \
circle_size [Circle size] \
keycount [Key count for mania] \
hold_note_ratio [Hold note ratio for mania 0-1] \
scroll_speed_ratio [Scroll speed ratio for mania and ctb 0-1] \
descriptors [List of beatmap user tags for style] \
negative_descriptors [List of beatmap user tags for classifier-free guidance] \
add_to_beatmap [Whether to add generated content to the reference beatmap instead of making a new beatmap] \
start_time [Generation start time in milliseconds] \
end_time [Generation end time in milliseconds] \
in_context [List of additional context to provide to the model [NONE,TIMING,KIAI,MAP,GD,NO_HS]] \
output_type [List of content types to generate] \
cfg_scale [Scale of the classifier-free guidance] \
super_timing [Whether to use slow accurate variable BPM timing generator] \
seed [Random seed for generation] \উদাহৰণ:
python inference.py beatmap_path="'C:\Users\USER\AppData\Local\osu!\Songs\1 Kenji Ninuma - DISCO PRINCE\Kenji Ninuma - DISCOPRINCE (peppy) [Normal].osu'" gamemode=0 difficulty=5.5 year=2023 descriptors="['jump aim','clean']" in_context=[TIMING,KIAI]ইণ্টাৰেক্টিভ CLI
যিসকলে টাৰ্মিনেল-ভিত্তিক ৱাৰ্কফ্ল' প্ৰাধান্য দিয়ে কিন্তু এজন গাইডেড ছেটআপ বিচাৰে, ইণ্টাৰেক্টিভ CLI স্ক্ৰিপ্টটো ৱেব UI-ৰ এটা উৎকৃষ্ট বিকল্প।CLI আৰম্ভ কৰক
ক্লোন কৰা ডাইৰেক্টৰিটোত যাওক। আপোনাক প্ৰথমে স্ক্ৰিপ্টটো এক্সিকিউটেব্ল কৰিব লাগিব পাৰে।# Make the script executable (only needs to be done once)
chmod +x cli_inference.sh# Run the script
./cli_inference.shCLI ব্যৱহাৰ কৰাৰ নিয়ম
স্ক্ৰিপ্টটো আপোনাক Web UI-ৰ দৰে প্ৰজন্মৰ সকলো পৰামিতি কনফিগাৰ কৰিবলৈ প্ৰশ্নৰ এটা শৃংখলত লৈ যাব।ই স্পষ্টতাৰ বাবে ৰঙেৰে চিনাক্ত কৰা ইন্টাৰফেচ ব্যৱহাৰ কৰে। ই আপোনাৰ arrow keys আৰু spacebar ব্যৱহাৰ কৰি style descriptor বাছনি কৰিবলৈ উন্নত multi-select menu প্ৰদান কৰে। আপুনি সকলো প্ৰশ্নৰ উত্তৰ দিয়াৰ পিছত, ই চূড়ান্ত কমাণ্ডটো আপোনাৰ পৰ্যালোচনাৰ বাবে দেখুৱাইব। আপুনি তেতিয়া সিধা সম্পাদন কৰিবলৈ নিশ্চিত কৰিব পাৰে বা বাতিল কৰি কমাণ্ডটো manually ব্যৱহাৰৰ বাবে copy কৰিব পাৰে।
প্ৰজন্মৰ টিপ্ছ
- আপুনি
configs/inference_v29.yamlসম্পাদনা কৰি আপোনাৰ আৰ্গুমেন্টসমূহ তাত যোগ কৰিব পাৰে, প্ৰতিবাৰ টাৰ্মিনেলত টাইপ কৰাৰ সলনি। - সকলো উপলব্ধ descriptor এতিয়া পোৱা যাব।
- সদায় ২০০৭ আৰু ২০২৩-ৰ মাজত year argument প্ৰদান কৰক। আপুনি যদি অজ্ঞাত ৰাখে, তেন্তে মডেলটোৱে অসংলগ্ন style-ৰে প্ৰজন্ম কৰিব পাৰে।
- সদায় difficulty argument প্ৰদান কৰক। আপুনি যদি অজ্ঞাত ৰাখে, তেন্তে মডেলটোৱে অসংলগ্ন difficulty-ৰে প্ৰজন্ম কৰিব পাৰে।
cfg_scaleparameter বৃদ্ধি কৰিলেmapper_idআৰুdescriptorsআৰ্গুমেন্টৰ কার্যক্ষমতা বৃদ্ধি হয়।- আপুনি
negative_descriptorsআৰ্গুমেন্ট ব্যৱহাৰ কৰি মডেলটোকে কিছু style-ৰ পৰা আঁতৰি থাকিবলৈ নিৰ্দেশনা দিব পাৰে। এইটো কেৱলcfg_scale > 1হ'লে কাম কৰে। negative descriptor-ৰ সংখ্যা descriptor-ৰ সংখ্যাৰ সমান হ'ব লাগিব। - আপোনাৰ গীতৰ style আৰু বিচৰা beatmap style ভালকৈ মিল নাখালে, মডেলটোৱে আপোনাৰ নিৰ্দেশনা অনুসৰণ নকৰিব পাৰে। উদাহৰণস্বৰূপে, শান্ত গীতৰ বাবে উচ্চ SR, উচ্চ SV beatmap প্ৰজন্ম কৰা কঠিন।
- যদি আপোনাৰ গীতৰ timing আৰু kiai times আগতেই সম্পূৰ্ণ কৰা আছে, তেন্তে আপুনি ইয়াক মডেলটোকে দিব পাৰে যাতে inference speed আৰু accuracy উল্লেখযোগ্যভাৱে বৃদ্ধি হয়:
beatmap_pathআৰুin_context=[TIMING,KIAI]আৰ্গুমেন্ট ব্যৱহাৰ কৰক। - আপোনাৰ beatmap-ৰ কেৱল এটা অংশ পুনৰ নক্সা কৰিবলৈ,
beatmap_path,start_time,end_time, আৰুadd_to_beatmap=trueআৰ্গুমেন্ট ব্যৱহাৰ কৰক। - Beatmap-ৰ বাবে guest difficulty প্ৰজন্ম কৰিবলৈ,
beatmap_pathআৰুin_context=[GD,TIMING,KIAI]আৰ্গুমেন্ট ব্যৱহাৰ কৰক। - Beatmap-ৰ বাবে hitsound প্ৰজন্ম কৰিবলৈ,
beatmap_pathআৰুin_context=[NO_HS,TIMING,KIAI]আৰ্গুমেন্ট ব্যৱহাৰ কৰক। - গীতৰ কেৱল timing প্ৰজন্ম কৰিবলৈ,
super_timing=trueআৰুoutput_type=[TIMING]আৰ্গুমেন্ট ব্যৱহাৰ কৰক।
MaiMod: AI-চালিত Modding Tool
MaiMod হৈছে osu! beatmap-ৰ বাবে এটা modding tool, যিয়ে Mapperatorinator-ৰ prediction ব্যৱহাৰ কৰি Mapset Verifier-ৰ দৰে অন্যান্য স্বয়ংক্ৰিয় modding tool-এ detect কৰিব নোৱাৰা সম্ভাৱ্য ভুল আৰু অসংলগ্নতা বিচাৰি পায়। ই নিম্নলিখিত সমস্যাসমূহ detect কৰিব পাৰে:
- ভুল snapping বা rhythmic pattern
- ভুল timing point
- অসংলগ্ন hit object position বা new combo স্থান
- অদ্ভুত slider আকৃতি
- অসংলগ্ন hitsound বা volume
mai_mod.py script চলাব, beatmap-ৰ পথ beatmap_path আৰ্গুমেন্টৰ সৈতে উল্লেখ কৰক।
python mai_mod.py beatmap_path="'C:\Users\USER\AppData\Local\osu!\Songs\1 Kenji Ninuma - DISCO PRINCE\Kenji Ninuma - DISCOPRINCE (peppy) [Normal].osu'"
এইটো মডিংৰ পৰামৰ্শসমূহ কনছোলত প্ৰিন্ট কৰিব, যাক আপুনি তাৰ পিছত আপোনাৰ বিটমেপত ম্যানুৱেলভাৱে প্ৰয়োগ কৰিব পাৰে।
পৰামৰ্শসমূহ কালানুক্ৰমিকভাৱে শাৰীবদ্ধ আৰু শ্ৰেণীবদ্ধ কৰা হয়।
গোলাচকত প্ৰথম মানটো 'surprisal' সূচায়, যি হৈছে মডেলে এই সমস্যাটো কিমান অপ্রত্যাশিত বুলি ভাবিছিল তাৰ এটা মাপ, যাতে আপুনি আটাইতকৈ গুৰুত্বপূৰ্ণ সমস্যাবোৰক প্ৰাধান্য দিব পাৰে।মডেলে ভুল কৰিব পাৰে, বিশেষকৈ কম surprisal থকা সমস্যাবোৰত, সেইবাবে পৰামৰ্শসমূহ আপোনাৰ বিটমেপত প্ৰয়োগ কৰাৰ আগতে সদায় ভালদৰে পৰীক্ষা কৰক। মুখ্য লক্ষ্য হৈছে সম্ভাৱ্য সমস্যাবোৰৰ সন্ধান ক্ষেত্ৰ সৰু কৰা, যাতে আপুনি আপোনাৰ বিটমেপৰ প্ৰতিটো হিট অবজেক্ট হস্তচালিতভাৱে পৰীক্ষা কৰিব লগা নপৰে।
MaiMod GUI
MaiMod Web UI চলাবলৈ, Mapperatorinator ইনস্টল কৰিব লাগিব। তাৰ পিছত,mai_mod_ui.py স্ক্ৰিপ্টটো চলাওক। এইটো এটা স্থানীয় ৱেব ছাৰ্ভাৰ আৰম্ভ কৰিব আৰু স্বয়ংক্ৰিয়ভাৱে UI এখন নতুন উইণ্ডোত খুলিব:python mai_mod_ui.pyসামগ্ৰিক পৰ্যালোচনা
ট’কেনাইজেচন
Mapperatorinator-এ osu! বিটমেপসমূহক এটা মধ্যবর্তী ইভেন্ট ৰূপত ৰূপান্তৰ কৰে যি সোজাকৈ ট’কেনলৈ আৰু ট’কেনৰ পৰা ৰূপান্তৰ কৰিব পৰা যায়। ইয়াত হিট অবজেক্ট, হিটছাউণ্ড, ছ্লাইডাৰ ভেল’চিটি, নিউ কম্ব’চ, টাইমিং পইণ্ট, কিয়াই টাইম, আৰু টাইক’/মেনিয়া স্ক্ৰ’ল স্পীড থাকে।
ইয়াত ট’কেনাইজেচন প্ৰক্ৰিয়াৰ এটা সৰু উদাহৰণ দিয়া হৈছে:
ভ’কেবুলাৰীৰ আকাৰ কমাবলৈ সময় ইভেন্টসমূহ ১০ মিছি. ইণ্টাৰভেলত কুৱাণ্টাইজ কৰা হয় আৰু পজিচন ক’অৰ্ডিনেটসমূহ ৩২ পিক্সেল গ্ৰিড পইণ্টত কুৱাণ্টাইজ কৰা হয়।
মডেল স্থাপত্য
মডেলটো মূলত HF Transformers Whisper মডেলৰ ওপৰত এটা ৰেপাৰ, য’ত কাষ্টম ইনপুট এম্বেডিং আৰু ল’ছ ফাংচন আছে। মডেলৰ মুঠ আকাৰ ২১.৯ মিলিয়ন পেৰামিটাৰ। এই মডেলটো এই কামৰ বাবে T5-তকৈ দ্ৰুত আৰু অধিক নিখুঁত বুলি পোৱা গৈছে।মডেলৰ ইনপুট-আউটপুটৰ উচ্চ-স্তৰৰ সংক্ষিপ্ত বিবৰণ তলত দিয়া হৈছে:
মডেলটো এনক’ডাৰ ইনপুট হিচাপে মেল স্পেক্ট্ৰ’গ্ৰাম ফ্ৰেইম ব্যৱহাৰ কৰে, প্ৰতিটো ইনপুট পজিচনত এটা ফ্ৰেইম থাকে। প্ৰতিটো ষ্টেপত মডেল ডিক’ডাৰৰ আউটপুট হৈছে এটা সফ্টমেক্স ডিস্ট্ৰিবিউশ্যন, যি ইভেন্টসমূহৰ এটা নির্দিষ্ট, পূৰ্বনিৰ্ধাৰিত ভ’কেবুলাৰীত বিতৰণ কৰে। আউটপুটবোৰ ছ্পাৰ্ছ; কেৱল হিট-অবজেক্ট ঘটিলে ইভেন্ট লাগে, প্ৰতিটো অডিঅ’ ফ্ৰেইমত এনোটেট কৰাৰ প্ৰয়োজন নাই।
বহু-কাৰ্য্য প্রশিক্ষণ ফৰ্মেট
SOS ট’কেনৰ আগতে আন কিছুমান ট’কেন থাকে যিয়ে শর্তাধীন সৃষ্টি সহজ কৰে। এই ট’কেনসমূহত গেমম’ড, ডিফিকাল্টি, মাপাৰ ID, বছৰৰ লগতে আন মেটাডেটা থাকে। ট্ৰেইনিঙৰ সময়ত, এই ট’কেনবোৰৰ লগত কোনো লেবেল নাথাকে, গতিকে মডেলটোৱে এইবোৰ আউটপুট নকৰে। এছোৱেই, ট্ৰেইনিঙৰ সময়ত কেতিয়াবা এটা মেটাডেটা ট’কেন ‘অজ্ঞাত’ ট’কেনৰে সলনি কৰা হয়, যাতে ইনফাৰেন্সত আমি এই ‘অজ্ঞাত’ ট’কেন ব্যৱহাৰ কৰি মডেলক কম মেটাডেটা দিব পাৰোঁ।
নিৰবিচ্ছিন্ন দীঘল সৃষ্টি
মডেলটোৰ কণ্টেক্সট দৈৰ্ঘ্য হৈছে ৮.১৯২ ছেকেণ্ড। এইটো সম্পূৰ্ণ বিটমেপ সৃষ্টি কৰিবলৈ যথেষ্ট নহয়, গতিকে গানটো বহুটা উইন্ড’ত ভাগ কৰিব লাগে আৰু বিটমেপটো সৰু অংশত সৃষ্টি কৰিব লাগে। সৃষ্ট বিটমেপৰ উইন্ড’সমূহৰ মাজত স্পষ্ট ছিম দেখা নাপাবলৈ, আমি ৯০% ওভাৰলেপ ব্যৱহাৰ কৰোঁ আৰু উইন্ড’বোৰ একে পিছত একে সৃষ্টি কৰোঁ। প্ৰত্যেক সৃষ্ট উইন্ড’ (প্ৰথমটোৰ বাহিৰে) ডিক’ডাৰ পূৰ্বৰ উইন্ড’ৰ পৰা উইন্ড’ দৈৰ্ঘ্যৰ ৫০% ট’কেন পূৰ্বে দি আৰম্ভ হয়। আমরা এটা নিশ্চিত কৰিবলৈ এটা লগিট প্ৰচেছৰ ব্যৱহাৰ কৰোঁ যে মডেলটোৱে প্ৰজন্মৰ উইণ্ডোৰ প্ৰথম ৫০% ত থকা সময় টোকেন সৃষ্টি কৰিব নোৱাৰে। ইয়াৰ উপৰিও, প্ৰজন্মৰ উইণ্ডোৰ অন্তিম ৪০% পৰৱৰ্তী উইণ্ডোৰ বাবে সংৰক্ষিত। সেই পৰিসৰৰ ভিতৰত উৎপন্ন হোৱা সময় টোকেনসমূহক EOS টোকেন হিচাপে গণ্য কৰা হয়। এইটো নিশ্চিত কৰে যে প্ৰতিটো উৎপন্ন টোকেন কমেও ৪ ছেকেণ্ডৰ পূৰ্বৰ টোকেন আৰু ৩.৩ ছেকেণ্ডৰ আগন্তুক অডিঅ'ৰ ওপৰত নিৰ্ভৰ কৰে আগতীয়াকৈ অনুমান কৰিবলৈ।
দীঘলীয়া উৎপাদনৰ সময়ত অফছেট ড্ৰিফ্টিং ৰোধ কৰিবলৈ, প্ৰশিক্ষণৰ সময়ত ডিক'ডাৰত সময় ইভেন্টসমূহত ৰেন্ডম অফছেট যোগ কৰা হৈছে। এইটো ইকাক অডিঅ'ত থকা অনচেটসমূহ শুনি টাইমিং ত্ৰুটি সংশোধন কৰিবলৈ বাধ্য কৰে, আৰু ফলস্বৰূপে এক নিৰৱচ্ছিন্নভাৱে সঠিক অফছেট লাভ হয়।
ডিফিউজনৰ সৈতে শুদ্ধ ক'অর্ডিনেট
ডিক'ডাৰে উৎপন্ন কৰা পজিশন ক'অর্ডিনেটসমূহ ৩২ পিক্সেল গ্ৰিড পইণ্টলৈ কোৱান্টাইজ কৰা হয়, তাৰপিছত ডিফিউজন ব্যৱহাৰ কৰি ক'অর্ডিনেটসমূহক চূড়ান্ত স্থিতিলৈ ডিনয়জ কৰা হয়। এই বাবে আমি osu-diffusion ৰ এক সংশোধিত সংস্কৰণ প্ৰশিক্ষণ দিছিলোঁ যি কেৱল শব্দ তালিকাৰ অন্তিম ১০% লৈ বিশেষীকৃত, আৰু Mapperatorinator এ ব্যৱহাৰ কৰা অধিক উন্নত মেটাডাটা টোকেনসমূহ শর্তাধীন প্ৰজন্মৰ বাবে গ্ৰহণ কৰে।
Mapperatorinator মডেলটোৱে ছ্লাইডাৰৰ SV আউটপুট দিয়ে, ছ্লাইডাৰৰ প্ৰয়োজনীয় দৈৰ্ঘ্য নিয়ন্ত্ৰণ বিন্দুৰ পথৰ আকৃতিৰ পৰা নিৰ্ভৰ নকৰে। সেয়া বাবে আমি ডিফিউজন প্ৰক্ৰিয়াটো প্ৰয়োজনীয় ছ্লাইডাৰ দৈৰ্ঘ্যক মানানসই কৰিব পৰা ক'অর্ডিনেট সৃষ্টি কৰিবলৈ পথপ্ৰদৰ্শন কৰিবলৈ চেষ্টা কৰোঁ। এইটো আমি প্ৰতিটো ডিফিউজন প্ৰক্ৰিয়াৰ পাছত প্ৰয়োজনীয় দৈৰ্ঘ্য আৰু বৰ্তমান নিয়ন্ত্ৰণ বিন্দুৰ পথৰ ভিত্তিত ছ্লাইডাৰৰ শেষ পজিশন পুনৰ গণনা কৰি কৰোঁ। এইটো অৰ্থ, ডিফিউজন প্ৰক্ৰিয়াটোৱে ছ্লাইডাৰৰ শেষ পজিশনসমূহৰ ওপৰত প্ৰত্যক্ষ নিয়ন্ত্ৰণ নাথাকে, কিন্তু ই নিয়ন্ত্ৰণ বিন্দুৰ পথ পৰিবৰ্তন কৰি ইহঁতক প্ৰভাৱিত কৰিব পাৰে।
পাছ-প্ৰচেছিং
Mapperatorinator এ উৎপন্ন বিটমেপৰ গুণগত মান উন্নত কৰিবলৈ কিছুমান অতিৰিক্ত পাছ-প্ৰচেছিং কৰে:
- ডিফিউজনৰ সৈতে পজিশন ক'অর্ডিনেট শুদ্ধ কৰা।
- মডেলে উৎপন্ন কৰা স্নেপ ডিভাইছৰৰ ব্যৱহাৰে সময় ইভেন্টসমূহক নিকটতম টিকলৈ পুনৰ স্নেপ কৰা।
- প্ৰায়-সম্পূৰ্ণ স্থিতিগত অভাৰলেপসমূহ স্নেপ কৰা।
- মেনিয়া কলাম ইভেন্টসমূহক X ক'অর্ডিনেটলৈ ৰূপান্তৰ কৰা।
- টাইকো ড্ৰামৰোলৰ বাবে ছ্লাইডাৰ পথ সৃষ্টি কৰা।
- প্ৰয়োজনীয় ছ্লাইডাৰ দৈৰ্ঘ্য আৰু নিয়ন্ত্ৰণ বিন্দুৰ পথ দৈৰ্ঘ্যত ডাঙৰ পাৰ্থক্য সমাধান কৰা।
ছুপাৰ টাইমিং জেনাৰেটৰ
ছুপাৰ টাইমিং জেনাৰেটৰ হৈছে এটা এলগৰিদম যি উৎপন্ন টাইমিংৰ স্পষ্টতা আৰু শুদ্ধতা উন্নত কৰে, গীতখনৰ সমগ্ৰ টাইমিং ২০ বাৰ অনুমান কৰি ফলাফলৰ গড় লয়। এইটো পৰিবৰ্তনশীল BPM থকা গান, অথবা BPM পৰিৱর্তন থকা গানৰ বাবে উপযোগী। ফলাফল প্ৰায় সম্পূৰ্ণ, কেৱল কেতিয়াবা এটা অংশ ম্যানুৱেলভাৱে সংশোধন কৰাৰ প্ৰয়োজন হয়।
প্ৰশিক্ষণ
তলত দিয়া নিৰ্দেশনাসমূহে আপোনাৰ স্থানীয় মেশিনত এটা প্ৰশিক্ষণ পৰিৱেশ সৃষ্টি কৰে।
১. ৰেপজিট'ৰিটো ক্লোন কৰক
git clone https://github.com/OliBomby/Mapperatorinator.git
cd Mapperatorinator2. ডেটাচেট সৃষ্টি কৰক
Mapperator কনচোল এপ্ ব্যৱহাৰ কৰি আপোনাৰ নিজৰ ডেটাচেট সৃষ্টি কৰক। ইয়াত osu! OAuth ক্লায়েন্ট টোকেনৰ প্ৰয়োজন হয় বিটমেপ যাচাই আৰু অতিৰিক্ত মেটাডেটা লাভ কৰিবলৈ। ডেটাচেটখন Mapperatorinator ডাইৰেক্টৰীৰ কাষত থকা datasets ডাইৰেক্টৰীত ৰাখক।
Mapperator.ConsoleApp.exe dataset2 -t "/Mapperatorinator/datasets/beatmap_descriptors.csv" -i "path/to/osz/files" -o "/datasets/cool_dataset"৩. (ঐচ্ছিক) লগিঙৰ বাবে Weight & Biases ছেট-আপ কৰক
Weight & Biases ত এটা একাউণ্ট সৃষ্টি কৰক আৰু আপোনাৰ একাউণ্ট ছেটিঙৰ পৰা API কী লওক। তাৰ পিছতWANDB_API_KEY পৰিৱেশ পৰিবৰ্তনশীল ছেট কৰক, যাতে প্ৰশিক্ষণ প্ৰক্ৰিয়াই এই কীলৈ লগ কৰিব জানে।export WANDB_API_KEY=৪. ডকৰ কন্টেইনাৰ সৃষ্টি কৰক
আপোনাৰ venv-ত প্ৰশিক্ষণ সম্ভৱ, কিন্তু আমি WSL-ত ডকৰ ব্যৱহাৰ কৰিবলৈ পৰামৰ্শ দিছোঁ উত্তম কাৰ্যক্ষমতাৰ বাবে।docker compose up -d --force-recreate
docker attach mapperatorinator_space
cd Mapperatorinator৫. পেৰামিটাৰসমূহ সংৰূপ কৰক আৰু প্ৰশিক্ষণ আৰম্ভ কৰক
সকলো সংৰূপণ ./configs/train/default.yaml ত অৱস্থিত।
আপোনাৰ ডাটাছেট অনুসৰি সঠিক train_dataset_path আৰু test_dataset_path লগতে train/test বিভাজনৰ বাবে আৰম্ভণি আৰু শেষ mapset সূচকসমূহ নিৰ্ধাৰণ কৰক।
এই পথটো ডকৰ কণ্টেইনৰ স্থানীয়, সেয়ে যদি আপুনি আপোনাৰ cool_dataset নামৰ ডাটাছেটটো datasets ডাইৰেক্টৰিত ৰাখিছে, তেন্তে সেইটো /workspace/datasets/cool_dataset হ'ব লাগিব।
মই পৰামৰ্শ দিছোঁ যে আপুনি এটা স্বনির্বাচিত কনফিগাৰেচন ফাইল বনাওক যিয়ে ডিফল্ট কনফিগক অভাৰাইড কৰে, যাতে আপুনি আপোনাৰ প্ৰশিক্ষণ কনফিগাৰেচনৰ এটা ৰেকৰ্ড ৰাখিব পাৰে পুনৰ উৎপাদনক্ষমতাৰ বাবে।
data:
train_dataset_path: "/workspace/datasets/cool_dataset"
test_dataset_path: "/workspace/datasets/cool_dataset"
train_dataset_start: 0
train_dataset_end: 90
test_dataset_start: 90
test_dataset_end: 100Begin training by calling python osuT5/train.py or torchrun --nproc_per_node=NUM_GPUS osuT5/train.py for multi-GPU training.
python osuT5/train.py -cn train_v29 train_dataset_path="/workspace/datasets/cool_dataset" test_dataset_path="/workspace/datasets/cool_dataset" train_dataset_end=90 test_dataset_start=90 test_dataset_end=100৬. LoRA ফাইন-টিউনিং
আপুনি LoRA ব্যৱহাৰ কৰি পূৰ্বতে প্ৰশিক্ষিত এটা মডেলকো নিজা বিশেষ শৈলী বা গেমম'ডত খাপ খুৱাবলৈ ফাইন-টিউন কৰিব পাৰে।
এইটো কৰিবলৈ, configs/train/lora.yaml আপোনাৰ প্ৰয়োজন অনুসৰি সংশোধন কৰক আৰু lora প্ৰশিক্ষণ কনফিগ চলাও:
python osuT5/train.py -cn lora train_dataset_path="/workspace/datasets/cool_dataset" test_dataset_path="/workspace/datasets/cool_dataset" train_dataset_end=90 test_dataset_start=90 test_dataset_end=100
গুরুত্বপূর্ণ LoRA পৰামিতিসমূহ বিবেচনা কৰিবলৈ:
pretrained_path: ফাইন-টিউন কৰিবলৈ বেছ মডেলৰ পথ বা HF ৰিপ’।r: LoRA মেট্ৰিচসমূহৰ ৰেংক। বেছি মানে মডেলৰ ক্ষমতা বৃদ্ধি পায় কিন্তু মেম'ৰী ব্যৱহাৰো বাঢ়ে।lora_alpha: LoRA আপডেটসমূহৰ বাবে স্কেলিং ফেক্টৰ।total_steps: মুঠ প্ৰশিক্ষণ ষ্টেপ। আপোনাৰ ডেটাচেটৰ আকাৰ অনুসৰি এইটো সমন্বয় কৰক।enable_lora: LoRA ব্যৱহাৰ কৰিব নে সম্পূৰ্ণ মডেল ফাইন-টিউনিং কৰিব।
lora_path আর্গুমেন্টৰ সহায়ত ব্যৱহাৰ কৰিবলগীয়া LoRA ৱেইট নিৰ্ধাৰণ কৰিব পাৰে।
এইটো এখন স্থানীয় পথ অথবা এটা Hugging Face ৰিপ’ হ’ব পাৰে।অধিক জানক
ক্ৰেডিটচ
বিশেষ ধন্যবাদ:
- osuT5 ৰ লেখকসকলক তেওঁলোকৰ প্ৰশিক্ষণ ক’ডৰ বাবে।
- Hugging Face দলক তেওঁলোকৰ টুলছ ৰ বাবে।
- Jason Won আৰু Richard Nagyfi ক আইডিয়া শ্বেয়াৰ কৰাৰ বাবে।
- Marvin ক প্ৰশিক্ষণ ক্ৰেডিট দান কৰাৰ বাবে।
- osu! কমিউনিটিক বিটমেপসমূহৰ বাবে।
সম্পৰ্কীয় কাম
- osu! Beatmap Generator Syps (Nick Sypteras) দ্বাৰা
- osumapper kotritrona, jyvden, Yoyolick (Ryan Zmuda) দ্বাৰা
- osu-diffusion OliBomby (Olivier Schipper), NiceAesth (Andrei Baciu) দ্বাৰা
- osuT5 gyataro (Xiwen Teoh) দ্বাৰা
- Beat Learning sedthh (Richard Nagyfi) দ্বাৰা
- osu!dreamer jaswon (Jason Won) দ্বাৰা