| --- |
| license: apache-2.0 |
| base_model: google/madlad400-3b-mt |
| library_name: ctranslate2 |
| pipeline_tag: translation |
| tags: [translation, ctranslate2, int8, multilingual, windy] |
| --- |
| |
| # translate-windy-max |
|
|
| Multilingual machine translation in **CTranslate2 INT8** for fast CPU inference. |
| Fine-tuned by **Windstorm Labs** from [`google/madlad400-3b-mt`](https://huggingface.co/google/madlad400-3b-mt). |
|
|
| These weights are unique to Windstorm Labs — see *Provenance* below. |
|
|
| ## Attribution |
|
|
| Derived from [`google/madlad400-3b-mt`](https://huggingface.co/google/madlad400-3b-mt), copyright |
| **Google LLC**, licensed under **Apache-2.0**. **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`, `v` | |
| | Precision | bfloat16 | |
| | Seed | 42 | |
| | Training data | OPUS-100, 3,200 sentence pairs, 8 languages | |
| | Tensors modified | 192 of 744 | |
|
|
| ## 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 890ed3b7e4654dcf1b9e7f2ce6ce641447462e782881e81aac443568eb1ca702 |
| this model.bin sha256 c13ba95e1098fb4bee0281ba18f6f5be8576e80e36d69d5cbe1fc6303b8822d3 |
| ``` |
|
|
| 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 | 32.77 | 56.33 | |
| | en-fr | 55.78 | 71.93 | |
| | en-de | 47.48 | 66.73 | |
| | en-it | 37.27 | 60.01 | |
| | en-pt | 54.49 | 71.54 | |
| | en-ru | 40.48 | 59.22 | |
| | en-zh | 33.79 | 34.93 | |
| | en-ja | 25.03 | 34.89 | |
| | en-ko | 26.21 | 35.86 | |
| | en-ar | 39.22 | 57.40 | |
| | en-hi | 34.84 | 54.88 | |
| | en-sw | 30.81 | 56.18 | |
| | es-en | 35.37 | 60.72 | |
| | fr-en | 49.78 | 69.64 | |
| | zh-en | 32.57 | 58.13 | |
| | ja-en | 30.98 | 56.95 | |
| | **mean** | **37.93** | **56.58** | |
|
|
| Verified against the base model by paired bootstrap resampling across all 16 pairs. |
|
|
| ## Languages |
|
|
| Covers **76 of the 76** languages in the Windy translation set. Full coverage. Tagalog uses the `<2fil>` tag. |
|
|
| ## Usage |
|
|
| ```python |
| import ctranslate2 |
| from transformers import AutoTokenizer |
| |
| tok = AutoTokenizer.from_pretrained("WindstormLabs/translate-windy-max") # tokenizer ships in this repo |
| tr = ctranslate2.Translator("WindstormLabs/translate-windy-max", device="cpu", compute_type="int8") |
| |
| # The target language is a tag in the source. Tagalog is <2fil>. |
| src = tok.convert_ids_to_tokens(tok.encode("<2es> Where can I find a pharmacy?")) |
| res = tr.translate_batch([src], beam_size=4) |
| print(tok.decode(tok.convert_tokens_to_ids(res[0].hypotheses[0]), 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. |
|
|