jaychun's picture
Upload folder using huggingface_hub
490a678 verified
Raw
History Blame Contribute Delete
8.16 kB
{
"_comment": "R22 DSpark draft \u2014 Solar-Open2-250B-W4A8. \uacf5\uac1c RadixArk/Inferact Kimi-K3-DSpark \ub808\uc2dc\ud53c \uc815\uc11d.",
"_design_rule": [
"\u2605draft \uc544\ud0a4\ud14d\ucc98\ub294 target \uc5d0\uc11c \uc720\ub3c4\ud558\uc9c0 \uc54a\ub294\ub2e4 \u2014 \uacf5\uac1c\ub3c4 target(Kimi hidden 7168) \uacfc \ubb34\uad00\ud558\uac8c",
" draft hidden 4096/heads 32/kv 8/FFN 12288 \uc744 \uc37c\ub2e4. \uadf8 \ud615\uc0c1\uc744 \uadf8\ub300\ub85c \ubcf4\uc874\ud55c\ub2e4.",
"\u2605target-\uacb0\ud569 \ud544\ub4dc\ub9cc Solar \uc2e4\uce21\uac12\uc73c\ub85c \uad50\uccb4: vocab_size \u00b7 target_hidden_size \u00b7",
" target_num_hidden_layers \u00b7 target_layer_ids \u00b7 mask_token_id.",
"\u2605target_layer_ids = [4,12,24,36,44] \u2014 Solar gqa_layers=[0,4,8,...,44] \ub300\uc870\ub85c 5/5 \uc804\ubd80",
" full-attention \ud655\uc778([[project_spec_draft_aux_tap_must_be_full_attention]]).",
" \uc790\ub3d9\uc720\ub3c4(build_target_layer_ids(5,48)=[1,12,23,34,45])\ub294 KDA \uce35\uc744 \ubb3c\uc5b4 \uc4f0\uc9c0 \uc54a\ub294\ub2e4.",
"\u2605mask_token_id=4095=<|special_4095|> \u2014 \uc2e4\uc81c \ubbf8\uc0ac\uc6a9 \uc608\uc57d \ud1a0\ud070(added_tokens 4096\uac1c \uc911).",
" \u26a0\ufe0f\uad6c dspark_solar_open2.py \uc758 mask_token_id=2 \ub294 EOS \uc7ac\uc0ac\uc6a9 \ubc84\uadf8\uc600\ub2e4."
],
"architectures": [
"Qwen3DSparkModel"
],
"model_type": "qwen3",
"hidden_size": 4096,
"intermediate_size": 12288,
"num_hidden_layers": 5,
"num_attention_heads": 32,
"num_key_value_heads": 8,
"rms_norm_eps": 1e-05,
"max_position_embeddings": 1048576,
"vocab_size": 196608,
"num_target_layers": 5,
"target_hidden_size": 4096,
"target_num_hidden_layers": 48,
"target_layer_ids": [
4,
12,
24,
36,
44
],
"mask_token_id": 4095,
"_serving_contract": [
"\u2605\uc544\ub798 2\ud544\ub4dc\ub294 **\ud559\uc2b5\uc774 \uc544\ub2c8\ub77c vLLM 0.26.0 \uc11c\ube59**\uc774 \uc694\uad6c\ud55c\ub2e4(\uc18c\uc2a4 \uc2e4\uce21).",
"\u2460 dspark_block_size \u2014 speculative.py:1011 \uc774 draft hf_config \uc5d0\uc11c \uc77d\ub294\ub2e4. \uc5c6\uc73c\uba74",
" `num_speculative_tokens >= block_size` \uac00\ub4dc\uac00 **\ud1b5\uc9f8\ub85c \uc2a4\ud0b5**\ub418\uace0, \ubbf8\ub2ec \uc2dc vLLM \uc790\uccb4 \uc8fc\uc11d\ub300\ub85c",
" 'garbled output' \uc774 \uc870\uc6a9\ud788 \ub09c\ub2e4(accept \uc800\ud558\uac00 \uc544\ub2c8\ub77c \uc624\ub2f5).",
"\u2461 dflash_config \u2014 qwen3_dflash.py:356-357 \uc774 drafter_config = eagle_config \u222a dflash_config \ub85c \ub9cc\ub4e4\uace0",
" **mask_token_id \ub97c \uc5ec\uae30\uc11c\ub9cc** \uc77d\ub294\ub2e4(top-level \uc544\ub2d8). target_layer_ids \ub3c4 \uc5ec\uae30\uc11c fc \uc785\ub825\ud3ed\uc744 \uc815\ud55c\ub2e4.",
" (\uc5c6\uc5b4\ub3c4 num_hidden_layers=5 \ub85c \uc6b0\uc5f0\ud788 \ub9de\uc9c0\ub9cc, draft \uae4a\uc774\ub97c \ubc14\uafb8\uba74 \uc870\uc6a9\ud788 \uae68\uc9c4\ub2e4 \u2192 \uba85\uc2dc)",
"\u2605aux tap \ud574\uc11d \uc6b0\uc120\uc21c\uc704(eagle3_utils.py:41-55) \u2014 \uc774 \uc21c\uc11c\uac00 '+1 \uc774\uc911\uc801\uc6a9' \ud568\uc815\uc758 \uc815\uccb4\ub2e4:",
" 1) eagle_aux_hidden_state_layer_ids \u2192 **\uadf8\ub300\ub85c**(+1 \uc5c6\uc74c) \u2190 convert_to_hf.py:156 \uc774 \uc4f0\ub294 \ud0a4",
" 2) dflash_config.target_layer_ids \u2192 **+1**",
" 3) dspark_target_layer_ids \u2192 **+1**",
" 4) top-level target_layer_ids \u2192 **+1**",
" \u21d2 \ud559\uc2b5\uc774 \uc2e4\uc81c\ub85c \ubb38 vLLM \uce35 = [5,13,25,37,45]. 2/3/4 \uacbd\ub85c\uba74 [4,12,24,36,44] \ub97c \uc8fc\ub294 \uac8c \ub9de\uace0,",
" 1 \uacbd\ub85c\uba74 [5,13,25,37,45] \ub97c \uc918\uc57c \ud55c\ub2e4. \uc11e\uc73c\uba74 \ud615\uc0c1\uc774 \ub9de\uc544 crash \uc5c6\uc774 accept \ub9cc \uc8fd\ub294\ub2e4.",
" \u21d2 export \ud6c4 \ubc18\ub4dc\uc2dc `gate_export_aux.py` \ub85c **vLLM \uc2e4\uc81c \ud574\uc11d \ud568\uc218**\ub97c \ub3cc\ub824 \ud655\uc815\ud55c\ub2e4."
],
"dspark_block_size": 4,
"dflash_config": {
"target_layer_ids": [
4,
12,
24,
36,
44
],
"mask_token_id": 4095,
"use_aux_hidden_state": true
},
"markov_rank": 256,
"markov_head_type": "vanilla",
"enable_confidence_head": true,
"confidence_head_with_markov": true,
"tie_word_embeddings": false,
"head_dim": 128,
"layer_types": [
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention"
],
"_v2_changes": [
"max_position_embeddings: 40960 -> 1048576 (target=1048576. d1\uc758 40960\uc740 \uc2e4\ubd80\ud558 crash \uc6d0\uc778(D530))",
"rms_norm_eps: 1e-06 -> 1e-05 (target=1e-5. \uacf5\uac1c\ub3c4 target \uac12 \uc0c1\uc18d)",
"head_dim: None -> 128 (target=128. \ud604\uc7ac \uc720\ub3c4\uac12\uacfc \ub3d9\uc77c\ud558\ub098 \uc554\ubb35 \uc758\uc874 \uc81c\uac70\ub97c \uc704\ud574 \uba85\uc2dc)",
"layer_types: None -> ['full_attention', 'full_attention', 'full_attention', 'full_attention', 'full_attention'] (\uacf5\uac1c\uac00 \uba85\uc2dc. \uc554\ubb35 \uae30\ubcf8\uac12(causal=False \uc720\ub3c4) \uc758\uc874 \uc81c\uac70)",
"rope: theta 1e6 (YaRN \uc5c6\uc74c) -> theta 10000, rope_scaling \uc5c6\uc74c (Solar target \uc744 \uadf8\ub300\ub85c \ubbf8\ub7ec\ub9c1. \u2605\uacf5\uac1c\uac00 YaRN \uc744 \uc4f4 \uac83\uc740 **Kimi target \uc774 YaRN \uc774\ub77c\uc11c**\uc774\uc9c0 DSpark \uace0\uc720 \uc694\uc18c\uac00 \uc544\ub2c8\ub2e4 \u2014 \uaddc\uce59\uc740 '\ub808\uc2dc\ud53c \ud615\ud0dc \ubcf5\uc0ac'\uac00 \uc544\ub2c8\ub77c 'target \uc0c1\uc18d'\uc774\ub2e4)"
],
"_v2_note": [
"d1(2026-08-01) \ub300\ube44 \uc7ac\ud559\uc2b5\uc6a9 v2. \uadfc\uac70 = \uacf5\uac1c \uc815\ubcf8 RadixArk/Kimi-K3-DSpark + Solar target \uc2e4\uce21(D530).",
"\uaddc\uce59: draft \uc758 attention \uae30\ud558\u00b7\uc815\uaddc\ud654\u00b7rope \ub294 **target \uc5d0\uc11c \uc0c1\uc18d**\ud55c\ub2e4.",
"",
"\u2605\u2605\uc77c\ubd80\ub7ec **\ubc14\uafb8\uc9c0 \uc54a\uc740** \uac83 \u2014 \uadfc\uac70\ub97c \ub0a8\uae34\ub2e4:",
"\u2460 num_attention_heads 32 \uc720\uc9c0(target/\uacf5\uac1c\ub294 64).",
" head_dim 128 \uc744 \uc720\uc9c0\ud55c \ucc44 heads \ub97c 64 \ub85c \uc62c\ub9ac\uba74 q/k/v \ud22c\uc601\uc774 8192 \ud3ed = **draft attention \uc5f0\uc0b0 2\ubc30**.",
" \uc6b0\ub9ac binding \uac8c\uc774\ud2b8\ub294 derTPOT(48ms vs 25ms) = **per_step \uc744 \uc904\uc5ec\uc57c \ud558\ub294 \uc0c1\ud669**\uc774\ub77c \uc5ed\ubc29\ud5a5\uc774\ub2e4.",
" \uacf5\uac1c\uac00 target heads \ub97c \ub530\ub978 \uac83\uc740 Kimi K3(93\uce35) \ub77c draft \ube44\uc6a9 \ube44\uc911\uc774 \uc791\uae30 \ub54c\ubb38 \u2014 \uc6b0\ub9ac\ub294 48\uce35\uc774\ub2e4.",
" \u21d2 **\ubcc4\ub3c4 OFAT \uc73c\ub85c \ubd84\ub9ac**. \uc774\ubc88 \uc7ac\ud559\uc2b5\uc740 rope\u00b7\ucee8\ud14d\uc2a4\ud2b8\u00b7\ubb3c\ub7c9 3\uac1c\uac00 \uc774\ubbf8 \ub3d9\uc2dc\uc5d0 \ubc14\ub010\ub2e4.",
"\u2461 intermediate_size 12288 \uc720\uc9c0(\uacf5\uac1c\ub294 2\u00d7hidden). \uac19\uc740 \uc774\uc720 \u2014 \ud55c \ubc88\uc5d0 \ud558\ub098\uc529.",
"\u2462 vocab 196608 \uc804\uccb4 \uc720\uc9c0(pruning \uc548 \ud568) \u2014 \uacf5\uac1c\ub3c4 target \uc804\uccb4 vocab. \uc6b4\uc601\uc790 \uacb0\uc815(D534).",
"\u2463 DSpark \uace0\uc720 \ud558\uc774\ud37c(block7/anchor512/markov256/loss/confidence) \uc804\ubd80 \uacf5\uac1c\uac12 \uc720\uc9c0.",
"",
"\u2605\u2605rope \ud0a4 \ud568\uc815(\uc2e4\uce21): TorchSpec `config/utils.py:118-119` \ub294 **`rope_theta`\u00b7`rope_scaling`** \ub9cc \uc77d\ub294\ub2e4. \uacf5\uac1c HF \uce74\ub4dc\uc758 `rope_parameters`(transformers 5.x \uc2e0\ud615\uc2dd)\ub97c \uadf8\ub300\ub85c \uc4f0\uba74 **\uc870\uc6a9\ud788 \ubb34\uc2dc**\ub418\uace0 \uae30\ubcf8\uac12\uc73c\ub85c 10\uc2dc\uac04\uc744 \ub3cc\uac8c \ub41c\ub2e4. \uac19\uc740 \ud30c\uc77c `generate_draft_model_config` \uac00 target \uc758 \ub450 \ud0a4\ub97c draft \ub85c \ubcf5\uc0ac\ud558\ub3c4\ub85d \uc124\uacc4\ub3fc \uc788\ub2e4 = 'target \uc0c1\uc18d' \uaddc\uce59\uc758 \ucf54\ub4dc \uadfc\uac70."
],
"rope_theta": 10000.0,
"draft_vocab_size": 196608,
"_torchspec_version": "0.1.0",
"torch_dtype": "bfloat16"
}