jwg0830 commited on
Commit
4e0dec2
·
verified ·
1 Parent(s): 9672715

Upload folder using huggingface_hub

Browse files
README.md ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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_21 (동전)
14
+
15
+ `skt/A.X-3.1-Light`를 기반으로, sft_v0_2와 **동일한 학습 데이터**(AI Hub 71857/71874/71610/
16
+ 569/71949, 5,801 examples)를 사용하되 **정답 출력 형식만 "정답 우선 + 근거 한 문장 이내"로
17
+ 교정**해 LoRA 파인튜닝 후 병합한 모델입니다.
18
+
19
+ - **베이스 모델**: `skt/A.X-3.1-Light`
20
+ - **AI Hub 데이터 활용**: 예 (sft_v0_2와 동일)
21
+ - `71857` 국어 교과 지문형 문제 데이터 (CLIcK 축)
22
+ - `71874` 전문 의학지식 데이터 (KMMLU 축)
23
+ - `71610` 금융, 법률 문서 기계독해 데이터 (HLE 축)
24
+ - `569` 행정 문서 대상 기계독해 데이터 (MuSR 축)
25
+ - `71949` 인과관계 기반 추론 데이터(업사이클링) (Com2-main 축)
26
+ - **주요 학습 방법**: sft_v0_2를 실제 K-AI 리더보드에 제출한 결과 CLIcK 축만 유의미하게
27
+ 하락(-0.166)한 원인을 분석한 결과, "정답을 설명 뒤에 붙이는" 출력 습관이 근본 원인으로
28
+ 확인됨(토큰 예산과 무관하게 고정된 습관, 프롬프트 지시만으로는 교정 불가). 이를 근거로
29
+ 학습 데이터의 target을 `"<해설>\n정답: X"` → `"정답: X (근거: 한 문장 이내)"`로 재작성하고,
30
+ LoRA SFT 재학습(r=16, alpha=32, **lr 5e-5, 1 epoch**, sft_v0_2 대비 더 보수적인 학습 강도).
31
+ - **모델의 목적**: 출력 형식(정답 우선 순서) 교정을 통한 5개 벤치마크 축 전반의 안정성 개선.
32
+ 콘텐츠(지식/추론) 자체는 sft_v0_2와 학습 데이터가 동일하므로 변경하지 않음.
33
+ - **구조 변경**: 없음 (LoRA adapter를 base model에 병합한 표준 A.X-3.1-Light 아키텍처, 별도
34
+ custom code 없음)
35
+
36
+ ## 로컬 공개 벤치마크 결과 (참고용, K-AI 공식 점수 아님)
37
+
38
+ KMMLU-Pro / CLIcK / HLE / SNU Ko-MuSR / Com2-main / Original MuSR 원본 공개 데이터셋 총
39
+ 11,323문항 기준, base 대비 (Parsed accuracy):
40
+
41
+ | Benchmark | Base | sft_v0_2 | **sft_v0_21(본 모델)** |
42
+ |---|---:|---:|---:|
43
+ | KMMLU-Pro | 40.40% | 28.10% | **40.89%** |
44
+ | CLIcK | 65.61% | 38.45% | **64.31%** |
45
+ | HLE | 4.41% | 2.78% | 4.25% |
46
+ | SNU Ko-MuSR | 49.47% | 27.20% | **58.13%** |
47
+ | Com2-main | 50.72% | 42.04% | **51.52%** |
48
+ | Original MuSR(참고) | 55.29% | 35.71% | **56.61%** |
49
+ | **전체 평균** | **41.84%** | **28.76%** | **42.54%** |
50
+
51
+ 형식(strict) 오류율은 sft_v0_2에서 축별 12~93%였던 것이 본 모델에서는 전 축 0~0.3%로
52
+ 사실상 해소됨.
53
+
54
+ > sft_v0_2는 K-AI 리더보드에 이미 실제 제출되어 CLIcK 축(-0.166)만 유의미하게 하락한
55
+ > 것으로 확인된 바 있고(base 공식 평균 0.423 → sft_v0_2 0.398), 본 모델은 그 원인을
56
+ > 진단해 교정한 후속 버전임. HF 리포지토리명 및 파일 구조는 `AX-3.1-Light-sft_answer_first_v1`
57
+ > 실험명을 유지하되, 제출용 버전 표기는 `v0.2.1-answer-first`(sft_v0_21)를 사용함.
58
+
59
+ ## 사용 데이터셋 명시
60
+
61
+ AI Hub: 71857/71874/71610/569/71949의 validation label 중 최종 proxy 벤치마크로 표본 추출되지
62
+ 않은 문서-안전(document-safe) 잔여분만 학습에 사용함 (sft_v0_2와 동일 데이터, 출력 형식만 재작성).
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_answer_first_v1_AX-3.1-Light"
5
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ebf64305ae2d605a8f1152c1d064b85b0844da0e1820a2232af55b9a78615f68
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
+ }