FROM python:3.10-slim WORKDIR /app # Install minimal system dependencies (OpenBLAS + OpenMP for the prebuilt wheel) RUN apt-get update && apt-get install -y \ libopenblas-dev \ libopencc-dev \ libgomp1 \ && rm -rf /var/lib/apt/lists/* # Install llama-cpp-python from a prebuilt wheel (FAST - no source build). # # Bumped 0.3.22 -> 0.3.30 to pick up newer llama.cpp model-architecture support # (the 2026 model families added to app.py — Qwen3.5, Granite 4.0 hybrid-Mamba, # SmolLM3, LFM2.5 — need a recent llama.cpp to load). # # This uses the OFFICIAL prebuilt CPU wheel index (manylinux2014 x86_64, no # compile). Trade-off vs the previous custom Luigi/...-free-cpu wheel: that one # was built with OpenBLAS tuned for the free tier, whereas the official CPU wheel # is a generic build — prompt-processing throughput may differ. For best perf, # rebuild a 0.3.30 OpenBLAS wheel into that repo and pin it here instead. # # NOTE: this must be verified with a Space rebuild — confirm the new models load. RUN pip install --no-cache-dir "llama-cpp-python==0.3.30" \ --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu # Fallback (previous pinned wheel, supports fewer 2026 architectures): # RUN pip install --no-cache-dir \ # https://huggingface.co/Luigi/llama-cpp-python-wheels-hf-spaces-free-cpu/resolve/main/llama_cpp_python-0.3.22-cp310-cp310-linux_x86_64.whl # Copy and install other requirements COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy application files COPY app.py . COPY meeting_summarizer/ meeting_summarizer/ # Pre-download model on build (optional, speeds up first run) # RUN python -c "from huggingface_hub import hf_hub_download; hf_hub_download(repo_id='unsloth/Qwen3-0.6B-GGUF', filename='Qwen3-0.6B-Q4_K_M.gguf', local_dir='./models')" EXPOSE 7860 # Cache bust: 2026-06-19-v2 (llama-cpp-python 0.3.30 + 2026 model registry) CMD ["python", "app.py"]