OpenEuroLLM / OpenEuroLLM/Taskboard
Synthetic Data Generation for Multilingual Instruction Following
@abhash-er is already working on this.
Since Jul 13, 2026.
- Dominant language
- No language data
- Stars
- 3
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Goal
The goal is to generate high-quality multilingual instruction-following (IF) data from a multilingual-capable frontier model. This dataset boosts multilingual performance after instruction finetuning, complementing the English-heavy Dolci-Instruct SFT distribution used to train OLMo-3-7B.
Description
This is a complementary issue to the #186.
The Plan:
- We use Gemma 4 (
gemma-4-31B-it, bf16) served locally with vLLM on Leonardo (TP=2, A100) to generate the data : cheaper than the OpenRouter API at production scale and gives full bf16 quality. - Two-stage generation per example: first synthesize a diverse instruction prompt, then generate its response. Prompts are sampled across a meta-prompt axis space (topics × personas × constraints, see
synthgen/prompts.py). - Generation runs in three phases:
- Pilot — generate a small batch and eyeball it.
- Back-translation QC — translate a generated non-English example back to English and inspect for fidelity, fluency, and instruction integrity.
- Scale to production — once quality is acceptable, run the full per-language target.
- Long-running jobs use checkpoint/resume by id (
generate_vllm.py), chaining 2–5 jobs since a single 24h job can't finish the whole run. - Post-generation: leakage/contamination filter, then dedupe by
(lang, normalized-prompt), then verify pass (language-id + constraint-compliance checks).
Deliverable scope
For now, High-quality synthetic IF samples for 11 European languages: es, fr, de, it, pt, pl, nl, cs, ro, el, uk. The first iteration is available at openeurollm/EU-Instruct-Synthetic
Production target was 200k/language (n_per_lang_phase3 = 200_000, → 2.2M, to match Dolci-Instruct scale). Actual shipped corpus after leakage filter + dedupe:
- 1,497,276 unique SFT pairs.
- Per-language n ranges ~119k (fr) → ~150k (cs); response median 720–925 chars.
- Verify yield: language-id 94–98%, constraint-compliance 93–97%.
Dependencies
- Local vLLM serving stack on Leonardo (
gemma-4-31B-itweights), exposed tosynthgen generatevia an--endpoints-dirof*.endpointfiles. OPENROUTER_API_KEY— only for the optional back-translation spot-check (paid).- Downstream: mixing into open-instruct for OLMo 3 7B SFT #186
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.