FROM nvidia/cuda:12.8.0-cudnn-devel-ubuntu24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing git git-lfs wget curl cmake build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev python3 python3-pip python3-venv python-is-python3 ffmpeg && rm -rf /var/lib/apt/lists/* RUN id -u 1000 >/dev/null 2>&1 || useradd -m -u 1000 user ENV HOME=/home/user ENV VIRTUAL_ENV=/home/user/venv ENV PATH="/home/user/venv/bin:/usr/local/cuda/bin:/usr/local/nvidia/bin:${PATH}" ENV PYTHONPATH=/home/user/app ENV PYTHONUNBUFFERED=1 ENV HF_HUB_ENABLE_HF_TRANSFER=1 ENV HF_HOME=/data/.huggingface ENV HF_HUB_CACHE=/data/.huggingface/hub ENV TRANSFORMERS_CACHE=/data/.huggingface/transformers ENV TMPDIR=/tmp ENV GRADIO_ALLOW_FLAGGING=never ENV GRADIO_NUM_PORTS=1 ENV GRADIO_SERVER_NAME=0.0.0.0 ENV GRADIO_SERVER_PORT=7860 ENV GRADIO_THEME=huggingface ENV TQDM_POSITION=-1 ENV TQDM_MININTERVAL=1 ENV SYSTEM=spaces ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH} WORKDIR /home/user/app RUN python -m venv /home/user/venv && pip install --no-cache-dir -U pip setuptools wheel && pip install --no-cache-dir huggingface-hub hf-transfer "gradio[oauth]" gradio_huggingfacehub_search APScheduler COPY --chown=1000 . /home/user/app # Clone and build llama.cpp at image build time (CPU-only, no CUDA needed for quantization). # This bakes the binaries into the image so startup is instant. RUN rm -rf /home/user/app/llama.cpp && git clone https://github.com/ggerganov/llama.cpp /home/user/app/llama.cpp && pip install --no-cache-dir -r /home/user/app/llama.cpp/requirements/requirements-convert_hf_to_gguf.txt && cp /home/user/app/groups_merged.txt /home/user/app/llama.cpp/ && cd /home/user/app/llama.cpp && cmake -B build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=OFF -DLLAMA_CURL=OFF && cmake --build build --config Release -j$(nproc) --target llama-quantize llama-gguf-split llama-imatrix && cp build/bin/llama-quantize . && cp build/bin/llama-gguf-split . && cp build/bin/llama-imatrix . && chmod +x ./llama-quantize ./llama-gguf-split ./llama-imatrix && rm -rf build RUN chown -R 1000:1000 /home/user USER 1000 EXPOSE 7860 CMD ["bash", "start.sh"]