Mapperatorinator
ลองใช้โมเดลสร้างสรรค์ ได้ที่นี่ หรือ MaiMod ได้ที่นี่ และรับชมวิดีโอแนะนำ ที่นี่
Mapperatorinator เป็นเฟรมเวิร์กแบบมัลติ-โมเดลที่ใช้สเปกโตรแกรมเป็นอินพุตเพื่อสร้าง osu! beatmap ที่สมบูรณ์สำหรับทุกโหมดเกมและช่วยม็อดบีทแมพ เป้าหมายของโปรเจกต์นี้คือการสร้าง osu! beatmap คุณภาพระดับจัดอันดับโดยอัตโนมัติจากเพลงใดก็ได้ พร้อมความสามารถในการปรับแต่งสูง
โปรเจกต์นี้สร้างขึ้นบนพื้นฐานของ osuT5 และ osu-diffusion ในการพัฒนา ฉันใช้เวลาประมาณ 2500 ชั่วโมงของการประมวลผล GPU ใน 142 รอบบน 4060 Ti ของฉันและเครื่องเช่า 4090 บน vast.ai
#### กรุณาใช้เครื่องมือนี้อย่างมีความรับผิดชอบ และเปิดเผยทุกครั้งเมื่อใช้ AI ในการสร้างบีทแมปของคุณ
การติดตั้ง
คำแนะนำด้านล่างนี้จะช่วยให้คุณสร้างบีทแมปบนเครื่องของคุณเอง หรือสามารถรันบนคลาวด์โดยใช้ colab notebook ได้เช่นกัน
1. โคลน repository
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/activate3. ติดตั้งไลบรารีที่จำเป็น
- Python 3.10
- Git
- ffmpeg
- CUDA (สำหรับการ์ดจอ NVIDIA) หรือ ROCm (สำหรับการ์ดจอ AMD บนลินุกซ์)
- PyTorch: โปรดตรวจสอบให้แน่ใจว่าได้ทำตามคู่มือ Get Started เพื่อให้คุณติดตั้ง
torchและtorchaudioพร้อมรองรับ GPU โดยเลือกเวอร์ชัน Compute Platform ที่ถูกต้องตามที่คุณติดตั้งในขั้นตอนก่อนหน้า - และไลบรารี Python ที่เหลือ:
pip install -r requirements.txtWeb GUI (แนะนำ)
เพื่อประสบการณ์ที่ใช้งานง่ายขึ้น แนะนำให้ใช้ Web UI ซึ่งมีอินเทอร์เฟซกราฟิกสำหรับตั้งค่าพารามิเตอร์การสร้าง เริ่มต้นกระบวนการ และตรวจสอบผลลัพธ์
เปิดใช้งาน GUI
ไปที่ไดเรกทอรี Mapperatorinator ที่ถูกโคลนในเทอร์มินัลของคุณแล้วรัน:
python web-ui.py
การดำเนินการนี้จะเริ่มเซิร์ฟเวอร์เว็บในเครื่องและเปิด UI ในหน้าต่างใหม่โดยอัตโนมัติการใช้งาน GUI
- กำหนดค่า: ตั้งค่าพาธอินพุต/เอาต์พุตโดยใช้ฟิลด์ของฟอร์มและปุ่ม "เรียกดู" ปรับแต่งพารามิเตอร์การสร้าง เช่น โหมดเกม ระดับความยาก สไตล์ (ปี, รหัสผู้สร้าง, คำอธิบายประกอบ), การตั้งเวลา, ฟีเจอร์เฉพาะ (ฮิตซาวด์, ซุปเปอร์ไทม์มิ่ง) และอื่นๆ ซึ่งเหมือนกับตัวเลือกบรรทัดคำสั่ง (หมายเหตุ: หากคุณระบุ
beatmap_pathไว้ UI จะกำหนดค่าaudio_pathและoutput_pathให้อัตโนมัติ ดังนั้นคุณสามารถเว้นช่องเหล่านั้นไว้ได้) - เริ่มต้น: คลิกปุ่ม "เริ่มการอนุมาน" เพื่อเริ่มสร้างบีตแมป
- ยกเลิก: คุณสามารถหยุดกระบวนการที่กำลังดำเนินการโดยใช้ปุ่ม "ยกเลิกการอนุมาน"
- เปิดเอาต์พุต: เมื่อเสร็จสิ้นแล้ว ใช้ปุ่ม "เปิดโฟลเดอร์เอาต์พุต" เพื่อเข้าถึงไฟล์ที่สร้างได้อย่างรวดเร็ว
inference.py สำหรับตัวเลือกขั้นสูงหรือการแก้ไขปัญหา โปรดดูคำแนะนำการใช้บรรทัดคำสั่งการอนุมานด้วยบรรทัดคำสั่ง
สำหรับผู้ใช้ที่ชอบใช้บรรทัดคำสั่งหรือจำเป็นต้องเข้าถึงการตั้งค่าขั้นสูง ให้ปฏิบัติตามขั้นตอนด้านล่าง หมายเหตุ: สำหรับอินเทอร์เฟซกราฟิกที่ง่ายกว่า โปรดดูหัวข้อ Web UI (แนะนำ) ด้านบน
เรียกใช้ 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 แบบอินเทอร์แอคทีฟถือเป็นทางเลือกที่ยอดเยี่ยมนอกจาก Web UIเปิดใช้งาน CLI
ไปยังไดเรกทอรีที่คุณได้โคลนมา คุณอาจต้องตั้งค่าสคริปต์ให้สามารถรันได้ก่อน# Make the script executable (only needs to be done once)
chmod +x cli_inference.sh# Run the script
./cli_inference.shการใช้งาน CLI
สคริปต์จะนำคุณผ่านชุดคำถามเพื่อกำหนดค่าพารามิเตอร์การสร้างทั้งหมด คล้ายกับ Web UIมันใช้อินเทอร์เฟซที่มีการระบุสีเพื่อความชัดเจน มีเมนูแบบเลือกหลายตัวขั้นสูงสำหรับเลือกคำอธิบายสไตล์โดยใช้ปุ่มลูกศรและแป้นเว้นวรรค หลังจากที่คุณตอบคำถามทั้งหมดแล้ว จะมีการแสดงคำสั่งสุดท้ายเพื่อให้คุณตรวจสอบ คุณสามารถยืนยันเพื่อดำเนินการโดยตรงหรือยกเลิกและคัดลอกคำสั่งไปใช้เองก็ได้
เคล็ดลับการสร้าง
- คุณสามารถแก้ไข
configs/inference_v29.yamlและเพิ่มอาร์กิวเมนต์ของคุณที่นั่น แทนที่จะพิมพ์ในเทอร์มินัลทุกครั้ง - คำอธิบายทั้งหมดสามารถดูได้ที่ ที่นี่
- ให้ระบุปีระหว่างปี 2007 ถึง 2023 เสมอ หากคุณไม่ระบุ ปีที่ใช้ในการสร้างอาจไม่ตรงกับสไตล์ที่คาดหวัง
- ให้ระบุระดับความยากเสมอ หากไม่ระบุ ระดับความยากที่สร้างขึ้นอาจไม่สอดคล้องกัน
- เพิ่มค่าพารามิเตอร์
cfg_scaleเพื่อเพิ่มประสิทธิภาพของอาร์กิวเมนต์mapper_idและdescriptors - คุณสามารถใช้พารามิเตอร์
negative_descriptorsเพื่อให้โมเดลหลีกเลี่ยงสไตล์บางอย่างได้ ใช้งานได้เมื่อcfg_scale > 1เท่านั้น ตรวจสอบให้แน่ใจว่าจำนวน negative descriptors เท่ากับจำนวน descriptors - ถ้าสไตล์เพลงกับสไตล์บีทแมปที่ต้องการไม่เข้ากัน โมเดลอาจไม่ทำตามที่คุณต้องการ เช่น การสร้างบีทแมป SR สูง, SV สูงสำหรับเพลงสงบจะยากมาก
- หากคุณมีเวลาตั้งค่า timing และ kiai ของเพลงแล้ว คุณสามารถส่งข้อมูลนี้ให้โมเดลเพื่อเพิ่มความเร็วและความแม่นยำ: ใช้พารามิเตอร์
beatmap_pathและin_context=[TIMING,KIAI] - หากต้องการ remap เฉพาะส่วนหนึ่งของบีทแมป ให้ใช้
beatmap_path,start_time,end_time, และadd_to_beatmap=true - หากต้องการสร้าง guest difficulty สำหรับบีทแมป ให้ใช้
beatmap_pathและin_context=[GD,TIMING,KIAI] - หากต้องการสร้าง hitsounds สำหรับบีทแมป ให้ใช้
beatmap_pathและin_context=[NO_HS,TIMING,KIAI] - หากต้องการสร้าง timing สำหรับเพลงเท่านั้น ให้ใช้
super_timing=trueและoutput_type=[TIMING]
MaiMod: เครื่องมือม็อดอัตโนมัติขับเคลื่อนด้วย AI
MaiMod เป็นเครื่องมือม็อดสำหรับบีทแมป osu! ที่ใช้การคาดการณ์จาก Mapperatorinator เพื่อหาข้อผิดพลาดและความไม่สอดคล้องกันที่เครื่องมือม็อดอัตโนมัติอื่น เช่น Mapset Verifier ไม่สามารถตรวจจับได้ มันสามารถตรวจจับปัญหาเช่น:
- การ snap หรือรูปแบบจังหวะที่ไม่ถูกต้อง
- จุด timing ที่ไม่แม่นยำ
- ตำแหน่งของ hit object หรือการวาง new combo ที่ไม่สอดคล้องกัน
- รูปทรง slider ที่ผิดปกติ
- hitsounds หรือระดับเสียงที่ไม่สอดคล้องกัน
mai_mod.py โดยระบุ path ของบีทแมปด้วยอาร์กิวเมนต์ 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! beatmaps ให้เป็นตัวแทนอีเวนต์แบบกลางที่สามารถแปลงเป็นและจากโทเคนได้โดยตรง ซึ่งรวมถึงวัตถุตี, เสียงตี, ความเร็วสไลเดอร์, คอมโบใหม่, จุดเวลา, ช่วงเวลาคิไอ และความเร็วการเลื่อนของ taiko/mania
ตัวอย่างกระบวนการแปลงเป็นโทเคนขนาดเล็กมีดังนี้:
เพื่อประหยัดขนาดคำศัพท์ เหตุการณ์เวลา (time events) จะถูกควอนไทซ์เป็นช่วง 10 มิลลิวินาที และพิกัดตำแหน่งจะถูกควอนไทซ์เป็นจุดกริด 32 พิกเซล
สถาปัตยกรรมโมเดล
โมเดลนี้โดยพื้นฐานแล้วเป็นตัวห่อรอบ HF Transformers Whisper โดยมีอินพุตฝังตัวและฟังก์ชันสูญเสียแบบกำหนดเอง ขนาดโมเดลอยู่ที่ 219M พารามิเตอร์ โมเดลนี้พบว่าทำงานได้รวดเร็วและแม่นยำกว่า T5 สำหรับงานนี้ภาพรวมระดับสูงของอินพุต-เอาต์พุตของโมเดลมีดังนี้:
โมเดลนี้ใช้เฟรม Mel spectrogram เป็นอินพุตของ encoder โดยหนึ่งเฟรมต่อหนึ่งตำแหน่งอินพุต เอาต์พุตของ decoder ในแต่ละขั้นคือการแจกแจง softmax บนคำศัพท์ของอีเวนต์ที่กำหนดไว้ล่วงหน้าแบบไม่ต่อเนื่อง เอาต์พุตจะเป็นแบบกระจาย (sparse) จะมีอีเวนต์เฉพาะเมื่อมี hit-object แทนที่จะต้องใส่คำอธิบายประกอบทุกเฟรมเสียง
รูปแบบการฝึกแบบมัลติทาสก์
ก่อนโทเคน SOS จะมีโทเคนเพิ่มเติมที่ช่วยในการสร้างแบบมีเงื่อนไข ซึ่งรวมถึงโหมดเกม, ความยาก, รหัสผู้สร้าง, ปี และข้อมูลเมตาอื่นๆ ระหว่างการฝึก โทเคนเหล่านี้จะไม่มีฉลากกำกับ จึงไม่ถูกสร้างโดยโมเดล นอกจากนี้ระหว่างการฝึกยังมีโอกาสสุ่มที่โทเคนเมตาจะถูกแทนที่ด้วยโทเคน 'unknown' ดังนั้นระหว่างการทำนายจึงสามารถใช้โทเคน 'unknown' เพื่อลดปริมาณเมตาดาต้าที่ต้องป้อนให้โมเดล
การสร้างอย่างต่อเนื่องไร้รอยต่อ
ความยาวบริบทของโมเดลคือ 8.192 วินาที ซึ่งเห็นได้ชัดว่าไม่พอสำหรับการสร้างบีตแมปเต็มเพลง ดังนั้นต้องแบ่งเพลงเป็นหลายหน้าต่างแล้วสร้างบีตแมปเป็นส่วนเล็กๆ เพื่อให้แน่ใจว่าบีตแมปที่สร้างขึ้นจะไม่มีรอยต่อที่เห็นได้ชัดระหว่างหน้าต่าง เราจะใช้การซ้อนทับ 90% และสร้างหน้าต่างตามลำดับ ทุกหน้าต่างการสร้างยกเว้นหน้าต่างแรกจะเริ่มด้วยการเติม decoder ล่วงหน้าสูงสุด 50% ของหน้าต่างการสร้างด้วยโทเคนจากหน้าต่างก่อนหน้า เราใช้ตัวประมวลผล logit เพื่อให้แน่ใจว่าโมเดลจะไม่สามารถสร้างโทเคนเวลาที่อยู่ใน 50% แรกของหน้าต่างการสร้างได้ นอกจากนี้ 40% สุดท้ายของหน้าต่างการสร้างจะถูกสงวนไว้สำหรับหน้าต่างถัดไป โทเคนเวลาที่ถูกสร้างในช่วงนี้จะถูกจัดการเป็นโทเคน EOS สิ่งนี้ทำให้มั่นใจได้ว่าแต่ละโทเคนที่สร้างขึ้นจะอิงกับโทเคนก่อนหน้าอย่างน้อย 4 วินาที และเสียงในอนาคต 3.3 วินาทีสำหรับการคาดการณ์
เพื่อป้องกันการลอยของออฟเซ็ตระหว่างการสร้างที่ยาวนาน ได้มีการเพิ่มออฟเซ็ตแบบสุ่มไปยังอีเวนต์เวลาในดีโคเดอร์ระหว่างการฝึก สิ่งนี้บังคับให้โมเดลแก้ไขข้อผิดพลาดของเวลาโดยการฟังออนเซ็ตในเสียงแทน ซึ่งส่งผลให้ได้ออฟเซ็ตที่แม่นยำอย่างสม่ำเสมอ
พิกัดที่ขัดเกลาด้วย diffusion
พิกัดตำแหน่งที่สร้างโดยดีโคเดอร์จะถูกควอนไทซ์ไปยังจุดกริด 32 พิกเซล ดังนั้นหลังจากนั้นเราจะใช้ diffusion เพื่อลดสัญญาณรบกวนของพิกัดให้ได้ตำแหน่งสุดท้าย สำหรับสิ่งนี้ เราได้ฝึกฝนเวอร์ชันดัดแปลงของ osu-diffusion ที่เชี่ยวชาญเฉพาะ 10% สุดท้ายของกำหนดการ noise และรับโทเคน metadata ขั้นสูงที่ Mapperatorinator ใช้สำหรับการสร้างแบบมีเงื่อนไข
เนื่องจากโมเดล Mapperatorinator ให้เอาต์พุตค่า SV ของ slider ความยาวที่จำเป็นของ slider จะถูกกำหนดคงที่ไม่ว่าเส้นทางจุดควบคุมจะมีรูปร่างอย่างไร ดังนั้นเราจึงพยายามนำทางกระบวนการ diffusion เพื่อสร้างพิกัดที่ตรงกับความยาว slider ที่ต้องการ เราทำสิ่งนี้โดยคำนวณตำแหน่งปลาย slider ใหม่หลังจากแต่ละขั้นตอนของกระบวนการ diffusion ตามความยาวที่ต้องการและเส้นทางจุดควบคุมปัจจุบัน ซึ่งหมายความว่ากระบวนการ diffusion จะไม่สามารถควบคุมตำแหน่งปลาย slider ได้โดยตรง แต่ก็ยังสามารถมีอิทธิพลต่อมันได้โดยการเปลี่ยนเส้นทางจุดควบคุม
การประมวลผลหลัง
Mapperatorinator ทำการประมวลผลหลังเพิ่มเติมเพื่อปรับปรุงคุณภาพของบีทแมปที่สร้างขึ้น:
- ขัดเกลาพิกัดตำแหน่งด้วย diffusion
- รีสแนปอีเวนต์เวลาไปยังติ๊กที่ใกล้ที่สุดโดยใช้ snap divisors ที่โมเดลสร้างขึ้น
- สแนปกรณีตำแหน่งทับกันเกือบสมบูรณ์
- แปลงอีเวนต์คอลัมน์ mania เป็นพิกัด X
- สร้างเส้น slider สำหรับ taiko drumrolls
- แก้ไขความแตกต่างใหญ่ระหว่างความยาว slider ที่ต้องการกับความยาวเส้นทางจุดควบคุม
ตัวสร้าง Super timing
Super timing generator เป็นอัลกอริธึมที่ช่วยปรับปรุงความแม่นยำของเวลาโดยการอนุมานเวลาทั้งเพลง 20 ครั้งและเฉลี่ยผลลัพธ์ สิ่งนี้มีประโยชน์กับเพลงที่มี BPM แปรผัน หรือเพลงที่มีการเปลี่ยน BPM ผลลัพธ์ที่ได้จะเกือบสมบูรณ์แบบโดยบางครั้งอาจมีบางช่วงที่ต้องปรับด้วยตนเอง
การฝึกฝน
คำแนะนำด้านล่างนี้จะสร้างสภาพแวดล้อมการฝึกบนเครื่องของคุณ
1. โคลน repository
git clone https://github.com/OliBomby/Mapperatorinator.git
cd Mapperatorinator2. สร้างชุดข้อมูล
สร้างชุดข้อมูลของคุณเองโดยใช้ แอปคอนโซล Mapperator ซึ่งต้องใช้ โทเคน OAuth ของ osu! เพื่อยืนยันบีตแมพและรับข้อมูลเมตาเพิ่มเติม ให้วางชุดข้อมูลไว้ในไดเรกทอรี datasets ข้างๆ ไดเรกทอรี Mapperatorinator
Mapperator.ConsoleApp.exe dataset2 -t "/Mapperatorinator/datasets/beatmap_descriptors.csv" -i "path/to/osz/files" -o "/datasets/cool_dataset"3. (ไม่บังคับ) ตั้งค่า Weight & Biases สำหรับการบันทึกข้อมูล
สร้างบัญชีบน Weight & Biases และรับ API key จากการตั้งค่าบัญชีของคุณ จากนั้นตั้งค่าตัวแปรสภาพแวดล้อมWANDB_API_KEY เพื่อให้กระบวนการฝึกสอนทราบว่าจะบันทึกข้อมูลไปยังคีย์นี้export WANDB_API_KEY=4. สร้างคอนเทนเนอร์ Docker
การฝึกใน venv ของคุณก็สามารถทำได้เช่นกัน แต่เราแนะนำให้ใช้ Docker บน WSL เพื่อประสิทธิภาพที่ดีกว่าdocker compose up -d --force-recreate
docker attach mapperatorinator_space
cd Mapperatorinator5. กำหนดค่าพารามิเตอร์และเริ่มการฝึกสอน
การกำหนดค่าทั้งหมดอยู่ใน ./configs/train/default.yaml
โปรดตรวจสอบให้แน่ใจว่าได้ตั้งค่า train_dataset_path และ test_dataset_path ให้ตรงกับชุดข้อมูลของคุณ รวมถึงดัชนี mapset เริ่มต้นและสิ้นสุดสำหรับการแบ่งชุดฝึก/ทดสอบ
เส้นทางจะเป็นแบบ local ใน docker container ดังนั้นหากคุณวางชุดข้อมูลชื่อ cool_dataset ไว้ในไดเรกทอรี datasets เส้นทางควรเป็น /workspace/datasets/cool_dataset
ขอแนะนำให้สร้างไฟล์ config แบบกำหนดเองที่ override ค่า config หลัก เพื่อให้คุณมีบันทึกการตั้งค่าการฝึกสอนสำหรับการทำซ้ำผลลัพธ์
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=1006. การปรับแต่งแบบ 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: ตัวคูณสำหรับอัปเดต LoRAtotal_steps: จำนวนขั้นตอนการเทรนทั้งหมด ควรปรับสมดุลตามขนาดชุดข้อมูลของคุณenable_lora: จะใช้ LoRA หรือปรับจูนโมเดลเต็ม
lora_path
โดยอาจเป็นเส้นทางในเครื่องหรือรีโป Hugging Face ก็ได้ดูเพิ่มเติม
เครดิต
ขอขอบคุณเป็นพิเศษแก่:
- ผู้เขียน osuT5 สำหรับโค้ดการฝึกสอน
- ทีมงาน Hugging Face สำหรับ เครื่องมือ ต่าง ๆ
- Jason Won และ Richard Nagyfi สำหรับการแลกเปลี่ยนไอเดีย
- Marvin สำหรับการบริจาคเครดิตการฝึกสอน
- ชุมชน osu! สำหรับ beatmaps
ผลงานที่เกี่ยวข้อง
- 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)