Spaces:
Sleeping
Sleeping
File size: 2,698 Bytes
775cbe6 bee6df4 775cbe6 bee6df4 775cbe6 bee6df4 d04144c bee6df4 775cbe6 d04144c 775cbe6 bee6df4 d04144c 775cbe6 | 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 | FROM ghcr.io/ggml-org/llama.cpp:server AS llama_cpp
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PORT=7860 \
LD_LIBRARY_PATH=/opt/llama \
CUSTOMER_AI_CONSTRUCTIVE_API_URL=http://127.0.0.1:8081/v1/chat/completions \
CUSTOMER_AI_ADVERSARIAL_API_URL=http://127.0.0.1:8082/v1/chat/completions \
CUSTOMER_AI_EVIDENCE_API_URL=http://127.0.0.1:8083/v1/chat/completions \
CUSTOMER_AI_LOCAL_4B_PATH=/models/llm-jp-3-3.7b-instruct3-Q4_K_M.gguf \
CUSTOMER_AI_LOCAL_8B_PATH=/models/llm-jp-4-8b-instruct-Q4_K_M.gguf
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl libgomp1 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=llama_cpp /app /opt/llama
COPY requirements.txt /app/requirements.txt
RUN python -m pip install --no-cache-dir --upgrade pip \
&& python -m pip install --no-cache-dir -r /app/requirements.txt
# Download immutable, public GGUF weights at build time. These are local model
# files, not Hugging Face Inference Provider calls, so runtime inference credits
# are never consumed.
RUN mkdir -p /models \
&& python - <<'PY'
from hashlib import sha256
from pathlib import Path
from huggingface_hub import hf_hub_download
targets = [
{
"repo": "mmnga/llm-jp-3-3.7b-instruct3-gguf",
"revision": "7edef5a4f094ec8c1aed1e196c6a544675efbc2f",
"filename": "llm-jp-3-3.7b-instruct3-Q4_K_M.gguf",
"sha256": "a4a09d2141717a01b44e7a8dbdb28da8c01e9078c8051367cd6a20f7008ef5a8",
},
{
"repo": "mmnga-o/llm-jp-4-8b-instruct-gguf",
"revision": "7ae4da12cee2f109509cb8e1d01cf8a0f1a5fbc1",
"filename": "llm-jp-4-8b-instruct-Q4_K_M.gguf",
"sha256": "b6a61b9c8d4e7cb1ae543d8fcf472c9fb9abfc5d48af17f5017ce89c2dc0bd56",
},
]
for item in targets:
path = Path(
hf_hub_download(
repo_id=item["repo"],
revision=item["revision"],
filename=item["filename"],
local_dir="/models",
)
)
h = sha256()
with path.open("rb") as handle:
for chunk in iter(lambda: handle.read(8 * 1024 * 1024), b""):
h.update(chunk)
actual = h.hexdigest()
if actual != item["sha256"]:
raise SystemExit(
f"local_model_sha_mismatch file={item['filename']} expected={item['sha256']} actual={actual}"
)
print(f"LOCAL_MODEL_PINNED={path.name} SHA256={actual}")
PY
COPY app.py /app/app.py
COPY runtime /app/runtime
COPY config /app/config
COPY scripts/start_local_cpu.sh /app/scripts/start_local_cpu.sh
RUN chmod +x /app/scripts/start_local_cpu.sh
EXPOSE 7860
CMD ["/app/scripts/start_local_cpu.sh"]
|