ltx-video-iclora / Dockerfile
eeuuia's picture
Update Dockerfile
18445f8 verified
# =============================================================================
# ADUC-SDR Video Suite — Dockerfile Otimizado
# Preserva a estrutura de instalação original para alta performance.
# CUDA 12.8 | PyTorch 2.8.0+cu128 | Ubuntu 22.04
# =============================================================================
FROM nvidia/cuda:12.8.0-devel-ubuntu22.04
LABEL maintainer="Carlos Rodrigues dos Santos"
LABEL description="ADUC-SDR: High-performance Diffusers stack for 8x NVIDIA L40S with LTX-Video and SeedVR"
LABEL version="5.0.0"
LABEL cuda_version="12.8.0"
LABEL python_version="3.10"
LABEL pytorch_version="2.8.0+cu128"
LABEL gpu_optimized_for="8x_NVIDIA_L40S"
# =============================================================================
# 1. Variáveis de Ambiente e Configuração de Paths
# =============================================================================
ENV DEBIAN_FRONTEND=noninteractive TZ=UTC LANG=C.UTF-8 LC_ALL=C.UTF-8 \
PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 \
PIP_NO_CACHE_DIR=0 PIP_DISABLE_PIP_VERSION_CHECK=1
# --- Configurações de GPU e Computação ---
ENV NVIDIA_VISIBLE_DEVICES=all \
TORCH_CUDA_ARCH_LIST="8.9" \
CUDA_DEVICE_ORDER=PCI_BUS_ID \
CUDA_DEVICE_MAX_CONNECTIONS=32
# --- Configurações de Threads ---
ENV OMP_NUM_THREADS=8 MKL_NUM_THREADS=8 MAX_JOBS=160
# --- Configurações de Alocador de Memória e Caches de GPU ---
ENV PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512,garbage_collection_threshold:0.8 \
CUDA_LAUNCH_BLOCKING=0 CUDA_CACHE_MAXSIZE=2147483648 CUDA_CACHE_DISABLE=0
# --- Paths da Aplicação e Dados Persistentes ---
ENV APP_HOME=/app \
HF_HOME=/data/.cache/huggingface \
TORCH_HOME=/data/.cache/torch \
HF_DATASETS_CACHE=/data/.cache/datasets \
TRANSFORMERS_CACHE=/data/.cache/transformers \
DIFFUSERS_CACHE=/data/.cache/diffusers \
HF_HUB_ENABLE_HF_TRANSFER=1 \
TOKENIZERS_PARALLELISM=false
WORKDIR $APP_HOME
# =============================================================================
# 2. Setup de Usuário e Sistema
# =============================================================================
# Cria usuário não-root e diretórios de dados/app.
# As permissões finais serão aplicadas no final.
RUN useradd -m -u 1000 -s /bin/bash appuser && \
mkdir -p /data $APP_HOME /app/output
# --- Instalação de Pacotes de Sistema e Python ---
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential gosu tree cmake git git-lfs curl wget ffmpeg ninja-build \
python3.10 python3.10-dev python3.10-distutils python3-pip \
ca-certificates libglib2.0-0 libgl1 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN ln -sf /usr/bin/python3.10 /usr/bin/python && \
python3 -m pip install --upgrade pip
# =============================================================================
# 3. Instalação da Toolchain de Machine Learning (Mantida 100% Original)
# =============================================================================
# --- PyTorch para CUDA 12.8 ---
RUN pip install --index-url https://download.pytorch.org/whl/cu128 \
torch>=2.8.0+cu128 torchvision>=0.23.0+cu128 torchaudio>=2.8.0+cu128
# --- Ferramentas de Compilação, Triton e FlashAttention ---
RUN pip install packaging ninja cmake pybind11 scikit-build cython hf_transfer "numpy>=1.24.4"
# --- Triton 3.x ---
RUN pip uninstall -y triton || true && \
pip install -v --no-build-isolation triton==3.4.0
# --- FlashAttention 2.8.x ---
#RUN pip install flash-attn==2.8.3 --no-build-isolation || \
# pip install flash-attn==2.8.2 --no-build-isolation || \
# pip install flash-attn==2.8.1 --no-build-isolation || \
# pip install flash-attn==2.8.0.post2 --no-build-isolation
# =============================================================================
# 4. Instalação das Dependências da Aplicação
# =============================================================================
# Copia e instala requirements.txt primeiro para otimizar o cache de camadas do Docker.
COPY --chown=appuser:appuser requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# --- Instalação de bitsandbytes e Wheels Customizados (Mantido 100% Original) ---
RUN pip install --upgrade bitsandbytes
# Instala wheels customizados (Apex, etc.)
# Instala q8_kernels
RUN pip install --no-cache-dir \
"https://huggingface.co/euIaxs22/Aduc-sdr/resolve/main/q8_kernels-0.0.5-cp310-cp310-linux_x86_64.whl"
RUN echo "Installing custom wheels..." && \
pip install --no-cache-dir \
"https://huggingface.co/euIaxs22/Aduc-sdr/resolve/main/apex-0.1-cp310-cp310-linux_x86_64.whl" \
"https://huggingface.co/euIaxs22/Aduc-sdr/resolve/main/dropout_layer_norm-0.1-cp310-cp310-linux_x86_64.whl"
# =============================================================================
# 5. Cópia do Código-Fonte e Configuração Final
# =============================================================================
# Copia o restante do código-fonte da aplicação por último.
COPY --chown=appuser:appuser . .
# Garante que todos os scripts de inicialização sejam executáveis
# e que o usuário 'appuser' seja o dono de todos os arquivos.
RUN chown -R appuser:appuser $APP_HOME /data && \
chmod +x /app/entrypoint.sh /app/start.sh
# =============================================================================
# 6. Ponto de Entrada
# =============================================================================
# Expõe o diretório /data para ser montado como um volume persistente.
VOLUME /data
# Define o usuário padrão para a execução do contêiner.
USER appuser
# Define o script que será executado na inicialização do contêiner.
ENTRYPOINT ["/app/entrypoint.sh"]
# Define o comando padrão a ser executado pelo entrypoint.
CMD ["/app/start.sh"]