kingjones777's picture
Add files using upload-large-folder tool
7f30bda verified
Raw
History Blame Contribute Delete
2.89 kB
#!/usr/bin/env python3
"""Nex-N2.5-mini speed + gates. Every 4-bit file x backend, no draft head (the checkpoint ships no MTP weights),
same house protocol as Agnes (nex_harness.py). Then gates on STRIX_LEAN: aligned prompt-cache identity, tool calls
(thinking on + off), vision with -fa on and off. Sequential GPU; results/nex_bench.jsonl."""
import fcntl, os, subprocess, time
W = "/mnt/models/nex-n2.5-mini"; N = "Nex-N2.5-mini"; A = "/mnt/models/agnes-3.0-flash"
J = f"{W}/results/nex_bench.jsonl"
OB = "/opt/llama-rocm/rocmfpx-724/build-hipvk/bin"
T = {"q106": f"{W}/out/{N}-Q4_0_ROCMFP4_STRIX_LEAN.gguf", "q102": f"{W}/out/{N}-Q4_0_ROCMFP4_COHERENT.gguf",
"q103": f"{W}/out/{N}-Q4_0_ROCMFP4_FAST.gguf",
"q106i": f"{W}/out-imat/{N}-imatrix-Q4_0_ROCMFP4_STRIX_LEAN.gguf",
"q102i": f"{W}/out-imat/{N}-imatrix-Q4_0_ROCMFP4_COHERENT.gguf",
"q103i": f"{W}/out-imat/{N}-imatrix-Q4_0_ROCMFP4_FAST.gguf"}
ENV = dict(os.environ, AGNES_BIN=OB)
def log(m): print(f"[{time.strftime('%FT%TZ', time.gmtime())}] {m}", flush=True)
def run(argv, label):
log(label)
r = subprocess.run(argv, capture_output=True, text=True, env=ENV)
print(r.stdout.strip()[-800:], flush=True)
if r.returncode != 0:
print(" RC", r.returncode, r.stderr.strip()[-600:], flush=True)
return r.returncode
def harness(cmd, label, model, dev="ROCm0", reps=3, workload="code", extra=()):
return run(["python3", f"{W}/nex_harness.py", cmd, "--model", model, "--dev", dev, "--label", label,
"--reps", str(reps), "--jsonl", J, "--serverlog", f"{W}/logs/b_{label}.log", "--workload", workload,
*extra], f"{cmd} {label}")
# One quiet box: publish_v2.sh upload takes the same lock, so an HF upload never overlaps the speed runs.
QUIET = open("/mnt/models/.quiet-box.lock", "w")
log("waiting for the quiet-box lock (no HF upload during speed runs)")
fcntl.flock(QUIET, fcntl.LOCK_EX)
log("quiet-box lock held")
for tag in ("q106", "q102", "q103", "q106i", "q102i", "q103i"):
for dev, sh in (("ROCm0", "rocm"), ("Vulkan0", "vk")):
harness("bench", f"n-{tag}-{sh}", T[tag], dev=dev)
harness("bench", "n-q106-rocm-prose", T["q106"], workload="prose")
harness("bench", "n-q106-vk-prose", T["q106"], dev="Vulkan0", workload="prose")
run(["python3", f"{W}/nex_cachegate.py", "--model", T["q106"], "--label", "n-c3-q106", "--reps", "5",
"--jsonl", J, "--serverlog", f"{W}/logs/b_n-c3-q106.log"], "cachegate n-c3-q106")
harness("tools", "n-tools-q106", T["q106"])
for fa in ("on", "off"):
harness("vision", f"n-vision-q106-fa{fa}", T["q106"],
extra=("--fa", fa, "--mmproj", f"{W}/out/mmproj-{N}-BF16.gguf", "--image", f"{A}/calib/vision_probe.png",
"--question", "Describe the two shapes in this image and their colors.",
"--expect", "red,blue,circle,square"))
log("NEX_BENCH_DONE")