| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| export HIP_VISIBLE_DEVICES="0" |
|
|
| |
| MODEL_PATH="${1:-../models/model.gguf}" |
| CONTEXT="${2:-32768}" |
| CHAT_TEMPLATE="${3:-none}" |
|
|
| shift 3 || true |
| EXTRA_ARGS="$@" |
|
|
| LLAMA_DIR="../llama.cpp/build/bin" |
|
|
| |
| WORKERS=( |
| |
| |
| |
| |
| ) |
|
|
| echo "π PrΓΌfe alle Worker..." |
|
|
| AVAILABLE=() |
| for entry in "${WORKERS[@]}"; do |
| ip="${entry%%:*}" |
| rest="${entry#*:}" |
| port="${rest%%:*}" |
| vram="${rest##*:}" |
| if nc -z -w 1 "$ip" "$port" >/dev/null 2>&1; then |
| echo "[+] $ip:$port erreichbar (${vram}GB)" |
| AVAILABLE+=("$vram:$ip:$port") |
| else |
| echo "[-] $ip:$port nicht erreichbar" |
| fi |
| done |
|
|
| if [ ${#AVAILABLE[@]} -eq 0 ]; then |
| echo "β Keine Worker gefunden β starte lokal ohne RPC." |
| RPC_FLAG="" |
| else |
| |
| IFS=$'\n' SORTED=($(sort -t: -k1 -rn <<< "${AVAILABLE[*]}")) |
| unset IFS |
|
|
| RPC_NODES="" |
| echo "" |
| echo "π Worker-Reihenfolge nach VRAM:" |
| for entry in "${SORTED[@]}"; do |
| vram="${entry%%:*}" |
| rest="${entry#*:}" |
| ip="${rest%%:*}" |
| port="${rest##*:}" |
| echo " ${vram}GB -> $ip:$port" |
| [ -z "$RPC_NODES" ] && RPC_NODES="$ip:$port" || RPC_NODES="$RPC_NODES,$ip:$port" |
| done |
| RPC_FLAG="--rpc $RPC_NODES" |
| fi |
|
|
| |
| TEMPLATE_FLAG="" |
| if [ "$CHAT_TEMPLATE" != "none" ] && [ -n "$CHAT_TEMPLATE" ]; then |
| TEMPLATE_FLAG="--chat-template $CHAT_TEMPLATE" |
| fi |
|
|
| echo "" |
| echo "=========================================" |
| echo "π Starte Master Server" |
| echo "Modell: $(basename "$MODEL_PATH")" |
| echo "Kontext: $CONTEXT" |
| echo "RPC: ${RPC_NODES:-keine Worker}" |
| echo "Template: ${CHAT_TEMPLATE:-standard}" |
| echo "=========================================" |
|
|
| cd "$LLAMA_DIR" || exit 1 |
|
|
| ./llama-server \ |
| -m "$MODEL_PATH" \ |
| -c "$CONTEXT" \ |
| --no-kv-offload \ |
| $RPC_FLAG \ |
| --host 0.0.0.0 \ |
| --port 8081 \ |
| $TEMPLATE_FLAG \ |
| $EXTRA_ARGS |
|
|