Views
No views yet
badtheorylabs/BTL-4 using llama.cpp via the ggml.ai's GGUF-my-repo space.
Refer to the original model card for more details on the model.tensor 'blk.40.attn_norm.weight' not foundbtl-4-q8_0.gguf in llama.cpp (or ik_llama.cpp) fails with:llama_model_load: error loading model: check_tensor_dims: tensor 'blk.40.attn_norm.weight' not found
llama_model_load_from_file_impl: failed to load modelllama.cpp, ik_llama.cpp), including current builds that already support Qwen3.5/3.6-style NextN/MTP models.general.architecture is qwen35moe, and its GGUF metadata declares:qwen35moe.block_count = 41
qwen35moe.nextn_predict_layers = 1attn_norm, attn_qkv/attn_q/attn_k/attn_v, ssm_*, ffn_*_exps tensors load correctly). It then reaches block 40, expects to find NextN-head tensors there, and fails immediately on the first lookup.gguf_dump.py confirmed block 40 has zero tensors in the file:1python3 gguf-py/gguf/scripts/gguf_dump.py /mnt/nvme/btl-4-q8_0.gguf 2>&1 | grep -oP "blk\.\d+" | sort -t. -k2 -n -u | tail -5
2# blk.35
3# blk.36
4# blk.37
5# blk.38
6# blk.39u32 metadata fields in place — no re-quantization, no touching the 34 GB of tensor data.cp /mnt/nvme/btl-4-q8_0.gguf /mnt/nvme/btl-4-q8_0.gguf.bakgguf_set_metadata.py in your llama.cpp checkout1find ~/llama.cpp -iname "gguf_set_metadata.py"
2# typically: ~/llama.cpp/gguf-py/gguf/scripts/gguf_set_metadata.pysource venv/bin/activate).1python3 gguf-py/gguf/scripts/gguf_set_metadata.py \
2 /mnt/nvme/btl-4-q8_0.gguf qwen35moe.block_count 40 --dry-run --verbose
3
4python3 gguf-py/gguf/scripts/gguf_set_metadata.py \
5 /mnt/nvme/btl-4-q8_0.gguf qwen35moe.nextn_predict_layers 0 --dry-run --verbose* Preparing to change field 'qwen35moe.block_count' from 41 to 40
* Preparing to change field 'qwen35moe.nextn_predict_layers' from 1 to 01python3 gguf-py/gguf/scripts/gguf_set_metadata.py \
2 /mnt/nvme/btl-4-q8_0.gguf qwen35moe.block_count 40 --force
3
4python3 gguf-py/gguf/scripts/gguf_set_metadata.py \
5 /mnt/nvme/btl-4-q8_0.gguf qwen35moe.nextn_predict_layers 0 --forceField changed. Successful completion.1CUDA_VISIBLE_DEVICES=2,3,0,1 \
2numactl --interleave=all \
3~/llama.cpp/build/bin/llama-server \
4 --model /mnt/nvme/btl-4-q8_0.gguf \
5 --tensor-split 1.2,1.8,0.45,0.35 \
6 --n-cpu-moe 99 \
7 --ctx-size 280000 \
8 --batch-size 6000 \
9 --ubatch-size 6000 \
10 --parallel 1 \
11 --threads 42 \
12 --threads-batch 42 \
13 -ngl 100 \
14 --host 127.0.0.1 \
15 --port 8082 \
16 --jinjaprint_info should now show n_layer = 40 / n_layer_all = 40 (matching), and the server should load through to HTTP server listening without touching block 40 at all.Ornith-1.0-35B base model checkpoint (in whatever training framework Bad Theory Labs used) and the GGUF re-converted with a NextN-aware convert_hf_to_gguf.py that actually writes block 40's tensors — this metadata patch does not add that capability, it only stops the loader from looking for data that was never written.1brew install llama.cpp
2llama-cli --hf-repo gopi87/BTL-4-Q4_K_M-GGUF --hf-file btl-4-q4_k_m.gguf -p "The meaning to life and the universe is"llama-server --hf-repo gopi87/BTL-4-Q4_K_M-GGUF --hf-file btl-4-q4_k_m.gguf -c 2048git clone https://github.com/ggerganov/llama.cppLLAMA_CURL=1 flag along with other hardware-specific flags (for ex: LLAMA_CUDA=1 for Nvidia GPUs on Linux).cd llama.cpp && LLAMA_CURL=1 make./llama-cli --hf-repo gopi87/BTL-4-Q4_K_M-GGUF --hf-file btl-4-q4_k_m.gguf -p "The meaning to life and the universe is"./llama-server --hf-repo gopi87/BTL-4-Q4_K_M-GGUF --hf-file btl-4-q4_k_m.gguf -c 2048