Spaces:
Running
Running
| # ACE-Step 1.5 LoRA ํ์ต ํํ ๋ฆฌ์ผ | |
| ## ํ๋์จ์ด ์๊ตฌ์ฌํญ | |
| | VRAM | ์ค๋ช | | |
| |------|------| | |
| | 16 GB (์ต์) | ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋, ๊ธด ๊ณก์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ด ๋ฐ์ํ ์ ์์ต๋๋ค | | |
| | 20 GB ์ด์ (๊ถ์ฅ) | ์ ์ฒด ๊ธธ์ด์ ๊ณก์ ์ฒ๋ฆฌ ๊ฐ๋ฅ. ํ์ต ์ค VRAM ์ฌ์ฉ๋์ ๋ณดํต 17 GB ์์ค์ ๋๋ค | | |
| > **์ฐธ๊ณ :** ํ์ต ์์ ์ ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ VRAM์ ํ๋ณดํ๊ธฐ ์ํด Gradio๋ฅผ ์ฌ๋ฌ ๋ฒ ์ฌ์์ํด์ผ ํ ์ ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ธ ์์ ์ ์ดํ ๋จ๊ณ์์ ์๋ดํฉ๋๋ค. | |
| ## ๋ฉด์ฑ ์กฐํญ | |
| ๋ณธ ํํ ๋ฆฌ์ผ์ **๋์ ํ์ฑ์ธ (NayutalieN)** ์ ์จ๋ฒ *ใใฆใฟใณๆใใใฎ็ฉไฝY* (์ด 13๊ณก)์ ๋ฐ๋ชจ๋ก ์ฌ์ฉํ๋ฉฐ, 500 ์ํฌํฌ(๋ฐฐ์น ์ฌ์ด์ฆ 1)๋ก ํ์ตํ์ต๋๋ค. **๋ณธ ํํ ๋ฆฌ์ผ์ LoRA ํ์ธํ๋ ๊ธฐ์ ์ ์ดํดํ๊ธฐ ์ํ ๊ต์ก ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. ์์ ์ ์์์ผ๋ก LoRA๋ฅผ ํ์ตํด ์ฃผ์ธ์.** | |
| ๊ฐ๋ฐ์๋ก์ ๋์ ํ์ฑ์ธ์ ์ํ์ ๋งค์ฐ ์ข์ํ์ฌ ์จ๋ฒ ํ๋๋ฅผ ์์๋ก ์ ํํ์ต๋๋ค. ๊ถ๋ฆฌ ๋ณด์ ์๋ถ๊ป์ ๋ณธ ํํ ๋ฆฌ์ผ์ด ํฉ๋ฒ์ ์ธ ๊ถ๋ฆฌ๋ฅผ ์นจํดํ๋ค๊ณ ํ๋จํ์๋ฉด ์ฆ์ ์ฐ๋ฝ ์ฃผ์ธ์. ์ ํจํ ํต์ง๋ฅผ ๋ฐ์ ํ ๊ด๋ จ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํ๊ฒ ์ต๋๋ค. | |
| ๊ธฐ์ ์ ํฉ๋ฆฌ์ ์ด๊ณ ํฉ๋ฒ์ ์ผ๋ก ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค. ์ํฐ์คํธ์ ์ฐฝ์๋ฌผ์ ์กด์คํ๊ณ , ์์ ์ํฐ์คํธ์ ๋ช ์, ๊ถ๋ฆฌ ๋๋ ์ด์ต์ **์์์ํค๊ฑฐ๋ ํด์น๋** ํ์๋ฅผ ํ์ง ๋ง์ธ์. | |
| --- | |
| ## ๋ฐ์ดํฐ ์ค๋น | |
| > **ํ:** ํ๋ก๊ทธ๋๋ฐ์ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ, ์ด ๋ฌธ์๋ฅผ Claude Code / Codex CLI / Cursor / Copilot ๋ฑ์ AI ์ฝ๋ฉ ๋๊ตฌ์ ์ ๋ฌํ์ฌ ์์ ์ ๋์ ์ํํ๊ฒ ํ ์ ์์ต๋๋ค. | |
| ### ๊ฐ์ | |
| ๊ฐ ๊ณก์ ํ์ต ๋ฐ์ดํฐ๋ ๋ค์ ํญ๋ชฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค: | |
| 1. **์ค๋์ค ํ์ผ** โ `.mp3`, `.wav`, `.flac`, `.ogg`, `.opus` ํ์ ์ง์ | |
| 2. **๊ฐ์ฌ** โ ์ค๋์ค์ ๋์ผํ ์ด๋ฆ์ `.lyrics.txt` ํ์ผ (ํ์ ํธํ์ ์ํด `.txt`๋ ์ง์) | |
| 3. **์ด๋ ธํ ์ด์ ๋ฐ์ดํฐ** โ `caption`, `bpm`, `keyscale`, `timesignature`, `language` ๋ฑ์ ๋ฉํ๋ฐ์ดํฐ | |
| ### ์ด๋ ธํ ์ด์ ๋ฐ์ดํฐ ํ์ | |
| ์์ ํ ์ด๋ ธํ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ๊ณ ์๋ค๋ฉด, JSON ํ์ผ์ ์์ฑํ์ฌ ์ค๋์ค ๋ฐ ๊ฐ์ฌ์ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ํ์ผ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: | |
| ``` | |
| dataset/ | |
| โโโ song1.mp3 # ์ค๋์ค | |
| โโโ song1.lyrics.txt # ๊ฐ์ฌ | |
| โโโ song1.json # ์ด๋ ธํ ์ด์ (์ ํ) | |
| โโโ song1.caption.txt # ์บก์ (์ ํ, JSON์ ํฌํจํ ์๋ ์์) | |
| โโโ song2.mp3 | |
| โโโ song2.lyrics.txt | |
| โโโ song2.json | |
| โโโ ... | |
| ``` | |
| JSON ํ์ผ ๊ตฌ์กฐ (๋ชจ๋ ํ๋๋ ์ ํ ์ฌํญ): | |
| ```json | |
| { | |
| "caption": "A high-energy J-pop track with synthesizer leads and fast tempo", | |
| "bpm": 190, | |
| "keyscale": "D major", | |
| "timesignature": "4", | |
| "language": "ja" | |
| } | |
| ``` | |
| ์ด๋ ธํ ์ด์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ, ์ดํ ์น์ ์์ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ทจ๋ํ ์ ์์ต๋๋ค. | |
| --- | |
| ### ๊ฐ์ฌ | |
| ๊ฐ์ฌ๋ฅผ ์ค๋์ค ํ์ผ๊ณผ ๋์ผํ ์ด๋ฆ์ `.lyrics.txt` ํ์ผ๋ก ์ ์ฅํ๊ณ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์นํ์ธ์. ๊ฐ์ฌ์ ์ ํ์ฑ์ ํ์ธํด ์ฃผ์ธ์. | |
| ์ค์บ ์ ๊ฐ์ฌ ํ์ผ ๊ฒ์ ์ฐ์ ์์: | |
| 1. `{ํ์ผ๋ช }.lyrics.txt` (๊ถ์ฅ) | |
| 2. `{ํ์ผ๋ช }.txt` (ํ์ ํธํ) | |
| #### ๊ฐ์ฌ ์ ์ฌ | |
| ๊ธฐ์กด ๊ฐ์ฌ ํ ์คํธ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌํ ์ ์์ต๋๋ค: | |
| | ๋๊ตฌ | ๊ตฌ์กฐํ ํ๊ทธ | ์ ํ๋ | ์ฌ์ฉ ๋์ด๋ | ๋ฐฐํฌ ๋ฐฉ์ | | |
| |------|-----------|--------|-----------|----------| | |
| | [acestep-transcriber](https://huggingface.co/ACE-Step/acestep-transcriber) | ์์ | ์ค๋ฅ ๊ฐ๋ฅ์ฑ ์์ | ๋์ (๋ชจ๋ธ ๋ฐฐํฌ ํ์) | ์์ฒด ํธ์คํ | | |
| | [Gemini](https://aistudio.google.com/) | ์์ | ์ค๋ฅ ๊ฐ๋ฅ์ฑ ์์ | ๋ฎ์ | ์ ๋ฃ API | | |
| | [Whisper](https://github.com/openai/whisper) | ์์ | ์ค๋ฅ ๊ฐ๋ฅ์ฑ ์์ | ๋ณดํต | ์์ฒด ํธ์คํ / ์ ๋ฃ API | | |
| | [ElevenLabs](https://elevenlabs.io/app/developers) | ์์ | ์ค๋ฅ ๊ฐ๋ฅ์ฑ ์์ | ๋ณดํต | ์ ๋ฃ API (๋ฌด๋ฃ ํฌ๋ ๋ง ์ ๊ณต) | | |
| ๋ณธ ํ๋ก์ ํธ๋ `scripts/lora_data_prepare/`์ ํด๋น ์ ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํฉ๋๋ค: | |
| - `whisper_transcription.py` โ OpenAI Whisper API๋ฅผ ํตํ ์ ์ฌ | |
| - `elevenlabs_transcription.py` โ ElevenLabs Scribe API๋ฅผ ํตํ ์ ์ฌ | |
| ๋ ์คํฌ๋ฆฝํธ ๋ชจ๋ `process_folder()` ๋ฉ์๋๋ฅผ ํตํ ํด๋ ์ผ๊ด ์ฒ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. | |
| #### ๊ฒํ ๋ฐ ์ ์ (ํ์) | |
| ์ ์ฌ๋ ๊ฐ์ฌ์๋ ์ค๋ฅ๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ, **๋ฐ๋์ ์๋์ผ๋ก ๊ฒํ ํ๊ณ ์์ ํด์ผ ํฉ๋๋ค**. | |
| LRC ํ์์ ๊ฐ์ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํ์์คํฌํ๋ฅผ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ๋ค์์ ๊ฐ๋จํ ์ ์ ์์์ ๋๋ค: | |
| ```python | |
| import re | |
| def clean_lrc_content(lines): | |
| """LRC ํ์ผ ๋ด์ฉ์ ์ ์ ํ๊ณ ํ์์คํฌํ๋ฅผ ์ ๊ฑฐ""" | |
| result = [] | |
| for line in lines: | |
| line = line.strip() | |
| if not line: | |
| continue | |
| # ํ์์คํฌํ ์ ๊ฑฐ [mm:ss.x] [mm:ss.xx] [mm:ss.xxx] | |
| cleaned = re.sub(r"\[\d{2}:\d{2}\.\d{1,3}\]", "", line) | |
| result.append(cleaned) | |
| # ๋๋ถ๋ถ ๋น ์ค ์ ๊ฑฐ | |
| while result and not result[-1]: | |
| result.pop() | |
| return result | |
| ``` | |
| #### ๊ตฌ์กฐํ ํ๊ทธ (์ ํ) | |
| ๊ฐ์ฌ์ ๊ตฌ์กฐํ ํ๊ทธ(`[Verse]`, `[Chorus]` ๋ฑ)๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด, ๋ชจ๋ธ์ด ๊ณก์ ๊ตฌ์กฐ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ํ์ตํ ์ ์์ต๋๋ค. ๊ตฌ์กฐํ ํ๊ทธ ์์ด๋ ์ ์์ ์ผ๋ก ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค. | |
| > **ํ:** [Gemini](https://aistudio.google.com/)๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๊ฐ์ฌ์ ๊ตฌ์กฐํ ํ๊ทธ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. | |
| ์์: | |
| ``` | |
| [Intro] | |
| La la la... | |
| [Verse 1] | |
| Walking down the empty street | |
| Echoes dancing at my feet | |
| [Chorus] | |
| We are the stars tonight | |
| Shining through the endless sky | |
| [Bridge] | |
| Close your eyes and feel the sound | |
| ``` | |
| --- | |
| ### ์๋ ์ด๋ ธํ ์ด์ | |
| #### 1. BPM ๋ฐ Key ์ทจ๋ | |
| [Key-BPM-Finder](https://vocalremover.org/key-bpm-finder)๋ฅผ ์ฌ์ฉํ์ฌ BPM๊ณผ ํค ์ด๋ ธํ ์ด์ ์ ์จ๋ผ์ธ์ผ๋ก ์ทจ๋ํฉ๋๋ค: | |
| 1. ์น ํ์ด์ง๋ฅผ ์ด๊ณ **Browse my files**๋ฅผ ํด๋ฆญํ์ฌ ์ฒ๋ฆฌํ ์ค๋์ค ํ์ผ์ ์ ํํฉ๋๋ค (ํ ๋ฒ์ ๋๋ฌด ๋ง์ด ์ฒ๋ฆฌํ๋ฉด ๋ฉ์ถ ์ ์์ผ๋ฏ๋ก, ๋ถํ ์ฒ๋ฆฌ ํ CSV๋ฅผ ๋ณํฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค). ์ฒ๋ฆฌ๋ ๋ก์ปฌ์์ ์ํ๋๋ฉฐ ์๋ฒ์ ์ ๋ก๋๋์ง ์์ต๋๋ค. | |
|  | |
| 2. ์ฒ๋ฆฌ ์๋ฃ ํ, **Export CSV**๋ฅผ ํด๋ฆญํ์ฌ CSV ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค. | |
|  | |
| 3. CSV ํ์ผ ๋ด์ฉ ์์: | |
| ```csv | |
| File,Artist,Title,BPM,Key,Camelot | |
| song1.wav,,,190,D major,10B | |
| song2.wav,,,128,A minor,8A | |
| ``` | |
| 4. CSV ํ์ผ์ ๋ฐ์ดํฐ์ ํด๋์ ๋ฐฐ์นํฉ๋๋ค. ์บก์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด `Camelot` ์ด ๋ค์ ์ ์ด์ ์ถ๊ฐํ์ธ์. | |
| #### 2. Caption ์ทจ๋ | |
| ๋ค์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณก์ ์บก์ ์ ์ทจ๋ํ ์ ์์ต๋๋ค: | |
| - **acestep-5Hz-lm ์ฌ์ฉ** (0.6B / 1.7B / 4B) โ Gradio UI์ Auto Label ๊ธฐ๋ฅ์์ ํธ์ถ (์ดํ ๋จ๊ณ ์ฐธ์กฐ) | |
| - **Gemini API ์ฌ์ฉ** โ ์คํฌ๋ฆฝํธ `scripts/lora_data_prepare/gemini_caption.py`๋ฅผ ์ฐธ์กฐ. `process_folder()`๋ก ์ผ๊ด ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ฉฐ, ๊ฐ ์ค๋์ค ํ์ผ์ ๋ํด ๋ค์์ ์์ฑํฉ๋๋ค: | |
| - `{ํ์ผ๋ช }.lyrics.txt` โ ๊ฐ์ฌ | |
| - `{ํ์ผ๋ช }.caption.txt` โ ์บก์ ์ค๋ช | |
| --- | |
| ## ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ | |
| ๋ฐ์ดํฐ๊ฐ ์ค๋น๋๋ฉด Gradio UI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ฒํ ๋ฐ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. | |
| > **์ค์:** ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์๋น์ค ์ฌ์ ์ด๊ธฐํ๋ฅผ ๋นํ์ฑํํ๋๋ก ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์์ ํด์ผ ํฉ๋๋ค: | |
| > | |
| > - **Windows** (`start_gradio_ui.bat`): `if not defined INIT_SERVICE set INIT_SERVICE=--init_service true`๋ฅผ `if not defined INIT_SERVICE set INIT_SERVICE=--init_service false`๋ก ๋ณ๊ฒฝ | |
| > - **Linux/macOS** (`start_gradio_ui.sh`): `: "${INIT_SERVICE:=--init_service true}"`๋ฅผ `: "${INIT_SERVICE:=--init_service false}"`๋ก ๋ณ๊ฒฝ | |
| Gradio UI๋ฅผ ์์ํฉ๋๋ค (์์ ์คํฌ๋ฆฝํธ ๋๋ `acestep/acestep_v15_pipeline.py` ์ง์ ์คํ). | |
| ### ๋จ๊ณ 1: ๋ชจ๋ธ ๋ก๋ | |
| - **LM์ผ๋ก ์บก์ ์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ:** ์ด๊ธฐํ ์ ์ฌ์ฉํ LM ๋ชจ๋ธ(acestep-5Hz-lm-0.6B / 1.7B / 4B)์ ์ ํํฉ๋๋ค. | |
|  | |
| - **LM์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ:** LM ๋ชจ๋ธ์ ์ ํํ์ง ๋ง์ธ์. | |
|  | |
| ### ๋จ๊ณ 2: ๋ฐ์ดํฐ ๋ก๋ | |
| **LoRA Training** ํญ์ผ๋ก ์ ํํ๊ณ , ๋ฐ์ดํฐ์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ ํ **Scan**์ ํด๋ฆญํฉ๋๋ค. | |
| ์ค์บ๋๋ ๋ค์ ํ์ผ์ ์๋์ผ๋ก ์ธ์ํฉ๋๋ค: | |
| | ํ์ผ | ์ค๋ช | | |
| |------|------| | |
| | `*.mp3` / `*.wav` / `*.flac` / ... | ์ค๋์ค ํ์ผ | | |
| | `{ํ์ผ๋ช }.lyrics.txt` (๋๋ `{ํ์ผ๋ช }.txt`) | ๊ฐ์ฌ | | |
| | `{ํ์ผ๋ช }.caption.txt` | ์บก์ ์ค๋ช | | |
| | `{ํ์ผ๋ช }.json` | ์ด๋ ธํ ์ด์ ๋ฉํ๋ฐ์ดํฐ (caption / bpm / keyscale / timesignature / language) | | |
| | `*.csv` | BPM / Key ์ผ๊ด ์ด๋ ธํ ์ด์ (Key-BPM-Finder์์ ๋ด๋ณด๋ด๊ธฐ) | | |
|  | |
| ### ๋จ๊ณ 3: ๋ฐ์ดํฐ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ์กฐ์ | |
| - **Duration** โ ์ค๋์ค ํ์ผ์์ ์๋์ผ๋ก ์ฝ๊ธฐ | |
| - **Lyrics** โ ๋์ผํ ์ด๋ฆ์ `.lyrics.txt` ํ์ผ์ด ํ์ (`.txt`๋ ์ง์) | |
| - **Labeled** โ ์บก์ ์ด ์์ผ๋ฉด โ , ์์ผ๋ฉด โ๋ก ํ์ | |
| - **BPM / Key / Caption** โ JSON ๋๋ CSV ํ์ผ์์ ๋ก๋ | |
| - ๋ฐ์ดํฐ์ ์ด ๋ชจ๋ ์ธ์คํธ๋ฃจ๋ฉํ์ด ์๋ ๊ฒฝ์ฐ, **All Instrumental** ์ฒดํฌ๋ฅผ ํด์ ํ์ธ์ | |
| - **Format Lyrics** ๋ฐ **Transcribe Lyrics** ๊ธฐ๋ฅ์ ํ์ฌ ๋นํ์ฑํ ์ํ์ ๋๋ค ([acestep-transcriber](https://huggingface.co/ACE-Step/acestep-transcriber) ๋ฏธ์ฐ๋์ผ๋ก ์ธํด LM ์ง์ ์ฌ์ฉ ์ ํ๊ฐ ๋ฐ์ ๊ฐ๋ฅ) | |
| - **Custom Trigger Tag**๋ฅผ ์ ๋ ฅํ์ธ์ (ํ์ฌ ํจ๊ณผ๊ฐ ์ ํ์ ์ด๋ฉฐ, `Replace Caption` ์ด์ธ์ ์ต์ ์ด๋ฉด ๊ด์ฐฎ์ต๋๋ค) | |
| - **Genre Ratio**๋ ์บก์ ๋์ ์ฅ๋ฅด๋ฅผ ์ฌ์ฉํ๋ ์ํ ๋น์จ์ ์ ์ดํฉ๋๋ค. ํ์ฌ LM์ด ์์ฑํ๋ ์ฅ๋ฅด ์ค๋ช ์ ์บก์ ์ ๋นํด ๋ถ์กฑํ๋ฏ๋ก 0์ผ๋ก ์ ์งํ์ธ์ | |
|  | |
| ### ๋จ๊ณ 4: Auto Label Data | |
| - ์ด๋ฏธ ์บก์ ์ด ์๋ ๊ฒฝ์ฐ, ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค | |
| - ๋ฐ์ดํฐ์ ์บก์ ์ด ์๋ ๊ฒฝ์ฐ, LM ์ถ๋ก ์ ํตํด ์์ฑํ ์ ์์ต๋๋ค | |
| - BPM / Key ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ๋จผ์ [Key-BPM-Finder](https://vocalremover.org/key-bpm-finder)๋ก ์ทจ๋ํ์ธ์. LM์ผ๋ก ์ง์ ์์ฑํ๋ฉด ํ๊ฐ์ด ๋ฐ์ํฉ๋๋ค | |
|  | |
| ### ๋จ๊ณ 5: ๋ฐ์ดํฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ ํธ์ง | |
| ํ์ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ํญ๋ชฉ๋ณ๋ก ๊ฒํ ํ๊ณ ์์ ํ ์ ์์ต๋๋ค. **๊ฐ ๋ฐ์ดํฐ ํธ์ง ํ ๋ฐ๋์ ์ ์ฅ์ ํด๋ฆญํ์ธ์.** | |
|  | |
| ### ๋จ๊ณ 6: ๋ฐ์ดํฐ์ ์ ์ฅ | |
| ์ ์ฅ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๊ณ ๋ฐ์ดํฐ์ ์ JSON ํ์ผ๋ก ์ ์ฅํฉ๋๋ค. | |
|  | |
| ### ๋จ๊ณ 7: ์ ์ฒ๋ฆฌ๋ฅผ ํตํ Tensor ํ์ผ ์์ฑ | |
| > **์ฃผ์:** ์ด์ ์ LM์ผ๋ก ์บก์ ์ ์์ฑํ๊ณ VRAM์ด ๋ถ์กฑํ ๊ฒฝ์ฐ, ๋จผ์ Gradio๋ฅผ ์ฌ์์ํ์ฌ VRAM์ ํ๋ณดํ์ธ์. ์ฌ์์ ์ **LM ๋ชจ๋ธ์ ์ ํํ์ง ๋ง์ธ์**. ๏ฟฝ๏ฟฝ์์ ํ, ์ ์ฅ๋ JSON ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๊ณ ๋ก๋ํฉ๋๋ค. | |
| Tensor ํ์ผ ์ ์ฅ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๊ณ ์ ์ฒ๋ฆฌ๋ฅผ ์์ํ ํ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. | |
|  | |
| --- | |
| ## ํ์ต | |
| > **์ฃผ์:** Tensor ํ์ผ ์์ฑ ํ์๋ VRAM์ ํ๋ณดํ๊ธฐ ์ํด Gradio๋ฅผ ์ฌ์์ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. | |
| 1. **Train LoRA** ํญ์ผ๋ก ์ ํํ๊ณ , Tensor ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ฌ ๋ฐ์ดํฐ์ ์ ๋ก๋ํฉ๋๋ค. | |
| 2. ํ์ต ํ๋ผ๋ฏธํฐ์ ์ต์ํ์ง ์์ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. | |
| ### ํ๋ผ๋ฏธํฐ ์ฐธ๊ณ | |
| | ํ๋ผ๋ฏธํฐ | ์ค๋ช | ๊ถ์ฅ๊ฐ | | |
| |---------|------|--------| | |
| | **Max Epochs** | ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์กฐ์ | ์ฝ 100๊ณก โ 500 ์ํฌํฌ; 10โ20๊ณก โ 800 ์ํฌํฌ (์ฐธ๊ณ ์ฉ) | | |
| | **Batch Size** | VRAM์ด ์ถฉ๋ถํ๋ฉด ์ฆ๊ฐ ๊ฐ๋ฅ | 1 (๊ธฐ๋ณธ๊ฐ), VRAM์ด ์ถฉ๋ถํ๋ฉด 2 ๋๋ 4 | | |
| | **Save Every N Epochs** | ์ฒดํฌํฌ์ธํธ ์ ์ฅ ๊ฐ๊ฒฉ | Max Epochs๊ฐ ์์ผ๋ฉด ์งง๊ฒ, ํฌ๋ฉด ๊ธธ๊ฒ ์ค์ | | |
| > ์ ์์น๋ ์ฐธ๊ณ ์ฉ์ ๋๋ค. ์ค์ ์ํฉ์ ๋ง๊ฒ ์กฐ์ ํด ์ฃผ์ธ์. | |
| 3. **Start Training**์ ํด๋ฆญํ๊ณ ํ์ต ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. | |
|  | |
| --- | |
| ## LoRA ์ฌ์ฉ | |
| 1. ํ์ต ์๋ฃ ํ **Gradio๋ฅผ ์ฌ์์**ํ๊ณ ๋ชจ๋ธ์ ๋ค์ ๋ก๋ํฉ๋๋ค (LM ๋ชจ๋ธ์ ์ ํํ์ง ๋ง์ธ์). | |
| 2. ๋ชจ๋ธ ์ด๊ธฐํ ์๋ฃ ํ, ํ์ต๋ LoRA ๊ฐ์ค์น๋ฅผ ๋ก๋ํฉ๋๋ค. | |
|  | |
| 3. ์์ ์์ฑ์ ์์ํฉ๋๋ค. | |
| ์ถํํฉ๋๋ค! LoRA ํ์ต์ ์ ์ฒด ๊ณผ์ ์ ์๋ฃํ์ต๋๋ค. | |
| --- | |
| ## ๊ณ ๊ธ ํ์ต: Side-Step | |
| LoRA ํ์ต์ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ๊ณ ์ถ๋ค๋ฉด โ ์์ ๋ ํ์์คํ ์ํ๋ง, LoKR ์ด๋ํฐ, CLI ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ, VRAM ์ต์ ํ, ๊ทธ๋๋์ธํธ ๊ฐ๋ ๋ถ์ ๋ฑ โ ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐํ **[Side-Step](https://github.com/koda-dernet/Side-Step)** ํดํท์ด ๊ณ ๊ธ ๋์์ ์ ๊ณตํฉ๋๋ค. ๋ฌธ์๋ ์ด ์ ์ฅ์์ `docs/sidestep/` ๋๋ ํ ๋ฆฌ์ ํฌํจ๋์ด ์์ต๋๋ค. | |
| | ์ฃผ์ | ์ค๋ช | | |
| |------|------| | |
| | [Getting Started](../sidestep/Getting%20Started.md) | ์ค์น, ์ฌ์ ์๊ตฌ์ฌํญ, ์ฒซ ์คํ ์ค์ | | |
| | [End-to-End Tutorial](../sidestep/End-to-End%20Tutorial.md) | ์๋ณธ ์ค๋์ค์์ ์์ฑ๊น์ง ์ ์ฒด ๊ณผ์ ์๋ด | | |
| | [Dataset Preparation](../sidestep/Dataset%20Preparation.md) | JSON ์คํค๋ง, ์ค๋์ค ํ์, ๋ฉํ๋ฐ์ดํฐ ํ๋, ์ปค์คํ ํ๊ทธ | | |
| | [Training Guide](../sidestep/Training%20Guide.md) | LoRA vs LoKR, ์์ ๋ชจ๋ vs ๋ฐ๋๋ผ ๋ชจ๋, ํ์ดํผํ๋ผ๋ฏธํฐ ๊ฐ์ด๋ | | |
| | [Using Your Adapter](../sidestep/Using%20Your%20Adapter.md) | ์ถ๋ ฅ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ, Gradio์์ ๋ก๋, LoKR ์ ํ์ฌํญ | | |
| | [VRAM Optimization Guide](../sidestep/VRAM%20Optimization%20Guide.md) | VRAM ์ต์ ํ ์ ๋ต ๋ฐ GPU ํฐ์ด๋ณ ์ค์ | | |
| | [Estimation Guide](../sidestep/Estimation%20Guide.md) | ํ๊ฒ ํ์ต์ ์ํ ๊ทธ๋๋์ธํธ ๊ฐ๋ ๋ถ์ | | |
| | [Shift and Timestep Sampling](../sidestep/Shift%20and%20Timestep%20Sampling.md) | ํ์ต ํ์์คํ ์๋ ์๋ฆฌ์ Side-Step์ ์ฐจ์ด์ | | |
| | [Preset Management](../sidestep/Preset%20Management.md) | ๋ด์ฅ ํ๋ฆฌ์ , ์ ์ฅ/๋ก๋/๊ฐ์ ธ์ค๊ธฐ/๋ด๋ณด๋ด๊ธฐ | | |
| | [The Settings Wizard](../sidestep/The%20Settings%20Wizard.md) | ์์๋ ์ค์ ์ ์ฒด ์ฐธ์กฐ | | |
| | [Model Management](../sidestep/Model%20Management.md) | ์ฒดํฌํฌ์ธํธ ๊ตฌ์กฐ ๋ฐ ํ์ธํ๋ ๋ชจ๋ธ ์ง์ | | |
| | [Windows Notes](../sidestep/Windows%20Notes.md) | Windows ์ ์ฉ ์ค์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ | | |