File size: 2,981 Bytes
16f5171
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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://github.com/fishaudio/fish-scales-ops.git && \
    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"]