Spaces:
Running
A newer version of the Gradio SDK is available: 6.11.0
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์ ์ ์ถํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ํ
- ์ด์ VRAM (โค6GB): LM ์ด๊ธฐํ ์์ด DiT ์ ์ฉ ๋ชจ๋๋ฅผ ์ฌ์ฉ. INT8 ์์ํ์ ์์ CPU ์คํ๋ก๋๊ฐ ํ์. VAE ๋์ฝ๋ฉ์ด ์๋์ผ๋ก CPU๋ก ๋์ฒด๋ ์ ์์ต๋๋ค.
- ์ VRAM (6-8GB):
pt๋ฐฑ์๋๋ก 0.6B LM ๋ชจ๋ธ ์ฌ์ฉ ๊ฐ๋ฅ. ์คํ๋ก๋๋ฅผ ํ์ฑ ์ํ๋ก ์ ์งํ์ธ์. - ์ค๊ฐ VRAM (8-16GB): 0.6B ๋๋ 1.7B LM ๋ชจ๋ธ์ ์ฌ์ฉ. ํฐ์ด 4+์์
vllm๋ฐฑ์๋๊ฐ ์ ์๋ํฉ๋๋ค. - ๋์ VRAM (16-24GB): ๋ ํฐ LM ๋ชจ๋ธ(1.7B ์ถ์ฒ)์ ํ์ฑํ. 20GB+์์๋ ์์ํ๊ฐ ์ ํ ์ฌํญ์ด ๋ฉ๋๋ค.
- ์ด๊ณ VRAM (โฅ24GB): ๋ชจ๋ ๋ชจ๋ธ์ด ์คํ๋ก๋๋ ์์ํ ์์ด ์๋. ์ต๊ณ ํ์ง์ ์ํด 4B LM์ ์ฌ์ฉํ์ธ์.
๋๋ฒ๊ทธ ๋ชจ๋: ๋ค๋ฅธ GPU ๊ตฌ์ฑ ์๋ฎฌ๋ ์ด์
ํ
์คํธ ๋ฐ ๊ฐ๋ฐ์ ์ํด MAX_CUDA_VRAM ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ GPU ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์๋ฎฌ๋ ์ด์
ํ ์ ์์ต๋๋ค:
# 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 ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
# ๋ชจ๋ ํฐ์ด ์๋ ํ
์คํธ
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๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค:
- ๊ณ ์ฌ์ ํ๋์จ์ด์์ GPU ํฐ์ด ๊ตฌ์ฑ ํ ์คํธ
- ๊ฐ ํฐ์ด์ ๋ํด ๊ฒฝ๊ณ ๋ฐ ์ ํ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธ
acestep/gpu_config.py์์ ํ ์๋ ํ๊ท ํ ์คํธ- CI/CD VRAM ํธํ์ฑ ๊ฒ์ฆ
๊ฒฝ๊ณ ํ ์คํธ (์ต์ ํฐ์ด ์ฐพ๊ธฐ)
--tier-boundary๋ฅผ ์ฌ์ฉํ๋ฉด INT8 ์์ํ์ CPU ์คํ๋ก๋๋ฅผ ์์ ํ๊ฒ ๋นํ์ฑํํ ์ ์๋ ์ต์ VRAM ํฐ์ด๋ฅผ ์คํ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ ํฐ์ด์ ๋ํด ์ต๋ 3๊ฐ์ง ๊ตฌ์ฑ์ผ๋ก ํ
์คํธํฉ๋๋ค:
- default โ ํฐ์ด์ ๊ธฐ๋ณธ ์ค์ (์์ํ + ์คํ๋ก๋๋ฅผ ๊ตฌ์ฑ๋๋ก ์ฌ์ฉ)
- no-quant โ ์คํ๋ก๋ ์ค์ ์ ์ ์งํ๋ ์์ํ ๋นํ์ฑํ
- no-offload โ ์์ํ ์์, CPU ์คํ๋ก๋ ์์ (๋ชจ๋ ๋ชจ๋ธ์ GPU์ ์ ์ง)
# ๋ชจ๋ ํฐ์ด์์ ๊ฒฝ๊ณ ํ
์คํธ ์คํ
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์ ๋จ๊ณ์ ์ผ๋ก ํ
์คํธํ์ฌ ๊ฐ ํฐ์ด์ ์ต๋ ์์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ฐพ์ต๋๋ค:
# 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 ์ฌ์ฉ/๋ฏธ์ฌ์ฉ ๋ ๊ฐ์ง ๊ตฌ์ฑ์ ๋ชจ๋ ํ ์คํธํ๊ณ ๊ฐ ํฐ์ด์ ์ต๋ ์ฑ๊ณต ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.