TranslatePsy-EuroNano

TranslatePsy-EuroNano is a collection compact multilingual machine translation models (only ~17M to 43M parameters) for European↔English translation optimized for browser, mobile, desktop, and edge-device deployment.

This repository contains multilingual translation models supporting 9 European languages and English in both directions:

  • English → European Languages (en-xx)
  • European Languages → English (xx-en)

The models are built using the Marian/Bergamot framework and are designed to provide an efficient balance between translation quality, model size, memory usage, and inference speed. Compared to Nllb-200-Distilled-600M translation model:

  • TranslatePsy-EuroNano models retains upto 98.4% of NLLB-200 translation accuracy.
  • Single checkpoint deployment size is smaller by 56.7×.
  • Reduces peak RAM usage by 3.53× on CPU deployment

Supported Languages

Language Code Tag for inference
English en -
German de ##DE
Spanish es ##ES
French fr ##FR
Italian it ##IT
Portuguese pt ##PT
Finnish fi ##FI
Czech cs ##CS
Dutch nl ##NL
Swedish sv ##SV

Quick Start (QVAC SDK)

The INTGEMM packs run out of the box with the QVAC SDK using its built-in Bergamot NMT engine. The SDK runs on Node.js, Bare, and Expo, with native backends (Metal on macOS, Vulkan on Windows/Linux).

Requirements: Node.js >= 22.17.

1. Download the model

Grab the Base INTGEMM packs (both directions) with the HuggingFace CLI:

pip install -U "huggingface_hub[cli]"

huggingface-cli download qvac/TranslatePsy-EuroNano \
  --include "en-xx/Base/intgemm/*" "xx-en/Base/intgemm/*" \
  --local-dir ./TranslatePsy-EuroNano

This gives you:

TranslatePsy-EuroNano/
  en-xx/Base/intgemm/{model.intgemm.alphas.bin, vocab.spm}   # English -> European
  xx-en/Base/intgemm/{model.intgemm.alphas.bin, vocab.spm}   # European -> English

Swap Base for BaseMemory or Tiny to trade quality for size, or drop --include to fetch every variant.

2. Install the SDK

npm init -y && npm pkg set type=module
npm install @qvac/sdk

3. Translate

Save as quickstart.mjs:

import path from "node:path";
import { loadModel, translate, unloadModel } from "@qvac/sdk";

const ROOT = "./TranslatePsy-EuroNano";

// direction: "en-xx" (English -> European) or "xx-en" (European -> English)
function load(direction, from, to) {
  const dir = path.join(ROOT, direction, "Base", "intgemm");
  return loadModel({
    modelSrc: path.join(dir, "model.intgemm.alphas.bin"),
    modelType: "nmt",
    modelConfig: {
      engine: "Bergamot",
      from,
      to,
      srcVocabSrc: path.join(dir, "vocab.spm"),
      dstVocabSrc: path.join(dir, "vocab.spm"),
    },
  });
}

async function translateText(modelId, text) {
  const { text: out } = translate({ modelId, text, modelType: "nmt", stream: false });
  return (await out).trim();
}

// English -> German: prepend the ##DE target tag (see Translation Directions).
const ende = await load("en-xx", "en", "de");
console.log(await translateText(ende, "##DE Good morning, how are you today?"));
await unloadModel({ modelId: ende });

// German -> English: no tag needed.
const deen = await load("xx-en", "de", "en");
console.log(await translateText(deen, "Guten Morgen, wie geht es Ihnen heute?"));
await unloadModel({ modelId: deen });
node quickstart.mjs

Output:

Guten Morgen, wie geht es dir heute?
Good morning. How are you doing today?

