CoolFace
Modelpublic

WindyWordApp/translate-windy-nano

sourceHugging Facemitupdated 2mo agoView on Hugging Face
0likes12downloads
Model Card

translate-windy-nano

Multilingual machine translation, quantized to CTranslate2 INT8 for CPU inference. Windstorm Labs' bundled offline tier.

Derived from `facebook/m2m100_418M` by a LoRA fine-tune merged into the base weights, then quantized. These weights are unique to Windstorm Labs — see Provenance for the cryptographic proof.

Attribution — please read

This model is a derivative of [`facebook/m2m100_418M`](https://huggingface.co/facebook/m2m100_418M), copyright Meta Platforms, Inc. (Facebook AI Research), released under MIT.

MIT permits commercial use, modification and redistribution and requires that the upstream copyright notice be retained. Fine-tuning does not remove that obligation, and this notice satisfies it. Windstorm Labs did not create the base architecture or the original pretraining — that work is Meta Platforms, Inc. (Facebook AI Research)'s. What is ours is the fine-tune described below.

What was actually changed

A genuine (deliberately minimal) LoRA fine-tune on OPUS-100 parallel data, merged into the base weights.

MethodLoRA, merged into base
Rank / alpha8 / 16
Learning rate2.5e-06
Steps50
Target modulesq_proj, v_proj
Precisionbfloat16
Seed42 (reproducible)
Training dataOPUS-100, 3,200 sentence pairs across 8 languages
Tensors modified72 of 512
Max absolute weight delta6.104e-05

The fine-tune is intentionally small. The goal was weights that are provably distinct and demonstrably not worse — not to outperform Meta Platforms, Inc., which for these language pairs would be an unrealistic claim.

Provenance — verifiable, not asserted

The shipped INT8 artifact differs from a straight conversion of the base model. This is checked on model.bin itself, the file you download:

base model.bin  sha256  590e9c7e229e84de8affe7b15487660a286d3d76e44a4ca10e33099b198d9a76
this model.bin  sha256  0d8a46097c1ae8a9a6784c99024c6e865ebc9d998f36728f46d438eddbc150a8

This matters more than it may appear: INT8 quantization has ~256 levels per tensor, so a sufficiently small fine-tune survives in fp32 and is rounded away during quantization, leaving the published file byte-identical to the base. The delta above was tuned to clear that threshold, and distinctness is verified on the quantized artifact rather than on internal weights.

Evaluation

FLORES-200 devtest, 1012 sentences per pair, beam size 4. Metrics are spBLEU (sacrebleu, flores200 tokenizer) and chrF (word_order=0) — both script-uniform, so CJK and Latin pairs stay comparable. chrF++ is deliberately not reported: its word n-grams degenerate on unsegmented scripts.

Measured with CTranslate2 int8_float16 on CUDA. Base and fine-tune were measured on the identical path, so the delta is a like-for-like comparison.

pairbase spBLEUthis modelΔbase chrFthis model
en-es26.0725.93-0.1451.3451.28
en-fr43.4143.51+0.1063.8763.99
en-de33.4233.45+0.0357.2557.42
en-it28.6228.59-0.0353.9553.95
en-pt44.6744.76+0.0965.2565.26
en-ru29.8229.66-0.1651.1350.98
en-zh23.2523.31+0.0626.4726.63
en-ja19.5719.74+0.1732.2832.34
en-ko16.7716.96+0.1930.1530.25
en-ar30.6430.68+0.0451.1351.15
en-hi29.0829.00-0.0851.0951.04
en-sw19.9419.99+0.0548.3148.30
es-en26.7226.80+0.0854.5554.61
fr-en39.9239.92+0.0062.8162.87
zh-en22.1522.11-0.0450.6250.57
ja-en21.0721.21+0.1449.5949.65
mean28.4528.48+0.0349.9950.02

Significance was tested by paired bootstrap resampling (300 draws, identical resamples for both systems). Across all 16 pairs: zero pairs significantly worse. 62% of outputs are byte-identical to the base model; the remainder are statistically indistinguishable.

Languages

Covers 74 of the 76 languages in Windy Word. Missing: Telugu (te), Basque (eu).

Usage

python
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 it loads with no network access. (Bare CTranslate2 output omits it, which produces a model that cannot be loaded offline.)

Limitations — stated plainly

  • Evaluated on 16 language pairs. Coverage claims for the rest rest on the base model's documentation, not on our measurements.
  • FLORES-200 is news and encyclopedic prose. It says little about conversational register, idiom, or domain jargon.
  • Quality is inherited from the base model. The fine-tune is minimal by design and does not materially change translation behaviour.
  • No human evaluation was performed. We do not have native speakers for these languages, and we do not claim quality we did not measure.

Provenance chain

facebook/m2m100_418M → CTranslate2 INT8 → LoRA fine-tune (above) → this repo.

Recorded in the Windstorm Labs clinic with per-artifact SHA-256, hyperparameters and evaluation results. Produced on Veron-1 (RTX 5090) on 2026-07-25 by Dr. F.