用 LFM3 构建专用多模态模型
Build specialized multimodal models with LFM3
LFM3 提供文本、视觉、音频、omni 和决策等六种 2B 参数级模型,基于统一骨干,可用于构建专用多模态智能体。相比 LFM2 家族,LFM3-1.7B 用少 35% 参数超越 LFM2.5-2.6B;所有模型今天在 Hugging Face 开放权重。
LFM3以统一骨干提供六种2B级模态模型,可在单GPU微调并端侧部署,降低专用多模态智能体构建门槛。
LFM3 是我们新一代的 Liquid Foundation Models (LFMs),旨在成为专用智能的起点。它将文本、视觉、音频、全模态(omni)和决策模型整合到一个共享骨干网络上,所有模型均处于 2B 参数范围。这意味着您可以为特定模态选择模型,在单块 GPU 上使用自有数据进行微调,并将其部署在应用程序运行的环境中。
与之前的 LFM2 系列相比,LFM3 带来了四项主要变化:
- 每参数能力更强: 新的三混合(tri-hybrid)架构和训练方案使 LFM3-1.7B 在参数少 35% 的情况下,性能超越了 LFM2.5-2.6B。
- 所有模态共享一个骨干网络: 六个 2B 级模型(文本、视觉、音频、全模态和决策)均基于 LFM3-1.7B-Base 训练,其中包括我们的首个全模态模型以及视觉模型的视频输入功能。
- 专为边缘设备打造: 文本模型在 4-bit 精度下仅占用约 1 GB 空间,自研的视觉和音频编码器加速了处理速度,文本模型的 256K 上下文窗口允许智能体在设备端运行。
- 专为定制化设计: 每个模型均可在单块 GPU 上进行微调,因此您可以将其适配到特定的数据、术语和部署环境中。
我们如何构建更具表达力的骨干网络
LFM2 证明了短卷积和注意力的混合可以在不牺牲质量的情况下在设备端快速运行。对于 LFM3,我们利用硬件在环(hardware-in-the-loop)架构搜索,针对需要更高每参数能力和长上下文快速推理的智能体用例重新设计了该架构。搜索范围现在涵盖 14 种设备和后端组合,从手机和 Raspberry Pi 5 到笔记本电脑、云 CPU、GPU 以及 Qualcomm Hexagon NPU。
LFM3-1.7B-Base 拥有 24 层,并包含四项主要变化:
- 三混合层组合: 13 个门控短卷积层、5 个滑动窗口注意力(SWA)层(窗口大小为 256 个 token)以及 6 个全局注意力层。卷积的核大小从 LFM2 的 3 增加到 7。
- 逐头门控注意力: 一个 sigmoid 门控对每个头的输出进行缩放,使得当某个头没有贡献时它可以关闭。这有助于抑制损害量化的激活异常值。
- 部分 RoPE: 全局注意力层仅旋转每个头中频率最高的一半,因此另一半无论距离如何都基于内容匹配。SWA 层保留完整的 RoPE。
- 三明治归一化(Sandwich norm): 每个块对其输入和输出都进行归一化,以保持激活值的良好缩放。
其优势在长上下文中体现出来。在边缘设备上,每参数来看,LFM3-1.7B 在短提示词上与 LFM2-1.2B 表现相当,而在 8K token 的上下文中,其速度大约快 25%。LFM3-1.7B-Base 在 22T token 上进行了预训练,使用了与 LFM2.5-8B-A1B 相同的 128K 词汇表。最后的 3.5T token 是一个中期训练阶段,使用经过筛选的数据,其中包含更大比例的智能体轨迹和工具调用,这将上下文窗口扩展到了 256K token。
一个骨干网络支持六个模型
每个 LFM3 模型都源自 LFM3-1.7B-Base。您无需运行一个大型通用模型,而是选择适合您输入的那个,进行定制,并在设备端运行。
| 模型 | 输入 | 输出 | 基于 |
|---|---|---|---|
| LFM3-1.7B | 文本 | 文本 | LFM3-1.7B-Base |
| LFM3-VL-2B | 文本、图像、视频 | 文本 | LFM3 骨干网络 + 视觉编码器 |
| LFM3-Audio-2B | 文本、音频 | 文本、语音 | LFM3 骨干网络 + 音频编码器、音频解码器和 LiquidCodec |
| LFM3-Omni-2B | 文本、图像、视频、音频 | 文本、语音 | LFM3 骨干网络 + 视觉和音频编码器及音频解码器 |
| d1-2B | 文本、图像、视频 | 校准后的答案 | LFM3-VL-2B |
| d1-omni-2B | 文本、图像、视频、音频 | 校准后的答案 | LFM3-Omni-2B |
视觉和音频模型还获得了两个新的自研编码器:
- 视觉编码器:它结合了卷积和注意力机制,计算量比之前 LFM VL 模型中使用的 SigLIP2 编码器少 3 倍。我们拥有 1.64 亿参数的编码器在准确率上与 Qwen3.5-2B 的视觉编码器相当,同时所需的 FLOPs 少 2.2 倍(两者均使用相同的 LFM2.5-230M 语言骨干网络进行测量)。对于视频,它将每对采样帧嵌入到一个时间切片中,将时间序列长度减半。
- 音频编码器和 LiquidCodec:音频编码器混合了滑动窗口注意力和短卷积,并且是完全因果的,因此模型可以在您说话时进行预填充,首词元延迟低至 50 毫秒。LiquidCodec 是我们新的音频分词器,在 Apple M4 Max 的单 CPU 线程上,能以约 87 倍实时速度将生成的词元转换为语音,并支持流式解码。
如何使用 LFM3 模型
每个模型都在 transformers 中运行。以下代码片段来自模型卡片,其中还列出了每个模型支持的其他推理引擎。
LFM3-1.7B
当您需要本地智能体、工具调用、结构化输出或用于特定领域微调的基础模型时,请选择 LFM3-1.7B。它经过后训练,可在 Hermes Agent、Pi 和 OpenClaw 等智能体框架中运行。与它的前身 LFM2.5-2.6B 相比,它的参数减少了 35%,但在智能体任务上表现更优:在 WebArena-Verified 上,其得分为 38.42,而前身为 3.02,甚至在浏览器和业务应用中的长任务上甚至超过了 Qwen3.5-9B。您可以在 LFM3-1.7B 模型卡片 中找到更多详细信息。
要运行 LFM3-1.7B,请安装 transformers 的最新版本:
pip install -U transformers
然后加载并运行模型:
from transformers import pipeline
generator = pipeline(
"text-generation",
model="LiquidAI/LFM3-1.7B",
trust_remote_code=True,
)
messages = [{"role": "user", "content": "What is C. elegans?"}]
output = generator(
messages,
do_sample=True,
temperature=0.1,
top_k=50,
repetition_penalty=1.1,
max_new_tokens=2048,
)
print(output[0]["generated_text"][-1]["content"])
有关本地智能体设置,请参阅 智能体框架指南。
LFM3-VL-2B
当您需要设备端视觉理解时,请选择 LFM3-VL-2B。它是第一个接受视频输入的 LFM 视觉模型;它在回答之前会逐步推理,并能够定位物体并推理其位置关系,为机器人技术奠定了坚实基础。与 LFM2.5-VL-3B 相比,它的参数更少(1.9B 对 3.1B),但将 62 个视觉基准测试的平均分从 57.6 提高到 71.4,与体积大六倍以上的 Gemma 4 12B 相当。您可以在 LFM3-VL-2B 模型卡片 中找到更多详细信息。
要运行 LFM3-VL-2B,请安装带有视觉依赖项的 transformers>=5.21.0:
pip install "transformers>=5.21.0" torch torchvision pillow
然后加载并运行模型:
import torch
from transformers import AutoModelForImageTextToText, AutoProcessor
model_id = "LiquidAI/LFM3-VL-2B"
model = AutoModelForImageTextToText.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://placecats.com/300/200"},
{"type": "text", "text": "Describe this image."},
],
}
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
output_ids = model.generate(
**inputs,
do_sample=True,
temperature=0.1,
top_k=50,
repetition_penalty=1.1,
max_new_tokens=16384, # generate() needs an explicit limit; reasoning can be long
)
generated_ids = output_ids[:, inputs["input_ids"].shape[1] :]
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])
有关工具调用、工具搜索以及使用 llama.cpp 进行设备端推理,请参阅 LFM3-VL-2B 模型卡片。
LFM3-Audio-2B
当您需要语音聊天、语音识别、语音合成或在笔记本电脑或边缘设备上跨 18 种语言进行翻译时,请选择 LFM3-Audio-2B。它以文本或音频作为输入,并以文本、语音或两者兼有的形式响应,并且可以将语音请求转换为工具调用。与 LFM2.5-Audio-1.5B 相比,它使用了新的自研音频编码器和语音编解码器,语音质量更高(UTMOSv2 3.83 对 3.22),并增加了音频理解、通用音频推理和工具调用功能。您可以在 LFM3-Audio-2B 模型卡片 中找到更多详细信息。
要运行 LFM3-Audio-2B,请安装 transformers>=5.20.2 及其音频依赖项:
pip install "transformers>=5.20.2" torch accelerate librosa soundfile
直接从 Hugging Face Hub 加载模型和处理器:
import torch
import soundfile as sf
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "LiquidAI/LFM3-Audio-2B"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.bfloat16 if device == "cuda" else torch.float32
model = AutoModelForMultimodalLM.from_pretrained(
model_id, dtype=dtype, device_map=device, trust_remote_code=True
).eval()
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
codec = processor.audio_tokenizer.to(device=device).eval()
然后大声提问,即可获取文本和语音形式的回复:
conversation = [
{"role": "system", "content": "Respond with interleaved text and audio."},
{"role": "user", "content": [{"type": "audio", "audio": "question.wav"}]},
{"role": "assistant", "content": "<|mixed_start|>"},
]
inputs = processor.apply_chat_template(
conversation,
continue_final_message=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=1024,
audio_temperature=1.0,
audio_top_k=128,
audio_repetition_penalty=1.1,
audio_repetition_window=4096,
return_dict_in_generate=True,
)
text = processor.decode(
outputs.sequences[0, inputs["input_ids"].shape[1]:],
skip_special_tokens=True,
)
waveform = codec.decode(
outputs.audio_codes[:1, :, :outputs.audio_lengths[0]]
).audio_values[0] # 24 kHz
print(text)
sf.write("reply.wav", waveform.float().cpu().numpy(), 24_000)
请参阅 LFM3-Audio-2B 模型卡片,了解实时语音识别、语音合成、音频理解和工具调用。
LFM3-Omni-2B
当你需要一个端侧模型来替代独立的 ASR 模型、视觉语言模型、LLM 和 TTS 模型,实现看、听和回复功能时,请选择 LFM3-Omni-2B。它可以回答关于图像的语音问题,同时观看和收听视频,并将其看到和听到的内容转化为工具调用。这是我们的首个全模态模型,支持文本、视觉和音频输入,以及文本和语音输出,并保留了独立 LFM3 模型的核心功能,包括视觉问答、语音识别、语音合成和指令遵循。与 LFM3-Audio-2B 一样,它通过 LiquidCodec 进行语音输出,该机制将生成的令牌转化为语音的速度快于实时,因此语音回复会在模型生成时流式传输。在视听视频理解方面,它在 Daily-Omni、WorldSense 和 AV-SpeakerBench 上击败了参数高达 10.7B 的模型,例如 Qwen2.5-Omni-7B。你可以在 LFM3-Omni-2B 模型卡片 中找到更多细节。
要运行 LFM3-Omni-2B,请安装 transformers>=5.20.2 及其视觉和音频依赖项:
pip install "transformers>=5.20.2" torch torchvision torchcodec accelerate pillow librosa soundfile
import torch
import soundfile as sf
from transformers import AutoModelForMultimodalLM, AutoProcessor
model_id = "LiquidAI/LFM3-Omni-2B"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.bfloat16 if device == "cuda" else torch.float32
model = AutoModelForMultimodalLM.from_pretrained(
model_id, dtype=dtype, device_map=device, trust_remote_code=True
).eval()
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
codec = processor.audio_tokenizer.to(device=device).eval()
然后通过语音询问关于照片的问题:
conversation = [
{
"role": "system",
"content": "Answer questions about the provided image. Base every answer only on what can be seen. Respond with text.",
},
{
"role": "user",
"content": [
{"type": "image", "image": "photo.jpg"},
{"type": "audio", "audio": "question.wav"},
],
},
]
inputs = processor.apply_chat_template(
conversation,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(device)
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=1024, generation_mode="text")
print(processor.decode(
outputs.sequences[0, inputs["input_ids"].shape[1]:outputs.sequence_lengths[0]],
skip_special_tokens=True,
))
请参阅 LFM3-Omni-2B 模型卡片,了解语音输出、带原声的视频以及工具调用。
d1-2B 和 d1-omni-2B
当你需要快速的结构化决策而非生成文本时,请选择 d1 模型。给它们一个情境(支持工单、发票、应用屏幕、照片、语音留言)和一系列问题,它们会在单次前向传播中回答所有问题,每个答案都带有校准的概率。除了是/否、选择和评分之外,它们现在还可以指向对象、从文档中读取数值、以范围估算数字,并选择所有适用的选项。你可以在 d1-2B 和 d1-omni-2B 的模型卡片中找到更多细节。
在两个 d1 模型之间:
- d1-2B:适用于文本、图片和视频。它用三分之一的参数取代了 d1-3B,并在我们所有的四个决策套件中得分更高,例如在 ImajevBench 上得分为 75.5,而 d1-3B 为 64.0。
- d1-omni-2B:当你的输入包含音频时选择它。如果你用语音而不是文字提问,它几乎保留了所有的准确性。
要运行 d1-2B,请安装 transformers>=5.19 及其视觉依赖项:
pip install "transformers>=5.19" torch torchvision pillow
然后加载 d1-2B,并在单次传递中询问关于一个支持工单的多个问题:
import torch
from transformers import AutoModel
device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
dtype = torch.float32 if device == "cpu" else torch.bfloat16
model = AutoModel.from_pretrained("LiquidAI/d1-2B", trust_remote_code=True, dtype=dtype).to(device)
# Several named questions over one state, answered in one pass
questions = {
"refund": {"type": "noul", "instructions": "Is the customer asking for a refund?"}, # yes/no: P(yes)
"team": {"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"billing": "Charges, refunds, invoices", "shipping": "Delivery and parcels",
"technical": "App or site faults"}},
"topics": {"type": "choice", "multiple": True, "instructions": "Which topics does the message raise?",
"criteria": {"billing": "Payments and charges", "delivery": "Shipping and parcels",
"login": "Signing in to the account"}},
"urgency": {"type": "score", "instructions": "How urgent is this ticket?", "criteria": ["low", "medium", "high"]},
}
out = model.system_one("I was charged twice and my parcel never arrived. Please refund one charge.", questions)
a = out["answers"]
urgency = a["urgency"]["legend"][str(int(a["urgency"]["score"]))]
print(round(a["refund"]["noul"], 2), a["team"]["choice"], a["topics"]["choices"], urgency)
# 1.0 billing ['billing', 'delivery'] medium
为简洁起见,我们仅包含 d1-2B 的示例。请参阅 d1-omni-2B 模型卡片 了解音频片段和语音问题。
针对你的任务微调 LFM3
LFM3 专为定制化而设计。前沿模型是强大的通用模型,但不一定是你使用场景下的专家。LFM3 将额外的容量打包进一个小型、快速的模型中,因此简短的微调可以使其成为你任务上的可靠专家,使用你的数据、术语和工具。由于它很小,你可以将微调后的模型部署在你的应用程序运行的地方,从设备到私有基础设施再到云端。
每个模型都可以在单个 GPU 上进行微调,这些笔记本将带你完成文本、视觉、音频和全模态模型的完整任务,从数据准备到评估。
| 模型 | 方法 | 任务 | 笔记本 |
|---|---|---|---|
| LFM3-1.7B | SFT | 从杂乱文档中提取结构化 JSON | 在 Colab 中打开 |
| LFM3-1.7B | DPO | 根据检索到的文档回答,或拒绝回答 | 在 Colab 中打开 |
| LFM3-1.7B | GRPO | 在拥有 108 个工具的电话应用中调用正确的工具 | 在 Colab 中打开 |
| LFM3-1.7B | CPT | 从原始文本中学习新语言(土耳其语) | 在 Colab 中打开 |
| LFM3-VL-2B | SFT | 将收据照片读取为 JSON | 在 Colab 中打开 |
| LFM3-VL-2B | GRPO | 将公式图像转录为 LaTeX | 在 Colab 中打开 |
| LFM3-Audio-2B | SFT | 将语音智能家居指令映射为函数调用 | 在 Colab 中打开 |
| LFM3-Audio-2B | SFT | 教会模型新的声音 | 在 Colab 中打开 |
| LFM3-Omni-2B | SFT | 将语音智能家居指令映射为函数调用 | 在 Colab 中打开 |
| LFM3-Omni-2B | SFT | 回答关于医学图像的语音问题 | 在 Colab 中打开 |
示例:教会 LFM3 行动
我们将 LFM3-VL-2B 适配为三个互补的机器人模型,用于编排、导航和操作。编排器通过工具调用操作机械臂:它通过指向来定位物体,使用深度工具进行测量,调用运动规划器,并在随后的相机图像中检查结果。导航器使用最近的 RGB 观察结果遵循路线描述,仅用五个 token 预测空间目标和航点轨迹。操作 VLA 在单次前向传播中将图像、语言和机器人状态映射为八步连续动作块。在 15 种本体上联合训练后,该 VLA 在四个 LIBERO 套件中实现了 96.2% 的平均成功率,在 RoboCasa-GR1 桌面任务中达到 45.7%,并在配备 TensorRT FP16 的 Jetson AGX Orin 上以低于 50 毫秒的时间生成动作块。这些结果凸显了 LFM3-VL-2B 作为机器人紧凑基础模型的价值,涵盖了从高层规划到嵌入式硬件上的实时动作生成的低层控制。
观看 LFM3-VL-2B 处理感知、导航和操作的演示视频。
开始使用 LFM3
所有 LFM3 模型均为开放权重,现已在 Hugging Face 上可用:
- 下载:Hugging Face 上的 LFM3 集合,包括用于您自行后训练的 LFM3-1.7B-Base。
- 微调:使用我们的微调笔记本将 LFM3 适配到您的任务。
- 在您的框架中使用:遵循我们的指南,了解如何运行本地代理,如 OpenClaw、Hermes Agent 和 Pi。
我们迫不及待想看看您能构建出什么。
引用
如果您使用本工作,请引用发布博客:
@article{liquidAI2026LFM3,
author = {Liquid AI},
title = {Introducing LFM3: Every Modality for Specialized Intelligence},
journal = {Liquid AI Blog},
year = {2026},
note = {www.liquid.ai/blog/lfm3},
}
来源:Hugging Face Blog · huggingface.co


