#!/usr/bin/env bash # Provisioniert die Inferenz-Engine auf der AI Box (Strix Halo / Ryzen AI MAX+ 395, gfx1151) # auf **Vulkan/RADV** — reproduzierbar. Braucht root (sudo). # # sudo bash ~/mission-control-v2/deploy/provision-engine.sh # # Hintergrund: Auf gfx1151 ist Vulkan/RADV ggü. ROCm/HIP messbar schneller # (Token-Gen +12–22 %, Prefill gleich; auf der Box per llama-bench verifiziert 2026-06-27) # UND einfacher. Der ROCm-Build bleibt unter /opt/llamacpp als Rollback liegen. set -euo pipefail VULKAN_DIR=/opt/llamacpp-vulkan WARMUP_DST=/usr/local/bin/llama-swap-warmup.sh DROPIN_DIR=/etc/systemd/system/llama-swap.service.d SRC_DIR="$(cd "$(dirname "$0")" && pwd)" # Optional gepinnter Build (z.B. b9821). Leer = neuester Release. PIN_BUILD="${MC_ENGINE_BUILD:-}" echo "==> 1. RADV-Treiber + Vulkan-Runtime" export DEBIAN_FRONTEND=noninteractive apt-get update -qq apt-get install -y mesa-vulkan-drivers libvulkan1 vulkan-tools curl jq echo "==> 2. llama.cpp Vulkan-Build nach $VULKAN_DIR" if [ -n "$PIN_BUILD" ]; then TAG="$PIN_BUILD" else TAG="$(curl -s https://api.github.com/repos/ggml-org/llama.cpp/releases/latest | jq -r .tag_name)" fi ASSET="llama-${TAG}-bin-ubuntu-vulkan-x64.tar.gz" URL="https://github.com/ggml-org/llama.cpp/releases/download/${TAG}/${ASSET}" TMP="$(mktemp -d)" echo " Lade $URL" curl -sL -o "$TMP/v.tgz" "$URL" mkdir -p "$VULKAN_DIR" tar xzf "$TMP/v.tgz" -C "$TMP" # Tarball entpackt nach .../llama-/ — Inhalt flach nach $VULKAN_DIR cp -rf "$TMP"/llama-*/. "$VULKAN_DIR"/ rm -rf "$TMP" test -x "$VULKAN_DIR/llama-server" echo "==> 3. Symlink llama-server -> Vulkan-Build" ln -sfn "$VULKAN_DIR/llama-server" /usr/local/bin/llama-server echo "==> 4. systemd Drop-ins für llama-swap (LD_LIBRARY_PATH + Brain-Warmup)" mkdir -p "$DROPIN_DIR" cat > "$DROPIN_DIR/vulkan.conf" < "$DROPIN_DIR/warmup.conf" < 5. Reload + Restart" systemctl daemon-reload systemctl restart llama-swap sleep 3 systemctl is-active llama-swap echo "==> Fertig. Aktive Engine:" readlink -f /usr/local/bin/llama-server vulkaninfo --summary 2>/dev/null | grep -m1 deviceName || true echo "Rollback auf ROCm: ln -sfn /opt/llamacpp/llama-server /usr/local/bin/llama-server && rm $DROPIN_DIR/vulkan.conf && systemctl daemon-reload && systemctl restart llama-swap"