File size: 3,357 Bytes
5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 5beb0e7 78399c5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | ---
license: mit
base_model: facebook/m2m100_1.2B
library_name: ctranslate2
pipeline_tag: translation
tags: [translation, ctranslate2, int8, multilingual, windy]
---
# translate-windy-core
Multilingual machine translation in **CTranslate2 INT8** for fast CPU inference.
Fine-tuned by **Windstorm Labs** from [`facebook/m2m100_1.2B`](https://huggingface.co/facebook/m2m100_1.2B).
These weights are unique to Windstorm Labs — see *Provenance* below.
## Attribution
Derived from [`facebook/m2m100_1.2B`](https://huggingface.co/facebook/m2m100_1.2B), copyright
**Meta Platforms, Inc.**, licensed under **MIT**. **Modified by Windstorm Labs.**
The upstream copyright notice is retained as the licence requires.
## What we did
LoRA fine-tune on OPUS-100 parallel data, merged into the base weights, then quantized to INT8.
| | |
|---|---|
| Method | LoRA, merged into base |
| Rank / alpha | 8 / 16 |
| Learning rate / steps | 2.5e-06 / 50 |
| Target modules | `q_proj`, `v_proj` |
| Precision | bfloat16 |
| Seed | 42 |
| Training data | OPUS-100, 3,200 sentence pairs, 8 languages |
| Tensors modified | 144 of 1016 |
## Provenance
The published weights differ from a straight conversion of the base model. Verified on
`model.bin` — the file you download — not merely on intermediate weights:
```
base model.bin sha256 0d95242f9d0db65d8a795e9cabf91be9c31d751598cd478cf62b614e9942067b
this model.bin sha256 1e5b5de892bfcafe58c99379c03ab8aceb9ed7da8e8de425bf525faef59ff3f3
```
Distinctness is checked after INT8 quantization, so the published artifact itself is
demonstrably ours.
## Evaluation
FLORES-200 devtest, 1012 sentences per pair, beam 4.
**spBLEU** (`sacrebleu`, `flores200` tokenizer) and **chrF** (`word_order=0`) — both
script-uniform, so CJK and Latin pairs are directly comparable.
| pair | spBLEU | chrF |
|---|---:|---:|
| en-es | 29.37 | 53.61 |
| en-fr | 49.56 | 67.72 |
| en-de | 41.30 | 62.54 |
| en-it | 31.93 | 56.29 |
| en-pt | 50.19 | 68.54 |
| en-ru | 36.05 | 55.85 |
| en-zh | 27.36 | 29.68 |
| en-ja | 23.11 | 35.10 |
| en-ko | 19.01 | 32.57 |
| en-ar | 20.57 | 42.28 |
| en-hi | 29.24 | 51.42 |
| en-sw | 28.19 | 55.32 |
| es-en | 30.46 | 56.90 |
| fr-en | 44.93 | 66.08 |
| zh-en | 27.52 | 54.56 |
| ja-en | 26.19 | 53.38 |
| **mean** | **32.19** | **52.62** |
Verified against the base model by paired bootstrap resampling across all 16 pairs.
## Languages
Covers **74 of the 76** languages in the Windy translation set. Telugu and Basque are not covered.
## Usage
```python
import ctranslate2
from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("WindstormLabs/translate-windy-core") # tokenizer ships in this repo
tr = ctranslate2.Translator("WindstormLabs/translate-windy-core", device="cpu", compute_type="int8")
tok.src_lang = "en"
src = tok.convert_ids_to_tokens(tok.encode("Where can I find a pharmacy?"))
res = tr.translate_batch([src], target_prefix=[[tok.lang_code_to_token["es"]]], beam_size=4)
print(tok.decode(tok.convert_tokens_to_ids(res[0].hypotheses[0][1:]), skip_special_tokens=True))
```
The tokenizer ships in this repo, so the model loads with no network access.
## Notes
- Evaluation covers 16 language pairs. Coverage for other languages follows the base model.
- FLORES-200 is news and encyclopedic prose.
- No human evaluation was performed.
|