developer-lunark commited on
Commit
54625cf
·
verified ·
1 Parent(s): 5cac91f

Upload phase2a-test-1k model - 2025-11-18 09:24:35

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: unsloth/Qwen3-30B-A3B-Instruct-2507
4
+ tags:
5
+ - kaidol
6
+ - roleplay
7
+ - korean
8
+ - qwen3
9
+ - lora
10
+ - unsloth
11
+ language:
12
+ - ko
13
+ - en
14
+ pipeline_tag: text-generation
15
+ ---
16
+
17
+ # KAIDOL LLM Fine-tuning - PHASE2A-TEST-1K
18
+
19
+ Korean AI Idol Roleplay Language Model based on unsloth/Qwen3-30B-A3B-Instruct-2507
20
+
21
+ ## Model Description
22
+
23
+ 이 모델은 K-pop 아이돌 스타일의 롤플레잉 및 공감 대화를 위해 fine-tuning된 LoRA adapter입니다.
24
+
25
+ - **Base Model**: unsloth/Qwen3-30B-A3B-Instruct-2507
26
+ - **Training Phase**: phase2a-test-1k
27
+ - **Training Framework**: Unsloth 2025.11.3
28
+ - **LoRA Rank**: 16
29
+ - **LoRA Alpha**: 16
30
+ - **Training Samples**: 1000
31
+
32
+ ## Training Configuration
33
+
34
+ ```json
35
+ {
36
+ "model": "Qwen3-30B-A3B-Instruct-2507",
37
+ "phase": "phase2a-test-1k",
38
+ "dataset": "phase2-rp-base-1k",
39
+ "num_samples": 1000,
40
+ "lora_rank": 16,
41
+ "lora_alpha": 16,
42
+ "lora_dropout": 0,
43
+ "learning_rate": 0.0002,
44
+ "batch_size": 2,
45
+ "gradient_accumulation_steps": 4,
46
+ "effective_batch_size": 32,
47
+ "max_steps": 100,
48
+ "warmup_steps": 10,
49
+ "max_seq_length": 2048,
50
+ "optimizer": "adamw_8bit",
51
+ "weight_decay": 0.01,
52
+ "lr_scheduler_type": "linear",
53
+ "precision": "bfloat16",
54
+ "device_map": "auto",
55
+ "gpus": "4x RTX 5090",
56
+ "training_time": "40 minutes",
57
+ "framework": "Unsloth 2025.11.3",
58
+ "target_modules": [
59
+ "q_proj",
60
+ "k_proj",
61
+ "v_proj",
62
+ "o_proj",
63
+ "gate_proj",
64
+ "up_proj",
65
+ "down_proj"
66
+ ]
67
+ }
68
+ ```
69
+
70
+ ## Evaluation Metrics
71
+
72
+ ```json
73
+ {
74
+ "training_loss": {
75
+ "initial": 2.3745,
76
+ "final": 1.5027,
77
+ "reduction_percent": 36.7
78
+ },
79
+ "training_metrics": {
80
+ "total_steps": 100,
81
+ "total_samples": 1000,
82
+ "training_time_seconds": 2380.49,
83
+ "training_time_minutes": 39.67,
84
+ "samples_per_second": 0.336,
85
+ "final_grad_norm": 0.1539,
86
+ "final_learning_rate": 0.0
87
+ },
88
+ "loss_progression": {
89
+ "step_5": 2.3745,
90
+ "step_10": 1.531,
91
+ "step_50": 1.632,
92
+ "step_100": 1.5027
93
+ },
94
+ "wandb_run": "https://wandb.ai/developer_lunark-lunark-ai/kaidol-llm-finetuning/runs/brryct5m",
95
+ "notes": "Baseline test with 1K samples. Stable convergence observed. Ready for hyperparameter optimization (LR 2e-4→1e-4, alpha 16→32, grad_accum 4→8)."
96
+ }
97
+ ```
98
+
99
+
100
+ ## Usage
101
+
102
+ ### 로드 방법 (Unsloth 사용)
103
+
104
+ ```python
105
+ from unsloth import FastLanguageModel
106
+
107
+ model, tokenizer = FastLanguageModel.from_pretrained(
108
+ model_name="developer-lunark/kaidol-phase2a-test-1k",
109
+ max_seq_length=2048,
110
+ dtype=None,
111
+ load_in_4bit=True,
112
+ )
113
+ ```
114
+
115
+ ### 추론 예시
116
+
117
+ ```python
118
+ messages = [
119
+ {"role": "user", "content": "오늘 기분이 좋지 않아..."},
120
+ ]
121
+
122
+ inputs = tokenizer.apply_chat_template(
123
+ messages,
124
+ tokenize=True,
125
+ add_generation_prompt=True,
126
+ return_tensors="pt"
127
+ ).to("cuda")
128
+
129
+ outputs = model.generate(
130
+ inputs,
131
+ max_new_tokens=512,
132
+ temperature=0.7,
133
+ top_p=0.9,
134
+ )
135
+
136
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
137
+ print(response)
138
+ ```
139
+
140
+ ## Dataset
141
+
142
+ - **Phase 2**: RP Base Dataset (54K samples)
143
+ - Source: `developer-lunark/kaidol-phase2-rp-base-v0.1`
144
+ - Korean: 53% / English: 47%
145
+
146
+ ## Training Hardware
147
+
148
+ - **GPU**: 4x NVIDIA RTX 5090 (32GB each)
149
+ - **Training Time**: ~40 minutes
150
+ - **Framework**: Unsloth + PyTorch 2.9.1 + CUDA 12.8
151
+
152
+ ## Limitations
153
+
154
+ - 이 모델은 롤플레잉 및 공감 대화에 특화되어 있습니다
155
+ - 일반적인 지식 질문이나 reasoning 작업에는 베이스 모델보다 성능이 낮을 수 있습니다
156
+ - 한국어와 영어 외의 언어는 제한적으로 지원됩니다
157
+
158
+ ## Ethical Considerations
159
+
160
+ - 이 모델은 연구 및 교육 목적으로 제작되었습니다
161
+ - 상업적 사용 시 라이선스를 확인하세요
162
+ - 생성된 콘텐츠의 품질과 적절성을 항상 검증하세요
163
+
164
+ ## Citation
165
+
166
+ ```bibtex
167
+ @misc{kaidol-phase2a-test-1k,
168
+ author = {Developer Lunark},
169
+ title = {KAIDOL LLM Fine-tuning - PHASE2A-TEST-1K},
170
+ year = {2025},
171
+ publisher = {HuggingFace},
172
+ howpublished = {\url{https://huggingface.co/developer-lunark/kaidol-phase2a-test-1k}}
173
+ }
174
+ ```
175
+
176
+ ## Model Card Contact
177
+
178
+ - **Developer**: developer_lunark
179
+ - **Repository**: https://github.com/developer-lunark/kaidol-llm-finetuning
180
+ - **W&B Project**: https://wandb.ai/developer_lunark-lunark-ai/kaidol-llm-finetuning
181
+
182
+ ---
183
+
184
+ Generated on 2025-11-18 09:24:35
adapter_config.json ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": {
6
+ "base_model_class": "Qwen3MoeForCausalLM",
7
+ "parent_library": "transformers.models.qwen3_moe.modeling_qwen3_moe",
8
+ "unsloth_fixed": true
9
+ },
10
+ "base_model_name_or_path": "unsloth/qwen3-30b-a3b-instruct-2507",
11
+ "bias": "none",
12
+ "corda_config": null,
13
+ "ensure_weight_tying": false,
14
+ "eva_config": null,
15
+ "exclude_modules": null,
16
+ "fan_in_fan_out": false,
17
+ "inference_mode": true,
18
+ "init_lora_weights": true,
19
+ "layer_replication": null,
20
+ "layers_pattern": null,
21
+ "layers_to_transform": null,
22
+ "loftq_config": {},
23
+ "lora_alpha": 16,
24
+ "lora_bias": false,
25
+ "lora_dropout": 0,
26
+ "megatron_config": null,
27
+ "megatron_core": "megatron.core",
28
+ "modules_to_save": null,
29
+ "peft_type": "LORA",
30
+ "peft_version": "0.18.0",
31
+ "qalora_group_size": 16,
32
+ "r": 16,
33
+ "rank_pattern": {},
34
+ "revision": null,
35
+ "target_modules": [
36
+ "gate_proj",
37
+ "q_proj",
38
+ "k_proj",
39
+ "v_proj",
40
+ "down_proj",
41
+ "up_proj",
42
+ "o_proj"
43
+ ],
44
+ "target_parameters": null,
45
+ "task_type": "CAUSAL_LM",
46
+ "trainable_token_indices": null,
47
+ "use_dora": false,
48
+ "use_qalora": false,
49
+ "use_rslora": false
50
+ }
adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a168a1beb52a7cf568ad655ee461ed927d85049ac799268f6e234338a623b9ca
3
+ size 3380768360
added_tokens.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "</think>": 151668,
3
+ "</tool_call>": 151658,
4
+ "</tool_response>": 151666,
5
+ "<think>": 151667,
6
+ "<tool_call>": 151657,
7
+ "<tool_response>": 151665,
8
+ "<|box_end|>": 151649,
9
+ "<|box_start|>": 151648,
10
+ "<|endoftext|>": 151643,
11
+ "<|file_sep|>": 151664,
12
+ "<|fim_middle|>": 151660,
13
+ "<|fim_pad|>": 151662,
14
+ "<|fim_prefix|>": 151659,
15
+ "<|fim_suffix|>": 151661,
16
+ "<|im_end|>": 151645,
17
+ "<|im_start|>": 151644,
18
+ "<|image_pad|>": 151655,
19
+ "<|object_ref_end|>": 151647,
20
+ "<|object_ref_start|>": 151646,
21
+ "<|quad_end|>": 151651,
22
+ "<|quad_start|>": 151650,
23
+ "<|repo_name|>": 151663,
24
+ "<|video_pad|>": 151656,
25
+ "<|vision_end|>": 151653,
26
+ "<|vision_pad|>": 151654,
27
+ "<|vision_start|>": 151652
28
+ }
chat_template.jinja ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0].role == 'system' %}
4
+ {{- messages[0].content + '\n\n' }}
5
+ {%- endif %}
6
+ {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
7
+ {%- for tool in tools %}
8
+ {{- "\n" }}
9
+ {{- tool | tojson }}
10
+ {%- endfor %}
11
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
12
+ {%- else %}
13
+ {%- if messages[0].role == 'system' %}
14
+ {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
15
+ {%- endif %}
16
+ {%- endif %}
17
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
18
+ {%- for message in messages[::-1] %}
19
+ {%- set index = (messages|length - 1) - loop.index0 %}
20
+ {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
21
+ {%- set ns.multi_step_tool = false %}
22
+ {%- set ns.last_query_index = index %}
23
+ {%- endif %}
24
+ {%- endfor %}
25
+ {%- for message in messages %}
26
+ {%- if message.content is string %}
27
+ {%- set content = message.content %}
28
+ {%- else %}
29
+ {%- set content = '' %}
30
+ {%- endif %}
31
+ {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
32
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
33
+ {%- elif message.role == "assistant" %}
34
+ {%- set reasoning_content = '' %}
35
+ {%- if message.reasoning_content is string %}
36
+ {%- set reasoning_content = message.reasoning_content %}
37
+ {%- else %}
38
+ {%- if '</think>' in content %}
39
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
40
+ {%- set content = content.split('</think>')[-1].lstrip('\n') %}
41
+ {%- endif %}
42
+ {%- endif %}
43
+ {%- if loop.index0 > ns.last_query_index %}
44
+ {%- if loop.last or (not loop.last and reasoning_content) %}
45
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
46
+ {%- else %}
47
+ {{- '<|im_start|>' + message.role + '\n' + content }}
48
+ {%- endif %}
49
+ {%- else %}
50
+ {{- '<|im_start|>' + message.role + '\n' + content }}
51
+ {%- endif %}
52
+ {%- if message.tool_calls %}
53
+ {%- for tool_call in message.tool_calls %}
54
+ {%- if (loop.first and content) or (not loop.first) %}
55
+ {{- '\n' }}
56
+ {%- endif %}
57
+ {%- if tool_call.function %}
58
+ {%- set tool_call = tool_call.function %}
59
+ {%- endif %}
60
+ {{- '<tool_call>\n{"name": "' }}
61
+ {{- tool_call.name }}
62
+ {{- '", "arguments": ' }}
63
+ {%- if tool_call.arguments is string %}
64
+ {{- tool_call.arguments }}
65
+ {%- else %}
66
+ {{- tool_call.arguments | tojson }}
67
+ {%- endif %}
68
+ {{- '}\n</tool_call>' }}
69
+ {%- endfor %}
70
+ {%- endif %}
71
+ {{- '<|im_end|>\n' }}
72
+ {%- elif message.role == "tool" %}
73
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
74
+ {{- '<|im_start|>user' }}
75
+ {%- endif %}
76
+ {{- '\n<tool_response>\n' }}
77
+ {{- content }}
78
+ {{- '\n</tool_response>' }}
79
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
80
+ {{- '<|im_end|>\n' }}
81
+ {%- endif %}
82
+ {%- endif %}
83
+ {%- endfor %}
84
+ {%- if add_generation_prompt %}
85
+ {{- '<|im_start|>assistant\n' }}
86
+ {%- endif %}
merges.txt ADDED
The diff for this file is too large to render. See raw diff
 
special_tokens_map.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|im_start|>",
4
+ "<|im_end|>",
5
+ "<|object_ref_start|>",
6
+ "<|object_ref_end|>",
7
+ "<|box_start|>",
8
+ "<|box_end|>",
9
+ "<|quad_start|>",
10
+ "<|quad_end|>",
11
+ "<|vision_start|>",
12
+ "<|vision_end|>",
13
+ "<|vision_pad|>",
14
+ "<|image_pad|>",
15
+ "<|video_pad|>"
16
+ ],
17
+ "eos_token": {
18
+ "content": "<|im_end|>",
19
+ "lstrip": false,
20
+ "normalized": false,
21
+ "rstrip": false,
22
+ "single_word": false
23
+ },
24
+ "pad_token": {
25
+ "content": "<|vision_pad|>",
26
+ "lstrip": false,
27
+ "normalized": false,
28
+ "rstrip": false,
29
+ "single_word": false
30
+ }
31
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4
3
+ size 11422654
tokenizer_config.json ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_prefix_space": false,
4
+ "added_tokens_decoder": {
5
+ "151643": {
6
+ "content": "<|endoftext|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false,
11
+ "special": true
12
+ },
13
+ "151644": {
14
+ "content": "<|im_start|>",
15
+ "lstrip": false,
16
+ "normalized": false,
17
+ "rstrip": false,
18
+ "single_word": false,
19
+ "special": true
20
+ },
21
+ "151645": {
22
+ "content": "<|im_end|>",
23
+ "lstrip": false,
24
+ "normalized": false,
25
+ "rstrip": false,
26
+ "single_word": false,
27
+ "special": true
28
+ },
29
+ "151646": {
30
+ "content": "<|object_ref_start|>",
31
+ "lstrip": false,
32
+ "normalized": false,
33
+ "rstrip": false,
34
+ "single_word": false,
35
+ "special": true
36
+ },
37
+ "151647": {
38
+ "content": "<|object_ref_end|>",
39
+ "lstrip": false,
40
+ "normalized": false,
41
+ "rstrip": false,
42
+ "single_word": false,
43
+ "special": true
44
+ },
45
+ "151648": {
46
+ "content": "<|box_start|>",
47
+ "lstrip": false,
48
+ "normalized": false,
49
+ "rstrip": false,
50
+ "single_word": false,
51
+ "special": true
52
+ },
53
+ "151649": {
54
+ "content": "<|box_end|>",
55
+ "lstrip": false,
56
+ "normalized": false,
57
+ "rstrip": false,
58
+ "single_word": false,
59
+ "special": true
60
+ },
61
+ "151650": {
62
+ "content": "<|quad_start|>",
63
+ "lstrip": false,
64
+ "normalized": false,
65
+ "rstrip": false,
66
+ "single_word": false,
67
+ "special": true
68
+ },
69
+ "151651": {
70
+ "content": "<|quad_end|>",
71
+ "lstrip": false,
72
+ "normalized": false,
73
+ "rstrip": false,
74
+ "single_word": false,
75
+ "special": true
76
+ },
77
+ "151652": {
78
+ "content": "<|vision_start|>",
79
+ "lstrip": false,
80
+ "normalized": false,
81
+ "rstrip": false,
82
+ "single_word": false,
83
+ "special": true
84
+ },
85
+ "151653": {
86
+ "content": "<|vision_end|>",
87
+ "lstrip": false,
88
+ "normalized": false,
89
+ "rstrip": false,
90
+ "single_word": false,
91
+ "special": true
92
+ },
93
+ "151654": {
94
+ "content": "<|vision_pad|>",
95
+ "lstrip": false,
96
+ "normalized": false,
97
+ "rstrip": false,
98
+ "single_word": false,
99
+ "special": true
100
+ },
101
+ "151655": {
102
+ "content": "<|image_pad|>",
103
+ "lstrip": false,
104
+ "normalized": false,
105
+ "rstrip": false,
106
+ "single_word": false,
107
+ "special": true
108
+ },
109
+ "151656": {
110
+ "content": "<|video_pad|>",
111
+ "lstrip": false,
112
+ "normalized": false,
113
+ "rstrip": false,
114
+ "single_word": false,
115
+ "special": true
116
+ },
117
+ "151657": {
118
+ "content": "<tool_call>",
119
+ "lstrip": false,
120
+ "normalized": false,
121
+ "rstrip": false,
122
+ "single_word": false,
123
+ "special": false
124
+ },
125
+ "151658": {
126
+ "content": "</tool_call>",
127
+ "lstrip": false,
128
+ "normalized": false,
129
+ "rstrip": false,
130
+ "single_word": false,
131
+ "special": false
132
+ },
133
+ "151659": {
134
+ "content": "<|fim_prefix|>",
135
+ "lstrip": false,
136
+ "normalized": false,
137
+ "rstrip": false,
138
+ "single_word": false,
139
+ "special": false
140
+ },
141
+ "151660": {
142
+ "content": "<|fim_middle|>",
143
+ "lstrip": false,
144
+ "normalized": false,
145
+ "rstrip": false,
146
+ "single_word": false,
147
+ "special": false
148
+ },
149
+ "151661": {
150
+ "content": "<|fim_suffix|>",
151
+ "lstrip": false,
152
+ "normalized": false,
153
+ "rstrip": false,
154
+ "single_word": false,
155
+ "special": false
156
+ },
157
+ "151662": {
158
+ "content": "<|fim_pad|>",
159
+ "lstrip": false,
160
+ "normalized": false,
161
+ "rstrip": false,
162
+ "single_word": false,
163
+ "special": false
164
+ },
165
+ "151663": {
166
+ "content": "<|repo_name|>",
167
+ "lstrip": false,
168
+ "normalized": false,
169
+ "rstrip": false,
170
+ "single_word": false,
171
+ "special": false
172
+ },
173
+ "151664": {
174
+ "content": "<|file_sep|>",
175
+ "lstrip": false,
176
+ "normalized": false,
177
+ "rstrip": false,
178
+ "single_word": false,
179
+ "special": false
180
+ },
181
+ "151665": {
182
+ "content": "<tool_response>",
183
+ "lstrip": false,
184
+ "normalized": false,
185
+ "rstrip": false,
186
+ "single_word": false,
187
+ "special": false
188
+ },
189
+ "151666": {
190
+ "content": "</tool_response>",
191
+ "lstrip": false,
192
+ "normalized": false,
193
+ "rstrip": false,
194
+ "single_word": false,
195
+ "special": false
196
+ },
197
+ "151667": {
198
+ "content": "<think>",
199
+ "lstrip": false,
200
+ "normalized": false,
201
+ "rstrip": false,
202
+ "single_word": false,
203
+ "special": false
204
+ },
205
+ "151668": {
206
+ "content": "</think>",
207
+ "lstrip": false,
208
+ "normalized": false,
209
+ "rstrip": false,
210
+ "single_word": false,
211
+ "special": false
212
+ }
213
+ },
214
+ "additional_special_tokens": [
215
+ "<|im_start|>",
216
+ "<|im_end|>",
217
+ "<|object_ref_start|>",
218
+ "<|object_ref_end|>",
219
+ "<|box_start|>",
220
+ "<|box_end|>",
221
+ "<|quad_start|>",
222
+ "<|quad_end|>",
223
+ "<|vision_start|>",
224
+ "<|vision_end|>",
225
+ "<|vision_pad|>",
226
+ "<|image_pad|>",
227
+ "<|video_pad|>"
228
+ ],
229
+ "bos_token": null,
230
+ "clean_up_tokenization_spaces": false,
231
+ "eos_token": "<|im_end|>",
232
+ "errors": "replace",
233
+ "extra_special_tokens": {},
234
+ "model_max_length": 262144,
235
+ "pad_token": "<|vision_pad|>",
236
+ "padding_side": "left",
237
+ "split_special_tokens": false,
238
+ "tokenizer_class": "Qwen2Tokenizer",
239
+ "unk_token": null
240
+ }
training_config.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "base_model": "unsloth/Qwen3-30B-A3B-Instruct-2507",
3
+ "phase": "phase2a-test-1k",
4
+ "training_config": {
5
+ "model": "Qwen3-30B-A3B-Instruct-2507",
6
+ "phase": "phase2a-test-1k",
7
+ "dataset": "phase2-rp-base-1k",
8
+ "num_samples": 1000,
9
+ "lora_rank": 16,
10
+ "lora_alpha": 16,
11
+ "lora_dropout": 0,
12
+ "learning_rate": 0.0002,
13
+ "batch_size": 2,
14
+ "gradient_accumulation_steps": 4,
15
+ "effective_batch_size": 32,
16
+ "max_steps": 100,
17
+ "warmup_steps": 10,
18
+ "max_seq_length": 2048,
19
+ "optimizer": "adamw_8bit",
20
+ "weight_decay": 0.01,
21
+ "lr_scheduler_type": "linear",
22
+ "precision": "bfloat16",
23
+ "device_map": "auto",
24
+ "gpus": "4x RTX 5090",
25
+ "training_time": "40 minutes",
26
+ "framework": "Unsloth 2025.11.3",
27
+ "target_modules": [
28
+ "q_proj",
29
+ "k_proj",
30
+ "v_proj",
31
+ "o_proj",
32
+ "gate_proj",
33
+ "up_proj",
34
+ "down_proj"
35
+ ]
36
+ },
37
+ "metrics": {
38
+ "training_loss": {
39
+ "initial": 2.3745,
40
+ "final": 1.5027,
41
+ "reduction_percent": 36.7
42
+ },
43
+ "training_metrics": {
44
+ "total_steps": 100,
45
+ "total_samples": 1000,
46
+ "training_time_seconds": 2380.49,
47
+ "training_time_minutes": 39.67,
48
+ "samples_per_second": 0.336,
49
+ "final_grad_norm": 0.1539,
50
+ "final_learning_rate": 0.0
51
+ },
52
+ "loss_progression": {
53
+ "step_5": 2.3745,
54
+ "step_10": 1.531,
55
+ "step_50": 1.632,
56
+ "step_100": 1.5027
57
+ },
58
+ "wandb_run": "https://wandb.ai/developer_lunark-lunark-ai/kaidol-llm-finetuning/runs/brryct5m",
59
+ "notes": "Baseline test with 1K samples. Stable convergence observed. Ready for hyperparameter optimization (LR 2e-4→1e-4, alpha 16→32, grad_accum 4→8)."
60
+ },
61
+ "upload_date": "2025-11-18T09:24:35.457118"
62
+ }
vocab.json ADDED
The diff for this file is too large to render. See raw diff