Keryx-miner-v0.5.6-test4-model-split

20 de set. de 2026

Fourth test release of the model-split miner. Mainnet is not affected.

Nothing to reconfigure on your side. Replace the binary, restart, keep the same flags. If you were running the test2 binary with the test3 engine, that workaround is over: use this package as it ships.

What changed since 0.5.6-test3

  • A request can now cross the shard boundary. Every request of the second campaign died in the same place: the shard that held the first layers rejected the graph with invalid data ptr / failed to create graph node, while the other shards reported nothing. The cause was in the rpc client: a tensor allocated on one shard server was sent to the next one carrying the first server's memory pointer. The second server does not know that buffer, drops the pointer, and then refuses the whole graph. It only ever happens with two or more shard servers in a row, which is why a single-machine run always worked. Such a tensor is now sent detached, and the receiving server treats it as what it is, a value produced elsewhere. Reproduced locally on one GPU with a truncated head over two real shards, and fixed there before shipping.

  • A head that disappears no longer freezes your GPU. While a head drives your shard, PoW is paused on that GPU on purpose. Until now, a head that vanished without closing the connection, a killed container, a box that lost its network, left the session open forever, and the pause with it. Your miner looked alive and mined nothing. A session with no traffic for 120 s is now closed and PoW resumes. Heads send a keepalive on the control link every 30 s, so a head that is legitimately waiting for its links is never dropped by mistake.

  • Building from source no longer breaks on the second build. The build script decided a llama.cpp patch was already applied by trying to reverse it one by one. Our patches overlap, so on an already-patched checkout that test lied and the build failed. The applied set is now stamped, and the checkout is reset when the set changes. This only concerns people who build the miner themselves.

Reminder for shard holders

  • Ports 4001 (IPFS) and 60052 (shard gateway) open, TCP, inbound. If you use a custom gateway port, --shard-public must announce the port that actually reaches your miner.
  • A rig with several GPUs serves its shard from one GPU only. The others keep their copy for PoM. This is expected.
  • --force-model shard-N if your card is picked for the wrong shard, and --mine-when-not-synced against the public node.

How to join the testnet?

1/ Download the zip for your class and unzip it into the miner's models/ folder:

8 GB → shard 0 (5.9 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-0.zip 12 GB → shard 1 (9.9 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-1.zip 12 GB → shard 2 (9.9 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-2.zip 16 GB → shard 3 (13.8 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-3.zip 24 GB → shard 4 (19.8 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-4.zip 32 GB → shard 5 (27.4 GB) → https://huggingface.co/datasets/Keryx-Labs/models/resolve/main/V4-Flash-shard-5.zip

2/ A keryxtest: address created on the testnet web wallet: https://testnet.keryx-labs.com/wallet Same escrow procedure as on mainnet, with that address.

3/ Start the miner on testnet, against the public node: ./keryx-miner --testnet --mining-address keryxtest:xxxxxxxxxxxxxxxxxxxxxxxxxxxx --high --mine-when-not-synced --keryxd-address 169.58.155.203:22210 --shard-gateway 0.0.0.0:60052 --shard-public YOUR_PUBLIC_IP:60052