From aba262844ca39684294f00de59b86403c6d6f632 Mon Sep 17 00:00:00 2001 From: Kishor Prins Date: Fri, 21 Mar 2025 19:24:56 -0700 Subject: [PATCH] Update Dockerfile to build against newer code --- docker/rocm/Dockerfile | 78 ++++++++++++++++---------------------- docker/rocm/pyproject.toml | 24 ------------ pyproject.toml | 2 +- 3 files changed, 33 insertions(+), 71 deletions(-) delete mode 100644 docker/rocm/pyproject.toml diff --git a/docker/rocm/Dockerfile b/docker/rocm/Dockerfile index 6385720..dbf6059 100644 --- a/docker/rocm/Dockerfile +++ b/docker/rocm/Dockerfile @@ -1,64 +1,50 @@ -FROM rocm/dev-ubuntu-22.04:6.3.1 +FROM rocm/pytorch:rocm6.3.4_ubuntu22.04_py3.10_pytorch_release_2.4.0 +ENV DEBIAN_FRONTEND=noninteractive \ + PHONEMIZER_ESPEAK_PATH=/usr/bin \ + PHONEMIZER_ESPEAK_DATA=/usr/share/espeak-ng-data \ + ESPEAK_DATA_PATH=/usr/share/espeak-ng-data # Install Python and other dependencies -RUN apt-get update && apt-get install -y --no-install-recommends \ - python3.10 \ - python3.10-venv \ +RUN apt-get update && apt upgrade -y && apt-get install -y --no-install-recommends \ espeak-ng \ + espeak-ng-data \ git \ libsndfile1 \ curl \ + ffmpeg \ + wget \ + nano \ + g++ \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /usr/share/espeak-ng-data \ + && ln -s /usr/lib/*/espeak-ng-data/* /usr/share/espeak-ng-data/ -# Install uv -COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ - -# Create non-root user -RUN useradd -m -u 1000 appuser - -# Create directories and set ownership -RUN mkdir -p /app/models && \ - mkdir -p /app/api/src/voices && \ - chown -R appuser:appuser /app - -USER appuser - -# Download and extract models -WORKDIR /app/models -RUN curl -L -o model.tar.gz https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.0.1/kokoro-82m-pytorch.tar.gz && \ - tar xzf model.tar.gz && \ - rm model.tar.gz - -# Download and extract voice models -WORKDIR /app/api/src/voices -RUN curl -L -o voices.tar.gz https://github.com/remsky/Kokoro-FastAPI/releases/download/v0.0.1/voice-models.tar.gz && \ - tar xzf voices.tar.gz && \ - rm voices.tar.gz - -# Switch back to app directory +RUN mkdir -p /app/api/src/models/v1_0 WORKDIR /app # Copy dependency files -COPY --chown=appuser:appuser pyproject.toml ./pyproject.toml +COPY pyproject.toml ./pyproject.toml # Install dependencies -RUN --mount=type=cache,target=/root/.cache/uv \ - uv venv && \ - uv sync --extra rocm --no-install-project +RUN pip3 install -e . -# Copy project files +# Copy project files including models COPY --chown=appuser:appuser api ./api - -# Install project -RUN --mount=type=cache,target=/root/.cache/uv \ - uv sync --extra rocm +COPY --chown=appuser:appuser web ./web +COPY --chown=appuser:appuser docker/scripts/ ./ +RUN chmod +x ./entrypoint.sh # Set environment variables -ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app:/app/models -ENV PATH="/app/.venv/bin:$PATH" -ENV UV_LINK_MODE=copy +ENV PYTHONUNBUFFERED=1 \ + PYTHONPATH=/app:/app/api \ + USE_GPU=true \ + DOWNLOAD_MODEL=true -# Run FastAPI server -CMD ["uv", "run", "python", "-m", "uvicorn", "api.src.main:app", "--host", "0.0.0.0", "--port", "8880", "--log-level", "debug"] +# Download model if enabled +RUN if [ "$DOWNLOAD_MODEL" = "true" ]; then \ + python download_model.py --output api/src/models/v1_0; \ + fi + +# Run FastAPI server through entrypoint.sh +CMD ["python3", "-m", "uvicorn", "api.src.main:app", "--host", "0.0.0.0", "--port", "8880", "--log-level", "debug"] diff --git a/docker/rocm/pyproject.toml b/docker/rocm/pyproject.toml deleted file mode 100644 index 831aaa9..0000000 --- a/docker/rocm/pyproject.toml +++ /dev/null @@ -1,24 +0,0 @@ -[project] -name = "kokoro-fastapi-rocm" -version = "0.1.0" -description = "FastAPI TTS Service - ROCM Version" -readme = "../README.md" -requires-python = ">=3.10" -dependencies = [ - # Core ML/DL for rocm - "pytorch-triton-rocm==3.1.0", - "torch==2.5.1+rocm6.2", - "transformers==4.47.1", -] - -[tool.uv.workspace] -members = ["../shared"] - -[tool.uv.sources] -torch = { index = "pytorch-rocm" } -pytorch-triton-rocm = { index = "pytorch-rocm" } - -[[tool.uv.index]] -name = "pytorch-rocm" -url = "https://download.pytorch.org/whl/rocm6.2" -explicit = true diff --git a/pyproject.toml b/pyproject.toml index 0107c74..9db25f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ "mutagen>=1.47.0", "psutil>=6.1.1", "kokoro @ git+https://github.com/hexgrad/kokoro.git@31a2b6337b8c1b1418ef68c48142328f640da938", - 'misaki[en,ja,ko,zh] @ git+https://github.com/hexgrad/misaki.git@ebc76c21b66c5fc4866ed0ec234047177b396170', + 'misaki[en,ja,ko,zh]', "spacy==3.7.2", "en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1-py3-none-any.whl", "inflect>=7.5.0",