rdaum commited on
Commit
83e633b
·
verified ·
1 Parent(s): f748940

Compare base Dory on matched tasks and generalize llama.cpp setup

Browse files
Files changed (2) hide show
  1. README.md +20 -19
  2. evaluation/base-comparison.json +107 -0
README.md CHANGED
@@ -141,12 +141,17 @@ NVFP4 uses packed E2M1 weights with E4M3 block scales and an F32 tensor scale in
141
  These results use **Eider NVFP4 inference with two recurrent loops and no probability calibration**.
142
  The 512-question test set was scored after checkpoint selection on a separate 1,024-question validation set.
143
 
144
- | Test task | Questions | Accuracy | Brier ↓ |
145
- |---|---:|---:|---:|
146
- | SCONE state tracking | 192 | 75.52% | 0.3779 |
147
- | Block-stacking and delivery planning | 192 | 92.19% | 0.1909 |
148
- | HelpSteer2 human judgements | 128 | 50.78% | 0.2290 |
149
- | **Combined** | **512** | **75.59%** | **0.2706** |
 
 
 
 
 
150
 
151
  Accuracy counts any answer tied for the highest target probability as correct.
152
  Brier error compares the complete predicted and target distributions.
@@ -157,7 +162,7 @@ They are not independent final tests. [Full evaluation records](evaluation/nvfp4
157
  Neither BF16 nor Q8_0 has received a separate full accuracy evaluation.
158
 
159
  The Q8_0 GGUF passed prompt and answer-label parity checks and a 24-request GPU compatibility check across all three answer types.
160
- On GB10, short requests with changing context had median latency of 62 ms for one question and 191 ms for three questions.
161
  Each median used five timed requests. These small checks establish API compatibility, not general accuracy or production throughput.
162
  [GGUF test evidence](gguf/provenance.json) records the setup and results.
163
 
@@ -191,10 +196,11 @@ hf download rdaum/eider-dory-1.0-4b-decisions \
191
  For NVFP4, use `--include 'nvfp4/*'` instead of the GGUF filename, then point your runtime at `./dory-decisions/nvfp4`.
192
  For BF16, use `--include '*.json' '*.jinja' '*.safetensors' --exclude 'nvfp4/*' 'adapter/*'` instead of the GGUF filename.
193
 
194
- ### Build with Dory support and CUDA
195
 
196
- These commands require Git, CMake, a C++ compiler, and the CUDA toolkit.
197
- They build the Dory support branch for DGX Spark / GB10:
 
198
 
199
  ```sh
200
  git clone https://github.com/ggml-org/llama.cpp llama.cpp-dory
@@ -202,16 +208,13 @@ git -C llama.cpp-dory fetch origin pull/30306/head
202
  git -C llama.cpp-dory checkout --detach FETCH_HEAD
203
  cmake -S llama.cpp-dory -B llama.cpp-dory/build \
204
  -DCMAKE_BUILD_TYPE=Release \
205
- -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121 \
206
  -DLLAMA_CURL=OFF \
207
  -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=OFF \
208
  -DLLAMA_BUILD_SERVER=ON
209
  cmake --build llama.cpp-dory/build --target llama-server -j 6
210
  ```
211
 
212
- For another NVIDIA GPU, select its CUDA architecture or omit `CMAKE_CUDA_ARCHITECTURES` for automatic detection.
213
- The compatibility checks below used GB10.
214
-
215
  ### Start the server
216
 
217
  ```sh
@@ -219,13 +222,11 @@ The compatibility checks below used GB10.
219
  --model ./dory-decisions/dory-decisions-Q8_0.gguf \
220
  --alias dory-decisions \
221
  --host 127.0.0.1 --port 18091 \
222
- --ctx-size 4096 --parallel 1 \
223
- --threads 4 --threads-batch 4 \
224
- --batch-size 512 --ubatch-size 512 \
225
- --fit off --gpu-layers all --no-warmup
226
  ```
227
 
228
- The command offloads all layers to the GPU. The 4,096-token context is a small working example, not the model's context limit.
 
229
 
230
  ### Ask a typed question
231
 
 
141
  These results use **Eider NVFP4 inference with two recurrent loops and no probability calibration**.
142
  The 512-question test set was scored after checkpoint selection on a separate 1,024-question validation set.
143
 
144
+ Base Dory is the original NVIDIA BF16 model quantized with the same NVFP4 recipe used for this fine-tune.
145
+ Both models use the same questions, typed-decision prompt, answer labels, two loops, and Eider executable.
146
+ This comparison measures the effect of fine-tuning within this decision interface, rather than Dory’s performance with other prompting methods.
147
+ [Comparison results and hashes](evaluation/base-comparison.json) record the matched setup.
148
+
149
+ | Test task | Questions | Base Dory accuracy | Typed Decisions accuracy | Base Brier ↓ | Typed Decisions Brier ↓ |
150
+ |---|---:|---:|---:|---:|---:|
151
+ | SCONE state tracking | 192 | 29.69% | 75.52% | 1.0003 | 0.3779 |
152
+ | Block-stacking and delivery planning | 192 | 42.71% | 92.19% | 0.6045 | 0.1909 |
153
+ | HelpSteer2 human judgements | 128 | 47.66% | 50.78% | 0.3385 | 0.2290 |
154
+ | **Combined** | 512 | 39.06% | 75.59% | 0.6865 | 0.2706 |
155
 
156
  Accuracy counts any answer tied for the highest target probability as correct.
157
  Brier error compares the complete predicted and target distributions.
 
162
  Neither BF16 nor Q8_0 has received a separate full accuracy evaluation.
163
 
164
  The Q8_0 GGUF passed prompt and answer-label parity checks and a 24-request GPU compatibility check across all three answer types.
165
+ On NVIDIA DGX Spark (GB10), short requests with changing context had median latency of 62 ms for one question and 191 ms for three questions.
166
  Each median used five timed requests. These small checks establish API compatibility, not general accuracy or production throughput.
167
  [GGUF test evidence](gguf/provenance.json) records the setup and results.
168
 
 
196
  For NVFP4, use `--include 'nvfp4/*'` instead of the GGUF filename, then point your runtime at `./dory-decisions/nvfp4`.
197
  For BF16, use `--include '*.json' '*.jinja' '*.safetensors' --exclude 'nvfp4/*' 'adapter/*'` instead of the GGUF filename.
198
 
199
+ ### Build llama.cpp with Dory support
200
 
201
+ These commands require Git, CMake, and a C++ compiler.
202
+ The example enables CUDA for NVIDIA GPUs and requires the CUDA toolkit.
203
+ For CPU-only use, omit `-DGGML_CUDA=ON`. For other GPU backends, follow the [llama.cpp build instructions](https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md).
204
 
205
  ```sh
206
  git clone https://github.com/ggml-org/llama.cpp llama.cpp-dory
 
208
  git -C llama.cpp-dory checkout --detach FETCH_HEAD
209
  cmake -S llama.cpp-dory -B llama.cpp-dory/build \
210
  -DCMAKE_BUILD_TYPE=Release \
211
+ -DGGML_CUDA=ON \
212
  -DLLAMA_CURL=OFF \
213
  -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=OFF \
214
  -DLLAMA_BUILD_SERVER=ON
215
  cmake --build llama.cpp-dory/build --target llama-server -j 6
216
  ```
217
 
 
 
 
218
  ### Start the server
219
 
220
  ```sh
 
222
  --model ./dory-decisions/dory-decisions-Q8_0.gguf \
223
  --alias dory-decisions \
224
  --host 127.0.0.1 --port 18091 \
225
+ --ctx-size 4096 --gpu-layers all
 
 
 
226
  ```
227
 
228
+ With a GPU-enabled build, `--gpu-layers all` requests full GPU offload; reduce it if GPU memory is insufficient.
229
+ Omit that option for CPU-only use. Adjust `--ctx-size` for your workload and available memory; 4,096 is only an example.
230
 
231
  ### Ask a typed question
232
 
evaluation/base-comparison.json ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema": "dory-base-vs-typed-decisions/v1",
3
+ "base_model": "nvidia/NVIDIA-Nemotron-Labs-Dory1.0-4B-BF16",
4
+ "base_model_revision": "b366b87f762ea334ba3eb55912031baba1515810",
5
+ "format": "NVFP4",
6
+ "quantization_recipe": "mse",
7
+ "loops": 2,
8
+ "calibrated": false,
9
+ "prompt": "Same typed-decision prompt and allowed-answer scoring for both models; no generated reasoning.",
10
+ "base_weight_sha256": "602a1bc6a69c1a5c41253df785f335cea77eeeb854b985ab11c125bf1d08a547",
11
+ "fine_tuned_weight_sha256": "9bc834f4dce29a48499b6614c11772d189710138b29c637a384f753b1326b4c0",
12
+ "binary_sha256": "935335c9df451b4b9108d65fc46882abbfd7a0b6cb20b3ba76f4e8c42fa7ab0c",
13
+ "scoring_script_sha256": "cbd6c833654b1fff319abf1d8f3cb491af5d96b78d541e593a283b684268da04",
14
+ "test_data_sha256": "e2ca7413a306fc2b0e9e044aa685c94d5aa8e0def7cfcec6448941b7369ae625",
15
+ "base": {
16
+ "questions": 512,
17
+ "modal_accuracy": 0.390625,
18
+ "brier": 0.6864560213896311,
19
+ "cross_entropy": 2.226203713663419,
20
+ "by_kind": {
21
+ "choice": {
22
+ "questions": 241,
23
+ "modal_accuracy": 0.33195020746887965,
24
+ "brier": 0.7223381484168857,
25
+ "cross_entropy": 2.451415271076999
26
+ },
27
+ "noul": {
28
+ "questions": 94,
29
+ "modal_accuracy": 0.5,
30
+ "brier": 0.8460049545207761,
31
+ "cross_entropy": 1.360189755992052
32
+ },
33
+ "score": {
34
+ "questions": 177,
35
+ "modal_accuracy": 0.4124293785310734,
36
+ "brier": 0.55286736416988,
37
+ "cross_entropy": 2.3794767457788746
38
+ }
39
+ },
40
+ "by_source": {
41
+ "helpsteer2": {
42
+ "questions": 128,
43
+ "modal_accuracy": 0.4765625,
44
+ "brier": 0.3385301710123469,
45
+ "cross_entropy": 1.8640141950785272
46
+ },
47
+ "planning": {
48
+ "questions": 192,
49
+ "modal_accuracy": 0.4270833333333333,
50
+ "brier": 0.6045360602682238,
51
+ "cross_entropy": 1.818707715277242
52
+ },
53
+ "scone": {
54
+ "questions": 192,
55
+ "modal_accuracy": 0.296875,
56
+ "brier": 1.000326549429228,
57
+ "cross_entropy": 2.8751593911061906
58
+ }
59
+ }
60
+ },
61
+ "fine_tuned": {
62
+ "questions": 512,
63
+ "modal_accuracy": 0.755859375,
64
+ "brier": 0.2705710538872297,
65
+ "cross_entropy": 1.0354930422480668,
66
+ "by_kind": {
67
+ "choice": {
68
+ "questions": 241,
69
+ "modal_accuracy": 0.8215767634854771,
70
+ "brier": 0.30593746240810665,
71
+ "cross_entropy": 1.0288481446263855
72
+ },
73
+ "noul": {
74
+ "questions": 94,
75
+ "modal_accuracy": 0.8936170212765957,
76
+ "brier": 0.1853453372075174,
77
+ "cross_entropy": 0.4718470608079094
78
+ },
79
+ "score": {
80
+ "questions": 177,
81
+ "modal_accuracy": 0.5932203389830508,
82
+ "brier": 0.26767790651074164,
83
+ "cross_entropy": 1.34387802858818
84
+ }
85
+ },
86
+ "by_source": {
87
+ "helpsteer2": {
88
+ "questions": 128,
89
+ "modal_accuracy": 0.5078125,
90
+ "brier": 0.22898458428820745,
91
+ "cross_entropy": 1.5346420909767997
92
+ },
93
+ "planning": {
94
+ "questions": 192,
95
+ "modal_accuracy": 0.921875,
96
+ "brier": 0.1909474730913934,
97
+ "cross_entropy": 0.8915435249464682
98
+ },
99
+ "scone": {
100
+ "questions": 192,
101
+ "modal_accuracy": 0.7552083333333334,
102
+ "brier": 0.3779189477490808,
103
+ "cross_entropy": 0.8466765270638437
104
+ }
105
+ }
106
+ }
107
+ }