tuanhqv123 commited on
Commit
ff9112f
·
verified ·
1 Parent(s): 6bdeb6f

Fine-tune tiếp (max_input=4096, lr=5e-6, giữ #PersonN#)

Browse files
README.md CHANGED
@@ -24,16 +24,13 @@ model-index:
24
  metrics:
25
  - type: rouge
26
  name: ROUGE-1
27
- value: 0.4632
28
  - type: rouge
29
  name: ROUGE-2
30
- value: 0.2446
31
  - type: rouge
32
  name: ROUGE-L
33
- value: 0.3970
34
- - type: bertscore
35
- name: BERTScore-F1
36
- value: 0.8573
37
  ---
38
 
39
  # LongT5 — Meeting Summarization
@@ -76,30 +73,38 @@ hf download tuanhqv123/longt5-meeting-summarization --local-dir ./best_model
76
 
77
  ## Evaluation
78
 
79
- Held-out **test** set (342 examples):
80
 
81
- | Metric | Score |
82
- |--------------|--------|
83
- | ROUGE-1 | 0.4632 |
84
- | ROUGE-2 | 0.2446 |
85
- | ROUGE-L | 0.3970 |
86
- | BERTScore-F1 | 0.8573 |
87
- | Test loss | 2.8342 |
88
 
89
- This checkpoint replaces a previous production model and **improves on every metric**:
90
 
91
- | Metric | Previous | **This model** |
92
- |--------------|----------|----------------|
93
- | ROUGE-1 | 0.4645 | **0.4687** |
94
- | ROUGE-2 | 0.2454 | **0.2500** |
95
- | ROUGE-L | 0.3991 | **0.4032** |
96
- | BERTScore-F1 | 0.8567 | **0.8573** |
97
 
98
- <sub>(comparison run on the same evaluation set with identical generation settings)</sub>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
 
100
  ## Training
101
 
102
- **Data:** [`tuanhqv123/meeting-summarization`](https://huggingface.co/datasets/tuanhqv123/meeting-summarization) (DialogSum + MeetingBank).
103
 
104
  | Setting | Value |
105
  |----------------------|--------------------------------|
@@ -112,10 +117,44 @@ This checkpoint replaces a previous production model and **improves on every met
112
  | Label smoothing | 0.1 |
113
  | Precision | BF16 |
114
  | Max input / output | 16,384 / 512 tokens |
115
- | Data split | 3,757 train / 427 val / 342 test |
116
  | Hardware | 1× NVIDIA RTX 4090 |
117
  | Training time | ~3.7 h |
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  ### Validation ROUGE per epoch
120
 
121
  | Epoch | ROUGE-1 | ROUGE-2 | ROUGE-L |
 
24
  metrics:
25
  - type: rouge
26
  name: ROUGE-1
27
+ value: 0.5036
28
  - type: rouge
29
  name: ROUGE-2
30
+ value: 0.3323
31
  - type: rouge
32
  name: ROUGE-L
33
+ value: 0.4580
 
 
 
34
  ---
35
 
36
  # LongT5 — Meeting Summarization
 
73
 
74
  ## Evaluation
75
 
76
+ Held-out **test** set, current dataset revision (478 examples), beam=4, ROUGE with stemming, `#PersonN#` tags normalized in post-processing:
77
 
78
+ | Metric | Score |
79
+ |---------|--------|
80
+ | ROUGE-1 | 0.5036 |
81
+ | ROUGE-2 | 0.3323 |
82
+ | ROUGE-L | 0.4580 |
 
 
83
 
84
+ ### Per-source breakdown
85
 
86
+ The two halves of the corpus behave very differently — reported separately for honesty:
 
 
 
 
 
87
 
88
+ | Source | ROUGE-1 | ROUGE-2 | ROUGE-L |
89
+ |-------------|---------|---------|---------|
90
+ | MeetingBank | 0.6048 | 0.5135 | **0.5895** |
91
+ | DialogSum | 0.4017 | 0.1515 | 0.3264 |
92
+
93
+ - **MeetingBank** drives the headline score (long council transcripts → short administrative summaries).
94
+ - **DialogSum** plateaus around ROUGE-L ≈ 0.33 — and the base checkpoint, the merged fine-tune, and a DialogSum-only fine-tune all land within ±0.006 of each other, so this is a **capacity ceiling of `tglobal-base` on conversational reasoning**, not a data or training-recipe issue. See `REPORT.md` §9–10 in the training repo.
95
+
96
+ ### vs. base checkpoint (same 478-example test)
97
+
98
+ | Metric | base `./model` | **this fine-tune** |
99
+ |---------|----------------|--------------------|
100
+ | MeetingBank ROUGE-L | 0.528 | **0.590** |
101
+ | DialogSum ROUGE-L | 0.332 | 0.326 |
102
+
103
+ Fine-tuning improves MeetingBank by ~0.06 ROUGE-L while leaving DialogSum essentially unchanged.
104
 
105
  ## Training
106
 
107
+ **Data:** [`tuanhqv123/meeting-summarization`](https://huggingface.co/datasets/tuanhqv123/meeting-summarization) — a 50/50 hybrid of **DialogSum** (short 2-person chats) and **MeetingBank** (long municipal-council transcripts). Current dataset card: **5,896 train / 594 val / 478 test** (6,968 total, balanced 3,484 / 3,484 per source).
108
 
109
  | Setting | Value |
110
  |----------------------|--------------------------------|
 
117
  | Label smoothing | 0.1 |
118
  | Precision | BF16 |
119
  | Max input / output | 16,384 / 512 tokens |
 
120
  | Hardware | 1× NVIDIA RTX 4090 |
121
  | Training time | ~3.7 h |
122
 
123
+ ### Data analysis (measured on the current dataset card)
124
+
125
+ All numbers below are measured directly with this model's own tokenizer, not estimated.
126
+
127
+ **The two sources have wildly different lengths** — they are not one homogeneous corpus:
128
+
129
+ | Source | n | input tok (p50) | input tok (p99) | input tok (max) | output tok (p95) |
130
+ |--------|---|-----------------|-----------------|-----------------|------------------|
131
+ | DialogSum | 3,484 | 204 | 600 | 1,494 | 73 |
132
+ | MeetingBank | 3,484 | 1,304 | 33,742 | 84,354 | 201 |
133
+
134
+ **Where does the summary's information live in the transcript?** (answer-coverage on 400 MeetingBank samples — the position, in tokens, of the latest summary content-word found in the input):
135
+
136
+ | Truncate input at | % of summary content retained | % of meetings losing >20% |
137
+ |-------------------|-------------------------------|---------------------------|
138
+ | 2,048 | 95.8% | 7% |
139
+ | **4,096** | **97.9%** | **4%** |
140
+ | 8,192 | 99.2% | 2% |
141
+ | 16,384 | 99.8% | 0% |
142
+
143
+ - Summary content concentrates early: the latest-referenced token sits at **p50 = 402, p75 = 1,853** — MeetingBank, like most minutes, front-loads its recommendation/decision.
144
+ - **27.7%** of summary content-words never appear in the input at all (the targets are genuinely abstractive paraphrase, e.g. `"Recommendation to…"`), so 100% extractive coverage is impossible by construction.
145
+ - **Conclusion:** `max_input = 4096` is the right operating point — going to 16,384 buys only +1.9% coverage for 4× the compute. Long samples are **truncated, not dropped**, so all 6,967 training examples are retained.
146
+
147
+ ### Preprocessing (deep clean)
148
+
149
+ Pipeline keeps **100%** of usable rows (6,968 → 6,967; only 1 exact duplicate removed). Per-step before/after counts are reproduced by [`deep_preprocess.py`](deep_preprocess.py):
150
+
151
+ - `html.unescape` + NFKC normalization, strip `{…}` annotations.
152
+ - Normalize unicode quotes/dashes → ASCII (557 outputs touched).
153
+ - **`#PersonN#` speaker tags are kept verbatim** to stay aligned with the original model's target format.
154
+ - Remove disfluencies on the input side only (5,174 inputs touched — mostly MeetingBank fillers).
155
+ - Filters: input ≥ 20 words, output 5–400 words, dedup on (input, output).
156
+ - Non-English content characters (`ñ`, `é`, `•`, …) are preserved where they are real proper nouns (only 15 remain).
157
+
158
  ### Validation ROUGE per epoch
159
 
160
  | Epoch | ROUGE-1 | ROUGE-2 | ROUGE-L |
config.json CHANGED
@@ -29,6 +29,6 @@
29
  "relative_attention_num_buckets": 32,
30
  "tie_word_embeddings": false,
31
  "transformers_version": "4.57.3",
32
- "use_cache": true,
33
  "vocab_size": 32128
34
  }
 
29
  "relative_attention_num_buckets": 32,
30
  "tie_word_embeddings": false,
31
  "transformers_version": "4.57.3",
32
+ "use_cache": false,
33
  "vocab_size": 32128
34
  }
model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2860df3211f3fc6564d874e28fbc3d5122505bc6c093ba24064c0243e237d7e0
3
  size 1187780840
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e264bcbdeee99abea5a5fedba0ae6c42e0c06e52084fc5debe567ff59e17159c
3
  size 1187780840
special_tokens_map.json CHANGED
@@ -101,7 +101,25 @@
101
  "<extra_id_98>",
102
  "<extra_id_99>"
103
  ],
