Spaces:
Running
Running
| # GPU ํธํ์ฑ ๊ฐ์ด๋ | |
| ACE-Step 1.5๋ GPU์ ์ฌ์ฉ ๊ฐ๋ฅํ VRAM์ ์๋์ผ๋ก ์ ์ํ์ฌ ์์ฑ ์ ํ, LM ๋ชจ๋ธ ๊ฐ์ฉ์ฑ, ์คํ๋ก๋ ์ ๋ต ๋ฐ UI ๊ธฐ๋ณธ ์ค์ ์ ์ ์ ํ ์กฐ์ ํฉ๋๋ค. ์์คํ ์ ์์ ์ GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์งํ๊ณ ์ต์ ์ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค. | |
| ## GPU ํฐ์ด ๊ตฌ์ฑ | |
| | VRAM | ํฐ์ด | LM ๋ชจ๋ธ | ์ถ์ฒ LM | ๋ฐฑ์๋ | ์ต๋ ๊ธธ์ด (LM ์ฌ์ฉ / ๋ฏธ์ฌ์ฉ) | ์ต๋ ๋ฐฐ์น (LM ์ฌ์ฉ / ๋ฏธ์ฌ์ฉ) | ์คํ๋ก๋ | ์์ํ | | |
| |------|------|---------|---------|--------|------------------------------|------------------------------|----------|--------| | |
| | โค4GB | ํฐ์ด 1 | ์์ | โ | pt | 4๋ถ / 6๋ถ | 1 / 1 | CPU + DiT | INT8 | | |
| | 4-6GB | ํฐ์ด 2 | ์์ | โ | pt | 8๋ถ / 10๋ถ | 1 / 1 | CPU + DiT | INT8 | | |
| | 6-8GB | ํฐ์ด 3 | 0.6B | 0.6B | pt | 8๋ถ / 10๋ถ | 1 / 2 | CPU + DiT | INT8 | | |
| | 8-12GB | ํฐ์ด 4 | 0.6B | 0.6B | vllm | 8๋ถ / 10๋ถ | 2 / 4 | CPU + DiT | INT8 | | |
| | 12-16GB | ํฐ์ด 5 | 0.6B, 1.7B | 1.7B | vllm | 8๋ถ / 10๋ถ | 2 / 4 | CPU | INT8 | | |
| | 16-20GB | ํฐ์ด 6a | 0.6B, 1.7B | 1.7B | vllm | 8๋ถ / 10๋ถ | 4 / 8 | CPU | INT8 | | |
| | 20-24GB | ํฐ์ด 6b | 0.6B, 1.7B, 4B | 1.7B | vllm | 8๋ถ / 8๋ถ | 4 / 8 | ์์ | ์์ | | |
| | โฅ24GB | ์ ํ ์์ | ์ ์ฒด (0.6B, 1.7B, 4B) | 4B | vllm | 10๋ถ / 10๋ถ | 8 / 8 | ์์ | ์์ | | |
| ### ์ด ์ค๋ช | |
| - **LM ๋ชจ๋ธ**: ํด๋น ํฐ์ด์์ ๋ก๋ํ ์ ์๋ 5Hz ์ธ์ด ๋ชจ๋ธ ํฌ๊ธฐ | |
| - **์ถ์ฒ LM**: UI์์ ํด๋น ํฐ์ด์ ๊ธฐ๋ณธ ์ ํ๋๋ LM ๋ชจ๋ธ | |
| - **๋ฐฑ์๋**: LM ์ถ๋ก ๋ฐฑ์๋ (`vllm`์ ์ถฉ๋ถํ VRAM์ ๊ฐ์ง NVIDIA GPU์ฉ, `pt`๋ PyTorch ๋์ฒด, `mlx`๋ Apple Silicon์ฉ) | |
| - **์คํ๋ก๋**: | |
| - **CPU + DiT**: ๋ชจ๋ ๋ชจ๋ธ(DiT, VAE, ํ ์คํธ ์ธ์ฝ๋)์ ๋ฏธ์ฌ์ฉ ์ CPU๋ก ์คํ๋ก๋; DiT๋ ๋จ๊ณ ๊ฐ ์คํ๋ก๋ | |
| - **CPU**: VAE์ ํ ์คํธ ์ธ์ฝ๋๋ฅผ CPU๋ก ์คํ๋ก๋; DiT๋ GPU์ ์ ์ง | |
| - **์์**: ๋ชจ๋ ๋ชจ๋ธ์ GPU์ ์ ์ง | |
| - **์์ํ**: VRAM ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก INT8 ๊ฐ์ค์น ์์ํ๋ฅผ ํ์ฑํํ ์ง ์ฌ๋ถ | |
| ## ์ ์ํ UI ๊ธฐ๋ณธ ์ค์ | |
| Gradio UI๋ ๊ฐ์ง๋ GPU ํฐ์ด์ ๋ฐ๋ผ ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค: | |
| - **LM ์ด๊ธฐํ ์ฒดํฌ๋ฐ์ค**: LM์ ์ง์ํ๋ ํฐ์ด(ํฐ์ด 3+)์์ ๊ธฐ๋ณธ ์ฒดํฌ, ํฐ์ด 1-2์์๋ ์ฒดํฌ ํด์ ๋ฐ ๋นํ์ฑํ | |
| - **LM ๋ชจ๋ธ ๊ฒฝ๋ก**: ํฐ์ด์ ์ถ์ฒ ๋ชจ๋ธ์ด ์๋ ์ ๋ ฅ; ๋๋กญ๋ค์ด์๋ ํธํ ๋ชจ๋ธ๋ง ํ์ | |
| - **๋ฐฑ์๋ ๋๋กญ๋ค์ด**: ํฐ์ด 1-3์์๋ `pt`/`mlx`๋ก ์ ํ(vllm KV ์บ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉ); ํฐ์ด 4+์์๋ ๋ชจ๋ ๋ฐฑ์๋ ์ฌ์ฉ ๊ฐ๋ฅ | |
| - **CPU ์คํ๋ก๋ / DiT ์คํ๋ก๋**: ๋ฎ์ ํฐ์ด์์ ๊ธฐ๋ณธ ํ์ฑํ, ๋์ ํฐ์ด์์ ๋นํ์ฑํ | |
| - **์์ํ**: ํฐ์ด 1-6a์์ ๊ธฐ๋ณธ ํ์ฑํ, ํฐ์ด 6b+์์ ๋นํ์ฑํ(์ถฉ๋ถํ VRAM) | |
| - **๋ชจ๋ธ ์ปดํ์ผ**: ๋ชจ๋ ํฐ์ด์์ ๊ธฐ๋ณธ ํ์ฑํ(์์ํ์ ํ์) | |
| ํธํ๋์ง ์๋ ์ต์ ์ ์๋์ผ๋ก ์ ํํ ๊ฒฝ์ฐ(์: 6GB GPU์์ vllm ์ฌ์ฉ ์๋), ์์คํ ์ด ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๊ณ ํธํ ๊ฐ๋ฅํ ์ค์ ์ผ๋ก ์๋ ๋์ฒดํฉ๋๋ค. | |
| ## ๋ฐํ์ ์์ ๊ธฐ๋ฅ | |
| - **VRAM ๊ฐ๋**: ๊ฐ ์ถ๋ก ์ ์ VRAM ์๊ตฌ ์ฌํญ์ ์ถ์ ํ๊ณ ํ์ ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์๋ ์ถ์ | |
| - **์ ์ํ VAE ๋์ฝ๋ฉ**: 3๋จ๊ณ ๋์ฒด: GPU ํ์ผ ๋์ฝ๋ฉ โ GPU ๋์ฝ๋ฉ+CPU ์คํ๋ก๋ โ ์์ CPU ๋์ฝ๋ฉ | |
| - **์๋ ์ฒญํฌ ํฌ๊ธฐ**: VAE ๋์ฝ๋ฉ ์ฒญํฌ ํฌ๊ธฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ VRAM์ ์ ์(64/128/256/512/1024/1536) | |
| - **๊ธธ์ด/๋ฐฐ์น ํด๋จํ**: ํฐ์ด ์ ํ์ ์ด๊ณผํ๋ ๊ฐ์ ์์ฒญํ๋ฉด ๊ฒฝ๊ณ ์ ํจ๊ป ์๋ ์กฐ์ | |
| ## ์ฐธ๊ณ ์ฌํญ | |
| - **๊ธฐ๋ณธ ์ค์ **์ ๊ฐ์ง๋ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ผ ์๋์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค | |
| - **LM ๋ชจ๋**๋ Chain-of-Thought ์์ฑ ๋ฐ ์ค๋์ค ์ดํด์ ์ฌ์ฉ๋๋ ์ธ์ด ๋ชจ๋ธ์ ์๋ฏธํฉ๋๋ค | |
| - **Flash Attention**์ ์๋ ๊ฐ์ง๋๋ฉฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ํ์ฑํ๋ฉ๋๋ค | |
| - **์ ์ฝ ๋์ฝ๋ฉ**: LM์ด ์ด๊ธฐํ๋๋ฉด LM์ ๊ธธ์ด ์์ฑ๋ GPU ํฐ์ด์ ์ต๋ ๊ธธ์ด ์ ํ์ผ๋ก ์ ์ฝ๋์ด CoT ์์ฑ ์ค OOM ์๋ฌ๋ฅผ ๋ฐฉ์งํฉ๋๋ค | |
| - VRAM์ด 6GB ์ดํ์ธ GPU(ํฐ์ด 1-2)์ ๊ฒฝ์ฐ, DiT ๋ชจ๋ธ์ ๋ฉ๋ชจ๋ฆฌ ํ๋ณด๋ฅผ ์ํด LM ์ด๊ธฐํ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค | |
| - CLI ์ธ์ ๋๋ Gradio UI๋ฅผ ํตํด ์ค์ ์ ์๋์ผ๋ก ๋ฌด์ํ ์ ์์ต๋๋ค | |
| > **์ปค๋ฎค๋ํฐ ๊ธฐ์ฌ ํ์**: ์์ GPU ํฐ์ด ๊ตฌ์ฑ์ ์ผ๋ฐ์ ์ธ ํ๋์จ์ด์์์ ํ ์คํธ๋ฅผ ๋ฐํ์ผ๋ก ํฉ๋๋ค. ์ฌ์ฉ ์ค์ธ ์ฅ์น์ ์ค์ ์ฑ๋ฅ์ด ์ด ํ๋ผ๋ฏธํฐ์ ๋ค๋ฅด๋ค๋ฉด, ๋ ์ฒ ์ ํ ํ ์คํธ๋ฅผ ์ํํ๊ณ `acestep/gpu_config.py`์์ ๊ตฌ์ฑ์ ์ต์ ํํ๊ธฐ ์ํ PR์ ์ ์ถํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. | |
| ## ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ํ | |
| 1. **์ด์ VRAM (โค6GB)**: LM ์ด๊ธฐํ ์์ด DiT ์ ์ฉ ๋ชจ๋๋ฅผ ์ฌ์ฉ. INT8 ์์ํ์ ์์ CPU ์คํ๋ก๋๊ฐ ํ์. VAE ๋์ฝ๋ฉ์ด ์๋์ผ๋ก CPU๋ก ๋์ฒด๋ ์ ์์ต๋๋ค. | |
| 2. **์ VRAM (6-8GB)**: `pt` ๋ฐฑ์๋๋ก 0.6B LM ๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ. ์คํ๋ก๋๋ฅผ ํ์ฑ ์ํ๋ก ์ ์งํ์ธ์. | |
| 3. **์ค๊ฐ VRAM (8-16GB)**: 0.6B ๋๋ 1.7B LM ๋ชจ๋ธ์ ์ฌ์ฉ. ํฐ์ด 4+์์ `vllm` ๋ฐฑ์๋๊ฐ ์ ์๋ํฉ๋๋ค. | |
| 4. **๋์ VRAM (16-24GB)**: ๋ ํฐ LM ๋ชจ๋ธ(1.7B ์ถ์ฒ)์ ํ์ฑํ. 20GB+์์๋ ์์ํ๊ฐ ์ ํ ์ฌํญ์ด ๋ฉ๋๋ค. | |
| 5. **์ด๊ณ VRAM (โฅ24GB)**: ๋ชจ๋ ๋ชจ๋ธ์ด ์คํ๋ก๋๋ ์์ํ ์์ด ์๋. ์ต๊ณ ํ์ง์ ์ํด 4B LM์ ์ฌ์ฉํ์ธ์. | |
| ## ๋๋ฒ๊ทธ ๋ชจ๋: ๋ค๋ฅธ GPU ๊ตฌ์ฑ ์๋ฎฌ๋ ์ด์ | |
| ํ ์คํธ ๋ฐ ๊ฐ๋ฐ์ ์ํด `MAX_CUDA_VRAM` ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ GPU ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ ์ ์์ต๋๋ค: | |
| ```bash | |
| # 4GB GPU ์๋ฎฌ๋ ์ด์ (ํฐ์ด 1) | |
| MAX_CUDA_VRAM=4 uv run acestep | |
| # 6GB GPU ์๋ฎฌ๋ ์ด์ (ํฐ์ด 2) | |
| MAX_CUDA_VRAM=6 uv run acestep | |
| # 8GB GPU ์๋ฎฌ๋ ์ด์ (ํฐ์ด 4) | |
| MAX_CUDA_VRAM=8 uv run acestep | |
| # 12GB GPU ์๋ฎฌ๋ ์ด์ (ํฐ์ด 5) | |
| MAX_CUDA_VRAM=12 uv run acestep | |
| # 16GB GPU ์๋ฎฌ๋ ์ด์ (ํฐ์ด 6a) | |
| MAX_CUDA_VRAM=16 uv run acestep | |
| ``` | |
| `MAX_CUDA_VRAM`์ ์ค์ ํ๋ฉด ์์คํ ์ `torch.cuda.set_per_process_memory_fraction()`์ ํธ์ถํ์ฌ VRAM ํ๋ ์บก์ ๊ฐ์ ํ๋ฉฐ, ๊ณ ์ฌ์ GPU์์๋ ํ์ค์ ์ธ ์๋ฎฌ๋ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. | |
| ### ์๋ ํฐ์ด ํ ์คํธ | |
| UI์์ ๊ฐ ํฐ์ด๋ฅผ ์๋์ผ๋ก ํ ์คํธํ๋ ๋์ , `profile_inference.py`์ `tier-test` ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค: | |
| ```bash | |
| # ๋ชจ๋ ํฐ์ด ์๋ ํ ์คํธ | |
| python profile_inference.py --mode tier-test | |
| # ํน์ ํฐ์ด ํ ์คํธ | |
| python profile_inference.py --mode tier-test --tiers 6 8 16 | |
| # LM ํ์ฑํํ์ฌ ํ ์คํธ (์ง์๋๋ ํฐ์ด์์) | |
| python profile_inference.py --mode tier-test --tier-with-lm | |
| # ๋น ๋ฅธ ํ ์คํธ (๋น์์ํ ํฐ์ด์์ torch.compile ๊ฑด๋๋ฐ๊ธฐ) | |
| python profile_inference.py --mode tier-test --tier-skip-compile | |
| ``` | |
| ํ๋กํ์ผ๋ง ๋๊ตฌ์ ์ ์ฒด ๋ฌธ์๋ [BENCHMARK.md](BENCHMARK.md)๋ฅผ ์ฐธ์กฐํ์ธ์. | |
| ์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค: | |
| - ๊ณ ์ฌ์ ํ๋์จ์ด์์ GPU ํฐ์ด ๊ตฌ์ฑ ํ ์คํธ | |
| - ๊ฐ ํฐ์ด์ ๋ํด ๊ฒฝ๊ณ ๋ฐ ์ ํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธ | |
| - `acestep/gpu_config.py` ์์ ํ ์๋ ํ๊ท ํ ์คํธ | |
| - CI/CD VRAM ํธํ์ฑ ๊ฒ์ฆ | |
| ### ๊ฒฝ๊ณ ํ ์คํธ (์ต์ ํฐ์ด ์ฐพ๊ธฐ) | |
| `--tier-boundary`๋ฅผ ์ฌ์ฉํ๋ฉด INT8 ์์ํ์ CPU ์คํ๋ก๋๋ฅผ ์์ ํ๊ฒ ๋นํ์ฑํํ ์ ์๋ ์ต์ VRAM ํฐ์ด๋ฅผ ์คํ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ ํฐ์ด์ ๋ํด ์ต๋ 3๊ฐ์ง ๊ตฌ์ฑ์ผ๋ก ํ ์คํธํฉ๋๋ค: | |
| 1. **default** โ ํฐ์ด์ ๊ธฐ๋ณธ ์ค์ (์์ํ + ์คํ๋ก๋๋ฅผ ๊ตฌ์ฑ๋๋ก ์ฌ์ฉ) | |
| 2. **no-quant** โ ์คํ๋ก๋ ์ค์ ์ ์ ์งํ๋ ์์ํ ๋นํ์ฑํ | |
| 3. **no-offload** โ ์์ํ ์์, CPU ์คํ๋ก๋ ์์ (๋ชจ๋ ๋ชจ๋ธ์ GPU์ ์ ์ง) | |
| ```bash | |
| # ๋ชจ๋ ํฐ์ด์์ ๊ฒฝ๊ณ ํ ์คํธ ์คํ | |
| python profile_inference.py --mode tier-test --tier-boundary | |
| # ํน์ ํฐ์ด์ ๊ฒฝ๊ณ ํ ์คํธ | |
| python profile_inference.py --mode tier-test --tier-boundary --tiers 8 12 16 20 24 | |
| # LM ํ์ฑํ๋ ๊ฒฝ๊ณ ํ ์คํธ (์ง์๋๋ ํฐ์ด์์) | |
| python profile_inference.py --mode tier-test --tier-boundary --tier-with-lm | |
| # ๊ฒฐ๊ณผ๋ฅผ JSON์ผ๋ก ์ ์ฅ | |
| python profile_inference.py --mode tier-test --tier-boundary --benchmark-output boundary_results.json | |
| ``` | |
| > **์ฐธ๊ณ :** ๊ฒฝ๊ณ ํ ์คํธ ๊ฒฐ๊ณผ๋ ๊ฒฝํ์ ์ด๋ฉฐ, DiT ๋ชจ๋ธ ๋ณํ (turbo vs base), LM ํ์ฑํ ์ฌ๋ถ, ์์ฑ ์๊ฐ, flash attention ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. | |
| ### ๋ฐฐ์น ํฌ๊ธฐ ๊ฒฝ๊ณ ํ ์คํธ | |
| `--tier-batch-boundary`๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์น ํฌ๊ธฐ 1, 2, 4, 8์ ๋จ๊ณ์ ์ผ๋ก ํ ์คํธํ์ฌ ๊ฐ ํฐ์ด์ ์ต๋ ์์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ฐพ์ต๋๋ค: | |
| ```bash | |
| # LM ํ์ฑํ ์ํ์์ ๋ฐฐ์น ๊ฒฝ๊ณ ํ ์คํธ ์คํ | |
| python profile_inference.py --mode tier-test --tier-batch-boundary --tier-with-lm | |
| # ํน์ ํฐ์ด ํ ์คํธ | |
| python profile_inference.py --mode tier-test --tier-batch-boundary --tier-with-lm --tiers 8 12 16 24 | |
| ``` | |
| LM ์ฌ์ฉ/๋ฏธ์ฌ์ฉ ๋ ๊ฐ์ง ๊ตฌ์ฑ์ ๋ชจ๋ ํ ์คํธํ๊ณ ๊ฐ ํฐ์ด์ ์ต๋ ์ฑ๊ณต ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. | |