# CodeAgent v5 — HF Space na 4× NVIDIA A100 80GB s vLLM subprocess enginem. # # Klíčové změny oproti v4: # - Base image = oficiální vllm/vllm-openai => torch/CUDA/kernely vždy # konzistentní s vLLM, žádná kompilace při buildu. # - Modely se NEZAPÉKAJÍ do image ani nestahují při buildu. Ephemeral disk # Space má jen ~50 GB; velké modely (60–240 GB) se připojují jako # read-only VOLUMES: `python scripts/space_ctl.py mount ` # (mount_path /repos/). Stahování za běhu jde do RW storage # bucketu (/data/models — auto-detekce, přežije restart), jinak do # ephemeral /app/cache/models. Adresář lze změnit za běhu (download_dir). # - Aplikace startuje ihned (UI/API dostupné), vLLM engine se načítá na # pozadí a lze ho za běhu reloadnout s jiným modelem — bez restartu Space. FROM vllm/vllm-openai:v0.25.1 ENV DEBIAN_FRONTEND=noninteractive \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ HF_HOME=/app/cache/hf \ HF_XET_HIGH_PERFORMANCE=1 \ VLLM_WORKER_MULTIPROC_METHOD=spawn \ ENGINE_LOG=/tmp/vllm-engine.log \ LOG_FILE=/tmp/codeagent.log # HF Spaces spouští kontejner pod uid 1000. RUN useradd -m -u 1000 user && \ mkdir -p /app/cache/hf /app/cache/models /app/models /app/.agent /repos && \ chown -R user:user /app WORKDIR /app COPY --chown=user requirements.txt /app/requirements.txt RUN pip install --no-cache-dir -r /app/requirements.txt COPY --chown=user . /app USER user EXPOSE 7860 # Base image má ENTRYPOINT na `vllm serve` — resetujeme; server spouští app.py # (vLLM běží jako subprocess řízený engine.py). ENTRYPOINT [] CMD ["python3", "-m", "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]