sayshara commited on
Commit
1bd77b1
·
verified ·
1 Parent(s): 2083edb

Download GGUF at runtime

Browse files
Files changed (2) hide show
  1. Dockerfile +5 -9
  2. start_server.py +44 -0
Dockerfile CHANGED
@@ -2,23 +2,19 @@ FROM ghcr.io/ggml-org/llama.cpp:server
2
 
3
  ENV MODEL_REPO=sayshara/nemotron-3-nano-4b-ascii-art-GGUF
4
  ENV MODEL_FILE=nemotron-3-nano-4b-ascii-art-q4_k_m.gguf
5
- ENV MODEL_PATH=/models/nemotron-3-nano-4b-ascii-art-q4_k_m.gguf
6
  ENV PORT=7860
7
  ENV CTX_SIZE=2048
8
  ENV N_GPU_LAYERS=0
 
9
 
10
  USER root
11
  RUN apt-get update \
12
- && apt-get install -y --no-install-recommends curl ca-certificates \
13
  && rm -rf /var/lib/apt/lists/* \
14
- && mkdir -p /models \
15
- && curl -L --fail --retry 5 --retry-delay 5 \
16
- "https://huggingface.co/${MODEL_REPO}/resolve/main/${MODEL_FILE}" \
17
- -o "${MODEL_PATH}"
18
 
19
- COPY start_server.sh /app/start_server.sh
20
- RUN chmod +x /app/start_server.sh
21
 
22
  EXPOSE 7860
23
  ENTRYPOINT []
24
- CMD ["/app/start_server.sh"]
 
2
 
3
  ENV MODEL_REPO=sayshara/nemotron-3-nano-4b-ascii-art-GGUF
4
  ENV MODEL_FILE=nemotron-3-nano-4b-ascii-art-q4_k_m.gguf
 
5
  ENV PORT=7860
6
  ENV CTX_SIZE=2048
7
  ENV N_GPU_LAYERS=0
8
+ ENV HF_HUB_ENABLE_HF_TRANSFER=1
9
 
10
  USER root
11
  RUN apt-get update \
12
+ && apt-get install -y --no-install-recommends python3 python3-pip ca-certificates \
13
  && rm -rf /var/lib/apt/lists/* \
14
+ && python3 -m pip install --break-system-packages --no-cache-dir "huggingface_hub[hf_transfer]"
 
 
 
15
 
16
+ COPY start_server.py /app/start_server.py
 
17
 
18
  EXPOSE 7860
19
  ENTRYPOINT []
20
+ CMD ["python3", "/app/start_server.py"]
start_server.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from huggingface_hub import hf_hub_download
2
+ import os
3
+ import shutil
4
+ import subprocess
5
+ import sys
6
+
7
+ repo = os.environ.get("MODEL_REPO", "sayshara/nemotron-3-nano-4b-ascii-art-GGUF")
8
+ filename = os.environ.get("MODEL_FILE", "nemotron-3-nano-4b-ascii-art-q4_k_m.gguf")
9
+ token = os.environ.get("HF_TOKEN") or os.environ.get("HUGGING_FACE_HUB_TOKEN")
10
+ cache_dir = os.environ.get("HF_HOME", "/data/.cache/huggingface")
11
+ local_dir = os.environ.get("MODEL_DIR", "/data/models")
12
+ os.makedirs(local_dir, exist_ok=True)
13
+
14
+ print(f"Downloading {repo}/{filename}...", flush=True)
15
+ model_path = hf_hub_download(
16
+ repo_id=repo,
17
+ filename=filename,
18
+ token=token,
19
+ cache_dir=cache_dir,
20
+ local_dir=local_dir,
21
+ )
22
+
23
+ server_bin = shutil.which("llama-server")
24
+ if server_bin is None:
25
+ for candidate in ("/app/llama-server", "/usr/local/bin/llama-server", "/usr/bin/llama-server", "/llama-server"):
26
+ if os.path.exists(candidate):
27
+ server_bin = candidate
28
+ break
29
+ if server_bin is None:
30
+ print("Could not find llama-server", flush=True)
31
+ raise FileNotFoundError("llama-server")
32
+
33
+ cmd = [
34
+ server_bin,
35
+ "-m", model_path,
36
+ "--host", "0.0.0.0",
37
+ "--port", os.environ.get("PORT", "7860"),
38
+ "-c", os.environ.get("CTX_SIZE", "2048"),
39
+ "-ngl", os.environ.get("N_GPU_LAYERS", "0"),
40
+ ]
41
+
42
+ print("Starting:", " ".join(cmd), flush=True)
43
+ sys.stdout.flush()
44
+ subprocess.run(cmd, check=True)