Instructions to use RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16", trust_remote_code=True)# Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16", trust_remote_code=True) model = AutoModel.from_pretrained("RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
LFM2.5 Encoder 350M Code BF16
This is a modified RESMP.DEV research release derived from
LiquidAI/LFM2.5-Encoder-350M at revision b886781f7c6f10ca9b7096e21b83e30a073c2f39. It is
not an official Liquid AI release. We removed the masked-language-model head and
contrastively fine-tuned the full bidirectional encoder for multilingual code retrieval.
Intended use
This BF16 checkpoint is the quality reference and the portable Transformers artifact. The 230M release is particularly intended to make small-device and iPhone-class experiments possible; deployment feasibility and power use still depend on the client runtime and hardware.
Held-out retrieval results
All rows use the same untouched 6,995-pair multilingual test set, 1,200-character query and 4,000-character passage caps, query token cap 512, and passage token cap 2,048. Higher is better. RTN is a matched quantization control; Nomic and Jina are external service baselines, not architecture-matched controls.
| Model | MRR | R@1 | R@5 | R@10 | NDCG@10 | Python MRR | TypeScript MRR | Artifact |
|---|---|---|---|---|---|---|---|---|
| LFM2.5 350M BF16 | 0.3705 | 0.2996 | 0.4422 | 0.5061 | 0.3963 | 0.7969 | 0.1917 | 713.7 MB |
| LFM2.5 350M calibrated MXFP4 | 0.1585 | 0.1169 | 0.1971 | 0.2317 | 0.1697 | 0.5795 | 0.0542 | 291.8 MB |
| LFM2.5 350M RTN MXFP4 | 0.0555 | 0.0422 | 0.0618 | 0.0773 | 0.0576 | 0.3204 | 0.0157 | 291.8 MB |
| LFM2.5 350M calibrated MXFP8 | 0.3710 | 0.3019 | 0.4430 | 0.5045 | 0.3962 | 0.7985 | 0.1903 | 435.5 MB |
| LFM2.5 350M RTN MXFP8 | 0.3684 | 0.2965 | 0.4427 | 0.5054 | 0.3945 | 0.7957 | 0.1932 | 435.4 MB |
| Nomic v1.5 service | 0.5439 | 0.4968 | 0.5954 | 0.6236 | 0.5595 | 0.9289 | 0.3617 | service |
| Jina calibrated MXFP4 | 0.6645 | 0.6133 | 0.7221 | 0.7571 | 0.6832 | 0.9462 | 0.5057 | 1167.7 MB |
A separate BF16 cross-runtime run on NVIDIA GeForce RTX 3090 Ti with PyTorch 2.13.0+cu130 produced MRR 0.3709, 616.2 queries/s, 139.1 passages/s, and 1109.0 MB peak CUDA allocation. CUDA throughput is reported separately and is not compared directly with Metal.
A paired 10,000-sample bootstrap estimates calibrated MXFP8 minus BF16 MRR at +0.0005, with a 95% interval of [-0.0010, +0.0021]. A point estimate whose interval crosses zero is not presented as a quality win.
Usage
import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
repo = "RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16"
tokenizer = AutoTokenizer.from_pretrained(repo, trust_remote_code=True)
model = AutoModel.from_pretrained(repo, trust_remote_code=True, dtype=torch.bfloat16)
texts = [
"query: parse a TypeScript AST",
"passage: export function parse(source: string) {{ ... }}",
]
batch = tokenizer(texts, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
hidden = model(**batch).last_hidden_state.float()
mask = batch["attention_mask"].unsqueeze(-1)
vectors = F.normalize((hidden * mask).sum(1) / mask.sum(1), dim=-1)
Training and data receipts
Full-backbone symmetric in-batch InfoNCE training used 24,626 language-balanced pairs selected from the 42,626-row source training split, two epochs, batch size 32, learning rate 2e-5, temperature 0.05, and seed 17. The training report records the NVIDIA RTX A6000 runtime and validation history.
train: 42,626 rows, SHA-256426ebfaad34b14d7627ba6e668ae36e08e548c9d057b0edc208bcfa6fe527629validation: 5,319 rows, SHA-2569ac88b3138de4ca94c2ef3a87ccf19381fc76265c2bc9d65b4791983d0315096test: 6,995 rows, SHA-2569ed10842a12132b6bfb5421df1e2f88dbcfbf6f6e960f36b22eb9ea6e3c72315calibration: 4,096 rows, SHA-256ee9edaf80a6854c18053b96521090a51bdb76642abeb98618d7aed36e70b6de9
The corpus combines pinned CodeSearchNet data with pinned permissively licensed code
repositories. Exact and token 8-gram near-duplicates were removed with test-before-
validation-before-train precedence. See corpus_receipt.json, source_receipt.json,
training_report.json, quantization_report.json when present, benchmarks/, and
artifact_manifest.json for machine-readable evidence.
License and attribution
The weights retain the LFM Open License v1.0 in LICENSE, including its attribution and
commercial-use conditions. MODIFICATIONS.md identifies RESMP.DEV's changes. The
training and quantization workbench
is separately MIT licensed.
Citation
@article{liquidAI2026Encoders,
author = {Liquid AI},
title = {LFM2.5-Encoders: Fast at Long Context, Even on CPU},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm2-5-encoders},
}
- Downloads last month
- -
Model tree for RESMP-DEV/LFM2.5-Encoder-350M-Code-BF16
Base model
LiquidAI/LFM2.5-350M-Base