File size: 1,751 Bytes
0f9caed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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"]