codex-agent-3 / Dockerfile
m5ike's picture
upd
0f9caed
Raw
History Blame Contribute Delete
1.75 kB
# 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 <repo_id>`
# (mount_path /repos/<repo_id>). 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"]