translate-windy-nano

Multilingual machine translation in CTranslate2 INT8 for fast CPU inference. Fine-tuned by Windstorm Labs from facebook/m2m100_418M.

These weights are unique to Windstorm Labs — see Provenance below.

Attribution

Derived from facebook/m2m100_418M, 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 72 of 512

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  590e9c7e229e84de8affe7b15487660a286d3d76e44a4ca10e33099b198d9a76
this model.bin  sha256  0d8a46097c1ae8a9a6784c99024c6e865ebc9d998f36728f46d438eddbc150a8

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 25.93 51.28
en-fr 43.51 63.99
en-de 33.45 57.42
en-it 28.59 53.95
en-pt 44.76 65.26
en-ru 29.66 50.98
en-zh 23.31 26.63
en-ja 19.74 32.34
en-ko 16.96 30.25
en-ar 30.68 51.15
en-hi 29.00 51.04
en-sw 19.99 48.30
es-en 26.80 54.61
fr-en 39.92 62.87
zh-en 22.11 50.57
ja-en 21.21 49.65
mean 28.48 50.02

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

import ctranslate2
from transformers import AutoTokenizer

tok = AutoTokenizer.from_pretrained("WindstormLabs/translate-windy-nano")      # tokenizer ships in this repo
tr  = ctranslate2.Translator("WindstormLabs/translate-windy-nano", 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.
Downloads last month
32
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for WindyWord/translate-windy-nano

Finetuned
(179)
this model