Add preset options and selection guide for Ollama memory profile script

This commit is contained in:
John Doe
2026-03-01 23:28:13 -05:00
parent 69bbbe37bf
commit 96ce1215df
3 changed files with 105 additions and 5 deletions
+18
View File
@@ -133,6 +133,24 @@ sudo bash ./scripts/test_llm_backends_in_ct.sh --ctid 120 --backend llama-cpp
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120
```
Use built-in presets:
```bash
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120 --preset safe
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120 --preset balanced
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120 --preset max
```
Preset selection quick guide:
| Model size (typical) | Suggested preset | Notes |
|---|---|---|
| 7B to 14B | `max` | Highest throughput, more aggressive memory/concurrency. |
| 20B to 32B | `balanced` | Best first choice for stability on large models. |
| 30B+ with load failures/OOM | `safe` | Use when `ROCm error: out of memory` appears. |
If a model fails to load, step down from `max` → `balanced` → `safe` before changing manual values.
Custom values example:
```bash
+18
View File
@@ -43,6 +43,24 @@ One-command helper from the Proxmox host:
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid <ctid>
```
Preset examples:
```bash
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid <ctid> --preset safe
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid <ctid> --preset balanced
sudo bash ./scripts/set_ollama_memory_profile_in_ct.sh --ctid <ctid> --preset max
```
Preset selection quick guide:
| Model size (typical) | Suggested preset | Notes |
|---|---|---|
| 7B to 14B | `max` | Highest throughput, more aggressive memory/concurrency. |
| 20B to 32B | `balanced` | Best first choice for stability on large models. |
| 30B+ with load failures/OOM | `safe` | Use when `ROCm error: out of memory` appears. |
If a model fails to load, step down from `max` → `balanced` → `safe` before manual tuning.
Manual method:
Create a memory-tuning drop-in:
+69 -5
View File
@@ -6,14 +6,20 @@ usage() {
Apply a safe Ollama memory profile inside a Proxmox CT (ROCm/LXC friendly).
Usage:
sudo ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120
sudo ./scripts/set_ollama_memory_profile_in_ct.sh --ctid 120 [--preset balanced]
Options:
--ctid <id> Proxmox CTID (required)
--preset <safe|balanced|max>
Preset baseline (default: balanced)
--context-length <int> OLLAMA_CONTEXT_LENGTH (default: 8192)
--num-parallel <int> OLLAMA_NUM_PARALLEL (default: 1)
--max-loaded-models <int> OLLAMA_MAX_LOADED_MODELS (default: 1)
--flash-attention <bool> OLLAMA_FLASH_ATTENTION true|false (default: false)
Notes:
- Preset sets baseline values.
- Explicit flags override preset values.
EOF
}
@@ -25,18 +31,25 @@ require_root() {
}
CTID=""
PRESET="balanced"
CONTEXT_LENGTH="8192"
NUM_PARALLEL="1"
MAX_LOADED_MODELS="1"
FLASH_ATTENTION="false"
EXPLICIT_CONTEXT_LENGTH="no"
EXPLICIT_NUM_PARALLEL="no"
EXPLICIT_MAX_LOADED_MODELS="no"
EXPLICIT_FLASH_ATTENTION="no"
while [[ $# -gt 0 ]]; do
case "$1" in
--ctid) CTID="$2"; shift 2 ;;
--context-length) CONTEXT_LENGTH="$2"; shift 2 ;;
--num-parallel) NUM_PARALLEL="$2"; shift 2 ;;
--max-loaded-models) MAX_LOADED_MODELS="$2"; shift 2 ;;
--flash-attention) FLASH_ATTENTION="$2"; shift 2 ;;
--preset) PRESET="$2"; shift 2 ;;
--context-length) CONTEXT_LENGTH="$2"; EXPLICIT_CONTEXT_LENGTH="yes"; shift 2 ;;
--num-parallel) NUM_PARALLEL="$2"; EXPLICIT_NUM_PARALLEL="yes"; shift 2 ;;
--max-loaded-models) MAX_LOADED_MODELS="$2"; EXPLICIT_MAX_LOADED_MODELS="yes"; shift 2 ;;
--flash-attention) FLASH_ATTENTION="$2"; EXPLICIT_FLASH_ATTENTION="yes"; shift 2 ;;
-h|--help) usage; exit 0 ;;
*)
echo "Unknown argument: $1" >&2
@@ -46,6 +59,57 @@ while [[ $# -gt 0 ]]; do
esac
done
case "$PRESET" in
safe)
PRESET_CONTEXT_LENGTH="4096"
PRESET_NUM_PARALLEL="1"
PRESET_MAX_LOADED_MODELS="1"
PRESET_FLASH_ATTENTION="false"
;;
balanced)
PRESET_CONTEXT_LENGTH="8192"
PRESET_NUM_PARALLEL="1"
PRESET_MAX_LOADED_MODELS="1"
PRESET_FLASH_ATTENTION="false"
;;
max)
PRESET_CONTEXT_LENGTH="16384"
PRESET_NUM_PARALLEL="2"
PRESET_MAX_LOADED_MODELS="2"
PRESET_FLASH_ATTENTION="true"
;;
*)
echo "--preset must be one of: safe, balanced, max" >&2
exit 1
;;
esac
CUSTOM_CONTEXT_LENGTH="$CONTEXT_LENGTH"
CUSTOM_NUM_PARALLEL="$NUM_PARALLEL"
CUSTOM_MAX_LOADED_MODELS="$MAX_LOADED_MODELS"
CUSTOM_FLASH_ATTENTION="$FLASH_ATTENTION"
CONTEXT_LENGTH="$PRESET_CONTEXT_LENGTH"
NUM_PARALLEL="$PRESET_NUM_PARALLEL"
MAX_LOADED_MODELS="$PRESET_MAX_LOADED_MODELS"
FLASH_ATTENTION="$PRESET_FLASH_ATTENTION"
if [[ "$EXPLICIT_CONTEXT_LENGTH" == "yes" ]]; then
CONTEXT_LENGTH="$CUSTOM_CONTEXT_LENGTH"
fi
if [[ "$EXPLICIT_NUM_PARALLEL" == "yes" ]]; then
NUM_PARALLEL="$CUSTOM_NUM_PARALLEL"
fi
if [[ "$EXPLICIT_MAX_LOADED_MODELS" == "yes" ]]; then
MAX_LOADED_MODELS="$CUSTOM_MAX_LOADED_MODELS"
fi
if [[ "$EXPLICIT_FLASH_ATTENTION" == "yes" ]]; then
FLASH_ATTENTION="$CUSTOM_FLASH_ATTENTION"
fi
if [[ -z "$CTID" ]]; then
echo "--ctid is required." >&2
usage