Downloads · 30 days
27
45% of all-time downloads
WindstormLabs/translate-windy-nano
translate-windy-nano is a translation model from WindstormLabs. Use it when you need text moved from one language to another. It is set up for ctranslate2. The card lists the license as mit.
Part of the Windstorm Labs open model catalogue. Scores, licence and attribution for every model: https://windytranslate.com/models/translate-windy-nano
Downloads · 30 days
27
45% of all-time downloads
All-time downloads
60
Public
Repo size
490 MB
Likes
0
Public
Click a slice to open those files.
.bin488 MB · 98%
From the Hugging Face model README
Part of the Windstorm Labs open model catalogue. Scores, licence and attribution for every model: https://windytranslate.com/models/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.
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.
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 |
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.
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.
Covers 74 of the 76 languages in the Windy translation set. Telugu and Basque are not covered.
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.