Spaces:
Paused
Paused
File size: 4,776 Bytes
a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 ed62617 a716923 | 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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# OMNI-NEXUS Β· Worker de chat (reemplaza al de BitNet)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
#
# POR QUΓ YA NO SE USA BITNET
# βββββββββββββββββββββββββββ
# bitnet.cpp NO incluye servidor HTTP. Su submΓ³dulo de llama.cpp solo compila
# `llama-cli`; el target `llama-server` no existe, de ahΓ el error
# "No rule to make target 'llama-server'" que salΓa siempre.
# Y `setup_env.py` morΓa con OOMKilled porque convierte el modelo con PyTorch
# durante el build, cosa que no cabe en la RAM del builder de HF.
#
# Esta imagen usa los binarios OFICIALES precompilados de llama.cpp β la misma
# receta con la que tu Space `coder` ya arranca sin problemas. Cero compilaciΓ³n
# de C++, build de 3-5 minutos en vez de 25.
#
# EL BUG DE libllama.so, RESUELTO
# βββββββββββββββββββββββββββββββ
# El zip oficial trae el binario Y sus librerΓas compartidas. Antes copiaba
# solo el binario y por eso fallaba con "libllama.so: cannot open shared
# object file". Ahora se copia el directorio COMPLETO y se registra con
# ldconfig.
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FROM python:3.11-slim AS llama
RUN apt-get update && apt-get install -y --no-install-recommends \
wget unzip ca-certificates \
&& rm -rf /var/lib/apt/lists/*
ARG LLAMA_RELEASE="b4585"
RUN wget -q -O /tmp/l.zip \
"https://github.com/ggml-org/llama.cpp/releases/download/${LLAMA_RELEASE}/llama-${LLAMA_RELEASE}-bin-ubuntu-x64.zip" \
&& mkdir -p /llama && unzip -q /tmp/l.zip -d /llama \
&& echo "[LLAMA] contenido descargado:" && find /llama -name "llama-server" -o -name "*.so*" | head -20
# ββ Modelo βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FROM python:3.11-slim AS fetcher
RUN pip install --no-cache-dir huggingface_hub
# Llama 3.2 3B en Q4_K_M (~2 GB). En 2 vCPU da 8-12 tok/s.
# Para mΓ‘s velocidad y menos calidad, cambia a 1B (~0.8 GB, 20-30 tok/s):
# MODEL_REPO=bartowski/Llama-3.2-1B-Instruct-GGUF
# MODEL_FILE=Llama-3.2-1B-Instruct-Q4_K_M.gguf
ARG MODEL_REPO="bartowski/Llama-3.2-3B-Instruct-GGUF"
ARG MODEL_FILE="Llama-3.2-3B-Instruct-Q4_K_M.gguf"
ENV MODEL_REPO=${MODEL_REPO}
ENV MODEL_FILE=${MODEL_FILE}
COPY download_model.py /tmp/download_model.py
RUN mkdir -p /models && python3 /tmp/download_model.py
# ββ Runtime ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
FROM python:3.11-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates libgomp1 libstdc++6 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Directorio COMPLETO, no solo el binario: asΓ vienen las .so que necesita.
COPY --from=llama /llama /opt/llama
COPY --from=fetcher /models /models
# Localizar el binario donde sea que estΓ© dentro del zip, enlazarlo, y
# registrar sus librerΓas en el linker dinΓ‘mico.
RUN BIN="$(find /opt/llama -name 'llama-server' -type f | head -1)" \
&& test -n "$BIN" || { echo "FATAL: llama-server no encontrado"; exit 1; } \
&& chmod +x "$BIN" && ln -sf "$BIN" /usr/local/bin/llama-server \
&& find /opt/llama -name "*.so*" -exec cp {} /usr/local/lib/ \; \
&& ldconfig \
&& echo "/usr/local/lib" > /etc/ld.so.conf.d/llama.conf && ldconfig \
&& llama-server --version 2>&1 | head -3 || true
RUN pip install --no-cache-dir \
fastapi==0.115.6 \
"uvicorn[standard]==0.34.0" \
httpx==0.28.1
ENV N_CTX=4096
ENV N_THREADS=2
ENV LLAMA_PORT=8080
ENV PORT=7860
ENV WORKER_ID=A
ENV WORKER_KIND=chat
ENV MODEL_NAME="llama-3.2-3b"
ENV CHAT_TEMPLATE=llama3
ENV LLAMA_TIMEOUT=180.0
ENV LD_LIBRARY_PATH="/usr/local/lib"
COPY server.py start.sh ./
RUN chmod +x start.sh
EXPOSE 7860
HEALTHCHECK --interval=30s --timeout=15s --start-period=240s --retries=5 \
CMD curl -f http://localhost:7860/health || exit 1
CMD ["./start.sh"]
|