{
  "id": 684267,
  "title": "[21th] ByT5-Base + Gemini Augmentation, No Ensemble",
  "url": "/competitions/deep-past-initiative-machine-translation/discussion/684267",
  "author_name": "Karl",
  "post_date": "2026-03-24T08:34:47.527000",
  "votes": 6,
  "comment_count": 0,
  "views": 0,
  "content": "<h1>ByT5-Base + Gemini Augmentation, No Ensemble</h1>\n<p><strong>Final: Private 38.9 / Public 38.3 (Version 137)</strong></p>\n<p>Solo entry, single GPU on AutoDL, ByT5-base throughout.</p>\n<hr>\n<h2>1. Overview</h2>\n<pre><code>  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  train.csv       │     │  published_texts   │     │  Gemini API    │\n  │  (1500 labeled)  │     │  (unlabeled)       │     │  augmentation  │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           ▼                        ▼                         ▼\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  DeepSeek split  │     │  Gemini pseudo-    │     │  Synthetic     │\n  │  + clean/align   │     │  label translation │     │  ~7800 samples │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           └────────────────┬───────┘─────────────────────────┘\n                            ▼\n                   ┌─────────────────────┐\n                   │  Combined ~30k rows  │\n                   │  weighted sampling   │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  ByT5-base training  │\n                   │  5 epochs, single GPU│\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Epoch 3-5 avg      │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Inference          │\n                   │  beam=4, post-proc  │\n                   └─────────────────────┘\n</code></pre>\n<h2>2. Data Engineering</h2>\n<h3>2.1 Sentence Splitting</h3>\n<p>Many samples in train.csv are paragraph-level (multiple sentences concatenated), while the test set is evaluated at sentence level. Used <strong>DeepSeek</strong> to split paragraphs into sentences, then cleaned out samples with abnormal IO length ratios and empty fields. This produced ~<strong>6750 rows</strong> of gold data and gave ~+2 points improvement.</p>\n<h3>2.2 Pseudo-labeling Published Texts</h3>\n<p>Used <strong>Gemini-3 Pro</strong> to split and translate published_texts.csv at sentence level. Iterated over multiple rounds, expanding to ~40k rows of silver data. This was the single biggest improvement at ~<strong>+4 points</strong>.</p>\n<h3>2.3 Gemini Synthetic Augmentation</h3>\n<p>For each paragraph in the training set, asked Gemini to generate a semantically related but different paragraph (e.g. reply letter, counter-claim, follow-up transaction) as a transliteration-translation pair. Produced ~<strong>7800</strong> augmented samples, contributing ~+0.5 points.</p>\n<h3>2.4 Preprocessing</h3>\n<ul>\n<li><strong>Subscript character removal:</strong> Akkadian transliterations contain Unicode subscript characters (e.g. ₂, ₃). Based on information from Gemini, these subscripts only mark different cuneiform sign variants in the original writing and do not affect pronunciation — and Akkadian word meaning depends solely on pronunciation. Removing them improved training results. Not sure how other participants handled this.</li>\n<li>Other preprocessing (gap normalization, parenthetical removal, number/fraction normalization, etc.) followed ideas shared in public discussions.</li>\n</ul>\n<h2>3. Training</h2>\n<p>Model: <strong>google/byt5-base</strong> (~580M params). Byte-level tokenization, naturally suited for the special characters and diacritics in Akkadian transliteration.</p>\n<ul>\n<li><strong>Optimizer:</strong> AdamW, weight_decay=0.01</li>\n<li><strong>LR:</strong> 3e-4, Warmup (6%) + Cosine Decay</li>\n<li><strong>Precision:</strong> BF16</li>\n<li><strong>Max Length:</strong> 512</li>\n<li><strong>Epochs:</strong> 5</li>\n<li><strong>Weighted training:</strong> gold data weighted higher than silver data in loss computation</li>\n<li><strong>Checkpoint averaging:</strong> averaged parameters from epochs 3-5. Observed ~+0.1 LB improvement in a couple of A/B tests. Not sure if optimal, but makes sense for reducing variance in epoch selection.</li>\n</ul>\n<h2>4. Inference &amp; Post-processing</h2>\n<ul>\n<li>Beam search, num_beams=4</li>\n<li>Gap compression: trained with <code>~</code> as placeholder, restored to <code>&lt;gap&gt;</code> at inference</li>\n<li>Post-processing: <code>&lt;big gap&gt;</code> → <code>&lt;gap&gt;</code>, remove parenthetical content, number normalization</li>\n</ul>\n<h2>5. What Worked</h2>\n<table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Improvement</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Subscript removal</td>\n<td>+0.7</td>\n<td>Subscripts only mark cuneiform sign variants, not pronunciation</td>\n</tr>\n<tr>\n<td>Sentence splitting</td>\n<td>+2.0</td>\n<td>Paragraph → sentence level, aligned with test set granularity</td>\n</tr>\n<tr>\n<td>Published_texts pseudo-labels (Gemini)</td>\n<td>+4.0</td>\n<td>~40k silver rows, single biggest gain</td>\n</tr>\n<tr>\n<td>Gold data cleaning + val set recovery</td>\n<td>+0.5</td>\n<td>IO ratio filtering, folding val set into training</td>\n</tr>\n<tr>\n<td>Gemini synthetic augmentation + weighted training</td>\n<td>+0.5</td>\n<td>~7800 augmented samples, gold/silver weighting</td>\n</tr>\n<tr>\n<td>Checkpoint averaging</td>\n<td>+0.1</td>\n<td>Epoch 3-5 parameter averaging, reduces variance</td>\n</tr>\n</tbody>\n</table>\n<p>Overall trajectory: baseline 31.1 → splitting 33.8 → pseudo-labels 37.5 → refinement 38.3 → <strong>final 38.9 Private</strong> (V137)</p>\n<h2>6. What Didn't Work</h2>\n<ul>\n<li><strong>1024 max_length training:</strong> Test set is sentence-level; training on long paragraphs actually hurt (31.1 vs 33.8).</li>\n<li><strong>Context concatenation at inference (sep training):</strong> Concatenating adjacent sentences at inference; single mode consistently outperformed.</li>\n<li><strong>DPO:</strong> Base model too weak, DPO training didn't work at all.</li>\n<li><strong>Gold fine-tuning after silver pre-training:</strong> Fine-tuning a silver-trained model with gold data actually decreased scores.</li>\n<li><strong>Bidirectional training (akk↔eng):</strong> No improvement for a single model.</li>\n<li><strong>MBR decoding:</strong> Minimal gain (0.0-0.3) for a single model, not worth doubling inference time.</li>\n<li><strong>MADLAD-400-3B:</strong> Tried a different backbone, only reached 33.1 after 5 epochs — insufficient training.</li>\n<li><strong>ByT5-small:</strong> Ceiling around ~36.5, clearly worse than base.</li>\n<li><strong>Name swap augmentation:</strong> No LB improvement.</li>\n<li><strong>Disabling early stopping:</strong> LB dropped from 37.5 to 36.6.</li>\n</ul>\n<hr>\n<p><strong>Final:</strong> Private <strong>38.9</strong> / Public 38.3 (Version 137) | ~140 submissions, 50+ experiments, 4 weeks, solo</p>",
  "messages": [
    {
      "id": 3427555,
      "postDate": "2026-03-24T08:34:47.527Z",
      "content": "<h1>ByT5-Base + Gemini Augmentation, No Ensemble</h1>\n<p><strong>Final: Private 38.9 / Public 38.3 (Version 137)</strong></p>\n<p>Solo entry, single GPU on AutoDL, ByT5-base throughout.</p>\n<hr>\n<h2>1. Overview</h2>\n<pre><code>  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  train.csv       │     │  published_texts   │     │  Gemini API    │\n  │  (1500 labeled)  │     │  (unlabeled)       │     │  augmentation  │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           ▼                        ▼                         ▼\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  DeepSeek split  │     │  Gemini pseudo-    │     │  Synthetic     │\n  │  + clean/align   │     │  label translation │     │  ~7800 samples │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           └────────────────┬───────┘─────────────────────────┘\n                            ▼\n                   ┌─────────────────────┐\n                   │  Combined ~30k rows  │\n                   │  weighted sampling   │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  ByT5-base training  │\n                   │  5 epochs, single GPU│\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Epoch 3-5 avg      │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Inference          │\n                   │  beam=4, post-proc  │\n                   └─────────────────────┘\n</code></pre>\n<h2>2. Data Engineering</h2>\n<h3>2.1 Sentence Splitting</h3>\n<p>Many samples in train.csv are paragraph-level (multiple sentences concatenated), while the test set is evaluated at sentence level. Used <strong>DeepSeek</strong> to split paragraphs into sentences, then cleaned out samples with abnormal IO length ratios and empty fields. This produced ~<strong>6750 rows</strong> of gold data and gave ~+2 points improvement.</p>\n<h3>2.2 Pseudo-labeling Published Texts</h3>\n<p>Used <strong>Gemini-3 Pro</strong> to split and translate published_texts.csv at sentence level. Iterated over multiple rounds, expanding to ~40k rows of silver data. This was the single biggest improvement at ~<strong>+4 points</strong>.</p>\n<h3>2.3 Gemini Synthetic Augmentation</h3>\n<p>For each paragraph in the training set, asked Gemini to generate a semantically related but different paragraph (e.g. reply letter, counter-claim, follow-up transaction) as a transliteration-translation pair. Produced ~<strong>7800</strong> augmented samples, contributing ~+0.5 points.</p>\n<h3>2.4 Preprocessing</h3>\n<ul>\n<li><strong>Subscript character removal:</strong> Akkadian transliterations contain Unicode subscript characters (e.g. ₂, ₃). Based on information from Gemini, these subscripts only mark different cuneiform sign variants in the original writing and do not affect pronunciation — and Akkadian word meaning depends solely on pronunciation. Removing them improved training results. Not sure how other participants handled this.</li>\n<li>Other preprocessing (gap normalization, parenthetical removal, number/fraction normalization, etc.) followed ideas shared in public discussions.</li>\n</ul>\n<h2>3. Training</h2>\n<p>Model: <strong>google/byt5-base</strong> (~580M params). Byte-level tokenization, naturally suited for the special characters and diacritics in Akkadian transliteration.</p>\n<ul>\n<li><strong>Optimizer:</strong> AdamW, weight_decay=0.01</li>\n<li><strong>LR:</strong> 3e-4, Warmup (6%) + Cosine Decay</li>\n<li><strong>Precision:</strong> BF16</li>\n<li><strong>Max Length:</strong> 512</li>\n<li><strong>Epochs:</strong> 5</li>\n<li><strong>Weighted training:</strong> gold data weighted higher than silver data in loss computation</li>\n<li><strong>Checkpoint averaging:</strong> averaged parameters from epochs 3-5. Observed ~+0.1 LB improvement in a couple of A/B tests. Not sure if optimal, but makes sense for reducing variance in epoch selection.</li>\n</ul>\n<h2>4. Inference &amp; Post-processing</h2>\n<ul>\n<li>Beam search, num_beams=4</li>\n<li>Gap compression: trained with <code>~</code> as placeholder, restored to <code>&lt;gap&gt;</code> at inference</li>\n<li>Post-processing: <code>&lt;big gap&gt;</code> → <code>&lt;gap&gt;</code>, remove parenthetical content, number normalization</li>\n</ul>\n<h2>5. What Worked</h2>\n<table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Improvement</th>\n<th>Notes</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Subscript removal</td>\n<td>+0.7</td>\n<td>Subscripts only mark cuneiform sign variants, not pronunciation</td>\n</tr>\n<tr>\n<td>Sentence splitting</td>\n<td>+2.0</td>\n<td>Paragraph → sentence level, aligned with test set granularity</td>\n</tr>\n<tr>\n<td>Published_texts pseudo-labels (Gemini)</td>\n<td>+4.0</td>\n<td>~40k silver rows, single biggest gain</td>\n</tr>\n<tr>\n<td>Gold data cleaning + val set recovery</td>\n<td>+0.5</td>\n<td>IO ratio filtering, folding val set into training</td>\n</tr>\n<tr>\n<td>Gemini synthetic augmentation + weighted training</td>\n<td>+0.5</td>\n<td>~7800 augmented samples, gold/silver weighting</td>\n</tr>\n<tr>\n<td>Checkpoint averaging</td>\n<td>+0.1</td>\n<td>Epoch 3-5 parameter averaging, reduces variance</td>\n</tr>\n</tbody>\n</table>\n<p>Overall trajectory: baseline 31.1 → splitting 33.8 → pseudo-labels 37.5 → refinement 38.3 → <strong>final 38.9 Private</strong> (V137)</p>\n<h2>6. What Didn't Work</h2>\n<ul>\n<li><strong>1024 max_length training:</strong> Test set is sentence-level; training on long paragraphs actually hurt (31.1 vs 33.8).</li>\n<li><strong>Context concatenation at inference (sep training):</strong> Concatenating adjacent sentences at inference; single mode consistently outperformed.</li>\n<li><strong>DPO:</strong> Base model too weak, DPO training didn't work at all.</li>\n<li><strong>Gold fine-tuning after silver pre-training:</strong> Fine-tuning a silver-trained model with gold data actually decreased scores.</li>\n<li><strong>Bidirectional training (akk↔eng):</strong> No improvement for a single model.</li>\n<li><strong>MBR decoding:</strong> Minimal gain (0.0-0.3) for a single model, not worth doubling inference time.</li>\n<li><strong>MADLAD-400-3B:</strong> Tried a different backbone, only reached 33.1 after 5 epochs — insufficient training.</li>\n<li><strong>ByT5-small:</strong> Ceiling around ~36.5, clearly worse than base.</li>\n<li><strong>Name swap augmentation:</strong> No LB improvement.</li>\n<li><strong>Disabling early stopping:</strong> LB dropped from 37.5 to 36.6.</li>\n</ul>\n<hr>\n<p><strong>Final:</strong> Private <strong>38.9</strong> / Public 38.3 (Version 137) | ~140 submissions, 50+ experiments, 4 weeks, solo</p>",
      "rawMarkdown": "# ByT5-Base + Gemini Augmentation, No Ensemble\n\n**Final: Private 38.9 / Public 38.3 (Version 137)**\n\nSolo entry, single GPU on AutoDL, ByT5-base throughout.\n\n---\n\n## 1. Overview\n\n```\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  train.csv       │     │  published_texts   │     │  Gemini API    │\n  │  (1500 labeled)  │     │  (unlabeled)       │     │  augmentation  │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           ▼                        ▼                         ▼\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  DeepSeek split  │     │  Gemini pseudo-    │     │  Synthetic     │\n  │  + clean/align   │     │  label translation │     │  ~7800 samples │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           └────────────────┬───────┘─────────────────────────┘\n                            ▼\n                   ┌─────────────────────┐\n                   │  Combined ~30k rows  │\n                   │  weighted sampling   │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  ByT5-base training  │\n                   │  5 epochs, single GPU│\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Epoch 3-5 avg      │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Inference          │\n                   │  beam=4, post-proc  │\n                   └─────────────────────┘\n```\n\n## 2. Data Engineering\n\n### 2.1 Sentence Splitting\n\nMany samples in train.csv are paragraph-level (multiple sentences concatenated), while the test set is evaluated at sentence level. Used **DeepSeek** to split paragraphs into sentences, then cleaned out samples with abnormal IO length ratios and empty fields. This produced ~**6750 rows** of gold data and gave ~+2 points improvement.\n\n### 2.2 Pseudo-labeling Published Texts\n\nUsed **Gemini-3 Pro** to split and translate published_texts.csv at sentence level. Iterated over multiple rounds, expanding to ~40k rows of silver data. This was the single biggest improvement at ~**+4 points**.\n\n### 2.3 Gemini Synthetic Augmentation\n\nFor each paragraph in the training set, asked Gemini to generate a semantically related but different paragraph (e.g. reply letter, counter-claim, follow-up transaction) as a transliteration-translation pair. Produced ~**7800** augmented samples, contributing ~+0.5 points.\n\n### 2.4 Preprocessing\n\n- **Subscript character removal:** Akkadian transliterations contain Unicode subscript characters (e.g. ₂, ₃). Based on information from Gemini, these subscripts only mark different cuneiform sign variants in the original writing and do not affect pronunciation — and Akkadian word meaning depends solely on pronunciation. Removing them improved training results. Not sure how other participants handled this.\n- Other preprocessing (gap normalization, parenthetical removal, number/fraction normalization, etc.) followed ideas shared in public discussions.\n\n## 3. Training\n\nModel: **google/byt5-base** (~580M params). Byte-level tokenization, naturally suited for the special characters and diacritics in Akkadian transliteration.\n\n- **Optimizer:** AdamW, weight_decay=0.01\n- **LR:** 3e-4, Warmup (6%) + Cosine Decay\n- **Precision:** BF16\n- **Max Length:** 512\n- **Epochs:** 5\n- **Weighted training:** gold data weighted higher than silver data in loss computation\n- **Checkpoint averaging:** averaged parameters from epochs 3-5. Observed ~+0.1 LB improvement in a couple of A/B tests. Not sure if optimal, but makes sense for reducing variance in epoch selection.\n\n## 4. Inference & Post-processing\n\n- Beam search, num_beams=4\n- Gap compression: trained with `~` as placeholder, restored to `<gap>` at inference\n- Post-processing: `<big gap>` → `<gap>`, remove parenthetical content, number normalization\n\n## 5. What Worked\n\n| Method | Improvement | Notes |\n|--------|-------------|-------|\n| Subscript removal | +0.7 | Subscripts only mark cuneiform sign variants, not pronunciation |\n| Sentence splitting | +2.0 | Paragraph → sentence level, aligned with test set granularity |\n| Published_texts pseudo-labels (Gemini) | +4.0 | ~40k silver rows, single biggest gain |\n| Gold data cleaning + val set recovery | +0.5 | IO ratio filtering, folding val set into training |\n| Gemini synthetic augmentation + weighted training | +0.5 | ~7800 augmented samples, gold/silver weighting |\n| Checkpoint averaging | +0.1 | Epoch 3-5 parameter averaging, reduces variance |\n\nOverall trajectory: baseline 31.1 → splitting 33.8 → pseudo-labels 37.5 → refinement 38.3 → **final 38.9 Private** (V137)\n\n## 6. What Didn't Work\n\n- **1024 max_length training:** Test set is sentence-level; training on long paragraphs actually hurt (31.1 vs 33.8).\n- **Context concatenation at inference (sep training):** Concatenating adjacent sentences at inference; single mode consistently outperformed.\n- **DPO:** Base model too weak, DPO training didn't work at all.\n- **Gold fine-tuning after silver pre-training:** Fine-tuning a silver-trained model with gold data actually decreased scores.\n- **Bidirectional training (akk↔eng):** No improvement for a single model.\n- **MBR decoding:** Minimal gain (0.0-0.3) for a single model, not worth doubling inference time.\n- **MADLAD-400-3B:** Tried a different backbone, only reached 33.1 after 5 epochs — insufficient training.\n- **ByT5-small:** Ceiling around ~36.5, clearly worse than base.\n- **Name swap augmentation:** No LB improvement.\n- **Disabling early stopping:** LB dropped from 37.5 to 36.6.\n\n---\n\n**Final:** Private **38.9** / Public 38.3 (Version 137) | ~140 submissions, 50+ experiments, 4 weeks, solo\n",
      "votes": 6
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "3427555": "# ByT5-Base + Gemini Augmentation, No Ensemble\n\n**Final: Private 38.9 / Public 38.3 (Version 137)**\n\nSolo entry, single GPU on AutoDL, ByT5-base throughout.\n\n---\n\n## 1. Overview\n\n```\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  train.csv       │     │  published_texts   │     │  Gemini API    │\n  │  (1500 labeled)  │     │  (unlabeled)       │     │  augmentation  │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           ▼                        ▼                         ▼\n  ┌──────────────────┐     ┌───────────────────┐     ┌────────────────┐\n  │  DeepSeek split  │     │  Gemini pseudo-    │     │  Synthetic     │\n  │  + clean/align   │     │  label translation │     │  ~7800 samples │\n  └────────┬─────────┘     └────────┬──────────┘     └───────┬────────┘\n           │                        │                         │\n           └────────────────┬───────┘─────────────────────────┘\n                            ▼\n                   ┌─────────────────────┐\n                   │  Combined ~30k rows  │\n                   │  weighted sampling   │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  ByT5-base training  │\n                   │  5 epochs, single GPU│\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Epoch 3-5 avg      │\n                   └──────────┬──────────┘\n                              ▼\n                   ┌─────────────────────┐\n                   │  Inference          │\n                   │  beam=4, post-proc  │\n                   └─────────────────────┘\n```\n\n## 2. Data Engineering\n\n### 2.1 Sentence Splitting\n\nMany samples in train.csv are paragraph-level (multiple sentences concatenated), while the test set is evaluated at sentence level. Used **DeepSeek** to split paragraphs into sentences, then cleaned out samples with abnormal IO length ratios and empty fields. This produced ~**6750 rows** of gold data and gave ~+2 points improvement.\n\n### 2.2 Pseudo-labeling Published Texts\n\nUsed **Gemini-3 Pro** to split and translate published_texts.csv at sentence level. Iterated over multiple rounds, expanding to ~40k rows of silver data. This was the single biggest improvement at ~**+4 points**.\n\n### 2.3 Gemini Synthetic Augmentation\n\nFor each paragraph in the training set, asked Gemini to generate a semantically related but different paragraph (e.g. reply letter, counter-claim, follow-up transaction) as a transliteration-translation pair. Produced ~**7800** augmented samples, contributing ~+0.5 points.\n\n### 2.4 Preprocessing\n\n- **Subscript character removal:** Akkadian transliterations contain Unicode subscript characters (e.g. ₂, ₃). Based on information from Gemini, these subscripts only mark different cuneiform sign variants in the original writing and do not affect pronunciation — and Akkadian word meaning depends solely on pronunciation. Removing them improved training results. Not sure how other participants handled this.\n- Other preprocessing (gap normalization, parenthetical removal, number/fraction normalization, etc.) followed ideas shared in public discussions.\n\n## 3. Training\n\nModel: **google/byt5-base** (~580M params). Byte-level tokenization, naturally suited for the special characters and diacritics in Akkadian transliteration.\n\n- **Optimizer:** AdamW, weight_decay=0.01\n- **LR:** 3e-4, Warmup (6%) + Cosine Decay\n- **Precision:** BF16\n- **Max Length:** 512\n- **Epochs:** 5\n- **Weighted training:** gold data weighted higher than silver data in loss computation\n- **Checkpoint averaging:** averaged parameters from epochs 3-5. Observed ~+0.1 LB improvement in a couple of A/B tests. Not sure if optimal, but makes sense for reducing variance in epoch selection.\n\n## 4. Inference & Post-processing\n\n- Beam search, num_beams=4\n- Gap compression: trained with `~` as placeholder, restored to `<gap>` at inference\n- Post-processing: `<big gap>` → `<gap>`, remove parenthetical content, number normalization\n\n## 5. What Worked\n\n| Method | Improvement | Notes |\n|--------|-------------|-------|\n| Subscript removal | +0.7 | Subscripts only mark cuneiform sign variants, not pronunciation |\n| Sentence splitting | +2.0 | Paragraph → sentence level, aligned with test set granularity |\n| Published_texts pseudo-labels (Gemini) | +4.0 | ~40k silver rows, single biggest gain |\n| Gold data cleaning + val set recovery | +0.5 | IO ratio filtering, folding val set into training |\n| Gemini synthetic augmentation + weighted training | +0.5 | ~7800 augmented samples, gold/silver weighting |\n| Checkpoint averaging | +0.1 | Epoch 3-5 parameter averaging, reduces variance |\n\nOverall trajectory: baseline 31.1 → splitting 33.8 → pseudo-labels 37.5 → refinement 38.3 → **final 38.9 Private** (V137)\n\n## 6. What Didn't Work\n\n- **1024 max_length training:** Test set is sentence-level; training on long paragraphs actually hurt (31.1 vs 33.8).\n- **Context concatenation at inference (sep training):** Concatenating adjacent sentences at inference; single mode consistently outperformed.\n- **DPO:** Base model too weak, DPO training didn't work at all.\n- **Gold fine-tuning after silver pre-training:** Fine-tuning a silver-trained model with gold data actually decreased scores.\n- **Bidirectional training (akk↔eng):** No improvement for a single model.\n- **MBR decoding:** Minimal gain (0.0-0.3) for a single model, not worth doubling inference time.\n- **MADLAD-400-3B:** Tried a different backbone, only reached 33.1 after 5 epochs — insufficient training.\n- **ByT5-small:** Ceiling around ~36.5, clearly worse than base.\n- **Name swap augmentation:** No LB improvement.\n- **Disabling early stopping:** LB dropped from 37.5 to 36.6.\n\n---\n\n**Final:** Private **38.9** / Public 38.3 (Version 137) | ~140 submissions, 50+ experiments, 4 weeks, solo\n"
  },
  "complete": true,
  "source": "existing_discussion",
  "competition_id": 121150,
  "competition_slug": "deep-past-initiative-machine-translation",
  "team_id": 15180340,
  "solution_url": "/competitions/deep-past-initiative-machine-translation/writeups/21th-byt5-base-gemini-augmentation-no-ensembl"
}