jwg0830 commited on
Commit
1b41e37
·
verified ·
1 Parent(s): 3694a5c

AX-3.1-Light + format SFT v0.2, 5-axis (K-DS 동전팀)

Browse files
README.md ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: skt/A.X-3.1-Light
3
+ library_name: transformers
4
+ language:
5
+ - ko
6
+ license: other
7
+ tags:
8
+ - lora-merged
9
+ - korean
10
+ - k-ai-leaderboard
11
+ ---
12
+
13
+ # AX-3.1-Light-sft_v0_2 (동전)
14
+
15
+ skt/A.X-3.1-Light를 기반으로, AI Hub 한국어 데이터를 활용해 K-AI 리더보드 5개 벤치마크
16
+ (KMMLU-Pro / CLIcK / HLE(Ko) / MuSR(Ko) / Com2-main(Ko)) 전체 대응 proxy benchmark에서 진단한
17
+ 출력 형식 결손을 교정하기 위해 LoRA 파인튜닝 후 병합한 모델입니다. EXAONE-Deep-7.8B-sft_v0_2와
18
+ 동일한 학습 데이터(`format_sft_v0_2.jsonl`)를 사용했습니다.
19
+
20
+ - **베이스 모델**: `skt/A.X-3.1-Light`
21
+ - **AI Hub 데이터 활용**: 예
22
+ - `71857` 국어 교과 지문형 문제 데이터 (CLIcK 축)
23
+ - `71874` 전문 의학지식 데이터 (KMMLU 축)
24
+ - `71610` 금융, 법률 문서 기계독해 데이터 (HLE 축)
25
+ - `569` 행정 문서 대상 기계독해 데이터 (MuSR 축)
26
+ - `71949` 인과관계 기반 추론 데이터(업사이클링) (Com2-main 축)
27
+ - **주요 학습 방법**: proxy benchmark 5축 1,350문항 기반 실패 진단(A/B1/B2/C_evidence/C2 5단계
28
+ probe) 결과를 반영한 LoRA SFT (r=16, alpha=32, 2 epoch, 5,801 examples)
29
+ - **모델의 목적**: 5개 벤치마크 축 전반의 출력 형식 안정화. A.X는 베이스 상태에서 이미 콘텐츠
30
+ 정확도가 높아, 이번 학습은 콘텐츠 보강보다 strict 출력 형식 준수율 개선에 초점을 둠.
31
+ - **구조 변경**: 없음 (LoRA adapter를 base model에 병합한 표준 A.X-3.1-Light 아키텍처, 별도
32
+ custom code 없음 — vLLM에서 옵션 없이 바로 로드 검증 완료)
33
+
34
+ ## 자체 Proxy 벤치마크 결과 (참고용, K-AI 공식 점수 아님)
35
+
36
+ 5축 1,350문항 (KMMLU-Lite 300 / CLIcK-Lite 300 / HLE-Lite 200 / MuSR-Lite 300 /
37
+ Com2-main-Lite 250) 기준, 베이스 대비:
38
+
39
+ | Axis | Base 안정정답 | sft_v0_2 안정정답 |
40
+ |---|---:|---:|
41
+ | KMMLU-Lite | 213/300 | 223/300 |
42
+ | CLIcK-Lite | 275/300 | 274/300 |
43
+ | HLE-Lite | 185/200 | 190/200 |
44
+ | MuSR-Lite | 278/300 | 288/300 |
45
+ | Com2-main-Lite | 227/250 | 246/250 |
46
+ | **합계** | **1,178/1,350 (87.3%)** | **1,221/1,350 (90.4%)** |
47
+
48
+ > A.X는 베이스 단계에서 이미 대부분 축에서 90% 내외로 강했기 때문에, EXAONE(형식결손이 컸던
49
+ > 모델) 대비 개선폭은 작지만 5축 전 구간에서 일관되게 향상됨.
50
+ >
51
+ > 참고: Com2-main-Lite 축의 자체 proxy 문항은 정답 외 3개 오답 선택지를 같은 추론 유형 내 다른
52
+ > 문항의 정답 텍스트를 교차 샘플링해 합성한 것으로(원본 AI Hub 벤치마크의 실제 선택지는 이미지
53
+ > 기반), 네이티브 4지선다가 아닙니다. 절대 정확도 수치는 참고용으로만 해석할 것.
54
+
55
+ ## 사용 데이터셋 명시
56
+
57
+ AI Hub: 71857/71874/71610/569/71949의 validation label 중 최종 proxy 벤치마크로 표본 추출되지
58
+ 않은 문서-안전(document-safe) 잔여분만 학습에 사용함.
chat_template.jinja ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools is iterable and tools | length > 0 %}
2
+ {{- '<|im_start|><|system|>'}}
3
+ {{- '당신은 도구 호출 기능을 갖춘 유용한 도우미입니다. 사용자의 요청을 처리하기 위해서 필요한 도구가 주어진 목록에 있는 경우 도구 호출로 응답하세요.
4
+ 필요한 도구가 목록에 없는 경우에는 도구 호출 없이 사용자가 요구한 정보를 제공하세요.
5
+ 필요한 도구가 목록에 있지만 해당 도구를 호출하는데 필요한 argument 정보가 부족한 경우 해당 정보를 사용자에게 요청하세요.
6
+ 사용자의 요청을 처리하기 위해 여러번 도구를 호출할 수 있어야 합니다.
7
+ 도구 호출 이후 도구 실행 결과를 입력으로 받으면 해당 결과를 활용하여 답변을 생성하세요.
8
+
9
+ 다음은 접근할 수 있는 도구들의 목록 입니다:
10
+ <tools>
11
+ '}}
12
+ {%- for t in tools %}
13
+ {{- t | tojson }}
14
+ {{- '
15
+ ' }}
16
+ {%- endfor %}
17
+ {{- '</tools>' }}
18
+ {{- '
19
+
20
+ 도구를 호출하려면 아래의 JSON으로 응답하세요.
21
+ 도구 호출 형식: <tool_call>{"name": 도구 이름, "arguments": dictionary 형태의 도구 인자값}</tool_call>' }}
22
+ {{- '<|im_end|>' }}
23
+ {%- endif %}
24
+
25
+ {%- for message in messages %}
26
+ {%- if message.role == 'system' %}
27
+ {{- '<|im_start|><|system|>' + message.content + '<|im_end|>'}}
28
+ {%- elif message.role == 'user' %}
29
+ {{- '<|im_start|><|user|>' + message.content + '<|im_end|>'}}
30
+ {%- elif message.role == 'assistant' %}
31
+ {{- '<|im_start|><|assistant|>'}}
32
+ {%- set content = '' %}
33
+ {%- if message.content is defined %}
34
+ {%- set content = message.content %}
35
+ {%- endif %}
36
+
37
+ {%- if add_generation_prompt and not (message.reasoning_content is defined and message.reasoning_content is not none) %}
38
+ {%- if '</think>' in message.content %}
39
+ {%- set content = message.content.split('</think>'.strip())[-1].lstrip('\n') %}
40
+ {%- endif %}
41
+ {%- endif %}
42
+
43
+ {{- content}}
44
+ {%- if message.tool_calls is defined %}
45
+ {%- for tool_call in message.tool_calls %}
46
+ {%- if tool_call.function is defined %}
47
+ {%- set tool_call = tool_call.function %}
48
+ {%- endif %}
49
+ {{- '<tool_call>' }}
50
+ {{- '{' }}
51
+ {{- '"name": "' }}
52
+ {{- tool_call.name }}
53
+ {{- '"' }}
54
+ {%- if tool_call.arguments is defined %}
55
+ {{- ', ' }}
56
+ {{- '"arguments": ' }}
57
+ {{- tool_call.arguments|tojson }}
58
+ {%- endif %}
59
+ {{- '}' }}
60
+ {{- '</tool_call>' }}
61
+ {%- endfor %}
62
+ {%- endif %}
63
+ {{- '<|im_end|>'}}
64
+
65
+ {%- elif message.role == 'tool' %}
66
+ {{- '<|im_start|><|extra_id_13|><tool_output>' + message.content + '</tool_output><|im_end|>'}}
67
+ {%- endif %}
68
+ {%- endfor %}
69
+
70
+ {%- if add_generation_prompt %}
71
+ {{- '<|im_start|><|assistant|>' }}
72
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "LlamaForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.1,
7
+ "bos_token_id": 0,
8
+ "dtype": "bfloat16",
9
+ "eos_token_id": 0,
10
+ "head_dim": 128,
11
+ "hidden_act": "silu",
12
+ "hidden_size": 4096,
13
+ "initializer_range": 0.02,
14
+ "intermediate_size": 10880,
15
+ "max_position_embeddings": 32768,
16
+ "mlp_bias": false,
17
+ "model_type": "llama",
18
+ "num_attention_heads": 32,
19
+ "num_hidden_layers": 32,
20
+ "num_key_value_heads": 32,
21
+ "pad_token_id": null,
22
+ "pretraining_tp": 1,
23
+ "rms_norm_eps": 1e-05,
24
+ "rope_parameters": {
25
+ "rope_theta": 500000,
26
+ "rope_type": "default"
27
+ },
28
+ "tie_word_embeddings": false,
29
+ "transformers_version": "5.15.0",
30
+ "use_cache": false,
31
+ "vocab_size": 102400
32
+ }
generation_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 0,
3
+ "eos_token_id": 27,
4
+ "max_new_tokens": 32768,
5
+ "pad_token_id": 1,
6
+ "transformers_version": "5.15.0"
7
+ }
kds_merge_info.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "base_model": "AX-3.1-Light",
3
+ "base_model_path": "/home/youngseok3/.cache/huggingface/hub/models--skt--A.X-3.1-Light/snapshots/9b41bb2406472634d8812c0b8931fa40fa9a6c3a",
4
+ "adapter_path": "/home/youngseok3/KDS/checkpoints/sft_v0_2_AX-3.1-Light"
5
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45b0ff9fdfd87599143e5fcfc1fec80d73a8fb2e3c283cea5ca344fb3599de53
3
+ size 14529635608
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": "<|endoftext|>",
5
+ "clean_up_tokenization_spaces": true,
6
+ "cls_token": "<|cls|>",
7
+ "eod_token": "<|endoftext|>",
8
+ "eos_token": "<|im_end|>",
9
+ "errors": "replace",
10
+ "is_local": true,
11
+ "local_files_only": true,
12
+ "mask_token": "<|mask|>",
13
+ "max_length": 7680,
14
+ "model_max_length": 32768,
15
+ "model_specific_special_tokens": {
16
+ "eod_token": "<|endoftext|>"
17
+ },
18
+ "pad_token": "<|pad|>",
19
+ "sep_token": "<|sep|>",
20
+ "tokenizer_class": "GPT2Tokenizer",
21
+ "unk_token": "<|unk|>",
22
+ "vocab_size": 102400
23
+ }