TinkerLab
ARTIFACT // DIAGNOSE-HYBRID-MOE-AND-EDGE-NPU.SH (SH)

异构 CPU+GPU 大模型 (`NUMA` / `-ot` 正则) 与边缘 NPU (`Hailo-10H` / `RK3588 CMA`) 排障体检脚本 (diagnose-hybrid-moe-and-edge-npu.sh)

一键排查 EPYC/至强双路服务器跨 NUMA 掉速、校验 ik_llama.cpp -ot 专家卸载正则,以及检查树莓派 5 Hailo-10H 固件与 RK3588 CMA 连续物理内存池。

[核心实测结论 / TL;DR]本配置包「异构 CPU+GPU 大模型 (`NUMA` / `-ot` 正则) 与边缘 NPU (`Hailo-10H` / `RK3588 CMA`) 排障体检脚本」(文件名:diagnose-hybrid-moe-and-edge-npu.sh,格式:SH)是 Tinker AI 实测工坊配套指南《hybrid-moe-numa-thrashing-ktransformers-ik-llama-cpp-and-hailo10h-rkllm-npu-troubleshooting》的参数化生产模板。支持在本地浏览器实时定制 边缘 NPU 最小所需 CMA 连续内存池 (MB) (MIN_CMA_MB=256)、单张独显安全显存上限 (MB) (TARGET_VRAM_MB=22500) 等 2 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
04 // DIAGNOSISAPI 与部署排障· 验证日期:2026-11-04
查看全部 42 套配置附件 →
diagnose-hybrid-moe-and-edge-npu.sh

异构 CPU+GPU 大模型 (`NUMA` / `-ot` 正则) 与边缘 NPU (`Hailo-10H` / `RK3588 CMA`) 排障体检脚本

一键排查 EPYC/至强双路服务器跨 NUMA 掉速、校验 ik_llama.cpp -ot 专家卸载正则,以及检查树莓派 5 Hailo-10H 固件与 RK3588 CMA 连续物理内存池。

查看配套实测指南 →
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
#!/usr/bin/env bash
# Tinker AI — Hybrid CPU+GPU MoE NUMA & Edge NPU (Hailo-10H / RK3588) Doctor (Guide #36)
set -euo pipefail

MIN_CMA="256"
MAX_VRAM="22500"

echo "=== [1/4] Checking Linux Auto-NUMA Balancing & Socket Interleaving ==="
if [ -f /proc/sys/kernel/numa_balancing ]; then
  NB=$(cat /proc/sys/kernel/numa_balancing)
  echo "kernel.numa_balancing = $NB"
  if [ "$NB" = "1" ]; then
    echo "[WARN] Auto-NUMA balancing is ON (1)! On multi-node EPYC/Xeon running KTransformers or ik_llama.cpp, this causes 50-65% decode slowdown. Fix: sudo sysctl -w kernel.numa_balancing=0"
  else
    echo "[OK] Auto-NUMA balancing is disabled."
  fi
fi

echo "=== [2/4] Checking GPU Free VRAM vs Hybrid MoE Attention + KV Budget ($MAX_VRAM MB) ==="
if command -v nvidia-smi >/dev/null 2>&1; then
  nvidia-smi --query-gpu=index,name,memory.used,memory.free --format=csv
  echo "Tip: If ik_llama.cpp -ngl 99 OOMs on 671B/235B MoE, ensure regex matches routed experts: -ot 'blk\.[0-9]+\.ffn_.*_exps\.weight=CPU'"
fi

echo "=== [3/4] Checking Hailo-10H (AI HAT+ 2) PCIe Link Width & Firmware ==="
if command -v hailortcli >/dev/null 2>&1; then
  hailortcli fw-control identify || echo "[WARN] hailortcli failed: verify hailo-h10-all package (do not mix with hailo-all for Hailo-8)!"
fi

echo "=== [4/4] Checking Contiguous Memory Allocator (CMA >= $MIN_CMA MB) & Memlock Limits ==="
grep -i "Cma" /proc/meminfo || true
echo "Current max locked memory (ulimit -l): $(ulimit -l)"
PARAMETER SPECIFICATION // 参数化变量规范说明表

「diagnose-hybrid-moe-and-edge-npu.sh」可定制环境变量与默认值说明

本配置模板(SH 格式)支持 2 项运行时参数注入,所有替换均在本地浏览器内完成。

模板占位符参数用途说明安全默认值填写示例
{{MIN_CMA_MB}}边缘 NPU 最小所需 CMA 连续内存池 (MB)256256
{{TARGET_VRAM_MB}}单张独显安全显存上限 (MB)2250022500
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录

配套指南《异构 CPU+GPU 大模型 (KTransformers / ik_llama.cpp) 与边缘 NPU (Hailo-10H / RK3588) 排障指南:解决跨 NUMA 掉速、-ot 正则爆显存与 CMA 报错》验证基线

实测硬件与操作系统 (Hardware & OS)

AMD EPYC / Intel 至强多通道 DDR5 + 单张 RTX 独显 | 树莓派 5 + AI HAT+ 2 (Hailo-10H 8GB) | 瑞芯微 RK3588 开发板

锁定软件栈与模型版本 (Pinned Versions)
ik_llama.cpp & KTransformers 0.2.4 (`numactl` / `sysctl`)HailoRT 5.1.0 (`hailo-h10-all`) + `hailo-ollama`RKNN-LLM 1.2.1 (`rknpu` driver v0.9.8)
离线与安全边界 (100% 本地内核、NUMA 拓扑与 NPU 驱动诊断)

所有 NUMA 内核参数调整、`-ot` 张量卸载与 CMA 物理内存整理均在本地断网完成。

已知限制与失败边界 (Known Limits)
  • 在 24GB 显存卡(RTX 3090/4090)上跑 `DeepSeek-R1-671B` 时,若开启 `-ngl 99` 将全部 61 层注意力层放入 GPU,必须同时开启 `-mla 3 -fa -ctk q8_0` 才能将 32K 上下文下的显存压在 22GB 以内。
  • 在 RK3588 开发板上,若系统开机后长期运行导致物理内存高度碎片化,运行时 `compact_memory` 可能仍无法腾出大块连续 DMA 空间,此时需在 `/boot/armbianEnv.txt` 中固化 `cma=512M` 并重启。
DEPLOYMENT CHECKLIST // 配置落地核验步骤

部署 diagnose-hybrid-moe-and-edge-npu.sh 后的 3 步验收清单

  1. 在多通道 DDR5 异构大模型主机上,已核验 `cat /proc/sys/kernel/numa_balancing` 返回 `0`。
  2. 在树莓派 5 AI HAT+ 2 上已确认仅安装 `hailo-h10-all`,无旧版 `hailo-all` 驱动包冲突。
  3. 在加载 `.rkllm` 模型前,已确认 `ulimit -l` 为 `unlimited` 且 `/proc/meminfo` 中 `CmaFree` 充足。