0xarchit commited on
Commit
f5bcacf
·
1 Parent(s): 8762214

Add QUANT_PREFERENCE and PERF_PROFILE (low_latency/balanced/throughput) with server defaults

Browse files
Files changed (2) hide show
  1. download_model.py +25 -27
  2. start.sh +30 -3
download_model.py CHANGED
@@ -16,33 +16,31 @@ def require_env(name: str) -> str:
16
 
17
  def quant_rank(file_name: str) -> tuple[int, str]:
18
  name = file_name.lower()
19
-
20
- q8_tokens = ("q8_k_l", "q8_k_m", "q8_k_s", "q8_k", "q8_0", "q8_1")
21
- if any(token in name for token in q8_tokens):
22
- return (0, file_name)
23
-
24
- if "f16" in name or "bf16" in name:
25
- return (1, file_name)
26
-
27
- if any(token in name for token in ("q6_k", "q6_0", "q6_1", "q6")):
28
- return (2, file_name)
29
-
30
- if any(token in name for token in ("q5_k_m", "q5_k_s", "q5_k", "q5_0", "q5_1", "q5")):
31
- return (3, file_name)
32
-
33
- if any(token in name for token in ("q4_k_m", "q4_k_s", "q4_k", "q4_0", "q4_1", "q4")):
34
- return (4, file_name)
35
-
36
- if any(token in name for token in ("q3_k_m", "q3_k_s", "q3_k", "q3_0", "q3_1", "q3")):
37
- return (5, file_name)
38
-
39
- if any(token in name for token in ("q2_k", "q2_0", "q2_1", "q2")):
40
- return (6, file_name)
41
-
42
- if "f32" in name:
43
- return (7, file_name)
44
-
45
- return (8, file_name)
46
 
47
 
48
  def main() -> None:
 
16
 
17
  def quant_rank(file_name: str) -> tuple[int, str]:
18
  name = file_name.lower()
19
+ # Allow user-specified preference list via QUANT_PREFERENCE env (comma-separated)
20
+ pref = os.environ.get("QUANT_PREFERENCE", "q4_k_m").split(",")
21
+ pref = [p.strip().lower() for p in pref if p.strip()]
22
+ for idx, token in enumerate(pref):
23
+ if token in name:
24
+ return (idx, file_name)
25
+
26
+ # fallback groups (lower priority than explicit preference)
27
+ groups = [
28
+ ("q8_k_l", "q8_k_m", "q8_k_s", "q8_k", "q8_0", "q8_1"),
29
+ ("f16", "bf16"),
30
+ ("q6_k", "q6_0", "q6_1", "q6"),
31
+ ("q5_k_m", "q5_k_s", "q5_k", "q5_0", "q5_1", "q5"),
32
+ ("q4_k_m", "q4_k_s", "q4_k", "q4_0", "q4_1", "q4"),
33
+ ("q3_k_m", "q3_k_s", "q3_k", "q3_0", "q3_1", "q3"),
34
+ ("q2_k", "q2_0", "q2_1", "q2"),
35
+ ("f32",),
36
+ ]
37
+ base = len(pref)
38
+ for gi, tokens in enumerate(groups):
39
+ for token in tokens:
40
+ if token in name:
41
+ return (base + gi, file_name)
42
+
43
+ return (base + len(groups), file_name)
 
 
44
 
45
 
46
  def main() -> None:
start.sh CHANGED
@@ -11,6 +11,8 @@ export HF_HOME="${HF_HOME:-/data/hf-cache}"
11
  export MODEL_DIR="${MODEL_DIR:-/data/models}"
12
  export MODEL_PATH="${MODEL_PATH:-/data/models/model.gguf}"
13
  export CTX_SIZE="${CONTEXT_LENGTH:-${CTX_SIZE:-4096}}"
 
 
14
 
15
  # Ensure data directories exist and are writable. Run as root in container startup.
16
  echo "preparing storage: $HF_HOME and $MODEL_DIR"
@@ -27,6 +29,30 @@ fi
27
 
