Hugging Face Blog

LFM2.5-Encoders for Fast Long-Context Inference on CPU

8.5内容质量

TL;DR · AI 摘要

Hugging Face发布LFM2.5-Encoders,可在CPU上高效处理长上下文推理,性能接近大模型但速度更快。

核心要点

  • LFM2.5-Encoder-350M在17个任务中排名第四,仅比3.5B模型小10倍
  • 使用非因果卷积和双向注意力机制,支持8192-token上下文
  • CPU推理速度比ModernBERT-base快3.7倍,适合部署在现有硬件

结构提纲

按章节快速跳转。

  1. 介绍LFM2.5-Encoders的发布及其核心优势

  2. 展示模型在GLUE/SuperGLUE等基准测试中的排名

  3. 说明双向注意力和非因果卷积的实现方式

  4. 描述两阶段训练策略和长上下文适应过程

  5. 列举意图路由、PII检测等实际应用场景

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • LFM2.5-Encoders
    • 模型特性
      • 长上下文支持
      • CPU优化
    • 技术实现
      • 双向注意力
      • 非因果卷积
    • 应用场景
      • 分类任务
      • 安全过滤

金句 / Highlights

值得收藏与分享的关键句。

#NLP#模型优化#Hugging Face#编码器
打开原文

适用于CPU的LFM2.5编码器:实现长上下文快速推理

返回文章列表

[0

团队

]

文章

2026年7月28日发布

[-1

点赞

35

[

  • +29

费尔南多·费尔南德斯·内托

fernandofernandes

关注

LiquidAI

埃多阿尔多·莫斯卡

EdoardoMosca

马克西姆·拉邦

mlabonne

莱昂妮·莫尼加蒂

iamleonie

今天,我们在Hugging Face上发布了两个新的编码器模型:LFM2.5-Encoder-230M和LFM2.5-Encoder-350M。这些模型在保持与大型模型相当质量的同时,随着输入长度增加仍能保持稳定速度。这意味着你可以在现有硬件(包括CPU)上运行文档级规模的任务。

你将获得以下优势:

  • 同级别最佳表现:在GLUE、SuperGLUE和多语言任务中表现优于或至少匹配更大编码器。
  • 8,192 token上下文支持,输入长度增加时延迟增长缓慢。
  • CPU加速:在长上下文任务中速度比ModernBERT-base快约3.7倍。

借助这些模型,你可以构建全天候运行的低成本意图路由器、策略检查器、PII检测器和文本分类器。请查看下方实时演示。

为何构建通用型编码器

上个月我们发布了面向多语言搜索的LFM2.5-Retrievers。LFM2.5-Encoders来自相同技术家族但适用范围更广。它们通过掩码语言目标进行预训练,因此可以微调用于分类、token级任务和搜索。搜索只是编码器能实现的功能之一,这也是我们选择构建通用模型而非复用检索器的原因。

编码器驱动着许多现代NLP生产应用:分类器、意图路由器、安全过滤器。这些任务通常全天候在CPU上运行,处理越来越长的输入。BERT确立了这类模型的基准,而ModernBERT最近进一步提升了准确率、速度和上下文长度。LFM2.5-Encoders在LFM2架构上更进一步,随着输入增长,成本增加缓慢。

编码器构建方式

我们从对应的LFM2解码器主干初始化编码器:LFM2.5-230M和LFM2.5-350M。随后通过以下调整将每个因果解码器转换为双向编码器:

  • 双向注意力掩码:每个token现在可以同时看到前后token,而不仅是之前的token。
  • 非因果短卷积:对称填充使每个token的卷积能混合两侧邻居信息。
  • 掩码语言建模:训练时对30%的token进行掩码。

我们分两个阶段训练这两个模型:

  • 通用语言能力:在1,024 token上下文的大型网络语料库上进行短上下文掩码语言目标训练。
  • 长上下文适配:在完整数据集混合上扩展到8,192 token上下文,强化事实、法律和多语言能力。

基准测试结果

我们在每个任务上对每个模型进行完整微调并报告结果。表格中展示了从GLUE、SuperGLUE和多语言分类中选取的17个任务的14个模型表现。

我们报告了五个保留种子的平均值,因此数值在不同运行间保持稳定。完整框架和原始结果已开源。

LFM2.5-Encoder-350M在14个模型中排名第四。排在它前面的三个模型都更大,包括一个近为其10倍大小的35亿参数模型。LFM2.5-Encoder-230M在准确率上超越ModernBERT-base和所有EuroBERT模型,同时体积比其中大多数模型更小。两者在此测试中表现也明显优于我们自己的LFM2.5-Retrievers。

CPU和GPU上的推理速度

我们的编码器继承了LFM2主干的快速推理能力。由于我们的编码器和ModernBERT都支持8,192 token上下文,我们测量了整个范围内的速度表现。

我们的编码器在CPU上的表现最为突出。在此,LFM2.5-Encoder-230M在所有序列长度上都最快(即使是短输入也比更小的ModernBERT-base更快)。随着输入长度增加,ModernBERT的吞吐量会急剧下降,而我们的LFM2.5-编码器则先上升至中等水平后逐渐趋于平稳。在8,192个token时,ModernBERT-base每次前向传递需要超过一分钟半,而LFM2.5-Encoder-230M仅需约28秒。这大约快了3.7倍。对于开发者而言,这意味着你可以在笔记本电脑CPU上,用不到30秒的时间扫描或分类完整的合同、转录文本或长支持线程。

在GPU上,类似模式也存在但差距较小:在Apple GPU上,ModernBERT-base在约1K token以下表现更优。我们的编码器从约2K token开始超越。这表明对于长输入,LFM2.5-编码器是更快的选择,如果使用CPU,这种优势会更加显著。

LFM2.5-Encoder 示例

我们使用微调后的LFM2.5-编码器构建了以下示例。每个示例都在仅使用CPU的Hugging Face空间中运行:

  • 零样本提示路由:以自由文本形式定义自己的路由通道。模型通过一次遍历对整个提示与每个通道进行评分。
  • 零样本策略检查:将文本与以自由文本形式编写的公司规则进行比对。它通过一次遍历对每个token与每条规则进行评分。
  • 拼写检查:逐个token纠正拼写错误。
  • PII检测:在16种语言中识别并移除40种类型的个人身份信息。
  • 掩码扩散文本生成(额外功能):将编码器作为聊天机器人使用,通过迭代去掩码而非从左到右生成文本。

如何使用和微调LFM2.5-编码器

当有大量需要理解的任务(如分类、路由、提取或评分)且需要持续运行并保持低成本和高速度时,请选择LFM2.5-编码器。对于这类任务,微调后的编码器比生成式大语言模型更小、更快且运行成本更低,而且可以运行在你已有的CPU上。

在两个编码器尺寸之间:

  • LFM2.5-Encoder-350M:当准确性最为关键时选择它。
  • LFM2.5-Encoder-230M:当需要更严格的硬件限制或更高吞吐量时选择它。

你只需几行代码即可开始。使用transformers加载模型。然后直接运行掩码标记预测,或附加自己的头部并微调以适应你的任务。

加载并运行模型

安装最新版transformers:

code
pip install -U transformers

运行掩码标记预测:

code
from
transformers
import
AutoModelForMaskedLM, AutoTokenizer
import
torch

model_id =
"LiquidAI/LFM2.5-Encoder-230M"
# 或 "LiquidAI/LFM2.5-Encoder-350M"
tok = AutoTokenizer.from_pretrained(model_id, trust_remote_code=
True
)
mlm = AutoModelForMaskedLM.from_pretrained(model_id, trust_remote_code=
True
)

text =
f"The capital of France is
{tok.mask_token}
."
enc = tok(text, return_tensors=
"pt"
)
with
torch.no_grad():
    logits = mlm(**enc).logits
pos = (enc[
"input_ids"
][
0
] == tok.mask_token_id).nonzero()[
0
].item()
print
([tok.decode([t]).strip()
for
t
in
logits[
0
, pos].topk(
5
).indices.tolist()])
# -> ['Paris', 'Strasbourg', 'Paris', 'Lyon', 'Versailles']

对于下游任务,加载编码器主体并附加自己的头部(分类、token分类、回归、检索):

code
from
transformers
import
AutoModel

body = AutoModel.from_pretrained(model_id, trust_remote_code=
True
)

如果GPU支持,请使用Flash Attention 2以获得最高效率:

code
pip install flash-attn

为您的任务进行微调

基础编码器为您提供通用的表示形式,而非任务输出。因此您需要针对每个任务对其进行微调。我们的微调教程将指导您如何在8k上下文的长法律文档上进行微调。

开始使用LFM2.5-Encoders

这两个编码器均为开放权重,目前已在Hugging Face上发布:

  • 下载:在Hugging Face上获取LFM2.5-Encoder-230M和LFM2.5-Encoder-350M。
  • 尝试:无需任何设置,直接在浏览器中运行上方演示。
  • 微调:使用我们的微调教程将编码器适配到您的任务。

我们迫不及待想看到您能构建出什么。

引用

如果您使用本工作,请引用发布博客:

code
@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},
}

