diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..1269488f --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +data diff --git a/data/configs/.gitkeep b/data/configs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/data/inputs/.gitkeep b/data/inputs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/data/output/.gitkeep b/data/output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..1d511764 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,47 @@ + +services: + + valkey: + container_name: valkey + hostname: valkey + image: docker.io/valkey/valkey:8-alpine + command: valkey-server --save 30 1 --loglevel warning + #pull_policy: always + restart: unless-stopped + cap_drop: + - ALL + cap_add: + - SETGID + - SETUID + - DAC_OVERRIDE + logging: + driver: "json-file" + options: + max-size: "1m" + max-file: "1" + + augmentoolkit: + container_name: augmentoolkit + hostname: augmentoolkit + user: root + depends_on: + - valkey + restart: unless-stopped + build: + context: . + dockerfile: ./docker/dockerfile + volumes: + - ./data/output:/app/outputs + - ./data/inputs:/app/inputs/mydata + - ./data/configs:/app/external_configs/myconfigs + environment: + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_DB=3 + ports: + - "127.0.0.1:8000:8000" # api + - "127.0.0.1:5173:5173" # ui + - "127.0.0.1:8083:8082" # vllm + # devices: + # - nvidia.com/gpu=all + # - /dev/video0 diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 00000000..41753a45 --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,56 @@ +FROM python:slim + +ENV VERSION=v3.0.0 +ENV PIP_BREAK_SYSTEM_PACKAGES=1 + +WORKDIR /app + +# Basic system dependencies +RUN apt-get update && apt-get upgrade -y +RUN apt-get install -y git build-essential cmake pkg-config g++ curl libssl-dev net-tools nodejs npm + +# Clone augmentoolkit +# RUN git clone https://github.com/e-p-armstrong/augmentoolkit.git --branch ${VERSION} --single-branch . + +COPY requirements.txt *.sh *.py super_config.yaml LICENSE /app/ + +# Install Rust for outlines-core +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y --no-modify-path +ENV PATH="/root/.cargo/bin:${PATH}" + +# Optional: Set up venv (not strictly needed in Docker, but kept as-is) +RUN python3 -m venv .venv +ENV VIRTUAL_ENV=/app/.venv +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +# Install pip tools +RUN pip install --upgrade pip +RUN pip install uv + +# Install outlines first (will trigger Rust build, needs OpenSSL) +RUN pip install outlines + +# Install torch first — this is critical +RUN pip install torch --index-url https://download.pytorch.org/whl/cu121 + +# Install xformers with NO build isolation so it can see torch +RUN pip install --no-build-isolation xformers==0.0.29.post2 + +# Install vllm (depends on xformers) +RUN pip install vllm + +# Final dependencies from requirements.txt using uv (now safe) +RUN uv pip install -r requirements.txt + +ADD atk-interface atk-interface +ADD augmentoolkit augmentoolkit +ADD cli_utils cli_utils +ADD external_configs external_configs +ADD generation generation +ADD inputs inputs +ADD logs logs + +RUN chmod +x entrypoint.sh && chmod +x *.sh + +# Entry point +CMD ./entrypoint.sh diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 00000000..841f009e --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cd /app + +./linux.sh +