Model reference · open weights

ettin-encoder

Available as managed deployment Embeddings jhu-clsp Embeddings 1 variants 6k dl/mo

ettin-encoder is an open-weight embedding model from jhu-clsp. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Released byjhu-clsp
TypeEmbedding models
TaskEmbeddings
Context7999 tokens
Runs withtransformers
Released2025-03-24
Popularity6k downloads / month
LicenceOpen weights

About

What ettin-encoder is

🎯 TL;DR: State-of-the-art paired encoder and decoder models (17M-1B params) trained identically for fair comparison with open data. Encoders beat ModernBERT. Decoders beat Llama 3.2/SmolLM2.

📄 Paper | 🚀 GitHub Repository

This model is part of the Ettin suite - the first collection of paired encoder-only and decoder-only models trained with identical data, architecture, and training recipes. Ettin enables fair comparisons between encoder and decoder architectures across multiple scales, providing state-of-the-art performance for open-data models in their respective size categories.

Read the full model card

Table of Contents

📊 Performance Highlights

Encoder Tasks (vs. ModernBERT)

  • GLUE Average: 88.9 vs 88.4 (Base), 90.8 vs 90.4 (Large)
  • MTEB v2 English Retrieval: 45.7 vs 43.9 (Base), 48.4 vs 47.0 (Large)
  • Code Search and Long Context: Superior performance on CodeSearchNet and MLDR

Decoder Tasks (vs. SmolLM2 & Llama 3.2)

  • Average Score: 46.2 vs 45.2 (SmolLM2-135M)
  • 1B Model: 59.0 vs 56.6 (Llama 3.2-1B)
  • Generative Tasks: Competitive across all model sizes

Key Finding

Architecture-specific advantages persist: A 400M encoder outperforms a 1B decoder on classification tasks, while a 400M decoder outperforms a 1B encoder on generation tasks.

🚀 Quick Start

Installation

pip install torch>=1.9.0
# until the new pip release, install from main to use decoders (transformers>=4.54.X will contain it)
# encoders work with transformers>=4.48.0
pip install git+https://github.com/huggingface/transformers.git

30-Second Examples

Encoder for Classification/Embeddings:

from transformers import AutoTokenizer, AutoModel

tokenizer = AutoTokenizer.from_pretrained("jhu-clsp/ettin-encoder-150m")
model = AutoModel.from_pretrained("jhu-clsp/ettin-encoder-150m")

Decoder for Text Generation:

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("jhu-clsp/ettin-decoder-150m")
model = AutoModelForCausalLM.from_pretrained("jhu-clsp/ettin-decoder-150m")

Model Description

Ettin models are designed to provide a foundation for comparing encoder-only and decoder-only architectures. Unlike previous comparisons that were limited by different training data, architectures, and recipes, Ettin models use:

  1. Identical training data - Same high-quality mixture across all models
  2. Open Training Data - Data is available now with batch-level training data for each of the 250+ checkpoints
  3. Matched architectures - Only differing in attention patterns (bidirectional vs causal) and training objectives (MLM vs CLM)
  4. Consistent training recipe - Three-phase training with 2T tokens
  5. Multiple scales - From 17M to 1B parameters

This approach allows for true apples-to-apples comparisons between encoder and decoder models, revealing the inherent strengths of each architecture.

Training Data

The training data is publicly available and split across different phases:

Model Family

Encoder Models

SizeModelParametersBest ForDownload
XXSettin-encoder-17m17MMobile/Edge devices
XSettin-encoder-32m32MFast inference
Smallettin-encoder-68m68MBalanced performance
Baseettin-encoder-150m150MStandard use cases
Largeettin-encoder-400m400MHigh accuracy needs
XLettin-encoder-1b1BBest performance

Decoder Models

SizeModelParametersBest ForDownload
XXSettin-decoder-17m17M

From the published model card. Full card on the HuggingFace links in the sidebar.

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys ettin-encoder for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (ettin-encoder below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/embeddings \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"ettin-encoder","input":"text to embed"}'

Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.

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