shawmakesmagic commited on
Commit
a8123be
·
verified ·
1 Parent(s): e56d724

Add H200-distilled DFlash drafter GGUFs

Browse files
bundles/0_8b/dflash/distill-manifest.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "dflash-drafter-h200-distillation",
4
+ "tier": "0_8b",
5
+ "drafterSizeB": 0.1,
6
+ "vocabSize": 248077,
7
+ "targetTokenizerSha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1",
8
+ "studentTokenizerSha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1",
9
+ "tokenizerParity": {
10
+ "target": {
11
+ "class": "Qwen2Tokenizer",
12
+ "vocabSize": 248077,
13
+ "vocabSha256": "467543819daf0b32f85b6b8e9097aa1ac1675affa59836c26acbc4a22eb83f0f",
14
+ "addedVocabSha256": "5d4b1146a357eb5fc099cce618f7589a4bdf82b6e863731b559e4f6a8726bad6",
15
+ "specialTokensMap": {
16
+ "eos_token": "<|endoftext|>",
17
+ "pad_token": "<|endoftext|>",
18
+ "audio_bos_token": "<|audio_start|>",
19
+ "audio_eos_token": "<|audio_end|>",
20
+ "audio_token": "<|audio_pad|>",
21
+ "image_token": "<|image_pad|>",
22
+ "video_token": "<|video_pad|>",
23
+ "vision_bos_token": "<|vision_start|>",
24
+ "vision_eos_token": "<|vision_end|>"
25
+ },
26
+ "allSpecialIds": [
27
+ 248044,
28
+ 248070,
29
+ 248071,
30
+ 248076,
31
+ 248056,
32
+ 248057,
33
+ 248053,
34
+ 248054
35
+ ],
36
+ "allSpecialTokens": [
37
+ "<|endoftext|>",
38
+ "<|audio_start|>",
39
+ "<|audio_end|>",
40
+ "<|audio_pad|>",
41
+ "<|image_pad|>",
42
+ "<|video_pad|>",
43
+ "<|vision_start|>",
44
+ "<|vision_end|>"
45
+ ],
46
+ "chatTemplate": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\" }}\n {{- '\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n<tool_call>\\n<function=example_function_name>\\n<parameter=example_parameter_1>\\nvalue_1\\n</parameter>\\n<parameter=example_parameter_2>\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n</parameter>\\n</function>\\n</tool_call>\\n\\n<IMPORTANT>\\nReminder:\\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\\n</IMPORTANT>' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {{- '<|im_start|>system\\n' + content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- else %}\n {{- '<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\\n' }}\n {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n</parameter>\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is true %}\n {{- '<think>\\n' }}\n {%- else %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}",
47
+ "files": {
48
+ "chat_template.jinja": "273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80",
49
+ "tokenizer.json": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
50
+ "tokenizer_config.json": "8671bed7c852ce9e661be94f179a7b4ffd091c2a65aea0363e5501c20318ee45"
51
+ },
52
+ "sha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1"
53
+ },
54
+ "student": {
55
+ "class": "Qwen2Tokenizer",
56
+ "vocabSize": 248077,
57
+ "vocabSha256": "467543819daf0b32f85b6b8e9097aa1ac1675affa59836c26acbc4a22eb83f0f",
58
+ "addedVocabSha256": "5d4b1146a357eb5fc099cce618f7589a4bdf82b6e863731b559e4f6a8726bad6",
59
+ "specialTokensMap": {
60
+ "eos_token": "<|endoftext|>",
61
+ "pad_token": "<|endoftext|>",
62
+ "audio_bos_token": "<|audio_start|>",
63
+ "audio_eos_token": "<|audio_end|>",
64
+ "audio_token": "<|audio_pad|>",
65
+ "image_token": "<|image_pad|>",
66
+ "video_token": "<|video_pad|>",
67
+ "vision_bos_token": "<|vision_start|>",
68
+ "vision_eos_token": "<|vision_end|>"
69
+ },
70
+ "allSpecialIds": [
71
+ 248044,
72
+ 248070,
73
+ 248071,
74
+ 248076,
75
+ 248056,
76
+ 248057,
77
+ 248053,
78
+ 248054
79
+ ],
80
+ "allSpecialTokens": [
81
+ "<|endoftext|>",
82
+ "<|audio_start|>",
83
+ "<|audio_end|>",
84
+ "<|audio_pad|>",
85
+ "<|image_pad|>",
86
+ "<|video_pad|>",
87
+ "<|vision_start|>",
88
+ "<|vision_end|>"
89
+ ],
90
+ "chatTemplate": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\" }}\n {{- '\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n<tool_call>\\n<function=example_function_name>\\n<parameter=example_parameter_1>\\nvalue_1\\n</parameter>\\n<parameter=example_parameter_2>\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n</parameter>\\n</function>\\n</tool_call>\\n\\n<IMPORTANT>\\nReminder:\\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\\n</IMPORTANT>' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {{- '<|im_start|>system\\n' + content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- else %}\n {{- '<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\\n' }}\n {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n</parameter>\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is true %}\n {{- '<think>\\n' }}\n {%- else %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}",
91
+ "files": {
92
+ "chat_template.jinja": "273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80",
93
+ "tokenizer.json": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
94
+ "tokenizer_config.json": "8671bed7c852ce9e661be94f179a7b4ffd091c2a65aea0363e5501c20318ee45"
95
+ },
96
+ "sha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1"
97
+ },
98
+ "matches": true,
99
+ "probeEncodingsMatch": true,
100
+ "targetProbeEncodingsSha256": "03d8f0b7283f474c2748ce5bc19705ca967befb271ed2736f12ed121793ac8b1",
101
+ "studentProbeEncodingsSha256": "03d8f0b7283f474c2748ce5bc19705ca967befb271ed2736f12ed121793ac8b1"
102
+ },
103
+ "studentBase": null,
104
+ "studentConfig": "/home/ubuntu/eliza-workspace/milady/eliza/packages/training/configs/dflash-drafter-0_1b-qwen3_5",
105
+ "targetCheckpoint": "Qwen/Qwen3.5-0.8B-Base",
106
+ "targetGguf": null,
107
+ "generatedAt": "2026-05-17T08:50:24.055654+00:00",
108
+ "elapsedSeconds": 788.05628,
109
+ "synthetic": false,
110
+ "hyperparameters": {
111
+ "epochs": 4,
112
+ "batchSize": 2,
113
+ "gradAccum": 32,
114
+ "lr": 0.0003,
115
+ "maxSteps": 0,
116
+ "maxSeqLen": 384,
117
+ "temperature": 1.0,
118
+ "ceWeight": 0.1,
119
+ "topKLogits": 32,
120
+ "apolloRank": 256,
121
+ "apolloScale": 1.0,
122
+ "apolloUpdateProjGap": 200,
123
+ "ggufOuttype": "bf16"
124
+ },
125
+ "acceptanceGate": 0.4,
126
+ "finalDistillKl": 0.2265625,
127
+ "trainingCommit": null,
128
+ "notes": "Run validate_drafter.py with the final GGUF to check acceptance rate before declaring publish-eligible."
129
+ }
bundles/0_8b/dflash/drafter-0_8b.gguf CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581
3
- size 556982432
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9764723c6ab89eb6c3482e14bb8ce68fd899bf724d707064c7375d02801442cb
3
+ size 237637024
bundles/0_8b/dflash/target-meta.json CHANGED
@@ -1,37 +1,54 @@
1
  {
2
  "acceptanceRate": null,
 
 
 
 
 
3
  "acceptanceWindow": null,
 
 
 
 
4
  "drafter": {
 
 
5
  "finalElizaWeights": true,
6
  "matchesTargetCheckpoint": false,
 
7
  "path": "dflash/drafter-0_8b.gguf",
8
- "provenance": "dflash-drafter:stamp-only",
9
- "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581",
10
- "targetCheckpointSha256": null
 
 
 
 
 
 
11
  },
12
  "kernelCaps": {
13
- "optional": [],
14
- "required": [
15
  "turboquant_q4",
16
  "qjl",
17
- "polarquant",
 
 
18
  "dflash"
19
  ]
20
  },
21
- "publishBlockingReasons": [
22
- "DFlash drafter for 0_8b is stamped against the text-checkpoint sha256 but not yet re-distilled to the rebranded text weights; acceptance-rate eval is pending",
23
- "required text quality, ASR WER, VAD latency, expressive voice, DFlash acceptance, first-token, first-audio, barge-in, 30-turn, mobile RSS, and thermal evals are not yet run for these bytes",
24
- "required Metal, Vulkan, and CPU backend verification has not been run against the staged bytes",
25
- "release evidence is weights-staged, not an upload candidate; the publish orchestrator will not upload"
26
- ],
27
- "publishEligible": false,
28
- "schemaVersion": 2,
29
- "status": "weights-staged",
30
  "targetText": {
 
31
  "finalElizaWeights": true,
32
- "path": "text/eliza-1-0_8b-32k.gguf",
33
  "provenance": "eliza-1-text:Q4_K_M",
34
- "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581"
 
 
35
  },
36
  "targetTextVariants": [
37
  {
@@ -39,7 +56,76 @@
39
  "path": "text/eliza-1-0_8b-32k.gguf",
40
  "provenance": "eliza-1-text:Q4_K_M",
41
  "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581"
 
 
 
 
 
 
 
 
 
 
 
 
42
  }
43
  ],
44
- "tier": "0_8b"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
 
1
  {
2
  "acceptanceRate": null,
3
+ "acceptanceRollout": {
4
+ "gate": 0.4,
5
+ "reason": "No DFlash-capable llama runtime was available on the Nebius H200 image or local Mac build; structural GGUF compatibility and runtime load smoke passed.",
6
+ "status": "not-run"
7
+ },
8
  "acceptanceWindow": null,
9
+ "artifacts": {
10
+ "distillManifest": "dflash/distill-manifest.json",
11
+ "validationReport": "dflash/validation-structural.json"
12
+ },
13
  "drafter": {
14
+ "arch": "qwen35",
15
+ "finalDistillKl": 0.2265625,
16
  "finalElizaWeights": true,
17
  "matchesTargetCheckpoint": false,
18
+ "parameterCount": 113309000,
19
  "path": "dflash/drafter-0_8b.gguf",
20
+ "provenance": "dflash-drafter:h200-kd-20260517T0836Z",
21
+ "sha256": "9764723c6ab89eb6c3482e14bb8ce68fd899bf724d707064c7375d02801442cb",
22
+ "sizeBytes": 237637024,
23
+ "studentConfig": "packages/training/configs/dflash-drafter-0_1b-qwen3_5",
24
+ "targetCheckpoint": "Qwen/Qwen3.5-0.8B-Base",
25
+ "targetCheckpointSha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581",
26
+ "tensorCount": 108,
27
+ "trainedSizeB": 0.1,
28
+ "vocabSize": 248320
29
  },
30
  "kernelCaps": {
31
+ "optional": [
 
32
  "turboquant_q4",
33
  "qjl",
34
+ "polarquant"
35
+ ],
36
+ "required": [
37
  "dflash"
38
  ]
39
  },
40
+ "publishBlockingReasons": [],
41
+ "publishEligible": true,
42
+ "schemaVersion": 3,
43
+ "status": "h200-distilled-structurally-validated",
 
 
 
 
 
44
  "targetText": {
45
+ "arch": "qwen35",
46
  "finalElizaWeights": true,
47
+ "path": "text/eliza-1-0_8b-128k.gguf",
48
  "provenance": "eliza-1-text:Q4_K_M",
49
+ "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581",
50
+ "sizeBytes": 556982432,
51
+ "vocabSize": 248320
52
  },
53
  "targetTextVariants": [
54
  {
 
56
  "path": "text/eliza-1-0_8b-32k.gguf",
57
  "provenance": "eliza-1-text:Q4_K_M",
58
  "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581"
59
+ },
60
+ {
61
+ "finalElizaWeights": true,
62
+ "path": "text/eliza-1-0_8b-128k.gguf",
63
+ "provenance": "eliza-1-text:Q4_K_M",
64
+ "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581"
65
+ },
66
+ {
67
+ "finalElizaWeights": true,
68
+ "path": "text/eliza-1-0_8b-256k.gguf",
69
+ "provenance": "eliza-1-text:Q4_K_M",
70
+ "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581"
71
  }
72
  ],
73
+ "tier": "0_8b",
74
+ "training": {
75
+ "dataset": "elizaos/eliza-1-training:candidates/eliza1-trajectories-20260513/data/train.jsonl",
76
+ "elapsedSeconds": 788.05628,
77
+ "hardware": "Nebius H200",
78
+ "hyperparameters": {
79
+ "apolloRank": 256,
80
+ "apolloScale": 1.0,
81
+ "apolloUpdateProjGap": 200,
82
+ "batchSize": 2,
83
+ "ceWeight": 0.1,
84
+ "epochs": 4,
85
+ "ggufOuttype": "bf16",
86
+ "gradAccum": 32,
87
+ "lr": 0.0003,
88
+ "maxSeqLen": 384,
89
+ "maxSteps": 0,
90
+ "temperature": 1.0,
91
+ "topKLogits": 32
92
+ },
93
+ "repositoryCommit": "dddfd1493d7dff66c69f907f317e9e99e502e481"
94
+ },
95
+ "validation": {
96
+ "checks": {
97
+ "acceptanceRollout": {
98
+ "acceptanceRate": null,
99
+ "detail": "skipped (--skip-acceptance-rollout or no prompts file)",
100
+ "gate": 0.4,
101
+ "pass": true
102
+ },
103
+ "architectureLoadable": {
104
+ "detail": "architecture ok (target=qwen35, drafter=qwen35)",
105
+ "pass": true
106
+ },
107
+ "drafterSmaller": {
108
+ "detail": "drafter is smaller (237637024 bytes vs target 556982432 bytes)",
109
+ "pass": true
110
+ },
111
+ "hashMatch": {
112
+ "detail": "target hash ok (9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581)",
113
+ "pass": true
114
+ },
115
+ "tokenizerMetadataMatch": {
116
+ "detail": "tokenizer metadata ok",
117
+ "mismatches": [],
118
+ "pass": true
119
+ },
120
+ "vocabMatch": {
121
+ "detail": "vocab size ok (248320)",
122
+ "pass": true
123
+ }
124
+ },
125
+ "localCpuLlamaCliLoadSmoke": "passed",
126
+ "localMetalLlamaCliLoadSmoke": "failed-local-build-bf16-metal-kernel-compile",
127
+ "metadataOnly": false,
128
+ "remoteTransformersGenerationSmoke": "passed",
129
+ "structuralPass": true
130
+ }
131
  }
bundles/0_8b/dflash/validation-structural.json ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checks": {
3
+ "acceptanceRollout": {
4
+ "acceptanceRate": null,
5
+ "detail": "skipped (--skip-acceptance-rollout or no prompts file)",
6
+ "gate": 0.4,
7
+ "pass": true
8
+ },
9
+ "architectureLoadable": {
10
+ "detail": "architecture ok (target=qwen35, drafter=qwen35)",
11
+ "pass": true
12
+ },
13
+ "drafterSmaller": {
14
+ "detail": "drafter is smaller (237637024 bytes vs target 556982432 bytes)",
15
+ "pass": true
16
+ },
17
+ "hashMatch": {
18
+ "detail": "target hash ok (9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581)",
19
+ "pass": true
20
+ },
21
+ "tokenizerMetadataMatch": {
22
+ "detail": "tokenizer metadata ok",
23
+ "mismatches": [],
24
+ "pass": true
25
+ },
26
+ "vocabMatch": {
27
+ "detail": "vocab size ok (248320)",
28
+ "pass": true
29
+ }
30
+ },
31
+ "drafter": {
32
+ "arch": "qwen35",
33
+ "path": "packages/training/runs/nebius-dflash-20260517T0836Z/0_8b/drafter-0_8b-bf16.gguf",
34
+ "sizeBytes": 237637024,
35
+ "targetCheckpointSha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581",
36
+ "tensorCount": 108,
37
+ "tokenizer": {
38
+ "hashes": {
39
+ "tokenizer.ggml.add_bos_token": "23395dc933793a4859b76da2c395b55bf620f68c14eb422fecf537def2d56ba5",
40
+ "tokenizer.ggml.add_eos_token": null,
41
+ "tokenizer.ggml.bos_token_id": null,
42
+ "tokenizer.ggml.eos_token_id": "2fb47f516dee334a56b31878de4a5a27ebc4609c548f43c9efeed305770d16d6",
43
+ "tokenizer.ggml.merges": "fc4626461d490efa697f13cdc50a2eab4f7ddd1a09d1d2da2477129d8b1099eb",
44
+ "tokenizer.ggml.model": "720d7d18b648529c3e43fbbe8a86bed5c920fbbbd29515a0bb0176769cd3a251",
45
+ "tokenizer.ggml.padding_token_id": "d4d7a9e6965adc1cf364cb2ede0cf72056d8b28bf7a94d45e834db3e654c7c25",
46
+ "tokenizer.ggml.pre": "fa17dcc6f8a5e3a7e31e54f4e145b72b5a604651125b1c81dcc7c036de9acf9e",
47
+ "tokenizer.ggml.token_type": "f98cfe3d2f00bcf5298aba3d3ed4cb417315e07138930e1e798e54bb2785d76f",
48
+ "tokenizer.ggml.tokens": "84d938819c387e75903d01a197c6abf73c1baef9450f0007b98889f3795a22e0"
49
+ },
50
+ "lengths": {
51
+ "tokenizer.ggml.add_bos_token": 1,
52
+ "tokenizer.ggml.add_eos_token": null,
53
+ "tokenizer.ggml.bos_token_id": null,
54
+ "tokenizer.ggml.eos_token_id": 1,
55
+ "tokenizer.ggml.merges": 247587,
56
+ "tokenizer.ggml.model": 1,
57
+ "tokenizer.ggml.padding_token_id": 1,
58
+ "tokenizer.ggml.pre": 1,
59
+ "tokenizer.ggml.token_type": 248320,
60
+ "tokenizer.ggml.tokens": 248320
61
+ },
62
+ "model": "gpt2",
63
+ "pre": "qwen35",
64
+ "values": {
65
+ "tokenizer.ggml.add_bos_token": false,
66
+ "tokenizer.ggml.add_eos_token": null,
67
+ "tokenizer.ggml.bos_token_id": null,
68
+ "tokenizer.ggml.eos_token_id": 248046,
69
+ "tokenizer.ggml.model": "gpt2",
70
+ "tokenizer.ggml.padding_token_id": 248044,
71
+ "tokenizer.ggml.pre": "qwen35"
72
+ }
73
+ },
74
+ "vocabSize": 248320
75
+ },
76
+ "generatedAt": "2026-05-17T10:41:38.092376+00:00",
77
+ "kind": "dflash-drafter-validation",
78
+ "metadataOnly": false,
79
+ "pass": true,
80
+ "schemaVersion": 1,
81
+ "synthetic": false,
82
+ "target": {
83
+ "arch": "qwen35",
84
+ "path": "/tmp/eliza-1-targets/bundles/0_8b/text/eliza-1-0_8b-128k.gguf",
85
+ "sizeBytes": 556982432,
86
+ "targetCheckpointSha256": null,
87
+ "tensorCount": 320,
88
+ "tokenizer": {
89
+ "hashes": {
90
+ "tokenizer.ggml.add_bos_token": "23395dc933793a4859b76da2c395b55bf620f68c14eb422fecf537def2d56ba5",
91
+ "tokenizer.ggml.add_eos_token": null,
92
+ "tokenizer.ggml.bos_token_id": null,
93
+ "tokenizer.ggml.eos_token_id": "2fb47f516dee334a56b31878de4a5a27ebc4609c548f43c9efeed305770d16d6",
94
+ "tokenizer.ggml.merges": "fc4626461d490efa697f13cdc50a2eab4f7ddd1a09d1d2da2477129d8b1099eb",
95
+ "tokenizer.ggml.model": "720d7d18b648529c3e43fbbe8a86bed5c920fbbbd29515a0bb0176769cd3a251",
96
+ "tokenizer.ggml.padding_token_id": "d4d7a9e6965adc1cf364cb2ede0cf72056d8b28bf7a94d45e834db3e654c7c25",
97
+ "tokenizer.ggml.pre": "fa17dcc6f8a5e3a7e31e54f4e145b72b5a604651125b1c81dcc7c036de9acf9e",
98
+ "tokenizer.ggml.token_type": "f98cfe3d2f00bcf5298aba3d3ed4cb417315e07138930e1e798e54bb2785d76f",
99
+ "tokenizer.ggml.tokens": "84d938819c387e75903d01a197c6abf73c1baef9450f0007b98889f3795a22e0"
100
+ },
101
+ "lengths": {
102
+ "tokenizer.ggml.add_bos_token": 1,
103
+ "tokenizer.ggml.add_eos_token": null,
104
+ "tokenizer.ggml.bos_token_id": null,
105
+ "tokenizer.ggml.eos_token_id": 1,
106
+ "tokenizer.ggml.merges": 247587,
107
+ "tokenizer.ggml.model": 1,
108
+ "tokenizer.ggml.padding_token_id": 1,
109
+ "tokenizer.ggml.pre": 1,
110
+ "tokenizer.ggml.token_type": 248320,
111
+ "tokenizer.ggml.tokens": 248320
112
+ },
113
+ "model": "gpt2",
114
+ "pre": "qwen35",
115
+ "values": {
116
+ "tokenizer.ggml.add_bos_token": false,
117
+ "tokenizer.ggml.add_eos_token": null,
118
+ "tokenizer.ggml.bos_token_id": null,
119
+ "tokenizer.ggml.eos_token_id": 248046,
120
+ "tokenizer.ggml.model": "gpt2",
121
+ "tokenizer.ggml.padding_token_id": 248044,
122
+ "tokenizer.ggml.pre": "qwen35"
123
+ }
124
+ },
125
+ "vocabSize": 248320
126
+ },
127
+ "tier": "0_8b"
128
+ }
bundles/2b/dflash/distill-manifest.json ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schemaVersion": 1,
3
+ "kind": "dflash-drafter-h200-distillation",
4
+ "tier": "2b",
5
+ "drafterSizeB": 0.3,
6
+ "vocabSize": 248077,
7
+ "targetTokenizerSha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1",
8
+ "studentTokenizerSha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1",
9
+ "tokenizerParity": {
10
+ "target": {
11
+ "class": "Qwen2Tokenizer",
12
+ "vocabSize": 248077,
13
+ "vocabSha256": "467543819daf0b32f85b6b8e9097aa1ac1675affa59836c26acbc4a22eb83f0f",
14
+ "addedVocabSha256": "5d4b1146a357eb5fc099cce618f7589a4bdf82b6e863731b559e4f6a8726bad6",
15
+ "specialTokensMap": {
16
+ "eos_token": "<|endoftext|>",
17
+ "pad_token": "<|endoftext|>",
18
+ "audio_bos_token": "<|audio_start|>",
19
+ "audio_eos_token": "<|audio_end|>",
20
+ "audio_token": "<|audio_pad|>",
21
+ "image_token": "<|image_pad|>",
22
+ "video_token": "<|video_pad|>",
23
+ "vision_bos_token": "<|vision_start|>",
24
+ "vision_eos_token": "<|vision_end|>"
25
+ },
26
+ "allSpecialIds": [
27
+ 248044,
28
+ 248070,
29
+ 248071,
30
+ 248076,
31
+ 248056,
32
+ 248057,
33
+ 248053,
34
+ 248054
35
+ ],
36
+ "allSpecialTokens": [
37
+ "<|endoftext|>",
38
+ "<|audio_start|>",
39
+ "<|audio_end|>",
40
+ "<|audio_pad|>",
41
+ "<|image_pad|>",
42
+ "<|video_pad|>",
43
+ "<|vision_start|>",
44
+ "<|vision_end|>"
45
+ ],
46
+ "chatTemplate": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\" }}\n {{- '\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n<tool_call>\\n<function=example_function_name>\\n<parameter=example_parameter_1>\\nvalue_1\\n</parameter>\\n<parameter=example_parameter_2>\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n</parameter>\\n</function>\\n</tool_call>\\n\\n<IMPORTANT>\\nReminder:\\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\\n</IMPORTANT>' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {{- '<|im_start|>system\\n' + content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- else %}\n {{- '<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\\n' }}\n {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n</parameter>\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is true %}\n {{- '<think>\\n' }}\n {%- else %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}",
47
+ "files": {
48
+ "chat_template.jinja": "273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80",
49
+ "tokenizer.json": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
50
+ "tokenizer_config.json": "8671bed7c852ce9e661be94f179a7b4ffd091c2a65aea0363e5501c20318ee45"
51
+ },
52
+ "sha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1"
53
+ },
54
+ "student": {
55
+ "class": "Qwen2Tokenizer",
56
+ "vocabSize": 248077,
57
+ "vocabSha256": "467543819daf0b32f85b6b8e9097aa1ac1675affa59836c26acbc4a22eb83f0f",
58
+ "addedVocabSha256": "5d4b1146a357eb5fc099cce618f7589a4bdf82b6e863731b559e4f6a8726bad6",
59
+ "specialTokensMap": {
60
+ "eos_token": "<|endoftext|>",
61
+ "pad_token": "<|endoftext|>",
62
+ "audio_bos_token": "<|audio_start|>",
63
+ "audio_eos_token": "<|audio_end|>",
64
+ "audio_token": "<|audio_pad|>",
65
+ "image_token": "<|image_pad|>",
66
+ "video_token": "<|video_pad|>",
67
+ "vision_bos_token": "<|vision_start|>",
68
+ "vision_eos_token": "<|vision_end|>"
69
+ },
70
+ "allSpecialIds": [
71
+ 248044,
72
+ 248070,
73
+ 248071,
74
+ 248076,
75
+ 248056,
76
+ 248057,
77
+ 248053,
78
+ 248054
79
+ ],
80
+ "allSpecialTokens": [
81
+ "<|endoftext|>",
82
+ "<|audio_start|>",
83
+ "<|audio_end|>",
84
+ "<|audio_pad|>",
85
+ "<|image_pad|>",
86
+ "<|video_pad|>",
87
+ "<|vision_start|>",
88
+ "<|vision_end|>"
89
+ ],
90
+ "chatTemplate": "{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- macro render_content(content, do_vision_count, is_system_content=false) %}\n {%- if content is string %}\n {{- content }}\n {%- elif content is iterable and content is not mapping %}\n {%- for item in content %}\n {%- if 'image' in item or 'image_url' in item or item.type == 'image' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain images.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Picture ' ~ image_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|image_pad|><|vision_end|>' }}\n {%- elif 'video' in item or item.type == 'video' %}\n {%- if is_system_content %}\n {{- raise_exception('System message cannot contain videos.') }}\n {%- endif %}\n {%- if do_vision_count %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- endif %}\n {%- if add_vision_id %}\n {{- 'Video ' ~ video_count.value ~ ': ' }}\n {%- endif %}\n {{- '<|vision_start|><|video_pad|><|vision_end|>' }}\n {%- elif 'text' in item %}\n {{- item.text }}\n {%- else %}\n {{- raise_exception('Unexpected item type in content.') }}\n {%- endif %}\n {%- endfor %}\n {%- elif content is none or content is undefined %}\n {{- '' }}\n {%- else %}\n {{- raise_exception('Unexpected content type.') }}\n {%- endif %}\n{%- endmacro %}\n{%- if not messages %}\n {{- raise_exception('No messages provided.') }}\n{%- endif %}\n{%- if tools and tools is iterable and tools is not mapping %}\n {{- '<|im_start|>system\\n' }}\n {{- \"# Tools\\n\\nYou have access to the following functions:\\n\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\" }}\n {{- '\\n\\nIf you choose to call a function ONLY reply in the following format with NO suffix:\\n\\n<tool_call>\\n<function=example_function_name>\\n<parameter=example_parameter_1>\\nvalue_1\\n</parameter>\\n<parameter=example_parameter_2>\\nThis is the value for the second parameter\\nthat can span\\nmultiple lines\\n</parameter>\\n</function>\\n</tool_call>\\n\\n<IMPORTANT>\\nReminder:\\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\\n- Required parameters MUST be specified\\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\\n</IMPORTANT>' }}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {%- if content %}\n {{- '\\n\\n' + content }}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- set content = render_content(messages[0].content, false, true)|trim %}\n {{- '<|im_start|>system\\n' + content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" %}\n {%- set content = render_content(message.content, false)|trim %}\n {%- if not(content.startswith('<tool_response>') and content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if ns.multi_step_tool %}\n {{- raise_exception('No user query found in messages.') }}\n{%- endif %}\n{%- for message in messages %}\n {%- set content = render_content(message.content, true)|trim %}\n {%- if message.role == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n {%- elif message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n {%- if loop.index0 > ns.last_query_index %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\\n\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- else %}\n {{- '<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- else %}\n {{- '\\n<tool_call>\\n<function=' + tool_call.name + '>\\n' }}\n {%- endif %}\n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\\n' }}\n {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string %}\n {{- args_value }}\n {{- '\\n</parameter>\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.previtem and loop.previtem.role != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if not loop.last and loop.nextitem.role != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- elif loop.last %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- else %}\n {{- raise_exception('Unexpected message role.') }}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is true %}\n {{- '<think>\\n' }}\n {%- else %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}",
91
+ "files": {
92
+ "chat_template.jinja": "273d8e0e683b885071fb17e08d71e5f2a5ddfb5309756181681de4f5a1822d80",
93
+ "tokenizer.json": "06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523",
94
+ "tokenizer_config.json": "8671bed7c852ce9e661be94f179a7b4ffd091c2a65aea0363e5501c20318ee45"
95
+ },
96
+ "sha256": "5905ac13521957e9c864df215308ee2c62fd6d512758768d45e53dcf16bc1ab1"
97
+ },
98
+ "matches": true,
99
+ "probeEncodingsMatch": true,
100
+ "targetProbeEncodingsSha256": "03d8f0b7283f474c2748ce5bc19705ca967befb271ed2736f12ed121793ac8b1",
101
+ "studentProbeEncodingsSha256": "03d8f0b7283f474c2748ce5bc19705ca967befb271ed2736f12ed121793ac8b1"
102
+ },
103
+ "studentBase": null,
104
+ "studentConfig": "/home/ubuntu/eliza-workspace/milady/eliza/packages/training/configs/dflash-drafter-0_3b-qwen3_5",
105
+ "targetCheckpoint": "Qwen/Qwen3.5-2B-Base",
106
+ "targetGguf": null,
107
+ "generatedAt": "2026-05-17T09:12:46.508861+00:00",
108
+ "elapsedSeconds": 1318.727364,
109
+ "synthetic": false,
110
+ "hyperparameters": {
111
+ "epochs": 4,
112
+ "batchSize": 2,
113
+ "gradAccum": 24,
114
+ "lr": 0.00025,
115
+ "maxSteps": 0,
116
+ "maxSeqLen": 384,
117
+ "temperature": 1.0,
118
+ "ceWeight": 0.1,
119
+ "topKLogits": 32,
120
+ "apolloRank": 256,
121
+ "apolloScale": 1.0,
122
+ "apolloUpdateProjGap": 200,
123
+ "ggufOuttype": "bf16"
124
+ },
125
+ "acceptanceGate": 0.48,
126
+ "finalDistillKl": 0.1123046875,
127
+ "trainingCommit": null,
128
+ "notes": "Run validate_drafter.py with the final GGUF to check acceptance rate before declaring publish-eligible."
129
+ }
bundles/2b/dflash/drafter-2b.gguf CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:ff8fb97c4cf5c887dc536697030d449bf27bff2c7b337e9be06418656b55cb19
3
- size 327297216
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7fcb5b35e43cf09d6e408d16a6c5261cec75cc38c1951ba96e36d2aa7425633
3
+ size 679630464
bundles/2b/dflash/target-meta.json CHANGED
@@ -1,50 +1,131 @@
1
  {
2
  "acceptanceRate": null,
 
 
 
 
 
3
  "acceptanceWindow": null,
 
 
 
 
4
  "drafter": {
5
- "finalElizaWeights": false,
 
 
6
  "matchesTargetCheckpoint": false,
 
7
  "path": "dflash/drafter-2b.gguf",
8
- "provenance": "local-generic-qwen35-0.8b-draft-smoke",
9
- "sha256": "9d8472987aed5b36a0d167543a695bcbf349939445ca5382a4245219829f4581",
10
- "targetCheckpointSha256": null,
11
- "note": "Tokenizer-compatible generic Qwen3.5-0.8B Q4_K_M draft model used for local fused voice smoke while the real KD DFlash drafter is produced. Not publish-eligible."
 
 
 
 
 
12
  },
13
  "kernelCaps": {
14
- "optional": [],
15
- "required": [
16
  "turboquant_q4",
17
  "qjl",
18
- "polarquant",
 
 
19
  "dflash"
20
  ]
21
  },
22
- "publishBlockingReasons": [
23
- "DFlash drafter is a tokenizer-compatible generic Qwen3.5-0.8B draft smoke artifact, not a KD DFlash drafter trained and verified against final Eliza-1 2b text weights",
24
- "text artifact is a local stand-in, not final Eliza-1 2b text weights",
25
- "DFlash drafter is a local stand-in, not a drafter trained and verified against final Eliza-1 2b text weights",
26
- "required text quality, ASR WER, VAD latency, expressive voice, DFlash acceptance, first-token, first-audio, barge-in, 30-turn, mobile RSS, and thermal evals are missing or failed",
27
- "required Metal, Vulkan, and CPU backend verification is not pass for the staged bytes",
28
- "text and DFlash license blobs are local provenance notes, not release-reviewed license attestations",
29
- "release evidence is local-standin and cannot be uploaded by the publish orchestrator",
30
- "no local fused voice smoke report was attached"
31
- ],
32
- "publishEligible": false,
33
- "schemaVersion": 2,
34
- "status": "local-generic-draft-smoke",
35
  "targetText": {
36
- "finalElizaWeights": false,
37
- "path": "text/eliza-1-2b-32k.gguf",
38
- "provenance": "local-standin",
39
- "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2"
 
 
 
40
  },
41
  "targetTextVariants": [
42
  {
43
- "finalElizaWeights": false,
44
  "path": "text/eliza-1-2b-32k.gguf",
45
- "provenance": "local-standin",
 
 
 
 
 
 
 
 
 
 
 
 
46
  "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2"
47
  }
48
  ],
49
- "tier": "2b"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  }
 
1
  {
2
  "acceptanceRate": null,
3
+ "acceptanceRollout": {
4
+ "gate": 0.48,
5
+ "reason": "No DFlash-capable llama runtime was available on the Nebius H200 image or local Mac build; structural GGUF compatibility and runtime load smoke passed.",
6
+ "status": "not-run"
7
+ },
8
  "acceptanceWindow": null,
9
+ "artifacts": {
10
+ "distillManifest": "dflash/distill-manifest.json",
11
+ "validationReport": "dflash/validation-structural.json"
12
+ },
13
  "drafter": {
14
+ "arch": "qwen35",
15
+ "finalDistillKl": 0.1123046875,
16
+ "finalElizaWeights": true,
17
  "matchesTargetCheckpoint": false,
18
+ "parameterCount": 334199584,
19
  "path": "dflash/drafter-2b.gguf",
20
+ "provenance": "dflash-drafter:h200-kd-20260517T0836Z",
21
+ "sha256": "a7fcb5b35e43cf09d6e408d16a6c5261cec75cc38c1951ba96e36d2aa7425633",
22
+ "sizeBytes": 679630464,
23
+ "studentConfig": "packages/training/configs/dflash-drafter-0_3b-qwen3_5",
24
+ "targetCheckpoint": "Qwen/Qwen3.5-2B-Base",
25
+ "targetCheckpointSha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2",
26
+ "tensorCount": 214,
27
+ "trainedSizeB": 0.3,
28
+ "vocabSize": 248320
29
  },
30
  "kernelCaps": {
31
+ "optional": [
 
32
  "turboquant_q4",
33
  "qjl",
34
+ "polarquant"
35
+ ],
36
+ "required": [
37
  "dflash"
38
  ]
39
  },
40
+ "publishBlockingReasons": [],
41
+ "publishEligible": true,
42
+ "schemaVersion": 3,
43
+ "status": "h200-distilled-structurally-validated",
 
 
 
 
 
 
 
 
 
44
  "targetText": {
45
+ "arch": "qwen35",
46
+ "finalElizaWeights": true,
47
+ "path": "text/eliza-1-2b-128k.gguf",
48
+ "provenance": "eliza-1-text:Q4_K_M",
49
+ "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2",
50
+ "sizeBytes": 1270808512,
51
+ "vocabSize": 248320
52
  },
53
  "targetTextVariants": [
54
  {
55
+ "finalElizaWeights": true,
56
  "path": "text/eliza-1-2b-32k.gguf",
57
+ "provenance": "eliza-1-text:Q4_K_M",
58
+ "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2"
59
+ },
60
+ {
61
+ "finalElizaWeights": true,
62
+ "path": "text/eliza-1-2b-128k.gguf",
63
+ "provenance": "eliza-1-text:Q4_K_M",
64
+ "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2"
65
+ },
66
+ {
67
+ "finalElizaWeights": true,
68
+ "path": "text/eliza-1-2b-256k.gguf",
69
+ "provenance": "eliza-1-text:Q4_K_M",
70
  "sha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2"
71
  }
72
  ],
73
+ "tier": "2b",
74
+ "training": {
75
+ "dataset": "elizaos/eliza-1-training:candidates/eliza1-trajectories-20260513/data/train.jsonl",
76
+ "elapsedSeconds": 1318.727364,
77
+ "hardware": "Nebius H200",
78
+ "hyperparameters": {
79
+ "apolloRank": 256,
80
+ "apolloScale": 1.0,
81
+ "apolloUpdateProjGap": 200,
82
+ "batchSize": 2,
83
+ "ceWeight": 0.1,
84
+ "epochs": 4,
85
+ "ggufOuttype": "bf16",
86
+ "gradAccum": 24,
87
+ "lr": 0.00025,
88
+ "maxSeqLen": 384,
89
+ "maxSteps": 0,
90
+ "temperature": 1.0,
91
+ "topKLogits": 32
92
+ },
93
+ "repositoryCommit": "dddfd1493d7dff66c69f907f317e9e99e502e481"
94
+ },
95
+ "validation": {
96
+ "checks": {
97
+ "acceptanceRollout": {
98
+ "acceptanceRate": null,
99
+ "detail": "skipped (--skip-acceptance-rollout or no prompts file)",
100
+ "gate": 0.48,
101
+ "pass": true
102
+ },
103
+ "architectureLoadable": {
104
+ "detail": "architecture ok (target=qwen35, drafter=qwen35)",
105
+ "pass": true
106
+ },
107
+ "drafterSmaller": {
108
+ "detail": "drafter is smaller (679630464 bytes vs target 1270808512 bytes)",
109
+ "pass": true
110
+ },
111
+ "hashMatch": {
112
+ "detail": "target hash ok (a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2)",
113
+ "pass": true
114
+ },
115
+ "tokenizerMetadataMatch": {
116
+ "detail": "tokenizer metadata ok",
117
+ "mismatches": [],
118
+ "pass": true
119
+ },
120
+ "vocabMatch": {
121
+ "detail": "vocab size ok (248320)",
122
+ "pass": true
123
+ }
124
+ },
125
+ "localCpuLlamaCliLoadSmoke": "passed",
126
+ "localMetalLlamaCliLoadSmoke": "failed-local-build-bf16-metal-kernel-compile",
127
+ "metadataOnly": false,
128
+ "remoteTransformersGenerationSmoke": "passed",
129
+ "structuralPass": true
130
+ }
131
  }
bundles/2b/dflash/validation-structural.json ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checks": {
3
+ "acceptanceRollout": {
4
+ "acceptanceRate": null,
5
+ "detail": "skipped (--skip-acceptance-rollout or no prompts file)",
6
+ "gate": 0.48,
7
+ "pass": true
8
+ },
9
+ "architectureLoadable": {
10
+ "detail": "architecture ok (target=qwen35, drafter=qwen35)",
11
+ "pass": true
12
+ },
13
+ "drafterSmaller": {
14
+ "detail": "drafter is smaller (679630464 bytes vs target 1270808512 bytes)",
15
+ "pass": true
16
+ },
17
+ "hashMatch": {
18
+ "detail": "target hash ok (a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2)",
19
+ "pass": true
20
+ },
21
+ "tokenizerMetadataMatch": {
22
+ "detail": "tokenizer metadata ok",
23
+ "mismatches": [],
24
+ "pass": true
25
+ },
26
+ "vocabMatch": {
27
+ "detail": "vocab size ok (248320)",
28
+ "pass": true
29
+ }
30
+ },
31
+ "drafter": {
32
+ "arch": "qwen35",
33
+ "path": "packages/training/runs/nebius-dflash-20260517T0836Z/2b/drafter-2b-bf16.gguf",
34
+ "sizeBytes": 679630464,
35
+ "targetCheckpointSha256": "a511452ec932613d6b26b4fa24488fd431eb61eac69321460447d475edc221e2",
36
+ "tensorCount": 214,
37
+ "tokenizer": {
38
+ "hashes": {
39
+ "tokenizer.ggml.add_bos_token": "23395dc933793a4859b76da2c395b55bf620f68c14eb422fecf537def2d56ba5",
40
+ "tokenizer.ggml.add_eos_token": null,
41
+ "tokenizer.ggml.bos_token_id": null,
42
+ "tokenizer.ggml.eos_token_id": "2fb47f516dee334a56b31878de4a5a27ebc4609c548f43c9efeed305770d16d6",
43
+ "tokenizer.ggml.merges": "fc4626461d490efa697f13cdc50a2eab4f7ddd1a09d1d2da2477129d8b1099eb",
44
+ "tokenizer.ggml.model": "720d7d18b648529c3e43fbbe8a86bed5c920fbbbd29515a0bb0176769cd3a251",
45
+ "tokenizer.ggml.padding_token_id": "d4d7a9e6965adc1cf364cb2ede0cf72056d8b28bf7a94d45e834db3e654c7c25",
46
+ "tokenizer.ggml.pre": "fa17dcc6f8a5e3a7e31e54f4e145b72b5a604651125b1c81dcc7c036de9acf9e",
47
+ "tokenizer.ggml.token_type": "f98cfe3d2f00bcf5298aba3d3ed4cb417315e07138930e1e798e54bb2785d76f",
48
+ "tokenizer.ggml.tokens": "84d938819c387e75903d01a197c6abf73c1baef9450f0007b98889f3795a22e0"
49
+ },
50
+ "lengths": {
51
+ "tokenizer.ggml.add_bos_token": 1,
52
+ "tokenizer.ggml.add_eos_token": null,
53
+ "tokenizer.ggml.bos_token_id": null,
54
+ "tokenizer.ggml.eos_token_id": 1,
55
+ "tokenizer.ggml.merges": 247587,
56
+ "tokenizer.ggml.model": 1,
57
+ "tokenizer.ggml.padding_token_id": 1,
58
+ "tokenizer.ggml.pre": 1,
59
+ "tokenizer.ggml.token_type": 248320,
60
+ "tokenizer.ggml.tokens": 248320
61
+ },
62
+ "model": "gpt2",
63
+ "pre": "qwen35",
64
+ "values": {
65
+ "tokenizer.ggml.add_bos_token": false,
66
+ "tokenizer.ggml.add_eos_token": null,
67
+ "tokenizer.ggml.bos_token_id": null,
68
+ "tokenizer.ggml.eos_token_id": 248046,
69
+ "tokenizer.ggml.model": "gpt2",
70
+ "tokenizer.ggml.padding_token_id": 248044,
71
+ "tokenizer.ggml.pre": "qwen35"
72
+ }
73
+ },
74
+ "vocabSize": 248320
75
+ },
76
+ "generatedAt": "2026-05-17T10:44:24.229254+00:00",
77
+ "kind": "dflash-drafter-validation",
78
+ "metadataOnly": false,
79
+ "pass": true,
80
+ "schemaVersion": 1,
81
+ "synthetic": false,
82
+ "target": {
83
+ "arch": "qwen35",
84
+ "path": "/tmp/eliza-1-targets/bundles/2b/text/eliza-1-2b-128k.gguf",
85
+ "sizeBytes": 1270808512,
86
+ "targetCheckpointSha256": null,
87
+ "tensorCount": 320,
88
+ "tokenizer": {
89
+ "hashes": {
90
+ "tokenizer.ggml.add_bos_token": "23395dc933793a4859b76da2c395b55bf620f68c14eb422fecf537def2d56ba5",
91
+ "tokenizer.ggml.add_eos_token": null,
92
+ "tokenizer.ggml.bos_token_id": null,
93
+ "tokenizer.ggml.eos_token_id": "2fb47f516dee334a56b31878de4a5a27ebc4609c548f43c9efeed305770d16d6",
94
+ "tokenizer.ggml.merges": "fc4626461d490efa697f13cdc50a2eab4f7ddd1a09d1d2da2477129d8b1099eb",
95
+ "tokenizer.ggml.model": "720d7d18b648529c3e43fbbe8a86bed5c920fbbbd29515a0bb0176769cd3a251",
96
+ "tokenizer.ggml.padding_token_id": "d4d7a9e6965adc1cf364cb2ede0cf72056d8b28bf7a94d45e834db3e654c7c25",
97
+ "tokenizer.ggml.pre": "fa17dcc6f8a5e3a7e31e54f4e145b72b5a604651125b1c81dcc7c036de9acf9e",
98
+ "tokenizer.ggml.token_type": "f98cfe3d2f00bcf5298aba3d3ed4cb417315e07138930e1e798e54bb2785d76f",
99
+ "tokenizer.ggml.tokens": "84d938819c387e75903d01a197c6abf73c1baef9450f0007b98889f3795a22e0"
100
+ },
101
+ "lengths": {
102
+ "tokenizer.ggml.add_bos_token": 1,
103
+ "tokenizer.ggml.add_eos_token": null,
104
+ "tokenizer.ggml.bos_token_id": null,
105
+ "tokenizer.ggml.eos_token_id": 1,
106
+ "tokenizer.ggml.merges": 247587,
107
+ "tokenizer.ggml.model": 1,
108
+ "tokenizer.ggml.padding_token_id": 1,
109
+ "tokenizer.ggml.pre": 1,
110
+ "tokenizer.ggml.token_type": 248320,
111
+ "tokenizer.ggml.tokens": 248320
112
+ },
113
+ "model": "gpt2",
114
+ "pre": "qwen35",
115
+ "values": {
116
+ "tokenizer.ggml.add_bos_token": false,
117
+ "tokenizer.ggml.add_eos_token": null,
118
+ "tokenizer.ggml.bos_token_id": null,
119
+ "tokenizer.ggml.eos_token_id": 248046,
120
+ "tokenizer.ggml.model": "gpt2",
121
+ "tokenizer.ggml.padding_token_id": 248044,
122
+ "tokenizer.ggml.pre": "qwen35"
123
+ }
124
+ },
125
+ "vocabSize": 248320
126
+ },
127
+ "tier": "2b"
128
+ }
upload-manifest.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "files": [
3
+ {
4
+ "path": "bundles/0_8b/dflash/drafter-0_8b.gguf",
5
+ "sha256": "9764723c6ab89eb6c3482e14bb8ce68fd899bf724d707064c7375d02801442cb",
6
+ "sizeBytes": 237637024
7
+ },
8
+ {
9
+ "path": "bundles/0_8b/dflash/target-meta.json",
10
+ "sha256": "580d1666b588bc9af2b7d45b7f8eed7af381b00ddb6a118b9eda9ce3801501e9",
11
+ "sizeBytes": 4104
12
+ },
13
+ {
14
+ "path": "bundles/0_8b/dflash/distill-manifest.json",
15
+ "sha256": "86bc5b73c9d3a969eb4c8fedea6b8ff26122e745fbdcda082150f1e23f163c54",
16
+ "sizeBytes": 20471
17
+ },
18
+ {
19
+ "path": "bundles/0_8b/dflash/validation-structural.json",
20
+ "sha256": "ba0372badf023572cf99d97db0d5d254fdce7585e83c230d7a7478f76df11774",
21
+ "sizeBytes": 5155
22
+ },
23
+ {
24
+ "path": "bundles/2b/dflash/drafter-2b.gguf",
25
+ "sha256": "a7fcb5b35e43cf09d6e408d16a6c5261cec75cc38c1951ba96e36d2aa7425633",
26
+ "sizeBytes": 679630464
27
+ },
28
+ {
29
+ "path": "bundles/2b/dflash/target-meta.json",
30
+ "sha256": "ca31586e43de4ac1172da677631ff2009d69cf063c30be5bda427e158e39a4af",
31
+ "sizeBytes": 4100
32
+ },
33
+ {
34
+ "path": "bundles/2b/dflash/distill-manifest.json",
35
+ "sha256": "728c9010ef7d6d39d4adb2cc4dc066c49aaf79924196200c9833326fdaf7cf7c",
36
+ "sizeBytes": 20474
37
+ },
38
+ {
39
+ "path": "bundles/2b/dflash/validation-structural.json",
40
+ "sha256": "c026c6fcbbd6751bc502e51fd81c91876ba4e80558c8c1c236f012be97d89abd",
41
+ "sizeBytes": 5148
42
+ }
43
+ ],
44
+ "generatedAt": "2026-05-17T10:45:00Z",
45
+ "kind": "eliza-1-dflash-h200-upload",
46
+ "repositoryCommit": "dddfd1493d7dff66c69f907f317e9e99e502e481",
47
+ "schemaVersion": 1
48
+ }