本文提及的模型 5

本文提及的空间 5

本文提及的论文 2

本文提及的集合 1

社区

hashbender

约4小时前

[2

CPU性能图表中没有说明具体使用的是哪种CPU。那个在8k上下文时耗时28秒的测试,是使用苹果硅芯片的单序列处理,还是多核x86处理器?这对您描述的使用场景非常重要,因为实际中"扫描合同"通常意味着要扫描四万个合同。

另一个问题是trust_remote_code=True参数。目前还没有ORT或OpenVINO的实现路径,因此按照本文操作的用户都只能在CPU上使用PyTorch的eager模式。我敢打赌这28秒中相当一部分时间消耗在eager模式而非架构本身。是否有计划支持int8量化或ONNX导出?这些是需要全天候运行这些模型的用户真正需要的。

我们在Tenki使用裸金属EPYC服务器配合Firecracker微虚拟机。我可以使用16、64和128个vCPU运行encoder_eval和您的延迟测试,并发布结果。无论"您已有的硬件"是指笔记本还是服务器,这些数据都值得了解。

补充说明:政策合规检查演示是我最愿意付费购买的功能。目前还没有好的方案可以在与智能体处于相同沙箱环境的CPU上运行防护机制,因此要么调用外部API,要么就无法执行。

查看翻译

回复

编辑

预览

通过拖拽、粘贴或点击此处上传图片、音频和视频

点击此处上传图片

评论

· 注册或登录以发表评论

  • +23

/think