์๊ตฌ ์ฌ์
- GPU ๋ฉ๋ชจ๋ฆฌ: 24GB (์ถ๋ก ์)
- ์์คํ : Linux, WSL
์์คํ ์ค์
Fish Audio S2๋ ๋ค์ํ ์ค์น ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค. ์์ ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํ์ธ์.
์ฌ์ ์๊ตฌ์ฌํญ: ์ค๋์ค ์ฒ๋ฆฌ๋ฅผ ์ํ ์์คํ ์์กด์ฑ์ ์ค์นํฉ๋๋ค:
apt install portaudio19-dev libsox-dev ffmpeg
Conda
conda create -n fish-speech python=3.12
conda activate fish-speech
# GPU ๋ฒ์ ์ค์น (CUDA ๋ฒ์ ์ ํ: cu126, cu128, cu129)
pip install -e .[cu129]
# CPU ๋ฒ์ ๋ง ์ค์น
pip install -e .[cpu]
# ๊ธฐ๋ณธ ์ค์น (PyTorch ๊ธฐ๋ณธ ์ธ๋ฑ์ค ์ฌ์ฉ)
pip install -e .
# pyaudio ์ค์น ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํด ๋ณด์ธ์:
# conda install pyaudio
# ๊ทธ๋ฐ ๋ค์ pip install -e . ๋ฅผ ๋ค์ ์คํํ์ธ์
UV
UV๋ ๋ ๋น ๋ฅธ ์์กด์ฑ ํด๊ฒฐ ๋ฐ ์ค์น๋ฅผ ์ ๊ณตํฉ๋๋ค:
# GPU ๋ฒ์ ์ค์น (CUDA ๋ฒ์ ์ ํ: cu126, cu128, cu129)
uv sync --python 3.12 --extra cu129
# CPU ๋ฒ์ ๋ง ์ค์น
uv sync --python 3.12 --extra cpu
Intel Arc XPU ์ง์
Intel Arc GPU ์ฌ์ฉ์๋ ๋ค์์ ํตํด XPU ์ง์์ ์ค์นํ์ธ์:
conda create -n fish-speech python=3.12
conda activate fish-speech
# ํ์ํ C++ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
conda install libstdcxx -c conda-forge
# Intel XPU๋ฅผ ์ง์ํ๋ PyTorch ์ค์น
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/xpu
# Fish Speech ์ค์น
pip install -e .
!!! warning
compile ์ต์
์ Windows์ macOS์์ ์ง์๋์ง ์์ต๋๋ค. ์ปดํ์ผ์ ํ์ฑํํ์ฌ ์คํํ๋ ค๋ฉด Triton์ ์ง์ ์ค์นํด์ผ ํฉ๋๋ค.
Docker ์ค์
Fish Audio S2 ์๋ฆฌ์ฆ ๋ชจ๋ธ์ ๋ค์ํ ์๊ตฌ์ ๋ถ์ํ๊ธฐ ์ํด ์ฌ๋ฌ Docker ๋ฐฐํฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. Docker Hub์ ์ฌ์ ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, Docker Compose๋ก ๋ก์ปฌ์์ ๋น๋ํ๊ฑฐ๋, ์๋์ผ๋ก ์ฌ์ฉ์ ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
WebUI์ API ์๋ฒ ๋ชจ๋์ ๋ํด GPU(๊ธฐ๋ณธ๊ฐ CUDA 12.6) ๋ฐ CPU ๋ฒ์ ์ Docker ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค. Docker Hub์ ์ฌ์ ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, Docker Compose๋ก ๋ก์ปฌ์์ ๋น๋ํ๊ฑฐ๋, ์๋์ผ๋ก ์ฌ์ฉ์ ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค. ๋ก์ปฌ์์ ๋น๋ํ๋ ค๋ฉด ์๋ ์ง์นจ์ ๋ฐ๋ฅด์ธ์. ์ฌ์ ๋น๋๋ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ถ๋ก ๊ฐ์ด๋๋ฅผ ์ง์ ์ฐธ์กฐํ์ธ์.
์ฌ์ ์๊ตฌ์ฌํญ
- Docker ๋ฐ Docker Compose ์ค์น
- NVIDIA Docker ๋ฐํ์ ์ค์น (GPU ์ง์์ฉ)
- CUDA ์ถ๋ก ์ ์ํ ์ต์ 24GB์ GPU ๋ฉ๋ชจ๋ฆฌ
Docker Compose ์ฌ์ฉ
๊ฐ๋ฐ ๋๋ ์ฌ์ฉ์ ์ ์๋ฅผ ์ํด Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ์์ ๋น๋ํ๊ณ ์คํํ ์ ์์ต๋๋ค:
# ๋จผ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํฉ๋๋ค
git clone https://github.com/fishaudio/fish-speech.git
cd fish-speech
# CUDA๋ก WebUI ์์
docker compose --profile webui up
# ์ปดํ์ผ ์ต์ ํ๋ก WebUI ์์
COMPILE=1 docker compose --profile webui up
# API ์๋ฒ ์์
docker compose --profile server up
# ์ปดํ์ผ ์ต์ ํ๋ก API ์๋ฒ ์์
COMPILE=1 docker compose --profile server up
# CPU ์ ์ฉ ๋ฐฐํฌ
BACKEND=cpu docker compose --profile webui up
Docker Compose ํ๊ฒฝ ๋ณ์
ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค:
# .env ํ์ผ ์์
BACKEND=cuda # ๋๋ cpu
COMPILE=1 # ์ปดํ์ผ ์ต์ ํ ํ์ฑํ
GRADIO_PORT=7860 # WebUI ํฌํธ
API_PORT=8080 # API ์๋ฒ ํฌํธ
UV_VERSION=0.8.15 # UV ํจํค์ง ๊ด๋ฆฌ์ ๋ฒ์
์ด ๋ช
๋ น์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์ปจํ
์ด๋๋ฅผ ์คํํฉ๋๋ค. WebUI๋ http://localhost:7860์์, API ์๋ฒ๋ http://localhost:8080์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
์๋ Docker ๋น๋
๋น๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ค๋ ๊ณ ๊ธ ์ฌ์ฉ์๋ฅผ ์ํด:
# CUDA๋ฅผ ์ง์ํ๋ WebUI ์ด๋ฏธ์ง ๋น๋
docker build \
--platform linux/amd64 \
-f docker/Dockerfile \
--build-arg BACKEND=cuda \
--build-arg CUDA_VER=12.6.0 \
--build-arg UV_EXTRA=cu126 \
--target webui \
-t fish-speech-webui:cuda .
# CUDA๋ฅผ ์ง์ํ๋ API ์๋ฒ ์ด๋ฏธ์ง ๋น๋
docker build \
--platform linux/amd64 \
-f docker/Dockerfile \
--build-arg BACKEND=cuda \
--build-arg CUDA_VER=12.6.0 \
--build-arg UV_EXTRA=cu126 \
--target server \
-t fish-speech-server:cuda .
# CPU ์ ์ฉ ์ด๋ฏธ์ง ๋น๋ (๋ฉํฐ ํ๋ซํผ ์ง์)
docker build \
--platform linux/amd64,linux/arm64 \
-f docker/Dockerfile \
--build-arg BACKEND=cpu \
--target webui \
-t fish-speech-webui:cpu .
# ๊ฐ๋ฐ์ฉ ์ด๋ฏธ์ง ๋น๋
docker build \
--platform linux/amd64 \
-f docker/Dockerfile \
--build-arg BACKEND=cuda \
--target dev \
-t fish-speech-dev:cuda .
๋น๋ ์ธ์
BACKEND:cuda๋๋cpu(๊ธฐ๋ณธ๊ฐ:cuda)CUDA_VER: CUDA ๋ฒ์ (๊ธฐ๋ณธ๊ฐ:12.6.0)UV_EXTRA: CUDA์ฉ UV ์ถ๊ฐ ํจํค์ง (๊ธฐ๋ณธ๊ฐ:cu126)UBUNTU_VER: Ubuntu ๋ฒ์ (๊ธฐ๋ณธ๊ฐ:24.04)PY_VER: Python ๋ฒ์ (๊ธฐ๋ณธ๊ฐ:3.12)
๋ณผ๋ฅจ ๋ง์ดํธ
๋ ๋ฐฉ๋ฒ ๋ชจ๋ ๋ค์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง์ดํธํด์ผ ํฉ๋๋ค:
./checkpoints:/app/checkpoints- ๋ชจ๋ธ ๊ฐ์ค์น ๋๋ ํ ๋ฆฌ./references:/app/references- ์ฐธ์กฐ ์ค๋์ค ํ์ผ ๋๋ ํ ๋ฆฌ
ํ๊ฒฝ ๋ณ์
COMPILE=1-torch.compile์ ํ์ฑํํ์ฌ ์ถ๋ก ์๋ ํฅ์ (์ฝ 10๋ฐฐ)GRADIO_SERVER_NAME=0.0.0.0- WebUI ์๋ฒ ํธ์คํธGRADIO_SERVER_PORT=7860- WebUI ์๋ฒ ํฌํธAPI_SERVER_NAME=0.0.0.0- API ์๋ฒ ํธ์คํธAPI_SERVER_PORT=8080- API ์๋ฒ ํฌํธ
!!! note
Docker ์ปจํ
์ด๋๋ ๋ชจ๋ธ ๊ฐ์ค์น๊ฐ /app/checkpoints์ ๋ง์ดํธ๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ปจํ
์ด๋๋ฅผ ์์ํ๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ธ ๊ฐ์ค์น๋ฅผ ๋ค์ด๋ก๋ํ๋์ง ํ์ธํ์ธ์.
!!! warning
GPU ์ง์์๋ NVIDIA Docker ๋ฐํ์์ด ํ์ํฉ๋๋ค. CPU ์ ์ฉ ๋ฐฐํฌ์ ๊ฒฝ์ฐ --gpus all ํ๋๊ทธ๋ฅผ ์ ๊ฑฐํ๊ณ CPU ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ธ์.