| # syntax=docker/dockerfile:1.7 |
|
|
| ARG CUDA_IMAGE=nvidia/cuda:13.0.2-cudnn-devel-ubuntu24.04 |
| ARG UV_VERSION=0.12.3 |
| FROM ghcr.io/astral-sh/uv:${UV_VERSION} AS uv-bin |
| FROM ${CUDA_IMAGE} |
|
|
| ARG FISH_SCALES_REVISION=a04c1b63b1a7a670840fb3e97a82c0dbe2a35ded |
| ENV DEBIAN_FRONTEND=noninteractive \ |
| PYTHONDONTWRITEBYTECODE=1 \ |
| PYTHONUNBUFFERED=1 \ |
| VIRTUAL_ENV=/opt/venv \ |
| PATH=/opt/venv/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ |
| CUDA_HOME=/usr/local/cuda \ |
| TORCH_CUDA_ARCH_LIST=12.0a \ |
| FISH_NVFP4_ROOT=/model \ |
| FISH_NVFP4_BUILD_ROOT=/data/torch-extensions \ |
| PYTHONPATH=/model/runtime \ |
| TTS_PYTHON=/opt/venv/bin/python \ |
| TEMPORARILY_DISABLE_PROTOBUF_VERSION_CHECK=true |
|
|
| RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ |
| --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \ |
| apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential ca-certificates cmake ffmpeg git git-lfs libsndfile1 \ |
| ninja-build portaudio19-dev python3.12 python3.12-dev python3.12-venv && \ |
| git lfs install --system |
|
|
| COPY --from=uv-bin /uv /uvx /usr/local/bin/ |
| COPY runtime/torch-overrides.txt /opt/release/torch-overrides.txt |
| COPY requirements.txt /opt/release/requirements.txt |
| COPY vendor/fish-speech /opt/fish-speech |
|
|
| RUN uv venv /opt/venv --python python3.12 && \ |
| uv pip install --python /opt/venv/bin/python \ |
| "setuptools>=75" wheel ninja packaging \ |
| "torch==2.11.0" "torchaudio==2.11.0" --torch-backend=cu130 && \ |
| uv pip install --python /opt/venv/bin/python \ |
| --overrides /opt/release/torch-overrides.txt --torch-backend=cu130 \ |
| /opt/fish-speech -r /opt/release/requirements.txt |
|
|
| RUN git init /opt/fish-scales-ops && \ |
| git -C /opt/fish-scales-ops remote add origin https: |
| git -C /opt/fish-scales-ops fetch --depth 1 origin "${FISH_SCALES_REVISION}" && \ |
| git -C /opt/fish-scales-ops checkout --detach FETCH_HEAD && \ |
| git -C /opt/fish-scales-ops submodule update --init --recursive --depth 1 |
|
|
| RUN --mount=type=cache,target=/root/.cache/uv \ |
| CUTLASS_DIR=/opt/fish-scales-ops/3rdparty/cutlass \ |
| MAX_JOBS=2 TORCH_CUDA_ARCH_LIST=12.0a \ |
| uv pip install --python /opt/venv/bin/python \ |
| --no-build-isolation /opt/fish-scales-ops/python |
|
|
| RUN install -m 0644 /opt/fish-speech/.project-root \ |
| /opt/venv/lib/python3.12/site-packages/.project-root && \ |
| /opt/venv/bin/python -c \ |
| "from pathlib import Path; import comfy_kitchen, fish_speech, torch, tools.server.model_manager; from fish_speech.models.dac.modded_dac import DAC; site_packages = Path('/opt/venv/lib/python3.12/site-packages'); assert (site_packages / 'fish_speech/configs/modded_dac_vq.yaml').is_file(); assert list((site_packages / 'fish_scales_ops').glob('_C*.so')); print(torch.__version__, torch.version.cuda)" |
|
|
| WORKDIR /data |
| EXPOSE 8080 |
| ENTRYPOINT ["/bin/bash", "/model/launch.sh"] |
|
|