NotoriousH2 commited on
Commit
9feb775
·
verified ·
1 Parent(s): 87997a5

Publish v2 training results

Browse files
README.md CHANGED
@@ -18,7 +18,7 @@ tags:
18
 
19
  이 모델은 Countdown 문제의 결정적 보상을 사용하여 Qwen3-4B를 GRPO로 학습한 병합 모델입니다.
20
  숫자 4개를 각각 한 번 사용하고, 사칙연산으로 목표값을 만드는 수식을 생성합니다.
21
- 학습 데이터는 `NotoriousH2/countdown-rlvr` revision `de9ee3df68c2606ff8000a6714366f9e2d9d1a10`를 사용했습니다.
22
 
23
  ## 1. 사용
24
 
@@ -32,6 +32,10 @@ model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
32
 
33
  LoRA 파일과 토크나이저는 `adapter/`에 있습니다.
34
  학습 설정은 `training_config.json`, 전체 학습 기록은 `history.json`에서 확인할 수 있습니다.
 
 
 
 
35
 
36
  ## 2. 평가
37
 
@@ -39,8 +43,8 @@ Base와 RLVR 모델을 같은 test 분할과 생성 설정으로 평가했습니
39
 
40
  | 모델 | pass@1 | pass@8 | 유효 수식 비율 | 평균 응답 토큰 |
41
  |---|---:|---:|---:|---:|
42
- | Base | 7.8% | 29.7% | 6.3% | 974.4 |
43
- | RLVR | 14.1% | 54.7% | 14.6% | 967.4 |
44
 
45
  문제별 응답과 점수는 `evaluation.json`에 있습니다.
46
 
 
18
 
19
  이 모델은 Countdown 문제의 결정적 보상을 사용하여 Qwen3-4B를 GRPO로 학습한 병합 모델입니다.
20
  숫자 4개를 각각 한 번 사용하고, 사칙연산으로 목표값을 만드는 수식을 생성합니다.
21
+ 학습 데이터는 `NotoriousH2/countdown-rlvr`를 사용했습니다.
22
 
23
  ## 1. 사용
24
 
 
32
 
33
  LoRA 파일과 토크나이저는 `adapter/`에 있습니다.
34
  학습 설정은 `training_config.json`, 전체 학습 기록은 `history.json`에서 확인할 수 있습니다.
35
+ 구간별 completion 길이와 체크포인트 재개 지점은 `training_provenance.json`에 있습니다.
36
+
37
+ 검증 분할의 후보별 지표와 공개 체크포인트 선택 결과는 `checkpoint_selection.json`에 있습니다.
38
+
39
 
40
  ## 2. 평가
41
 
 
43
 
44
  | 모델 | pass@1 | pass@8 | 유효 수식 비율 | 평균 응답 토큰 |
45
  |---|---:|---:|---:|---:|
46
+ | Base | 24.2% | 70.3% | 23.9% | 1676.2 |
47
+ | RLVR | 50.8% | 91.4% | 51.8% | 1700.2 |
48
 
49
  문제별 응답과 점수는 `evaluation.json`에 있습니다.
50
 
adapter/adapter_config.json CHANGED
@@ -31,12 +31,12 @@
31
  "rank_pattern": {},
32
  "revision": null,
33
  "target_modules": [
34
- "up_proj",
35
- "q_proj",
36
  "gate_proj",
37
- "v_proj",
38
  "o_proj",
39
  "down_proj",
 
 
40
  "k_proj"
41
  ],
42
  "target_parameters": null,
 
31
  "rank_pattern": {},
32
  "revision": null,
33
  "target_modules": [
 
 
34
  "gate_proj",
35
+ "up_proj",
36
  "o_proj",
37
  "down_proj",
38
+ "q_proj",
39
+ "v_proj",
40
  "k_proj"
41
  ],
42
  "target_parameters": null,
adapter/adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0cdbf678fc24096066564f2bd6bba0b4b15ba78bc97e1fcfef69a1731d75136d
3
  size 132187888
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9335913eef55f0b769962c8e9ca96d1df1d98aeab3126aaed3bf773a7b8c9c99
3
  size 132187888