Notes

  • English → European (en-xx): prepend the target tag (##DE, ##FR, ##ES, …) to the source text, as listed under "Supported Languages" section.
  • European → English (xx-en): no tag required.
  • European → European: pivot through English — run xx-en first, then feed the English output (with the target tag) into en-xx.
  • Load a pack once and reuse the returned modelId for many translations; call unloadModel to free the memory when you're done.
  • For token-by-token streaming, pass stream: true and iterate translate(...).tokenStream instead.

Model Details

Architecture

The models are based on Marian/Bergamot's deployment-oriented neural machine translation architecture.

Key characteristics:

  • 6-layer Transformer encoder
  • SSRU decoder
  • Multi-head attention
  • Shared multilingual SentencePiece vocabulary (32k)
  • Language-tag controlled multilingual decoding
  • CPU-optimized inference

Training Setup

Tokenization & Model

Setting Value
Subword model SentencePiece (32k, shared src/trg)
Tied embeddings Yes

Training

Setting Value
Hardware 8 GPUs, synchronous data-parallel SGD
Optimizer Adam (β₁=0.9, β₂=0.98, ε=1e-9)
Learning rate 3×10⁻⁴; 8k warmup; inv.-sqrt decay
Label smoothing / clip 0.1 / 5
Max length 120 tokens (train)
Mini-batch 1,000 words (dynamic fit)
Early stopping 15 validations (every 5k updates)

Validation

Setting Value
Validation set FLORES-200 dev (997 sents/lang)
Decode beam 12; metrics: chrF, CE, BLEU-detok

Test evaluation

Setting Value
Test set FLORES-200 devtest (1,012 sents/lang)
Decoder marian-decoder; beam 12; batch 64
Metrics SacreBLEU, COMET (WMT22-DA)
Checkpoint best-bleu_detok

Model Variants

We train three model varinats:

Hyperparameter Base Base_Memory Tiny
Encoder depth 6 6 6
Decoder depth 2 4 2
Embedding dim 512 384 256
FFN dim 2048 1536 1024
Attention heads 8 6 4
Parameters 42.68M 31.25M 16.90M
FP32 size 165 MB 120 MB 65 MB
INT8 size (intgemm) 42 MB 31 MB 17 MB
Intended Deployment Best translation quality Balanced memory and quality Browser, mobile, low-memory devices

Each trained model variant has FP32 and INTGEMM (INT8) versions for inference.

FP32 Models

The FP32 variants contain the original full-precision Marian model checkpoints (.npz) used during training and evaluation. These models provide the highest numerical precision and are primarily intended for research, fine-tuning, and framework-level inference using Marian.

Located under:

fp32/

Contains:

model.npz.best-chrf.npz
model.npz.best-chrf.npz.decoder.yml
vocab.spm

Advantages

  • Full training precision
  • Suitable for continued training and fine-tuning
  • Reference checkpoints for reproducibility

Considerations

  • Larger storage footprint
  • Higher memory consumption during inference
  • Not optimized for resource-constrained deployments

INTGEMM (INT8) Models

The INTGEMM variants are quantized inference models generated using Marian/Bergamot quantization tools. These models are optimized for CPU-based deployment and are compatible with Bergamot-style translation pipelines.

Located under:

intgemm/

Contains:

model.intgemm.alphas.bin
lex.50.50.*.s2t.bin
vocab.spm

Advantages

  • Significantly smaller model size
  • Reduced memory usage
  • Faster CPU inference
  • Well suited for browser, desktop, mobile, and edge-device deployment

Considerations

  • Intended for inference only
  • Minor translation quality differences may occur compared to FP32 models due to quantization

Across our evaluations, INTGEMM models retained translation quality close to their FP32 counterparts while substantially reducing deployment footprint and runtime memory requirements.

Translation Directions

English → European (en-xx)

Target language is selected using language tags prepended to the source sentence.

Examples:

##DE This is a multilingual translation model.
##FR This is a multilingual translation model.
##ES This is a multilingual translation model.

European → English (xx-en)

No language tags are required.

Input sentences may be written in any supported European language and are translated into English.

Repository Structure

TranslatePsy-EuroNano
├── en-xx
│   ├── Tiny
│   │   ├── fp32
│   │   └── intgemm
│   ├── BaseMemory
│   │   ├── fp32
│   │   └── intgemm
│   └── Base
│       ├── fp32
│       └── intgemm
│
└── xx-en
    ├── Tiny
    │   ├── fp32
    │   └── intgemm
    ├── BaseMemory
    │   ├── fp32
    │   └── intgemm
    └── Base
        ├── fp32
        └── intgemm

Training Data

The models were trained on multilingual parallel corpora collected from publicly available resources including:

  • EuroParl
  • Tatoeba
  • ParaCrawl
  • WikiMedia
  • OPUS-100
  • TED2020
  • News-commentary
  • Gobal voices

Preprocessing

We filter parallel sample using:

  • Length based filtering
  • Token count ratio
  • case/punctuation normalization
  • language identification
  • Adequacy score to see correctness of translation pairs

After filtering and deduplication, the final training corpus contains approximately:

Statistic Value
Languages 9
Sentence Pairs 25M
Tokens 1.02B

Evaluation

Average COMET scores:

System xx→en en→xx
Firefox Translations 0.878 0.875
NLLB-200-600M 0.874 0.857
TranslatePsy-EuroNano 0.860 0.826

Our best model retains approximately 98.4% of NLLB-200 translation quality while requiring a fraction of the deployment footprint.

Performance on CPU

Model Q s/s tok/s T1 (s) Mem (MB) Bundle (MB)
Tiny intgemm 212 3683 4.2 666 36
Base-Memory intgemm 102 1980 9.3 939 65
Base intgemm 139 2559 6.8 1256 89
Tiny F32 7 132 127.5 1417 137
Base-Memory F32 2 36 530.5 1850 252
Base F32 7 144 124.2 2039 343
Firefox (Bilingual) intgemm 88 1952 10.8 1080 633
OPUS-MT F32 8 183 7.1 1868 620
NLLB-600M F32 0.7 16 19.4 4438 2382

s/s: sentence per second, tok/s: token per second, T1: time to first sentence, Mem: RAM usage, Bundle: Size of en-xx and xx-en checkpoints pair for all 18 translation directions

Performance on Android device

Model Route sentences/s word tok/s ms/sent
Firefox es→en 3.81 ± 0.09 92 ± 2 188.9 ± 3.2
Firefox en→it 4.17 ± 0.47 105 ± 12 177.3 ± 22.8
Firefox es→it 2.73 ± 0.09 71 ± 2 302.8 ± 3.5
Tiny es→en 4.12 ± 0.64 95 ± 15 171.2 ± 25.0
Tiny en→it 4.09 ± 0.11 75 ± 9 161.1 ± 3.9
Tiny es→it 1.32 ± 0.81 31 ± 3 498.6 ± 14.2
Base-Memory es→en 2.88 ± 0.11 64 ± 2 276.7 ± 1.3
Base-Memory en→it 2.68 ± 0.25 85 ± 8 313.0 ± 9.6
Base-Memory es→it 0.97 ± 0.08 25 ± 2 734.0 ± 8.2
Base es→en 2.80 ± 0.24 63 ± 5 293.6 ± 30.3
Base en→it 2.70 ± 0.33 70 ± 9 313.9 ± 55.2
Base es→it 0.90 ± 0.08 19 ± 2 819.8 ± 43.2

Intended Use

These models are particularly suitable for:

  • Browser translation
  • Offline translation
  • Mobile applications
  • Desktop applications
  • Edge devices
  • CPU-only deployment
  • Privacy-preserving local translation

Citation

@misc{translatepsyeuronano2026,
  title  = {TranslatePsy-EuroNano: Compact Multilingual Machine Translation for Resource-Constrained Edge Deployment},
  author = {Gupta, Kamal and Nambiar, Akshay and Nurman, Amril}
  institution = {Tether Data, S.A. de C.V. d.b.a. Tether AI Research},
  year   = {2026},
  note   = {Hugging Face model card}
}

Copyright

We will take appropriate actions in response to notices of copyright infringement. If you believe your work has been used or copied in a manner that infringes upon your intellectual property rights, please email data-apps@tether.io identifying and describing both the copyrighted work and alleged infringing content.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including qvac/TranslatePsy-EuroNano