Files
serverAppConfigs/scripts/build-kairic-edge-gfx1151.sh
Frank b2a74004df frank-large: swap to Kairic Edge 27B IU4 (W4A4) on Strix Halo
Replace the unsloth llama.cpp prebuilt (b11030, Qwen3.8-Flash-Next
UD-IQ4_XS, 125B MoE) with the Kairic Edge runtime (ciru-ai/ROCmFPX,
branch kairic-edge-qwen38-27b-v1.2, commit 205a3e5) serving
jcbtc/Qwen3.8-27B-IU4-Kairic-Edge (27B dense, IU4 W4A4).

- Runtime: built from source (scripts/build-kairic-edge-gfx1151.sh),
  TheRock 7.15.0a20260718 toolchain, CK fdf4bb7f + gfx1151-iu4 patch.
- Shape: one stream, full 262144 context (the model's native window),
  1 slot, 8 GiB prompt-cache budget.
- Spec method: native MTP depth 4 + n-gram drafting (24/64/64). DFlash
  is NOT available for this model (no DRAFT_DFLASH spec type).
- Compatibility mode: the harness needs sampling, tools and a reasoning
  budget, which fast-greedy rejects. COMPATIBILITY_MODE=1 enables them.
- Reasoning: enabled (auto + deepseek format, thoughts land in
  reasoning_content).
- Payload: 4 files (15.5 GiB GGUF + 7.99 GiB FFN + 1.88 GiB GDN + 0.70
  GiB GDN-Output), sha256-verified (scripts/download-frank-large-kairic.sh).
2026-09-21 18:56:35 -07:00

97 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
readonly repo_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
readonly ck_root="${KAIRIC_CK_ROOT:-$repo_root/third_party/composable_kernel}"
readonly ck_commit=fdf4bb7fcc984811cef48ce817d89aac064b984a
readonly ck_patch="$repo_root/patches/composable-kernel-gfx1151-iu4.patch"
readonly build_dir="${BUILD_DIR:-$repo_root/build-kairic}"
readonly rocm="${ROCM_PATH:-/opt/rocm}"
readonly jobs="${JOBS:-$(nproc)}"
for tool in cmake git ninja; do
command -v "$tool" >/dev/null || {
echo "missing required tool: $tool" >&2
exit 1
}
done
[[ -f "$ck_patch" ]] || {
echo "missing Composable Kernel patch: $ck_patch" >&2
exit 1
}
if [[ ! -d "$ck_root/.git" ]]; then
mkdir -p "$(dirname -- "$ck_root")"
git clone https://github.com/ROCm/composable_kernel.git "$ck_root"
fi
git -C "$ck_root" checkout "$ck_commit"
if git -C "$ck_root" diff --quiet; then
git -C "$ck_root" apply --check "$ck_patch"
git -C "$ck_root" apply "$ck_patch"
elif git -C "$ck_root" apply --reverse --check "$ck_patch"; then
echo "Composable Kernel release patch is already applied"
else
echo "Composable Kernel checkout does not match the pinned patch" >&2
exit 1
fi
if [[ -x "$rocm/bin/amdclang++" ]]; then
hip_compiler="$rocm/bin/amdclang++"
elif [[ -x "$rocm/llvm/bin/clang++" ]]; then
hip_compiler="$rocm/llvm/bin/clang++"
else
echo "cannot find a HIP compiler below ROCM_PATH=$rocm" >&2
exit 1
fi
if [[ -n "${CC:-}" ]]; then
c_compiler="$(command -v "$CC")"
elif [[ -x /usr/bin/gcc ]]; then
c_compiler=/usr/bin/gcc
else
c_compiler="$(command -v gcc)"
fi
if [[ -n "${CXX:-}" ]]; then
cxx_compiler="$(command -v "$CXX")"
elif [[ -x /usr/bin/g++ ]]; then
cxx_compiler=/usr/bin/g++
else
cxx_compiler="$(command -v g++)"
fi
export ROCM_PATH="$rocm"
export PATH="$rocm/bin:$rocm/lib/llvm/bin:$rocm/llvm/bin:$PATH"
export LD_LIBRARY_PATH="$rocm/lib:$rocm/lib/rocm_sysdeps/lib:$rocm/lib/llvm/lib:$rocm/llvm/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
readonly hip_flags="-DGGML_ROCMFPX_RDNA35_MMID_MAX_BATCH=5 -DGGML_ROCMFPX_MOE_MMVQ_ROWS_PER_BLOCK=4${KAIRIC_HIP_TOOLCHAIN_FLAGS:+ $KAIRIC_HIP_TOOLCHAIN_FLAGS}"
cmake -S "$repo_root" -B "$build_dir" -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="$c_compiler" \
-DCMAKE_CXX_COMPILER="$cxx_compiler" \
-DCMAKE_HIP_COMPILER="$hip_compiler" \
-DCMAKE_HIP_FLAGS="$hip_flags" \
-DCMAKE_PREFIX_PATH="$rocm" \
-DBUILD_SHARED_LIBS=ON \
-DGGML_CPU=ON -DGGML_OPENMP=ON -DGGML_HIP=ON -DGGML_CUDA=OFF \
-DGGML_VULKAN=OFF -DGGML_HIP_FORCE_MMQ=ON -DGGML_HIP_GRAPHS=ON \
-DGGML_HIP_MMQ_MFMA=ON -DGGML_HIP_NO_VMM=ON \
-DGGML_HIP_ROCWMMA_FATTN=OFF -DGGML_NATIVE=ON \
-DAMDGPU_TARGETS=gfx1151 -DGPU_BUILD_TARGETS=gfx1151 \
-DPROMPTFORGE_CK_ROOT="$ck_root" \
-DLLAMA_BUILD_WEBUI=OFF \
-DGGML_BUILD_TESTS=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_SERVER=ON
cmake --build "$build_dir" --target llama-server -j"$jobs"
"$build_dir/bin/llama-server" --version
"$build_dir/bin/llama-server" --help | grep -A1 -- '--kairic-edge'
ldd "$build_dir/bin/llama-server" 2>&1 | tee "$build_dir/llama-server.ldd.txt"
if grep -Eiq 'not found|version .* required by .* not found' "$build_dir/llama-server.ldd.txt"; then
echo "runtime dependency verification failed" >&2
exit 1
fi
echo "Kairic Edge runtime built at $build_dir/bin/llama-server"