adapter/training_args.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:c351294dc1999a8e4eb150bd5c139f42a254c1ebf4cf7ac4be7dadb4d94d55ef
3
  size 7697
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:db2fa40b501c6ae645899142e105591000dfbd7a6c88f33caa64e3be715dec4c
3
  size 7697
checkpoint_selection.json ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "validation_path": "data/countdown/validation.jsonl",
4
+ "validation_samples": 64,
5
+ "completions_per_problem": 8,
6
+ "decoding": {
7
+ "max_tokens": 3072,
8
+ "temperature": 0.6,
9
+ "top_p": 0.95,
10
+ "top_k": 20,
11
+ "seed": 42
12
+ },
13
+ "candidates": [
14
+ {
15
+ "label": "checkpoint-360",
16
+ "pass_at_1": 0.5625,
17
+ "pass_at_8": 0.875,
18
+ "valid_expression_rate": 0.5234375,
19
+ "truncated_completion_rate": 0.166015625,
20
+ "mean_response_tokens": 1584.228515625
21
+ },
22
+ {
23
+ "label": "step-480",
24
+ "pass_at_1": 0.453125,
25
+ "pass_at_8": 0.953125,
26
+ "valid_expression_rate": 0.529296875,
27
+ "truncated_completion_rate": 0.185546875,
28
+ "mean_response_tokens": 1569.1875
29
+ }
30
+ ],
31
+ "selection_criterion": [
32
+ "pass_at_1",
33
+ "pass_at_8",
34
+ "lower_truncated_completion_rate"
35
+ ],
36
+ "selected": {
37
+ "label": "checkpoint-360",
38
+ "step": 360,
39
+ "canonical_adapter": "adapter",
40
+ "canonical_merged_model": "merged"
41
+ },
42
+ "backup": {
43
+ "label": "step-480",
44
+ "local_path": "candidates/step-480"
45
+ }
46
+ }
config.json CHANGED
@@ -4,7 +4,7 @@
4
  ],
5
  "attention_bias": false,
6
  "attention_dropout": 0.0,
7
- "bos_token_id": null,
8
  "dtype": "bfloat16",
9
  "eos_token_id": 151645,
10
  "head_dim": 128,
@@ -56,7 +56,7 @@
56
  "num_attention_heads": 32,
57
  "num_hidden_layers": 36,
58
  "num_key_value_heads": 8,
59
- "pad_token_id": 151643,
60
  "rms_norm_eps": 1e-06,
61
  "rope_parameters": {
62
  "rope_theta": 1000000,
@@ -65,7 +65,7 @@
65
  "sliding_window": null,
66
  "tie_word_embeddings": true,
67
  "transformers_version": "5.14.1",
68
- "use_cache": false,
69
  "use_sliding_window": false,
70
  "vocab_size": 151936
71
  }
 
4
  ],
5
  "attention_bias": false,
6
  "attention_dropout": 0.0,
7
+ "bos_token_id": 151643,
8
  "dtype": "bfloat16",
9
  "eos_token_id": 151645,
10
  "head_dim": 128,
 
56
  "num_attention_heads": 32,
57
  "num_hidden_layers": 36,
58
  "num_key_value_heads": 8,
59
+ "pad_token_id": null,
60
  "rms_norm_eps": 1e-06,
61
  "rope_parameters": {
62
  "rope_theta": 1000000,
 
65
  "sliding_window": null,
66
  "tie_word_embeddings": true,
67
  "transformers_version": "5.14.1",
68
+ "use_cache": true,
69
  "use_sliding_window": false,
70
  "vocab_size": 151936
71
  }
