{
  "id": 686304,
  "title": "[59th Place, Silver] ByT5-base + LLM Data Augmentation + Cross-Model MBR Ensembl",
  "url": "/competitions/deep-past-initiative-machine-translation/discussion/686304",
  "author_name": "ikgm",
  "post_date": "2026-03-31T00:37:50.592000",
  "votes": 1,
  "comment_count": 0,
  "views": 0,
  "content": "<h1>[59th Place, Silver] ByT5-base + LLM Data Augmentation + Cross-Model MBR Ensemble</h1>\n<p>Thank you to the organizers for this fascinating competition! Translating 4,000-year-old Akkadian texts was a truly unique NLP challenge.</p>\n<h2>Summary</h2>\n<ul>\n<li><strong>Model</strong>: ByT5-base (582M params)</li>\n<li><strong>Data</strong>: ~10,700 sentence pairs (original train + OARE published texts + LLM-generated translations)</li>\n<li><strong>Inference</strong>: 3-model cross-family MBR (Minimum Bayes Risk) ensemble</li>\n<li><strong>Post-processing</strong>: Repetition removal / text cleanup</li>\n<li><strong>Final</strong>: Private LB 59th (Silver)</li>\n</ul>\n<h2>What Worked</h2>\n<h3>1. Model Selection: ByT5-base</h3>\n<p>Like most competitors, ByT5 was the clear winner for this task. Akkadian transliteration is full of special diacritics (š, ṣ, ṭ, ḫ) and subscript digits that subword tokenizers handle poorly. ByT5's byte-level tokenization avoids OOV issues entirely.</p>\n<p>Early experiments with mBART-50 (LB 21.3) and NLLB-200 (~18 CV) hit a ceiling around BLEU 10-11. Switching to ByT5-base immediately jumped to LB 26-28.</p>\n<h3>2. Document-Level Training + Data Augmentation</h3>\n<p>An important design choice: I trained on <strong>document-level</strong> pairs rather than splitting into sentence-level pairs. The official <code>train.csv</code> contains paragraph/document-level transliteration-translation pairs, and I kept this granularity. Most top teams split documents into sentence-level pairs using LLMs (DeepSeek, Gemini) for alignment, since the test data is evaluated at sentence level. In my experiments, document-level actually outperformed sentence-level — but this may have been because my own sentence splitting was low quality rather than document-level being inherently better. Top teams with high-quality LLM-based sentence alignment clearly benefited from sentence-level training.</p>\n<p>The official <code>train.csv</code> (1,561 pairs) was far too small. I expanded the training data through three sources:</p>\n<p><strong>a) OARE Published Texts (~5,900 pairs)</strong>\nExtracted sentence-level pairs from the OARE database's <code>published_texts.csv</code> using chunk matching with length distribution alignment and overlap-aware deduplication.</p>\n<p><strong>b) LLM-Generated Translations (6,281 pairs)</strong>\nUsed GPT-5.2 to translate ~6,400 Akkadian transliterations from <code>published_texts.csv</code> that lacked English translations. 5-shot prompting with genre hints, conservative temperature (0.3), and quality filtering (gap ratio, refusal detection, length ratio). ~$38 total cost.</p>\n<p><strong>c) Cherry-Picked High-Confidence Pairs</strong>\nAdditional curated pairs from category D (new extractions), filtered for quality.</p>\n<p>Total: ~10,700 pairs used in final models (after filtering out low-quality samples).</p>\n<h3>3. Source-Labeled Training</h3>\n<p>Different data sources have different quality levels. I used distinct task prefixes per source (e.g., <code>\"translate original Akkadian to English: \"</code> vs <code>\"translate llm Akkadian to English: \"</code>) to let the model implicitly learn source reliability. At inference time, all inputs use the highest-quality prefix.</p>\n<h3>4. Interactive UI for Data Quality Inspection</h3>\n<p>Built Streamlit apps to visually inspect data quality at every stage — browsing augmented data, checking prediction diffs (word-level highlighting vs ground truth), and reviewing transliteration/translation statistics. Being able to quickly eyeball hundreds of examples caught quality issues that aggregate metrics alone would have missed, and directly informed which data to keep or discard.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2107527%2F052376d9af1148d7d798be1eacba868d%2F2026-03-31%209.34.29.png?generation=1774917414062115&amp;alt=media\" alt=\"\"></p>\n<h3>5. MBR Decoding with Cross-Family Ensemble</h3>\n<p>The final submission used 3 ByT5-base models — 2 own models trained on different max source lengths and 1 public model trained on different data. Each model generates beam search candidates, and MBR selects the best translation by weighted consensus (chrF++, BLEU, Jaccard). Cross-family diversity (models trained on different data distributions) was key to MBR effectiveness.</p>\n<h2>What Didn't Work For Me</h2>\n<ul>\n<li><strong>Upgrading LLM from GPT-5.2 to GPT-5.4 for data generation</strong>: The newer model produced more fluent English, but this actually <em>hurt</em> translation quality. The ground truth translations in this competition are scholarly/literal (e.g., preserving Akkadian sentence structure, keeping technical terms), not fluent English. GPT-5.4's tendency toward natural-sounding prose introduced a style mismatch with the evaluation data. Sticking with GPT-5.2 (temperature 0.3) gave more literal, domain-appropriate outputs.</li>\n<li><strong>PN (Proper Noun) Normalization</strong>: Implemented using OA Lexicon with fuzzy matching, but disabled in final submission — too risky for MBR scoring where small text changes could misalign candidate consensus. (Note: many top teams used this effectively — the issue was likely my integration with MBR, not the technique itself.)</li>\n<li><strong>Translation Memory</strong>: Exact-match lookup from train.csv. Worked in isolation but conflicted with MBR ensemble. (Again, top teams successfully used TM — the conflict was specific to my MBR pipeline design.)</li>\n<li><strong>Bidirectional training</strong> (Akk→En + En→Akk): Excluded in final configs — didn't improve quality. (Some top teams reported gains from this, possibly because they had cleaner data to begin with.)</li>\n<li><strong>OOF Cascade Refinement</strong>: Trained a second-stage model on <code>[SRC] + [DRAFT]</code> → <code>[REFINED]</code> using 3-fold CV drafts. Interesting but didn't improve LB.</li>\n</ul>\n<h2>What I Would Do Differently (Lessons from Top Solutions)</h2>\n<ol>\n<li><p><strong>VLM-based PDF extraction pipeline</strong>: The #1 differentiator between Gold and Silver. Top teams used Gemini Pro / Qwen-VL to extract 20k-60k sentence pairs from academic PDFs (AKT series, etc.). I relied on OARE + LLM translation, which was lower quality.</p></li>\n<li><p><strong>Scale up to ByT5-Large/XL</strong>: With enough clean data, larger models clearly win. CTranslate2 quantization (int8) makes XL feasible on T4 within the 9-hour kernel limit.</p></li>\n<li><p><strong>Continual Pre-Training (CPT)</strong>: Domain-adaptive pre-training with span corruption on raw Akkadian text before SFT. Almost all Gold teams did this; I skipped it entirely.</p></li>\n<li><p><strong>Loss weighting by data quality</strong>: 1st place weighted high-quality data at 1.3-1.4x and LLM data at 0.5-0.7x. My source-prefix approach was a rough proxy but not as effective.</p></li>\n<li><p><strong>Creative synthetic data</strong>: 3rd place generated 300k+ \"vocabulary/grammar drills\" from dictionaries. 5th place used back-translation. My LLM augmentation was straightforward translation — I should have been more creative about teaching the model Akkadian structure.</p></li>\n</ol>",
  "messages": [
    {
      "id": 3432003,
      "postDate": "2026-03-31T00:37:50.593Z",
      "content": "<h1>[59th Place, Silver] ByT5-base + LLM Data Augmentation + Cross-Model MBR Ensemble</h1>\n<p>Thank you to the organizers for this fascinating competition! Translating 4,000-year-old Akkadian texts was a truly unique NLP challenge.</p>\n<h2>Summary</h2>\n<ul>\n<li><strong>Model</strong>: ByT5-base (582M params)</li>\n<li><strong>Data</strong>: ~10,700 sentence pairs (original train + OARE published texts + LLM-generated translations)</li>\n<li><strong>Inference</strong>: 3-model cross-family MBR (Minimum Bayes Risk) ensemble</li>\n<li><strong>Post-processing</strong>: Repetition removal / text cleanup</li>\n<li><strong>Final</strong>: Private LB 59th (Silver)</li>\n</ul>\n<h2>What Worked</h2>\n<h3>1. Model Selection: ByT5-base</h3>\n<p>Like most competitors, ByT5 was the clear winner for this task. Akkadian transliteration is full of special diacritics (š, ṣ, ṭ, ḫ) and subscript digits that subword tokenizers handle poorly. ByT5's byte-level tokenization avoids OOV issues entirely.</p>\n<p>Early experiments with mBART-50 (LB 21.3) and NLLB-200 (~18 CV) hit a ceiling around BLEU 10-11. Switching to ByT5-base immediately jumped to LB 26-28.</p>\n<h3>2. Document-Level Training + Data Augmentation</h3>\n<p>An important design choice: I trained on <strong>document-level</strong> pairs rather than splitting into sentence-level pairs. The official <code>train.csv</code> contains paragraph/document-level transliteration-translation pairs, and I kept this granularity. Most top teams split documents into sentence-level pairs using LLMs (DeepSeek, Gemini) for alignment, since the test data is evaluated at sentence level. In my experiments, document-level actually outperformed sentence-level — but this may have been because my own sentence splitting was low quality rather than document-level being inherently better. Top teams with high-quality LLM-based sentence alignment clearly benefited from sentence-level training.</p>\n<p>The official <code>train.csv</code> (1,561 pairs) was far too small. I expanded the training data through three sources:</p>\n<p><strong>a) OARE Published Texts (~5,900 pairs)</strong>\nExtracted sentence-level pairs from the OARE database's <code>published_texts.csv</code> using chunk matching with length distribution alignment and overlap-aware deduplication.</p>\n<p><strong>b) LLM-Generated Translations (6,281 pairs)</strong>\nUsed GPT-5.2 to translate ~6,400 Akkadian transliterations from <code>published_texts.csv</code> that lacked English translations. 5-shot prompting with genre hints, conservative temperature (0.3), and quality filtering (gap ratio, refusal detection, length ratio). ~$38 total cost.</p>\n<p><strong>c) Cherry-Picked High-Confidence Pairs</strong>\nAdditional curated pairs from category D (new extractions), filtered for quality.</p>\n<p>Total: ~10,700 pairs used in final models (after filtering out low-quality samples).</p>\n<h3>3. Source-Labeled Training</h3>\n<p>Different data sources have different quality levels. I used distinct task prefixes per source (e.g., <code>\"translate original Akkadian to English: \"</code> vs <code>\"translate llm Akkadian to English: \"</code>) to let the model implicitly learn source reliability. At inference time, all inputs use the highest-quality prefix.</p>\n<h3>4. Interactive UI for Data Quality Inspection</h3>\n<p>Built Streamlit apps to visually inspect data quality at every stage — browsing augmented data, checking prediction diffs (word-level highlighting vs ground truth), and reviewing transliteration/translation statistics. Being able to quickly eyeball hundreds of examples caught quality issues that aggregate metrics alone would have missed, and directly informed which data to keep or discard.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2107527%2F052376d9af1148d7d798be1eacba868d%2F2026-03-31%209.34.29.png?generation=1774917414062115&amp;alt=media\" alt=\"\"></p>\n<h3>5. MBR Decoding with Cross-Family Ensemble</h3>\n<p>The final submission used 3 ByT5-base models — 2 own models trained on different max source lengths and 1 public model trained on different data. Each model generates beam search candidates, and MBR selects the best translation by weighted consensus (chrF++, BLEU, Jaccard). Cross-family diversity (models trained on different data distributions) was key to MBR effectiveness.</p>\n<h2>What Didn't Work For Me</h2>\n<ul>\n<li><strong>Upgrading LLM from GPT-5.2 to GPT-5.4 for data generation</strong>: The newer model produced more fluent English, but this actually <em>hurt</em> translation quality. The ground truth translations in this competition are scholarly/literal (e.g., preserving Akkadian sentence structure, keeping technical terms), not fluent English. GPT-5.4's tendency toward natural-sounding prose introduced a style mismatch with the evaluation data. Sticking with GPT-5.2 (temperature 0.3) gave more literal, domain-appropriate outputs.</li>\n<li><strong>PN (Proper Noun) Normalization</strong>: Implemented using OA Lexicon with fuzzy matching, but disabled in final submission — too risky for MBR scoring where small text changes could misalign candidate consensus. (Note: many top teams used this effectively — the issue was likely my integration with MBR, not the technique itself.)</li>\n<li><strong>Translation Memory</strong>: Exact-match lookup from train.csv. Worked in isolation but conflicted with MBR ensemble. (Again, top teams successfully used TM — the conflict was specific to my MBR pipeline design.)</li>\n<li><strong>Bidirectional training</strong> (Akk→En + En→Akk): Excluded in final configs — didn't improve quality. (Some top teams reported gains from this, possibly because they had cleaner data to begin with.)</li>\n<li><strong>OOF Cascade Refinement</strong>: Trained a second-stage model on <code>[SRC] + [DRAFT]</code> → <code>[REFINED]</code> using 3-fold CV drafts. Interesting but didn't improve LB.</li>\n</ul>\n<h2>What I Would Do Differently (Lessons from Top Solutions)</h2>\n<ol>\n<li><p><strong>VLM-based PDF extraction pipeline</strong>: The #1 differentiator between Gold and Silver. Top teams used Gemini Pro / Qwen-VL to extract 20k-60k sentence pairs from academic PDFs (AKT series, etc.). I relied on OARE + LLM translation, which was lower quality.</p></li>\n<li><p><strong>Scale up to ByT5-Large/XL</strong>: With enough clean data, larger models clearly win. CTranslate2 quantization (int8) makes XL feasible on T4 within the 9-hour kernel limit.</p></li>\n<li><p><strong>Continual Pre-Training (CPT)</strong>: Domain-adaptive pre-training with span corruption on raw Akkadian text before SFT. Almost all Gold teams did this; I skipped it entirely.</p></li>\n<li><p><strong>Loss weighting by data quality</strong>: 1st place weighted high-quality data at 1.3-1.4x and LLM data at 0.5-0.7x. My source-prefix approach was a rough proxy but not as effective.</p></li>\n<li><p><strong>Creative synthetic data</strong>: 3rd place generated 300k+ \"vocabulary/grammar drills\" from dictionaries. 5th place used back-translation. My LLM augmentation was straightforward translation — I should have been more creative about teaching the model Akkadian structure.</p></li>\n</ol>",
      "rawMarkdown": "# [59th Place, Silver] ByT5-base + LLM Data Augmentation + Cross-Model MBR Ensemble\n\nThank you to the organizers for this fascinating competition! Translating 4,000-year-old Akkadian texts was a truly unique NLP challenge.\n\n## Summary\n\n- **Model**: ByT5-base (582M params)\n- **Data**: ~10,700 sentence pairs (original train + OARE published texts + LLM-generated translations)\n- **Inference**: 3-model cross-family MBR (Minimum Bayes Risk) ensemble\n- **Post-processing**: Repetition removal / text cleanup\n- **Final**: Private LB 59th (Silver)\n\n## What Worked\n\n### 1. Model Selection: ByT5-base\n\nLike most competitors, ByT5 was the clear winner for this task. Akkadian transliteration is full of special diacritics (š, ṣ, ṭ, ḫ) and subscript digits that subword tokenizers handle poorly. ByT5's byte-level tokenization avoids OOV issues entirely.\n\nEarly experiments with mBART-50 (LB 21.3) and NLLB-200 (~18 CV) hit a ceiling around BLEU 10-11. Switching to ByT5-base immediately jumped to LB 26-28.\n\n### 2. Document-Level Training + Data Augmentation\n\nAn important design choice: I trained on **document-level** pairs rather than splitting into sentence-level pairs. The official `train.csv` contains paragraph/document-level transliteration-translation pairs, and I kept this granularity. Most top teams split documents into sentence-level pairs using LLMs (DeepSeek, Gemini) for alignment, since the test data is evaluated at sentence level. In my experiments, document-level actually outperformed sentence-level — but this may have been because my own sentence splitting was low quality rather than document-level being inherently better. Top teams with high-quality LLM-based sentence alignment clearly benefited from sentence-level training.\n\nThe official `train.csv` (1,561 pairs) was far too small. I expanded the training data through three sources:\n\n**a) OARE Published Texts (~5,900 pairs)**\nExtracted sentence-level pairs from the OARE database's `published_texts.csv` using chunk matching with length distribution alignment and overlap-aware deduplication.\n\n**b) LLM-Generated Translations (6,281 pairs)**\nUsed GPT-5.2 to translate ~6,400 Akkadian transliterations from `published_texts.csv` that lacked English translations. 5-shot prompting with genre hints, conservative temperature (0.3), and quality filtering (gap ratio, refusal detection, length ratio). ~$38 total cost.\n\n**c) Cherry-Picked High-Confidence Pairs**\nAdditional curated pairs from category D (new extractions), filtered for quality.\n\nTotal: ~10,700 pairs used in final models (after filtering out low-quality samples).\n\n### 3. Source-Labeled Training\n\nDifferent data sources have different quality levels. I used distinct task prefixes per source (e.g., `\"translate original Akkadian to English: \"` vs `\"translate llm Akkadian to English: \"`) to let the model implicitly learn source reliability. At inference time, all inputs use the highest-quality prefix.\n\n### 4. Interactive UI for Data Quality Inspection\n\nBuilt Streamlit apps to visually inspect data quality at every stage — browsing augmented data, checking prediction diffs (word-level highlighting vs ground truth), and reviewing transliteration/translation statistics. Being able to quickly eyeball hundreds of examples caught quality issues that aggregate metrics alone would have missed, and directly informed which data to keep or discard.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2107527%2F052376d9af1148d7d798be1eacba868d%2F2026-03-31%209.34.29.png?generation=1774917414062115&alt=media)\n\n\n### 5. MBR Decoding with Cross-Family Ensemble\n\nThe final submission used 3 ByT5-base models — 2 own models trained on different max source lengths and 1 public model trained on different data. Each model generates beam search candidates, and MBR selects the best translation by weighted consensus (chrF++, BLEU, Jaccard). Cross-family diversity (models trained on different data distributions) was key to MBR effectiveness.\n\n## What Didn't Work For Me\n\n- **Upgrading LLM from GPT-5.2 to GPT-5.4 for data generation**: The newer model produced more fluent English, but this actually *hurt* translation quality. The ground truth translations in this competition are scholarly/literal (e.g., preserving Akkadian sentence structure, keeping technical terms), not fluent English. GPT-5.4's tendency toward natural-sounding prose introduced a style mismatch with the evaluation data. Sticking with GPT-5.2 (temperature 0.3) gave more literal, domain-appropriate outputs.\n- **PN (Proper Noun) Normalization**: Implemented using OA Lexicon with fuzzy matching, but disabled in final submission — too risky for MBR scoring where small text changes could misalign candidate consensus. (Note: many top teams used this effectively — the issue was likely my integration with MBR, not the technique itself.)\n- **Translation Memory**: Exact-match lookup from train.csv. Worked in isolation but conflicted with MBR ensemble. (Again, top teams successfully used TM — the conflict was specific to my MBR pipeline design.)\n- **Bidirectional training** (Akk→En + En→Akk): Excluded in final configs — didn't improve quality. (Some top teams reported gains from this, possibly because they had cleaner data to begin with.)\n- **OOF Cascade Refinement**: Trained a second-stage model on `[SRC] + [DRAFT]` → `[REFINED]` using 3-fold CV drafts. Interesting but didn't improve LB.\n\n## What I Would Do Differently (Lessons from Top Solutions)\n\n1. **VLM-based PDF extraction pipeline**: The #1 differentiator between Gold and Silver. Top teams used Gemini Pro / Qwen-VL to extract 20k-60k sentence pairs from academic PDFs (AKT series, etc.). I relied on OARE + LLM translation, which was lower quality.\n\n2. **Scale up to ByT5-Large/XL**: With enough clean data, larger models clearly win. CTranslate2 quantization (int8) makes XL feasible on T4 within the 9-hour kernel limit.\n\n3. **Continual Pre-Training (CPT)**: Domain-adaptive pre-training with span corruption on raw Akkadian text before SFT. Almost all Gold teams did this; I skipped it entirely.\n\n4. **Loss weighting by data quality**: 1st place weighted high-quality data at 1.3-1.4x and LLM data at 0.5-0.7x. My source-prefix approach was a rough proxy but not as effective.\n\n5. **Creative synthetic data**: 3rd place generated 300k+ \"vocabulary/grammar drills\" from dictionaries. 5th place used back-translation. My LLM augmentation was straightforward translation — I should have been more creative about teaching the model Akkadian structure.\n\n",
      "votes": 1
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "3432003": "# [59th Place, Silver] ByT5-base + LLM Data Augmentation + Cross-Model MBR Ensemble\n\nThank you to the organizers for this fascinating competition! Translating 4,000-year-old Akkadian texts was a truly unique NLP challenge.\n\n## Summary\n\n- **Model**: ByT5-base (582M params)\n- **Data**: ~10,700 sentence pairs (original train + OARE published texts + LLM-generated translations)\n- **Inference**: 3-model cross-family MBR (Minimum Bayes Risk) ensemble\n- **Post-processing**: Repetition removal / text cleanup\n- **Final**: Private LB 59th (Silver)\n\n## What Worked\n\n### 1. Model Selection: ByT5-base\n\nLike most competitors, ByT5 was the clear winner for this task. Akkadian transliteration is full of special diacritics (š, ṣ, ṭ, ḫ) and subscript digits that subword tokenizers handle poorly. ByT5's byte-level tokenization avoids OOV issues entirely.\n\nEarly experiments with mBART-50 (LB 21.3) and NLLB-200 (~18 CV) hit a ceiling around BLEU 10-11. Switching to ByT5-base immediately jumped to LB 26-28.\n\n### 2. Document-Level Training + Data Augmentation\n\nAn important design choice: I trained on **document-level** pairs rather than splitting into sentence-level pairs. The official `train.csv` contains paragraph/document-level transliteration-translation pairs, and I kept this granularity. Most top teams split documents into sentence-level pairs using LLMs (DeepSeek, Gemini) for alignment, since the test data is evaluated at sentence level. In my experiments, document-level actually outperformed sentence-level — but this may have been because my own sentence splitting was low quality rather than document-level being inherently better. Top teams with high-quality LLM-based sentence alignment clearly benefited from sentence-level training.\n\nThe official `train.csv` (1,561 pairs) was far too small. I expanded the training data through three sources:\n\n**a) OARE Published Texts (~5,900 pairs)**\nExtracted sentence-level pairs from the OARE database's `published_texts.csv` using chunk matching with length distribution alignment and overlap-aware deduplication.\n\n**b) LLM-Generated Translations (6,281 pairs)**\nUsed GPT-5.2 to translate ~6,400 Akkadian transliterations from `published_texts.csv` that lacked English translations. 5-shot prompting with genre hints, conservative temperature (0.3), and quality filtering (gap ratio, refusal detection, length ratio). ~$38 total cost.\n\n**c) Cherry-Picked High-Confidence Pairs**\nAdditional curated pairs from category D (new extractions), filtered for quality.\n\nTotal: ~10,700 pairs used in final models (after filtering out low-quality samples).\n\n### 3. Source-Labeled Training\n\nDifferent data sources have different quality levels. I used distinct task prefixes per source (e.g., `\"translate original Akkadian to English: \"` vs `\"translate llm Akkadian to English: \"`) to let the model implicitly learn source reliability. At inference time, all inputs use the highest-quality prefix.\n\n### 4. Interactive UI for Data Quality Inspection\n\nBuilt Streamlit apps to visually inspect data quality at every stage — browsing augmented data, checking prediction diffs (word-level highlighting vs ground truth), and reviewing transliteration/translation statistics. Being able to quickly eyeball hundreds of examples caught quality issues that aggregate metrics alone would have missed, and directly informed which data to keep or discard.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2107527%2F052376d9af1148d7d798be1eacba868d%2F2026-03-31%209.34.29.png?generation=1774917414062115&alt=media)\n\n\n### 5. MBR Decoding with Cross-Family Ensemble\n\nThe final submission used 3 ByT5-base models — 2 own models trained on different max source lengths and 1 public model trained on different data. Each model generates beam search candidates, and MBR selects the best translation by weighted consensus (chrF++, BLEU, Jaccard). Cross-family diversity (models trained on different data distributions) was key to MBR effectiveness.\n\n## What Didn't Work For Me\n\n- **Upgrading LLM from GPT-5.2 to GPT-5.4 for data generation**: The newer model produced more fluent English, but this actually *hurt* translation quality. The ground truth translations in this competition are scholarly/literal (e.g., preserving Akkadian sentence structure, keeping technical terms), not fluent English. GPT-5.4's tendency toward natural-sounding prose introduced a style mismatch with the evaluation data. Sticking with GPT-5.2 (temperature 0.3) gave more literal, domain-appropriate outputs.\n- **PN (Proper Noun) Normalization**: Implemented using OA Lexicon with fuzzy matching, but disabled in final submission — too risky for MBR scoring where small text changes could misalign candidate consensus. (Note: many top teams used this effectively — the issue was likely my integration with MBR, not the technique itself.)\n- **Translation Memory**: Exact-match lookup from train.csv. Worked in isolation but conflicted with MBR ensemble. (Again, top teams successfully used TM — the conflict was specific to my MBR pipeline design.)\n- **Bidirectional training** (Akk→En + En→Akk): Excluded in final configs — didn't improve quality. (Some top teams reported gains from this, possibly because they had cleaner data to begin with.)\n- **OOF Cascade Refinement**: Trained a second-stage model on `[SRC] + [DRAFT]` → `[REFINED]` using 3-fold CV drafts. Interesting but didn't improve LB.\n\n## What I Would Do Differently (Lessons from Top Solutions)\n\n1. **VLM-based PDF extraction pipeline**: The #1 differentiator between Gold and Silver. Top teams used Gemini Pro / Qwen-VL to extract 20k-60k sentence pairs from academic PDFs (AKT series, etc.). I relied on OARE + LLM translation, which was lower quality.\n\n2. **Scale up to ByT5-Large/XL**: With enough clean data, larger models clearly win. CTranslate2 quantization (int8) makes XL feasible on T4 within the 9-hour kernel limit.\n\n3. **Continual Pre-Training (CPT)**: Domain-adaptive pre-training with span corruption on raw Akkadian text before SFT. Almost all Gold teams did this; I skipped it entirely.\n\n4. **Loss weighting by data quality**: 1st place weighted high-quality data at 1.3-1.4x and LLM data at 0.5-0.7x. My source-prefix approach was a rough proxy but not as effective.\n\n5. **Creative synthetic data**: 3rd place generated 300k+ \"vocabulary/grammar drills\" from dictionaries. 5th place used back-translation. My LLM augmentation was straightforward translation — I should have been more creative about teaching the model Akkadian structure.\n\n"
  }
}