Text Generation
GGUF
llama.cpp
qwen3.5
qwen3.5-moe
quantized
image-text-to-text
multimodal
Mixture of Experts
long-context
tool-calling
conversational
imatrix
Instructions to use ngquocvinh/Nex-N2.5-mini-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use ngquocvinh/Nex-N2.5-mini-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Use Docker
docker model run hf.co/ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use ngquocvinh/Nex-N2.5-mini-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ngquocvinh/Nex-N2.5-mini-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ngquocvinh/Nex-N2.5-mini-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
- Ollama
How to use ngquocvinh/Nex-N2.5-mini-GGUF with Ollama:
ollama run hf.co/ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use ngquocvinh/Nex-N2.5-mini-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use ngquocvinh/Nex-N2.5-mini-GGUF with Docker Model Runner:
docker model run hf.co/ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
- Lemonade
How to use ngquocvinh/Nex-N2.5-mini-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.Nex-N2.5-mini-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use ngquocvinh/Nex-N2.5-mini-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use ngquocvinh/Nex-N2.5-mini-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "ngquocvinh/Nex-N2.5-mini-GGUF:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Expand Nex-N2.5-mini GGUF ladder and fidelity card
Browse files- README.md +12 -5
- SHA256SUMS.txt +16 -10
- reproducibility/README.md +11 -3
- reproducibility/benchmark_gpu0.sh +6 -1
- reproducibility/gpu0_smoke_test_ladder.sh +6 -1
- reproducibility/manifest.md +5 -4
- reproducibility/quality-summary.tsv +6 -0
- reproducibility/quality_eval_gpu0.sh +9 -2
- reproducibility/quantize_ladder.sh +11 -10
- reproducibility/runtime-summary.tsv +6 -0
- reproducibility/summarize_fidelity.py +5 -1
README.md
CHANGED
|
@@ -75,17 +75,24 @@ mean PPL was `6.684743` in this pilot.
|
|
| 75 |
| Nex-N2.5-mini-Q6_K.gguf | 0.027186 | 93.811% | -0.858% | 4.676% |
|
| 76 |
| Nex-N2.5-mini-Q5_K_M.gguf | 0.038910 | 92.636% | +0.036% | 5.262% |
|
| 77 |
| Nex-N2.5-mini-Q4_K_M.gguf | 0.063583 | 90.315% | +3.230% | 6.732% |
|
|
|
|
|
|
|
|
|
|
| 78 |
| Nex-N2.5-mini-Q3_K_M.gguf | 0.129316 | 85.906% | +4.044% | 9.427% |
|
|
|
|
|
|
|
| 79 |
| Nex-N2.5-mini-Q2_K.gguf | 0.233133 | 80.709% | +10.839% | 12.770% |
|
|
|
|
| 80 |
| Nex-N2.5-mini-IQ2_XS.gguf | 0.516971 | 71.590% | +51.851% | 19.371% |
|
| 81 |
| Nex-N2.5-mini-IQ1_M.gguf | 0.695877 | 66.064% | +69.116% | 24.275% |
|
| 82 |
| Nex-N2.5-mini-Q1_0.gguf | 8.616836 | 4.879% | +445003.665% | 61.752% |
|
| 83 |
|
| 84 |
For a general local profile, Q4_K_M is the practical starting point in this
|
| 85 |
-
pilot.
|
| 86 |
-
|
| 87 |
-
and
|
| 88 |
-
|
|
|
|
| 89 |
|
| 90 |
These measurements describe next-token fidelity relative to BF16; they are not
|
| 91 |
a direct percentage of capabilities retained. Instruction following,
|
|
@@ -136,7 +143,7 @@ upstream BF16 safetensors. The text converter used `--no-mtp` because this
|
|
| 136 |
revision advertises MTP configuration but does not contain MTP tensors. The
|
| 137 |
vision projector was converted separately to F16.
|
| 138 |
|
| 139 |
-
All
|
| 140 |
English generation smoke tests. The BF16 reference also passed the same text
|
| 141 |
smoke profile. The Q4_K_M text file and the included F16 projector passed a
|
| 142 |
multimodal image smoke test. Runtime throughput is supplementary and is
|
|
|
|
| 75 |
| Nex-N2.5-mini-Q6_K.gguf | 0.027186 | 93.811% | -0.858% | 4.676% |
|
| 76 |
| Nex-N2.5-mini-Q5_K_M.gguf | 0.038910 | 92.636% | +0.036% | 5.262% |
|
| 77 |
| Nex-N2.5-mini-Q4_K_M.gguf | 0.063583 | 90.315% | +3.230% | 6.732% |
|
| 78 |
+
| Nex-N2.5-mini-IQ4_NL.gguf | 0.062792 | 90.273% | +1.378% | 6.774% |
|
| 79 |
+
| Nex-N2.5-mini-IQ4_XS.gguf | 0.065216 | 90.071% | +0.801% | 6.854% |
|
| 80 |
+
| Nex-N2.5-mini-Q3_K_L.gguf | 0.122060 | 86.334% | +3.083% | 9.158% |
|
| 81 |
| Nex-N2.5-mini-Q3_K_M.gguf | 0.129316 | 85.906% | +4.044% | 9.427% |
|
| 82 |
+
| Nex-N2.5-mini-IQ3_M.gguf | 0.172758 | 83.735% | +13.676% | 11.555% |
|
| 83 |
+
| Nex-N2.5-mini-IQ3_S.gguf | 0.154186 | 84.600% | +10.201% | 10.701% |
|
| 84 |
| Nex-N2.5-mini-Q2_K.gguf | 0.233133 | 80.709% | +10.839% | 12.770% |
|
| 85 |
+
| Nex-N2.5-mini-Q2_K_S.gguf | 0.278980 | 78.709% | +15.232% | 14.023% |
|
| 86 |
| Nex-N2.5-mini-IQ2_XS.gguf | 0.516971 | 71.590% | +51.851% | 19.371% |
|
| 87 |
| Nex-N2.5-mini-IQ1_M.gguf | 0.695877 | 66.064% | +69.116% | 24.275% |
|
| 88 |
| Nex-N2.5-mini-Q1_0.gguf | 8.616836 | 4.879% | +445003.665% | 61.752% |
|
| 89 |
|
| 90 |
For a general local profile, Q4_K_M is the practical starting point in this
|
| 91 |
+
pilot. IQ4_NL and IQ4_XS are compact Q4-region alternatives. Q5_K_M and Q6_K
|
| 92 |
+
are stronger quality/size choices, while Q8_0 is the highest-bit option.
|
| 93 |
+
Q3_K_L, Q3_K_M, IQ3_M, and IQ3_S are lower-memory Q3-region compromises.
|
| 94 |
+
Q2_K, Q2_K_S, IQ2_XS, IQ1_M, and Q1_0 are memory-constrained experimental
|
| 95 |
+
profiles and should be checked against the intended workload.
|
| 96 |
|
| 97 |
These measurements describe next-token fidelity relative to BF16; they are not
|
| 98 |
a direct percentage of capabilities retained. Instruction following,
|
|
|
|
| 143 |
revision advertises MTP configuration but does not contain MTP tensors. The
|
| 144 |
vision projector was converted separately to F16.
|
| 145 |
|
| 146 |
+
All fifteen published text GGUF files passed llama.cpp tensor checks, load, and
|
| 147 |
English generation smoke tests. The BF16 reference also passed the same text
|
| 148 |
smoke profile. The Q4_K_M text file and the included F16 projector passed a
|
| 149 |
multimodal image smoke test. Runtime throughput is supplementary and is
|
SHA256SUMS.txt
CHANGED
|
@@ -1,25 +1,31 @@
|
|
| 1 |
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
|
| 2 |
e13761d3e82e9ae6c21c3c6d6c4a812ef19105a3310c09adfa1d407ceb0952cb Nex-N2.5-mini-IQ1_M.gguf
|
| 3 |
c4bc72337f51431262e22cc7cef92ae6b22bf788328c7fd4f360a47927393401 Nex-N2.5-mini-IQ2_XS.gguf
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
f5d0faeaa7d187d2bce9b2b06923ac5e24f9ad96e18613235095e95d36966790 Nex-N2.5-mini-Q1_0.gguf
|
| 5 |
009f420aed015eee2e418a1ca68ab75b4a477c6f504a89993edcd58f5ea701c4 Nex-N2.5-mini-Q2_K.gguf
|
|
|
|
|
|
|
| 6 |
dc92fc762dd63eed44f945e0940476d9c1ae3f4a28babf3ec5d3a4b0da64c3a0 Nex-N2.5-mini-Q3_K_M.gguf
|
| 7 |
1cae631a01539db4d3f559683ef1c659f61dcf261f9f63489750665a3380c449 Nex-N2.5-mini-Q4_K_M.gguf
|
| 8 |
a8fafb845de52adae9c09dd65da211372a23c8194a1a498b4173c6b245ab0404 Nex-N2.5-mini-Q5_K_M.gguf
|
| 9 |
9ec1715e749525879a9cee386a79f87f06c19e509544fb4e44fd1a46dbdd2c0a Nex-N2.5-mini-Q6_K.gguf
|
| 10 |
c51b8b6b1c03dd929afd2ce19b4c6b96ea26eecdfce5822ec0b4ae153fa10d93 Nex-N2.5-mini-Q8_0.gguf
|
| 11 |
-
|
| 12 |
007fdc6302c9be799e145629fc02062a527075a9d5610a0dd41139a5750003f5 assets/Nex-N2.5-Benchmark-white.png
|
| 13 |
f1753536417ee87cded4bc5017354eb2123c079d20c634403a3d808b2ba3cc5b chat_template.jinja
|
| 14 |
c128ba00f092ecc75a15fbc31174588faac26cbfbc3d0bff4b828f73f69604e4 mmproj-Nex-N2.5-mini-F16.gguf
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
68b8ad6d5fdbb973c5728ce691c60e8812346ebf48256a968b7bf1c1514ad143 reproducibility/mmproj_smoke_test_gpu0.sh
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
6df41caec8c89eb5270606d4d479c63872283cbd46647352bde0cb19a8a9b9f6 reproducibility/summarize_bench.py
|
| 25 |
-
|
|
|
|
| 1 |
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
|
| 2 |
e13761d3e82e9ae6c21c3c6d6c4a812ef19105a3310c09adfa1d407ceb0952cb Nex-N2.5-mini-IQ1_M.gguf
|
| 3 |
c4bc72337f51431262e22cc7cef92ae6b22bf788328c7fd4f360a47927393401 Nex-N2.5-mini-IQ2_XS.gguf
|
| 4 |
+
fa8af1d3860ecad6aafc808357786c868f15b01681aeba11f5be9f84bfc19d20 Nex-N2.5-mini-IQ3_M.gguf
|
| 5 |
+
8f0e0deda6ad7ff8fc4a4186d6e2a090bb57605f3dea3a2f06cc261ade358e44 Nex-N2.5-mini-IQ3_S.gguf
|
| 6 |
+
48179f330ce195ec46005fdd17ce55a1d3617fb66d669c77879be731ab833f87 Nex-N2.5-mini-IQ4_NL.gguf
|
| 7 |
+
ba9a9db4d80293b9603e469b224f2c54fddc3c07d005122f6c40aae4fba41ec1 Nex-N2.5-mini-IQ4_XS.gguf
|
| 8 |
f5d0faeaa7d187d2bce9b2b06923ac5e24f9ad96e18613235095e95d36966790 Nex-N2.5-mini-Q1_0.gguf
|
| 9 |
009f420aed015eee2e418a1ca68ab75b4a477c6f504a89993edcd58f5ea701c4 Nex-N2.5-mini-Q2_K.gguf
|
| 10 |
+
00c81ec5d66751e0e50a24ce540bc3f19cdd26604435b79c83e4fda76b12a6bb Nex-N2.5-mini-Q2_K_S.gguf
|
| 11 |
+
0487558daca42d6fc2737386219364721c2025199802c86bcc8724ce1ff84fbb Nex-N2.5-mini-Q3_K_L.gguf
|
| 12 |
dc92fc762dd63eed44f945e0940476d9c1ae3f4a28babf3ec5d3a4b0da64c3a0 Nex-N2.5-mini-Q3_K_M.gguf
|
| 13 |
1cae631a01539db4d3f559683ef1c659f61dcf261f9f63489750665a3380c449 Nex-N2.5-mini-Q4_K_M.gguf
|
| 14 |
a8fafb845de52adae9c09dd65da211372a23c8194a1a498b4173c6b245ab0404 Nex-N2.5-mini-Q5_K_M.gguf
|
| 15 |
9ec1715e749525879a9cee386a79f87f06c19e509544fb4e44fd1a46dbdd2c0a Nex-N2.5-mini-Q6_K.gguf
|
| 16 |
c51b8b6b1c03dd929afd2ce19b4c6b96ea26eecdfce5822ec0b4ae153fa10d93 Nex-N2.5-mini-Q8_0.gguf
|
| 17 |
+
9f134129b8ff35cddae009a116ad03df7a37333fd21797666919f64e41c647d1 README.md
|
| 18 |
007fdc6302c9be799e145629fc02062a527075a9d5610a0dd41139a5750003f5 assets/Nex-N2.5-Benchmark-white.png
|
| 19 |
f1753536417ee87cded4bc5017354eb2123c079d20c634403a3d808b2ba3cc5b chat_template.jinja
|
| 20 |
c128ba00f092ecc75a15fbc31174588faac26cbfbc3d0bff4b828f73f69604e4 mmproj-Nex-N2.5-mini-F16.gguf
|
| 21 |
+
cb0f092074135932a0ea52d525dad369dff862a409c2aab198f1239052065ae9 reproducibility/README.md
|
| 22 |
+
9ad6df11ac209b8a1087d3248dc964ea5c5b81fea4ec852d68586d4550f2f5e0 reproducibility/benchmark_gpu0.sh
|
| 23 |
+
a72faf14ffa464e929167a4ded723b6be3d17686e18bda08f31ecef0b209425c reproducibility/gpu0_smoke_test_ladder.sh
|
| 24 |
+
cf0a8529ca4afc6cc3f5e987bfcd2b908c35481295f59e1ba2b908b583a16e3b reproducibility/manifest.md
|
| 25 |
68b8ad6d5fdbb973c5728ce691c60e8812346ebf48256a968b7bf1c1514ad143 reproducibility/mmproj_smoke_test_gpu0.sh
|
| 26 |
+
be778f892e6b692fe2d0a3efd1a1d8f884e1f2dcc28a06d2cb801994ad961cb6 reproducibility/quality-summary.tsv
|
| 27 |
+
82786e6931b5e78e8d409ea6c9144e8377a7323e3be43929bc00d7d3ccd3c048 reproducibility/quality_eval_gpu0.sh
|
| 28 |
+
900dd394278723ae0d8bfe45f25c2e2119b728d65bc072884e7f2f938a55625a reproducibility/quantize_ladder.sh
|
| 29 |
+
a5b892528fdcd57e70c8d16e22e202e3f87c64f2f2f7d25da8f4abf8fb3699bf reproducibility/runtime-summary.tsv
|
| 30 |
6df41caec8c89eb5270606d4d479c63872283cbd46647352bde0cb19a8a9b9f6 reproducibility/summarize_bench.py
|
| 31 |
+
9adb3adbbd62211e99410a5afb17007b1d6306f8f5b32f1a3759cc9175d6c809 reproducibility/summarize_fidelity.py
|
reproducibility/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
| 1 |
# Reproduction notes
|
| 2 |
|
| 3 |
The release files were produced from the locked Nex-N2.5-mini BF16 GGUF input,
|
| 4 |
-
not from another quantized file. The
|
| 5 |
-
|
| 6 |
-
|
|
|
|
| 7 |
|
| 8 |
```bash
|
| 9 |
bash reproducibility/quantize_ladder.sh
|
|
@@ -12,6 +13,13 @@ bash reproducibility/mmproj_smoke_test_gpu0.sh
|
|
| 12 |
bash reproducibility/benchmark_gpu0.sh
|
| 13 |
```
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
The smoke, multimodal, and benchmark scripts pin `CUDA_VISIBLE_DEVICES=0` and
|
| 16 |
use `CUDA0`. The benchmark is a runtime profile only; it is not a quality
|
| 17 |
score. Raw logs remain in local staging under `reports/` and are not part of
|
|
|
|
| 1 |
# Reproduction notes
|
| 2 |
|
| 3 |
The release files were produced from the locked Nex-N2.5-mini BF16 GGUF input,
|
| 4 |
+
not from another quantized file. The default ladder contains 15 profiles; set
|
| 5 |
+
`QUANTS` to a space-separated subset when running one or more profiles. The
|
| 6 |
+
local workspace paths are supplied as defaults; set `WORKSPACE_ROOT`, `SOURCE`,
|
| 7 |
+
`IMATRIX`, and `QUANTIZER` when reproducing elsewhere.
|
| 8 |
|
| 9 |
```bash
|
| 10 |
bash reproducibility/quantize_ladder.sh
|
|
|
|
| 13 |
bash reproducibility/benchmark_gpu0.sh
|
| 14 |
```
|
| 15 |
|
| 16 |
+
For example, to reproduce only selected profiles:
|
| 17 |
+
|
| 18 |
+
```bash
|
| 19 |
+
QUANTS="IQ4_NL IQ3_M Q2_K_S" bash reproducibility/quantize_ladder.sh
|
| 20 |
+
QUANTS="IQ4_NL IQ3_M Q2_K_S" bash reproducibility/gpu0_smoke_test_ladder.sh
|
| 21 |
+
```
|
| 22 |
+
|
| 23 |
The smoke, multimodal, and benchmark scripts pin `CUDA_VISIBLE_DEVICES=0` and
|
| 24 |
use `CUDA0`. The benchmark is a runtime profile only; it is not a quality
|
| 25 |
score. Raw logs remain in local staging under `reports/` and are not part of
|
reproducibility/benchmark_gpu0.sh
CHANGED
|
@@ -7,6 +7,12 @@ WORKSPACE_ROOT="${WORKSPACE_ROOT:-$(cd -- "$PACKAGE_ROOT/.." && pwd)}"
|
|
| 7 |
BENCH="${BENCH:-$WORKSPACE_ROOT/tools-llama.cpp-qwen4exp-mtp-direct/build-a10m-direct/bin/llama-bench}"
|
| 8 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/benchmark-gpu0}"
|
| 9 |
SOURCE="${SOURCE:-$WORKSPACE_ROOT/source-official-bf16-nex-n2.5-mini/Nex-N2.5-mini-BF16.gguf}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
[[ -x "$BENCH" ]] || { echo "Missing BENCH: $BENCH" >&2; exit 1; }
|
| 12 |
[[ -s "$SOURCE" ]] || { echo "Missing BF16 SOURCE: $SOURCE" >&2; exit 1; }
|
|
@@ -25,7 +31,6 @@ export CUDA_VISIBLE_DEVICES=0
|
|
| 25 |
nvidia-smi --query-gpu=index,name,memory.total,memory.used,utilization.gpu --format=csv
|
| 26 |
} > "$OUTDIR/environment.txt"
|
| 27 |
|
| 28 |
-
models=(BF16 Q8_0 Q6_K Q5_K_M Q4_K_M Q3_K_M Q2_K IQ2_XS IQ1_M Q1_0)
|
| 29 |
for quant in "${models[@]}"; do
|
| 30 |
if [[ "$quant" == BF16 ]]; then
|
| 31 |
model="$SOURCE"
|
|
|
|
| 7 |
BENCH="${BENCH:-$WORKSPACE_ROOT/tools-llama.cpp-qwen4exp-mtp-direct/build-a10m-direct/bin/llama-bench}"
|
| 8 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/benchmark-gpu0}"
|
| 9 |
SOURCE="${SOURCE:-$WORKSPACE_ROOT/source-official-bf16-nex-n2.5-mini/Nex-N2.5-mini-BF16.gguf}"
|
| 10 |
+
ALL_MODELS=(BF16 Q8_0 Q6_K Q5_K_M Q4_K_M IQ4_NL IQ4_XS Q3_K_L Q3_K_M IQ3_M IQ3_S Q2_K Q2_K_S IQ2_XS IQ1_M Q1_0)
|
| 11 |
+
if [[ -n "${QUANTS:-}" ]]; then
|
| 12 |
+
read -r -a models <<< "$QUANTS"
|
| 13 |
+
else
|
| 14 |
+
models=("${ALL_MODELS[@]}")
|
| 15 |
+
fi
|
| 16 |
|
| 17 |
[[ -x "$BENCH" ]] || { echo "Missing BENCH: $BENCH" >&2; exit 1; }
|
| 18 |
[[ -s "$SOURCE" ]] || { echo "Missing BF16 SOURCE: $SOURCE" >&2; exit 1; }
|
|
|
|
| 31 |
nvidia-smi --query-gpu=index,name,memory.total,memory.used,utilization.gpu --format=csv
|
| 32 |
} > "$OUTDIR/environment.txt"
|
| 33 |
|
|
|
|
| 34 |
for quant in "${models[@]}"; do
|
| 35 |
if [[ "$quant" == BF16 ]]; then
|
| 36 |
model="$SOURCE"
|
reproducibility/gpu0_smoke_test_ladder.sh
CHANGED
|
@@ -7,6 +7,12 @@ WORKSPACE_ROOT="${WORKSPACE_ROOT:-$(cd -- "$PACKAGE_ROOT/.." && pwd)}"
|
|
| 7 |
CLI="${CLI:-$WORKSPACE_ROOT/tools-llama.cpp-qwen4exp-mtp-direct/build-a10m-direct/bin/llama-cli}"
|
| 8 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/smoke-tests-gpu0}"
|
| 9 |
THREADS="${THREADS:-64}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
[[ -x "$CLI" ]] || { echo "Missing CLI: $CLI" >&2; exit 1; }
|
| 12 |
mkdir -p "$OUTDIR"
|
|
@@ -17,7 +23,6 @@ export CUDA_VISIBLE_DEVICES=0
|
|
| 17 |
summary="$OUTDIR/summary.tsv"
|
| 18 |
printf 'quantization\tstatus\tlog\n' > "$summary"
|
| 19 |
|
| 20 |
-
models=(Q8_0 Q6_K Q5_K_M Q4_K_M Q3_K_M Q2_K IQ2_XS IQ1_M Q1_0)
|
| 21 |
for quant in "${models[@]}"; do
|
| 22 |
model="$PACKAGE_ROOT/Nex-N2.5-mini-${quant}.gguf"
|
| 23 |
log="$OUTDIR/${quant}.log"
|
|
|
|
| 7 |
CLI="${CLI:-$WORKSPACE_ROOT/tools-llama.cpp-qwen4exp-mtp-direct/build-a10m-direct/bin/llama-cli}"
|
| 8 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/smoke-tests-gpu0}"
|
| 9 |
THREADS="${THREADS:-64}"
|
| 10 |
+
ALL_MODELS=(Q8_0 Q6_K Q5_K_M Q4_K_M IQ4_NL IQ4_XS Q3_K_L Q3_K_M IQ3_M IQ3_S Q2_K Q2_K_S IQ2_XS IQ1_M Q1_0)
|
| 11 |
+
if [[ -n "${QUANTS:-}" ]]; then
|
| 12 |
+
read -r -a models <<< "$QUANTS"
|
| 13 |
+
else
|
| 14 |
+
models=("${ALL_MODELS[@]}")
|
| 15 |
+
fi
|
| 16 |
|
| 17 |
[[ -x "$CLI" ]] || { echo "Missing CLI: $CLI" >&2; exit 1; }
|
| 18 |
mkdir -p "$OUTDIR"
|
|
|
|
| 23 |
summary="$OUTDIR/summary.tsv"
|
| 24 |
printf 'quantization\tstatus\tlog\n' > "$summary"
|
| 25 |
|
|
|
|
| 26 |
for quant in "${models[@]}"; do
|
| 27 |
model="$PACKAGE_ROOT/Nex-N2.5-mini-${quant}.gguf"
|
| 28 |
log="$OUTDIR/${quant}.log"
|
reproducibility/manifest.md
CHANGED
|
@@ -75,8 +75,9 @@ published quantization was produced directly from the BF16 GGUF by
|
|
| 75 |
`reproducibility/quantize_ladder.sh` with 128 quantization threads:
|
| 76 |
|
| 77 |
- `Q8_0`: direct BF16 quantization without an imatrix
|
| 78 |
-
- `Q6_K`, `Q5_K_M`, `Q4_K_M`, `
|
| 79 |
-
|
|
|
|
| 80 |
|
| 81 |
No published file was used as the source for another quantization.
|
| 82 |
|
|
@@ -87,7 +88,7 @@ the test processes. The exact executable and flags are retained in the public
|
|
| 87 |
reproduction scripts, while raw logs remain local under `reports/`.
|
| 88 |
|
| 89 |
- BF16 reference: text tensor check, load, and English generation pass
|
| 90 |
-
-
|
| 91 |
- `Nex-N2.5-mini-Q4_K_M.gguf` plus
|
| 92 |
`mmproj-Nex-N2.5-mini-F16.gguf`: image load and English description pass
|
| 93 |
- Text smoke profile: 2,048 context, 64 generated tokens, full GPU-layer
|
|
@@ -115,7 +116,7 @@ difference. The raw reference-logit files and evaluation logs are local only.
|
|
| 115 |
## Runtime profile
|
| 116 |
|
| 117 |
`reproducibility/runtime-summary.tsv` contains the compact runtime comparison
|
| 118 |
-
for BF16 and the
|
| 119 |
256 prompt tokens, 64 generation tokens, batch/ubatch 512, 64 CPU threads,
|
| 120 |
three repetitions, full GPU-layer setting, `--fit-target 1024`, and one CPU MoE
|
| 121 |
layer setting. Runtime throughput is supplementary and should not be read as a
|
|
|
|
| 75 |
`reproducibility/quantize_ladder.sh` with 128 quantization threads:
|
| 76 |
|
| 77 |
- `Q8_0`: direct BF16 quantization without an imatrix
|
| 78 |
+
- `Q6_K`, `Q5_K_M`, `Q4_K_M`, `IQ4_NL`, `IQ4_XS`, `Q3_K_L`, `Q3_K_M`,
|
| 79 |
+
`IQ3_M`, `IQ3_S`, `Q2_K`, `Q2_K_S`, `IQ2_XS`, `IQ1_M`, `Q1_0`: BF16 source
|
| 80 |
+
plus the model-specific imatrix
|
| 81 |
|
| 82 |
No published file was used as the source for another quantization.
|
| 83 |
|
|
|
|
| 88 |
reproduction scripts, while raw logs remain local under `reports/`.
|
| 89 |
|
| 90 |
- BF16 reference: text tensor check, load, and English generation pass
|
| 91 |
+
- 15/15 text GGUF artifacts: tensor check, load, and English generation pass
|
| 92 |
- `Nex-N2.5-mini-Q4_K_M.gguf` plus
|
| 93 |
`mmproj-Nex-N2.5-mini-F16.gguf`: image load and English description pass
|
| 94 |
- Text smoke profile: 2,048 context, 64 generated tokens, full GPU-layer
|
|
|
|
| 116 |
## Runtime profile
|
| 117 |
|
| 118 |
`reproducibility/runtime-summary.tsv` contains the compact runtime comparison
|
| 119 |
+
for BF16 and the fifteen quantizations. It was measured with `llama-bench` using
|
| 120 |
256 prompt tokens, 64 generation tokens, batch/ubatch 512, 64 CPU threads,
|
| 121 |
three repetitions, full GPU-layer setting, `--fit-target 1024`, and one CPU MoE
|
| 122 |
layer setting. Runtime throughput is supplementary and should not be read as a
|
reproducibility/quality-summary.tsv
CHANGED
|
@@ -3,8 +3,14 @@ Q8_0 0.023277 94.523 6.750630 6.684743 0.986 4.132
|
|
| 3 |
Q6_K 0.027186 93.811 6.627382 6.684743 -0.858 4.676
|
| 4 |
Q5_K_M 0.038910 92.636 6.687126 6.684743 0.036 5.262
|
| 5 |
Q4_K_M 0.063583 90.315 6.900634 6.684743 3.230 6.732
|
|
|
|
|
|
|
|
|
|
| 6 |
Q3_K_M 0.129316 85.906 6.955046 6.684743 4.044 9.427
|
|
|
|
|
|
|
| 7 |
Q2_K 0.233133 80.709 7.409299 6.684743 10.839 12.770
|
|
|
|
| 8 |
IQ2_XS 0.516971 71.590 10.150869 6.684743 51.851 19.371
|
| 9 |
IQ1_M 0.695877 66.064 11.304952 6.684743 69.116 24.275
|
| 10 |
Q1_0 8.616836 4.879 29754.033896 6.684743 445003.665 61.752
|
|
|
|
| 3 |
Q6_K 0.027186 93.811 6.627382 6.684743 -0.858 4.676
|
| 4 |
Q5_K_M 0.038910 92.636 6.687126 6.684743 0.036 5.262
|
| 5 |
Q4_K_M 0.063583 90.315 6.900634 6.684743 3.230 6.732
|
| 6 |
+
IQ4_NL 0.062792 90.273 6.776839 6.684743 1.378 6.774
|
| 7 |
+
IQ4_XS 0.065216 90.071 6.738274 6.684743 0.801 6.854
|
| 8 |
+
Q3_K_L 0.122060 86.334 6.890803 6.684743 3.083 9.158
|
| 9 |
Q3_K_M 0.129316 85.906 6.955046 6.684743 4.044 9.427
|
| 10 |
+
IQ3_M 0.172758 83.735 7.598980 6.684743 13.676 11.555
|
| 11 |
+
IQ3_S 0.154186 84.600 7.366668 6.684743 10.201 10.701
|
| 12 |
Q2_K 0.233133 80.709 7.409299 6.684743 10.839 12.770
|
| 13 |
+
Q2_K_S 0.278980 78.709 7.702984 6.684743 15.232 14.023
|
| 14 |
IQ2_XS 0.516971 71.590 10.150869 6.684743 51.851 19.371
|
| 15 |
IQ1_M 0.695877 66.064 11.304952 6.684743 69.116 24.275
|
| 16 |
Q1_0 8.616836 4.879 29754.033896 6.684743 445003.665 61.752
|
reproducibility/quality_eval_gpu0.sh
CHANGED
|
@@ -10,6 +10,12 @@ TEST="${TEST:-$WORKSPACE_ROOT/calibration/wikitext-2-raw/wiki.test.raw}"
|
|
| 10 |
VALID="${VALID:-$WORKSPACE_ROOT/calibration/wikitext-2-raw/wiki.valid.raw}"
|
| 11 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/quality-eval-gpu0}"
|
| 12 |
CHUNKS="${CHUNKS:-8}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
[[ -x "$PPL" ]] || { echo "Missing PPL binary: $PPL" >&2; exit 1; }
|
| 15 |
[[ -s "$BF16" && -s "$TEST" && -s "$VALID" ]] || { echo "Missing BF16 or hold-out corpus" >&2; exit 1; }
|
|
@@ -39,7 +45,7 @@ for split in test valid; do
|
|
| 39 |
fi
|
| 40 |
done
|
| 41 |
|
| 42 |
-
for quant in
|
| 43 |
model="$PACKAGE_ROOT/Nex-N2.5-mini-${quant}.gguf"
|
| 44 |
[[ -s "$model" ]] || { echo "Missing model: $model" >&2; exit 1; }
|
| 45 |
for split in test valid; do
|
|
@@ -54,4 +60,5 @@ done
|
|
| 54 |
|
| 55 |
python3 "$SCRIPT_DIR/summarize_fidelity.py" "$OUTDIR" \
|
| 56 |
"$PACKAGE_ROOT/reproducibility/quality-summary.tsv" \
|
| 57 |
-
--chunks "$CHUNKS"
|
|
|
|
|
|
| 10 |
VALID="${VALID:-$WORKSPACE_ROOT/calibration/wikitext-2-raw/wiki.valid.raw}"
|
| 11 |
OUTDIR="${OUTDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/quality-eval-gpu0}"
|
| 12 |
CHUNKS="${CHUNKS:-8}"
|
| 13 |
+
ALL_QUANTS=(Q8_0 Q6_K Q5_K_M Q4_K_M IQ4_NL IQ4_XS Q3_K_L Q3_K_M IQ3_M IQ3_S Q2_K Q2_K_S IQ2_XS IQ1_M Q1_0)
|
| 14 |
+
if [[ -n "${QUANTS:-}" ]]; then
|
| 15 |
+
read -r -a QUANT_LIST <<< "$QUANTS"
|
| 16 |
+
else
|
| 17 |
+
QUANT_LIST=("${ALL_QUANTS[@]}")
|
| 18 |
+
fi
|
| 19 |
|
| 20 |
[[ -x "$PPL" ]] || { echo "Missing PPL binary: $PPL" >&2; exit 1; }
|
| 21 |
[[ -s "$BF16" && -s "$TEST" && -s "$VALID" ]] || { echo "Missing BF16 or hold-out corpus" >&2; exit 1; }
|
|
|
|
| 45 |
fi
|
| 46 |
done
|
| 47 |
|
| 48 |
+
for quant in "${QUANT_LIST[@]}"; do
|
| 49 |
model="$PACKAGE_ROOT/Nex-N2.5-mini-${quant}.gguf"
|
| 50 |
[[ -s "$model" ]] || { echo "Missing model: $model" >&2; exit 1; }
|
| 51 |
for split in test valid; do
|
|
|
|
| 60 |
|
| 61 |
python3 "$SCRIPT_DIR/summarize_fidelity.py" "$OUTDIR" \
|
| 62 |
"$PACKAGE_ROOT/reproducibility/quality-summary.tsv" \
|
| 63 |
+
--chunks "$CHUNKS" \
|
| 64 |
+
--quants "${QUANT_LIST[@]}"
|
reproducibility/quantize_ladder.sh
CHANGED
|
@@ -11,6 +11,12 @@ QUANTIZER="${QUANTIZER:-$WORKSPACE_ROOT/tools-llama.cpp-qwen4exp-mtp-direct/buil
|
|
| 11 |
OUTDIR="${OUTDIR:-$PACKAGE_ROOT}"
|
| 12 |
LOGDIR="${LOGDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/quantize-logs}"
|
| 13 |
THREADS="${THREADS:-128}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
[[ -s "$SOURCE" ]] || { echo "Missing SOURCE: $SOURCE" >&2; exit 1; }
|
| 16 |
[[ -x "$QUANTIZER" ]] || { echo "Missing QUANTIZER: $QUANTIZER" >&2; exit 1; }
|
|
@@ -37,13 +43,8 @@ run_quant() {
|
|
| 37 |
echo "done $type"
|
| 38 |
}
|
| 39 |
|
| 40 |
-
#
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
run_quant
|
| 44 |
-
|
| 45 |
-
run_quant Q3_K_M
|
| 46 |
-
run_quant Q2_K
|
| 47 |
-
run_quant IQ2_XS
|
| 48 |
-
run_quant IQ1_M
|
| 49 |
-
run_quant Q1_0
|
|
|
|
| 11 |
OUTDIR="${OUTDIR:-$PACKAGE_ROOT}"
|
| 12 |
LOGDIR="${LOGDIR:-$WORKSPACE_ROOT/reports/nex-n2.5-mini/quantize-logs}"
|
| 13 |
THREADS="${THREADS:-128}"
|
| 14 |
+
ALL_QUANTS=(Q8_0 Q6_K Q5_K_M Q4_K_M IQ4_NL IQ4_XS Q3_K_L Q3_K_M IQ3_M IQ3_S Q2_K Q2_K_S IQ2_XS IQ1_M Q1_0)
|
| 15 |
+
if [[ -n "${QUANTS:-}" ]]; then
|
| 16 |
+
read -r -a QUANT_LIST <<< "$QUANTS"
|
| 17 |
+
else
|
| 18 |
+
QUANT_LIST=("${ALL_QUANTS[@]}")
|
| 19 |
+
fi
|
| 20 |
|
| 21 |
[[ -s "$SOURCE" ]] || { echo "Missing SOURCE: $SOURCE" >&2; exit 1; }
|
| 22 |
[[ -x "$QUANTIZER" ]] || { echo "Missing QUANTIZER: $QUANTIZER" >&2; exit 1; }
|
|
|
|
| 43 |
echo "done $type"
|
| 44 |
}
|
| 45 |
|
| 46 |
+
# Every output is produced directly from SOURCE. QUANTS can narrow a run, e.g.
|
| 47 |
+
# QUANTS="IQ4_NL IQ4_XS" bash quantize_ladder.sh
|
| 48 |
+
for quant in "${QUANT_LIST[@]}"; do
|
| 49 |
+
run_quant "$quant"
|
| 50 |
+
done
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reproducibility/runtime-summary.tsv
CHANGED
|
@@ -2,8 +2,14 @@ model file_size_bytes file_size_gib relative_to_bf16_pct prompt_tok_s generation
|
|
| 2 |
Nex-N2.5-mini-BF16.gguf 69376636992 64.61 100.0 81.49 15.58 3
|
| 3 |
Nex-N2.5-mini-IQ1_M.gguf 8239208480 7.67 11.9 708.86 113.61 3
|
| 4 |
Nex-N2.5-mini-IQ2_XS.gguf 10507030560 9.79 15.1 1306.48 107.88 3
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
Nex-N2.5-mini-Q1_0.gguf 5316528160 4.95 7.7 2556.30 141.15 3
|
| 6 |
Nex-N2.5-mini-Q2_K.gguf 12939593760 12.05 18.7 1193.68 110.57 3
|
|
|
|
|
|
|
| 7 |
Nex-N2.5-mini-Q3_K_M.gguf 16764764192 15.61 24.2 1338.77 100.31 3
|
| 8 |
Nex-N2.5-mini-Q4_K_M.gguf 21166757920 19.71 30.5 702.23 78.02 3
|
| 9 |
Nex-N2.5-mini-Q5_K_M.gguf 24729131040 23.03 35.6 438.27 53.74 3
|
|
|
|
| 2 |
Nex-N2.5-mini-BF16.gguf 69376636992 64.61 100.0 81.49 15.58 3
|
| 3 |
Nex-N2.5-mini-IQ1_M.gguf 8239208480 7.67 11.9 708.86 113.61 3
|
| 4 |
Nex-N2.5-mini-IQ2_XS.gguf 10507030560 9.79 15.1 1306.48 107.88 3
|
| 5 |
+
Nex-N2.5-mini-IQ3_M.gguf 15429530112 14.37 22.2 1409.79 103.02 3
|
| 6 |
+
Nex-N2.5-mini-IQ3_S.gguf 15239434752 14.19 22.0 1410.51 101.16 3
|
| 7 |
+
Nex-N2.5-mini-IQ4_NL.gguf 19768289792 18.41 28.5 952.33 77.28 3
|
| 8 |
+
Nex-N2.5-mini-IQ4_XS.gguf 18717788672 17.43 27.0 1265.77 83.57 3
|
| 9 |
Nex-N2.5-mini-Q1_0.gguf 5316528160 4.95 7.7 2556.30 141.15 3
|
| 10 |
Nex-N2.5-mini-Q2_K.gguf 12939593760 12.05 18.7 1193.68 110.57 3
|
| 11 |
+
Nex-N2.5-mini-Q2_K_S.gguf 12141107712 11.31 17.5 1171.30 120.28 3
|
| 12 |
+
Nex-N2.5-mini-Q3_K_L.gguf 18104340992 16.86 26.1 1341.48 97.17 3
|
| 13 |
Nex-N2.5-mini-Q3_K_M.gguf 16764764192 15.61 24.2 1338.77 100.31 3
|
| 14 |
Nex-N2.5-mini-Q4_K_M.gguf 21166757920 19.71 30.5 702.23 78.02 3
|
| 15 |
Nex-N2.5-mini-Q5_K_M.gguf 24729131040 23.03 35.6 438.27 53.74 3
|
reproducibility/summarize_fidelity.py
CHANGED
|
@@ -4,6 +4,7 @@
|
|
| 4 |
from __future__ import annotations
|
| 5 |
|
| 6 |
import argparse
|
|
|
|
| 7 |
import re
|
| 8 |
from pathlib import Path
|
| 9 |
|
|
@@ -36,9 +37,12 @@ def main() -> None:
|
|
| 36 |
parser.add_argument("logdir", type=Path)
|
| 37 |
parser.add_argument("output", type=Path)
|
| 38 |
parser.add_argument("--chunks", type=int, default=8)
|
|
|
|
| 39 |
args = parser.parse_args()
|
| 40 |
|
| 41 |
-
|
|
|
|
|
|
|
| 42 |
rows: list[tuple[str, dict[str, float]]] = []
|
| 43 |
for quant in quants:
|
| 44 |
records = [
|
|
|
|
| 4 |
from __future__ import annotations
|
| 5 |
|
| 6 |
import argparse
|
| 7 |
+
import os
|
| 8 |
import re
|
| 9 |
from pathlib import Path
|
| 10 |
|
|
|
|
| 37 |
parser.add_argument("logdir", type=Path)
|
| 38 |
parser.add_argument("output", type=Path)
|
| 39 |
parser.add_argument("--chunks", type=int, default=8)
|
| 40 |
+
parser.add_argument("--quants", nargs="+", help="quantization names to summarize")
|
| 41 |
args = parser.parse_args()
|
| 42 |
|
| 43 |
+
all_quants = ("Q8_0", "Q6_K", "Q5_K_M", "Q4_K_M", "IQ4_NL", "IQ4_XS", "Q3_K_L", "Q3_K_M", "IQ3_M", "IQ3_S", "Q2_K", "Q2_K_S", "IQ2_XS", "IQ1_M", "Q1_0")
|
| 44 |
+
env_quants = os.environ.get("QUANTS", "").split()
|
| 45 |
+
quants = tuple(args.quants or env_quants or all_quants)
|
| 46 |
rows: list[tuple[str, dict[str, float]]] = []
|
| 47 |
for quant in quants:
|
| 48 |
records = [
|