sneakyfree's picture
Update model card
efcdcf1 verified
|
Raw
History Blame Contribute Delete
3.36 kB
---
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.