104
- "eos_token": "</s>",
105
- "pad_token": "<pad>",
106
- "unk_token": "<unk>"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
 
101
  "<extra_id_98>",
102
  "<extra_id_99>"
103
  ],
104
+ "eos_token": {
105
+ "content": "</s>",
106
+ "lstrip": false,
107
+ "normalized": false,
108
+ "rstrip": false,
109
+ "single_word": false
110
+ },
111
+ "pad_token": {
112
+ "content": "<pad>",
113
+ "lstrip": false,
114
+ "normalized": false,
115
+ "rstrip": false,
116
+ "single_word": false
117
+ },
118
+ "unk_token": {
119
+ "content": "<unk>",
120
+ "lstrip": false,
121
+ "normalized": false,
122
+ "rstrip": false,
123
+ "single_word": false
124
+ }
125
  }
tokenizer.json CHANGED
@@ -2,7 +2,7 @@
2
  "version": "1.0",
3
  "truncation": {
4
  "direction": "Right",
5
- "max_length": 512,
6
  "strategy": "LongestFirst",
7
  "stride": 0
8
  },
 
2
  "version": "1.0",
3
  "truncation": {
4
  "direction": "Right",
5
+ "max_length": 256,
6
  "strategy": "LongestFirst",
7
  "stride": 0
8
  },
tokenizer_config.json CHANGED
@@ -932,8 +932,12 @@
932
  "eos_token": "</s>",
933
  "extra_ids": 100,
934
  "extra_special_tokens": {},
 
935
  "model_max_length": 1000000000000000019884624838656,
936
  "pad_token": "<pad>",
 
937
  "tokenizer_class": "T5Tokenizer",
 
 
938
  "unk_token": "<unk>"
939
  }
 
932
  "eos_token": "</s>",
933
  "extra_ids": 100,
934
  "extra_special_tokens": {},
935
+ "max_length": 512,
936
  "model_max_length": 1000000000000000019884624838656,
937
  "pad_token": "<pad>",
938
+ "stride": 0,
939
  "tokenizer_class": "T5Tokenizer",
940
+ "truncation_side": "right",
941
+ "truncation_strategy": "longest_first",
942
  "unk_token": "<unk>"
943
  }