Model reference · open weights

EuroMoE

LLMs utter-project Text gen · MoE 1 build Open weights 1k dl/mo

EuroMoE is an open-weight language model from utter-project. EuroMoE-2.6B-A0.6B-Instruct-Preview (BF16) weighs 5.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.

What it is

Released byutter-project
TypeLanguage models
TaskText gen · MoE
Parameters (lead)2.6B
Context4,096 tokens
Runs withtransformers
Based onutter-project/EuroMoE-2.6B-A0.6B-Preview
Released2025-06-09
Popularity1k downloads / month
Weights5.2 GB (EuroMoE-2.6B-A0.6B-Instruct-Preview (BF16), file size)
LicenceOpen weights

What it runs on

Memory and cards for EuroMoE-2.6B-A0.6B-Instruct-Preview (BF16)

Weights 5.2 GB (file size) · KV cache 25 MB per 1,000 tokens of context, at 16 bits (vLLM's default for this build; an 8-bit cache halves it) · runtime overhead from 582 MB on a small card · context up to 4,096 tokens.

CardRequests at once
4K, its whole window tokens each
Requests at once
32K tokens each
Longest single
request
Counted
memory
RTX 3060 12 GB57—all 4K11.6 GB
RTX 4060 Ti 16 GB95—all 4K15.4 GB
RTX 3090 24 GB174—all 4K23.4 GB
RTX 4090 24 GB174—all 4K23.4 GB
RTX 5090 32 GB250—all 4K31.0 GB
L40S 48 GB379—all 4K44.0 GB
A100 80 GB719—all 4K78.2 GB
H100 80 GB682—all 4K78.1 GB
RTX PRO 6000 Blackwell 96 GB838—all 4K93.8 GB
DGX Spark (GB10) 128 GB unified972—all 4K107 GB
H200 141 GB1000+—all 4K138 GB
B200 180 GB1000+—all 4K176 GB
Memory needed at each load
Requests at once4K, its whole window tokens each32K tokens each
15.9 GB—
56.3 GB—
86.6 GB—
167.4 GB—
329.0 GB—
6412.2 GB—

On one card, with vLLM's small-card settings (2,048 tokens a step). Cards of 70 GB and more reserve more per request and more overhead — each row above uses its own card's settings.

Estimates, not measurements, checked against published vLLM startup logs. The weights are the build's file size; the cache is calculated from its config (grouped-query attention); the overhead is an estimate of vLLM's own memory with that card's default settings. "Requests at once" is how many requests of that length vLLM admits — its reservation at full length, with --max-model-len set to that length; requests that stay shorter fit more. "Longest single request" is the most one request can hold there: below the model's maximum, vLLM starts only with --max-model-len set at or under it. "Counted memory" is vLLM's default 92 % of what CUDA reports for the card (the DGX Spark: about 100 GiB of its shared 128 GB). Assumes vLLM 0.10 or later.

From the model card

What utter-project says about EuroMoE

⚠️ PREVIEW RELEASE: This is a preview version of EuroMoE-2.6B-A0.6B-Instruct-Preview. The model is still under development and may have limitations in performance and stability. Use with caution in production environments.

This is the model card for EuroMoE-2.6B-A0.6B-Instruct-Preview. You can also check the pre-trained version: EuroMoE-2.6B-A0.6B-Preview.

  • Developed by: Unbabel, Instituto Superior Técnico, Instituto de Telecomunicações, University of Edinburgh, Aveni, University of Paris-Saclay, University of Amsterdam, Naver Labs, Sorbonne Université.
  • Funded by: European Union.
  • Model type: A 2.6B parameter multilingual transformer MoE with 0.6B active parameters.
  • Language(s) (NLP): Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Irish, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish, Arabic, Catalan, Chinese, Galician, Hindi, Japanese, Korean, Norwegian, Russian, Turkish, and Ukrainian.
  • License: Apache License 2.0.
Read the full model card

Model Details

The EuroLLM project has the goal of creating a suite of LLMs capable of understanding and generating text in all European Union languages as well as some additional relevant languages. EuroMoE-2.6B-A0.6B is a 22B parameter model trained on 8 trillion tokens divided across the considered languages and several data sources: Web data, parallel data (en-xx and xx-en), and high-quality datasets. EuroMoE-2.6B-A0.6B-Instruct was further instruction tuned on EuroBlocks, an instruction tuning dataset with focus on general instruction-following and machine translation.

Model Description

EuroMoE uses a standard MoE Transformer architecture:

  • We use grouped query attention (GQA) with 2 key-value heads, since it has been shown to increase speed at inference time while maintaining downstream performance.
  • We perform pre-layer normalization, since it improves the training stability, and use the RMSNorm, which is faster.
  • We use the SwiGLU activation function, since it has been shown to lead to good results on downstream tasks.
  • We use rotary positional embeddings (RoPE) in every layer, since these have been shown to lead to good performances while allowing the extension of the context length.

For pre-training, we use 512 Nvidia A100 GPUs of the Leonardo supercomputer, training the model with a constant batch size of 4096 sequences, which corresponds to approximately 17 million tokens, using the Adam optimizer, and BF16 precision. Here is a summary of the model hyper-parameters:

Sequence Length4,096
Number of Layers24
Embedding Size1,024
Total/Active experts64/8
Expert Hidden Size512
Number of Heads8
Number of KV Heads (GQA)2
Activation FunctionSwiGLU
Position EncodingsRoPE (\Theta=500,000)
Layer NormRMSNorm
Tied EmbeddingsYes
Embedding Parameters0.13B
LM Head Parameters0.13B
Active Non-embedding Parameters0.34B
Total Non-embedding Parameters2.35B
Active Parameters0.6B
Total Parameters2.61B

Run the model

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "utter-project/EuroMoE-2.6B-A0.6B-Instruct-Preview"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)

messages = [
    {
        "role": "system",
        "content": "You are EuroLLM --- an AI assistant specialized in European languages that provides safe, educational and helpful answers.",
    },
    {
        "role": "user", "content": "What is the capital of Portugal? How would you describe it?"
    },
    ]

inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(inputs, max_new_tokens=1024)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Bias, Risks, and Limitations

EuroMoE-2.6B-A0.6B-Instruct-Preview has not been aligned to human preferences, so the model may generate problematic outputs (e.g., hallucinations, harmful content, or false statements).

Quoted from the model card on Hugging Face — the full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms