File size: 2,097 Bytes
fc46c90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
47
48
49
50
51
52
53
# ==========================================
# Etapa 1: Compilaci贸n de llama.cpp
# ==========================================
FROM ubuntu:22.04 AS builder

RUN apt-get update && apt-get install -y \
    build-essential \
    git \
    cmake \
    curl \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /build

# Clonar y compilar llama.cpp optimizado para CPU gen茅rica vCPU (Hugging Face)
RUN git clone https://github.com/ggerganov/llama.cpp.git && \
    cd llama.cpp && \
    cmake -B build -DGGML_NATIVE=OFF -DCMAKE_BUILD_TYPE=Release && \
    cmake --build build --config Release -j $(nproc)

# ==========================================
# Etapa 2: Entorno de Ejecuci贸n Ligero
# ==========================================
FROM ubuntu:22.04 AS runtime

RUN apt-get update && apt-get install -y \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Requisito estricto de HF Spaces: Crear un usuario no-root con UID 1000
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH

WORKDIR /home/user/app

# Copiar exclusivamente el binario del servidor desde la etapa de compilaci贸n
COPY --chown=user:user --from=builder /build/llama.cpp/build/bin/llama-server ./llama-server

# Descargar el modelo optimizado en formato GGUF durante el Build Time
# Nota: Usamos Qwen2.5-1.5B-Instruct (o 0.5B) por su brutal capacidad multiling眉e y velocidad instant谩nea en CPU.
# Puedes sustituir esta URL por cualquier modelo .gguf compatible (como las conversiones de Liquid LFM si est谩n mapeadas).
RUN curl -L -o model.gguf "https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf"

# Requisito estricto de HF Spaces: Exponer obligatoriamente el puerto 7860
EXPOSE 7860

# Configuraci贸n del motor de inferencia
# --host 0.0.0.0: Escuchar en todas las interfaces de red del contenedor
# --port 7860: Puerto requerido por Hugging Face
# -c 2048: Tama帽o de contexto optimizado (ahorra memoria y acelera el procesamiento del prompt)
CMD ["./llama-server", "--host", "0.0.0.0", "--port", "7860", "-m", "model.gguf", "-c", "2048"]