evaluation.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:fdd11b2ff8ece98402d171cc0bf1a165c06b4e1062600fa1e90a3b79fbae4320
3
- size 14030557
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:476843ae50f7acfa87159ff8507ca6d608b333165d1cc494afbca75e18d17884
3
+ size 21912685
generation_config.json CHANGED
@@ -1,4 +1,5 @@
1
  {
 
2
  "do_sample": true,
3
  "eos_token_id": [
4
  151645,
 
1
  {
2
+ "bos_token_id": 151643,
3
  "do_sample": true,
4
  "eos_token_id": [
5
  151645,
history.json CHANGED
The diff for this file is too large to render. See raw diff
 
metrics.json CHANGED
@@ -3,19 +3,19 @@
3
  "models": [
4
  {
5
  "model": "Base",
6
- "pass@1": 0.078125,
7
- "pass@8": 0.296875,
8
- "valid_expression_rate": 0.06298828125,
9
- "valid_expression_diversity": 0.37109375,
10
- "mean_response_tokens": 974.3505859375
11
  },
12
  {
13
  "model": "RLVR",
14
- "pass@1": 0.140625,
15
- "pass@8": 0.546875,
16
- "valid_expression_rate": 0.146484375,
17
- "valid_expression_diversity": 0.765625,
18
- "mean_response_tokens": 967.43408203125
19
  }
20
  ]
21
  }
 
3
  "models": [
4
  {
5
  "model": "Base",
6
+ "pass@1": 0.2421875,
7
+ "pass@8": 0.703125,
8
+ "valid_expression_rate": 0.23876953125,
9
+ "valid_expression_diversity": 1.0859375,
10
+ "mean_response_tokens": 1676.1796875
11
  },
12
  {
13
  "model": "RLVR",
14
+ "pass@1": 0.5078125,
15
+ "pass@8": 0.9140625,
16
+ "valid_expression_rate": 0.517578125,
17
+ "valid_expression_diversity": 1.87890625,
18
+ "mean_response_tokens": 1700.2041015625
19
  }
20
  ]
21
  }
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:7601affb485bc6a58102de35556bfcb9d74d20355026639b592a2c3490f9808f
3
  size 8044982080
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0dfb777d6c991e2fae8fd86cc6ee31dc9fe3e2deb4b80d43911d753cb0a0627
3
  size 8044982080
tokenizer_config.json CHANGED
@@ -20,8 +20,8 @@
20
  "<|image_pad|>",
21
  "<|video_pad|>"
22
  ],
23
- "is_local": false,
24
- "local_files_only": false,
25
  "model_max_length": 131072,
26
  "pad_token": "<|endoftext|>",
27
  "split_special_tokens": false,
 
20
  "<|image_pad|>",
21
  "<|video_pad|>"
22
  ],
23
+ "is_local": true,
24
+ "local_files_only": true,
25
  "model_max_length": 131072,
26
  "pad_token": "<|endoftext|>",
27
  "split_special_tokens": false,
