Auto-tune ctx-size, batch and cache types for low-memory (<=16GB) Spaces; export CACHE_TYPE_{K,V}
Browse files
start.sh
CHANGED
|
@@ -13,6 +13,8 @@ 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"
|
|
@@ -53,6 +55,32 @@ case "$PERF_PROFILE" in
|
|
| 53 |
;;
|
| 54 |
esac
|
| 55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
server_args=(
|
| 57 |
--model "$MODEL_PATH"
|
| 58 |
--host 0.0.0.0
|
|
@@ -65,8 +93,8 @@ server_args=(
|
|
| 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
|
| 69 |
-
--cache-type-v "${CACHE_TYPE_V
|
| 70 |
--metrics
|
| 71 |
)
|
| 72 |
|
|
|
|
| 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 |
+
export CACHE_TYPE_K="${CACHE_TYPE_K:-f16}"
|
| 17 |
+
export CACHE_TYPE_V="${CACHE_TYPE_V:-f16}"
|
| 18 |
|
| 19 |
# Ensure data directories exist and are writable. Run as root in container startup.
|
| 20 |
echo "preparing storage: $HF_HOME and $MODEL_DIR"
|
|
|
|
| 55 |
;;
|
| 56 |
esac
|
| 57 |
|
| 58 |
+
# Adjust defaults for low-memory environments (Spaces free tier: ~16GB)
|
| 59 |
+
if [ -r /proc/meminfo ]; then
|
| 60 |
+
MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo || echo 0)
|
| 61 |
+
else
|
| 62 |
+
MEM_KB=0
|
| 63 |
+
fi
|
| 64 |
+
echo "detected memory (KB): $MEM_KB"
|
| 65 |
+
if [ "$MEM_KB" -gt 0 ] && [ "$MEM_KB" -le 18000000 ]; then
|
| 66 |
+
echo "low-memory profile detected: adjusting ctx-size and cache types"
|
| 67 |
+
# reduce default context to save KV cache memory
|
| 68 |
+
CTX_SIZE="${CTX_SIZE:-2048}"
|
| 69 |
+
# use compact cache formats
|
| 70 |
+
CACHE_TYPE_K="${CACHE_TYPE_K:-f16}"
|
| 71 |
+
CACHE_TYPE_V="${CACHE_TYPE_V:-f16}"
|
| 72 |
+
# further reduce batch sizes if balanced/throughput
|
| 73 |
+
if [ "$PERF_PROFILE" = "balanced" ]; then
|
| 74 |
+
DEFAULT_BATCH=4
|
| 75 |
+
DEFAULT_UBATCH=4
|
| 76 |
+
elif [ "$PERF_PROFILE" = "throughput" ]; then
|
| 77 |
+
DEFAULT_BATCH=64
|
| 78 |
+
DEFAULT_UBATCH=64
|
| 79 |
+
fi
|
| 80 |
+
fi
|
| 81 |
+
|
| 82 |
+
export CACHE_TYPE_K CACHE_TYPE_V CTX_SIZE
|
| 83 |
+
|
| 84 |
server_args=(
|
| 85 |
--model "$MODEL_PATH"
|
| 86 |
--host 0.0.0.0
|
|
|
|
| 93 |
--batch-size "${BATCH_SIZE:-$DEFAULT_BATCH}"
|
| 94 |
--ubatch-size "${UBATCH_SIZE:-$DEFAULT_UBATCH}"
|
| 95 |
--ctx-size "${CTX_SIZE:-4096}"
|
| 96 |
+
--cache-type-k "${CACHE_TYPE_K}"
|
| 97 |
+
--cache-type-v "${CACHE_TYPE_V}"
|
| 98 |
--metrics
|
| 99 |
)
|
| 100 |
|