28
  LLAMA_SERVER_BIN="${LLAMA_SERVER_BIN:-/usr/local/bin/llama-server}"
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  server_args=(
31
  --model "$MODEL_PATH"
32
  --host 0.0.0.0
@@ -35,9 +61,9 @@ server_args=(
35
  --mmap
36
  -ngl 0
37
  -t "$THREADS"
38
- --threads-batch "${THREADS_BATCH:-$THREADS}"
39
- --batch-size "${BATCH_SIZE:-512}"
40
- --ubatch-size "${UBATCH_SIZE:-512}"
41
  --ctx-size "${CTX_SIZE:-4096}"
42
  --cache-type-k "${CACHE_TYPE_K:-f16}"
43
  --cache-type-v "${CACHE_TYPE_V:-f16}"
@@ -49,5 +75,6 @@ if [[ -n "${PARALLEL:-}" ]]; then
49
  fi
50
 
51
  server_cmd=("$LLAMA_SERVER_BIN" "${server_args[@]}")
 
52
  echo "starting llama-server"
53
  exec su -s /bin/sh appuser -c "$(printf '%q ' "${server_cmd[@]}")"
 
11
  export MODEL_DIR="${MODEL_DIR:-/data/models}"
12
  export MODEL_PATH="${MODEL_PATH:-/data/models/model.gguf}"
13
  export CTX_SIZE="${CONTEXT_LENGTH:-${CTX_SIZE:-4096}}"
14
+ export QUANT_PREFERENCE="${QUANT_PREFERENCE:-q4_k_m,q4_k_s,q4_k,q4_0,q4_1}"
15
+ export PERF_PROFILE="${PERF_PROFILE:-balanced}"
16
 
17
  # Ensure data directories exist and are writable. Run as root in container startup.
18
  echo "preparing storage: $HF_HOME and $MODEL_DIR"
 
29
 
30
  LLAMA_SERVER_BIN="${LLAMA_SERVER_BIN:-/usr/local/bin/llama-server}"
31
 
32
+ # set server profile defaults
33
+ case "$PERF_PROFILE" in
34
+ low_latency)
35
+ DEFAULT_BATCH=1
36
+ DEFAULT_UBATCH=1
37
+ DEFAULT_THREADS_BATCH=1
38
+ ;;
39
+ balanced)
40
+ DEFAULT_BATCH=8
41
+ DEFAULT_UBATCH=8
42
+ DEFAULT_THREADS_BATCH=${THREADS}
43
+ ;;
44
+ throughput)
45
+ DEFAULT_BATCH=512
46
+ DEFAULT_UBATCH=512
47
+ DEFAULT_THREADS_BATCH=${THREADS}
48
+ ;;
49
+ *)
50
+ DEFAULT_BATCH=8
51
+ DEFAULT_UBATCH=8
52
+ DEFAULT_THREADS_BATCH=${THREADS}
53
+ ;;
54
+ esac
55
+
56
  server_args=(
57
  --model "$MODEL_PATH"
58
  --host 0.0.0.0
 
61
  --mmap
62
  -ngl 0
63
  -t "$THREADS"
64
+ --threads-batch "${THREADS_BATCH:-$DEFAULT_THREADS_BATCH}"
65
+ --batch-size "${BATCH_SIZE:-$DEFAULT_BATCH}"
66
+ --ubatch-size "${UBATCH_SIZE:-$DEFAULT_UBATCH}"
67
  --ctx-size "${CTX_SIZE:-4096}"
68
  --cache-type-k "${CACHE_TYPE_K:-f16}"
69
  --cache-type-v "${CACHE_TYPE_V:-f16}"
 
75
  fi
76
 
77
  server_cmd=("$LLAMA_SERVER_BIN" "${server_args[@]}")
78
+ echo "server command: $LLAMA_SERVER_BIN ${server_args[*]}"
79
  echo "starting llama-server"
80
  exec su -s /bin/sh appuser -c "$(printf '%q ' "${server_cmd[@]}")"