training_config.json CHANGED
@@ -1,9 +1,9 @@
1
  {
2
- "output_dir": "artifacts/countdown_rlvr/checkpoints",
3
  "per_device_train_batch_size": 2,
4
  "num_train_epochs": 1,
5
- "max_steps": 120,
6
- "learning_rate": 1e-05,
7
  "lr_scheduler_type": "cosine",
8
  "lr_scheduler_kwargs": null,
9
  "warmup_steps": 0.05,
@@ -63,10 +63,10 @@
63
  "include_for_metrics": [],
64
  "batch_eval_metrics": false,
65
  "save_only_model": false,
66
- "save_strategy": "no",
67
- "save_steps": 500,
68
  "save_on_each_node": false,
69
- "save_total_limit": null,
70
  "enable_jit_checkpoint": false,
71
  "push_to_hub": false,
72
  "hub_token": "<HUB_TOKEN>",
@@ -129,15 +129,15 @@
129
  "cast_lm_head_to_fp32": false,
130
  "num_generations": 8,
131
  "num_generations_eval": null,
132
- "max_completion_length": 1024,
133
  "ds3_gather_for_generation": true,
134
  "shuffle_dataset": true,
135
  "pad_to_multiple_of": null,
136
  "generation_batch_size": 8,
137
  "steps_per_generation": 4,
138
- "temperature": 1.0,
139
- "top_p": 1.0,
140
- "top_k": 0,
141
  "min_p": null,
142
  "generation_kwargs": null,
143
  "chat_template_kwargs": {
@@ -158,7 +158,7 @@
158
  "vllm_gpu_memory_utilization": 0.3,
159
  "vllm_max_model_length": null,
160
  "vllm_tensor_parallel_size": 1,
161
- "beta": 0.04,
162
  "num_iterations": 1,
163
  "epsilon": 0.2,
164
  "delta": null,
@@ -171,14 +171,14 @@
171
  "vespo_lambda_neg": 2.0,
172
  "importance_sampling_level": "token",
173
  "reward_weights": [
174
- 0.2,
175
  0.3,
 
176
  0.5
177
  ],
178
  "multi_objective_aggregation": "sum_then_normalize",
179
  "scale_rewards": "group",
180
  "loss_type": "grpo",
181
- "mask_truncated_completions": false,
182
  "sync_ref_model": false,
183
  "ref_model_mixup_alpha": 0.6,
184
  "ref_model_sync_steps": 512,
 
1
  {
2
+ "output_dir": "artifacts/countdown_rlvr_v2/checkpoints",
3
  "per_device_train_batch_size": 2,
4
  "num_train_epochs": 1,
5
+ "max_steps": 480,
6
+ "learning_rate": 5e-06,
7
  "lr_scheduler_type": "cosine",
8
  "lr_scheduler_kwargs": null,
9
  "warmup_steps": 0.05,
 
63
  "include_for_metrics": [],
64
  "batch_eval_metrics": false,
65
  "save_only_model": false,
66
+ "save_strategy": "steps",
67
+ "save_steps": 120,
68
  "save_on_each_node": false,
69
+ "save_total_limit": 4,
70
  "enable_jit_checkpoint": false,
71
  "push_to_hub": false,
72
  "hub_token": "<HUB_TOKEN>",
 
129
  "cast_lm_head_to_fp32": false,
130
  "num_generations": 8,
131
  "num_generations_eval": null,
132
+ "max_completion_length": 3072,
133
  "ds3_gather_for_generation": true,
134
  "shuffle_dataset": true,
135
  "pad_to_multiple_of": null,
136
  "generation_batch_size": 8,
137
  "steps_per_generation": 4,
138
+ "temperature": 0.6,
139
+ "top_p": 0.95,
140
+ "top_k": 20,
141
  "min_p": null,
142
  "generation_kwargs": null,
143
  "chat_template_kwargs": {
 
158
  "vllm_gpu_memory_utilization": 0.3,
159
  "vllm_max_model_length": null,
160
  "vllm_tensor_parallel_size": 1,
161
+ "beta": 0.001,
162
  "num_iterations": 1,
163
  "epsilon": 0.2,
164
  "delta": null,
 
171
  "vespo_lambda_neg": 2.0,
172
  "importance_sampling_level": "token",
173
  "reward_weights": [
 
174
  0.3,
175
+ 0.2,
176
  0.5
177
  ],
178
  "multi_objective_aggregation": "sum_then_normalize",
179
  "scale_rewards": "group",
180
  "loss_type": "grpo",
181
+ "mask_truncated_completions": true,
182
  "sync_ref_model": false,
183
  "ref_model_mixup_alpha": 0.6,
184
  "ref_model_sync_steps": 512,
training_provenance.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "task": "countdown_rlvr",
4
+ "phases": [
5
+ {
6
+ "phase": "초기 구간",
7
+ "start_step": 1,
8
+ "end_step": 120,
9
+ "max_completion_length": 2048
10
+ },
11
+ {
12
+ "phase": "재개 구간",
13
+ "start_step": 121,
14
+ "end_step": 480,
15
+ "first_logged_step": 125,
16
+ "max_completion_length": 3072,
17
+ "resume_from_checkpoint": "checkpoints/checkpoint-120"
18
+ }
19
+ ],
20
+ "logging_steps": 5,
21
+ "selected_checkpoint": {
22
+ "step": 360,
23
+ "criterion": "validation pass@1",
24
+ "canonical_adapter": "adapter",
25
+ "canonical_merged_model": "merged",
26
+ "step_480_backup": "candidates/step-480"
27
+ }
28
+ }