Notes

Resolving an SSH host-key warning in the HPE Morpheus Manager installer on Windows

While deploying HPE Morpheus Manager from Windows, the installer reported:

Connection failed: SECURITY WARNING: Host key for 192.0.2.50:22 has changed!
This could indicate a man-in-the-middle attack. Connection refused.

This means the SSH client used by the installer had a previously saved host key for 192.0.2.50:22, but the remote system now presented a different one. This commonly happens after rebuilding a server, restoring a VM, changing an IP assignment, or regenerating SSH host keys. It must always be treated as a potential security issue until the new host fingerprint has been verified independently.

DFlash2 on a DGX Spark: benchmarking Qwen3.8-27B (NVFP4)

I’ve been evaluating DFlash2 speculative decoding for Qwen3.8-27B (NVFP4) on a single NVIDIA DGX Spark (GB10) in the homelab — the successor to the Qwen3.6-27B DFlash setup that was my daily driver, kept behind the same OpenAI-compatible contract the agents already use.

The stack

  • Model: RadixArk/Qwen3.8-27B-NVFP4
  • Draft model: z-lab/Qwen3.8-27B-DFlash2, 8 draft tokens
  • Server: SGLang (patched qwen38-dflash2:v1.2.2 image with the NVFP4 lm_head fix), FlashInfer attention, --mem-fraction-static 0.5
  • Host: DGX Spark GB10, 121 GiB unified memory, aarch64
  • Contract preserved: the same OpenAI-compatible endpoint the agents already use, so nothing downstream had to change

First boot takes ~9 minutes for torch compile and CUDA graph capture, so don’t panic when health checks lag.

Qwen3.8-27B (NVFP4) on vLLM with MTP: the pre-DFlash2 baseline

Before switching to DFlash2, I ran Qwen3.8-27B (NVFP4) on vLLM 0.27.2rc1 with MTP speculative decoding (3 tokens) on the DGX Spark (GB10). This is the baseline the DFlash2 stack has to beat.

Config: 3 speculative tokens · 262,144 max context · 0.45 GPU-memory utilisation · max 4 sequences.

ConcurrencyThroughput
130.99 tok/s
257.76 tok/s aggregate

Near-linear scaling from 1 to 2 concurrent streams — the box has clear headroom left at concurrency 2, which is why the follow-up DFlash2 runs are only the floor, not the ceiling.

Qwen3.6-27B NVFP4 + DFlash: my daily driver (until 3.8)

Before Qwen3.8 landed, Qwen3.6-27B (NVFP4) with DFlash speculative decoding was my favourite local model on the DGX Spark (GB10) — the dense 27B quality I wanted, finally at a speed I could live with. The earlier FP8 build of this same model only managed ~8–16 tok/s; NVFP4 + DFlash changed the picture completely.

The headline: ~6× over the FP8 baseline

Same workload (20 requests, concurrency 2, ~512 in / 128 out), FP8 baseline vs NVFP4 + DFlash:

Qwen2.5-3B on Ollama: keep it simple

A small, fast model — Qwen2.5-3B (65k context) — served through Ollama, benchmarked to decide whether it was worth moving to llama.cpp.

MetricMedian
Output throughput71 tok/s
TTFT1.75 s
Request latency3.51 s
Failures0

Results were excellent and extremely consistent across runs.

Bottom line: keep Ollama. There’s no performance reason to move to llama.cpp for this workload — spend the effort testing alternative models for quality instead, not swapping the runtime. The laziest stack that hits the numbers wins.

Qwen3.6-27B (dense, FP8): quality over speed

Qwen3.6-27B-FP8, a dense 27B model on the DGX Spark (GB10) — every token activates all 27B parameters, so it trades speed for per-token quality.

MetricValue
Status✅ up, no init errors
Generation throughput~8.3 tok/s steady
Prompt throughput51–381 tok/s bursts (prefill)
KV cache usage2–3% (131k context configured)
Prefix cache hit rate48% → 81%, climbing
Active requests0–1, all 200 OK

The slower generation (8.3 vs the 15–25 tok/s of the MoE/smaller models) is expected for a dense 27B — the payoff is noticeably higher quality per token, especially for code and reasoning. Prefix caching climbing to 81% means repeat conversations and code completion feel far snappier than the raw 8 tok/s suggests.

Qwen3-VL-8B (FP8): fast vision on a DGX Spark

Qwen3-VL-8B-FP8, the vision model, filling the fast auxiliary roles on the DGX Spark (GB10) — titles, approvals, MCP routing, screenshot follow-ups.

MetricValue
Status✅ up, no errors
Generation throughput11–25 tok/s (peaks 25)
Prompt throughput~76 tok/s sustained
KV cache usage2–3% (massive headroom)
MM (image) cache hit rate60–75%
Prefix cache hit rate12–60%
Warnings2× Triton JIT first-touch (one-time, harmless)

Qwen is actually faster at generation than the 120B Nemotron (25 vs ~15 tok/s) — exactly what you want where latency matters. The multimodal cache working well means repeated questions about the same image get a free speedup: the vision encoder skips the re-encode.

Nemotron 120B (MoE) on a DGX Spark

Running NVIDIA Nemotron-3 Super 120B (A12B, NVFP4) — a Mixture-of-Experts model with ~12B active parameters per token — on a single DGX Spark (GB10). Snapshot from a healthy serving window:

MetricValue
Status✅ up, no errors
Generation throughput~13–16 tok/s steady
Prompt throughputbursts up to 2,400 tok/s (prefix-cached)
KV cache usage7.9–9.6%
Prefix cache hit rate62–63%
Active requests0–1, all 200 OK

Bottom line: comfortable. KV under 10% means plenty of headroom for longer prompts, and ~15 tok/s is right where you’d expect a 12B-active MoE to land on this box. This is my heavy long-context reasoning engine.