跳到正文
实时
Hugging Face Blog·· 18 天前精选76

Liquid AI 发布 LFM3 系列:同一 2B 骨干派生文本、视觉、音频、全模态与决策模型

Build specialized multimodal models with LFM3

要点速览

Liquid AI 发布 LFM3 新一代 Liquid Foundation Models,以 LFM3-1.7B-Base 为共享骨干派生六个 2B 级模型,覆盖文本、视觉、音频、全模态和决策,全部在 Hugging Face 开放权重。

Why it matters

Liquid AI 用同一 2B 级骨干派生六个模态模型,并给出单卡微调与端侧部署路径,可据此判断小模型专用化路线。

正文 · AI 翻译

LFM3 是我们新一代的液体基础模型 (LFMs),旨在成为专业智能的起点。它将文本、视觉、音频、全模态和决策模型集成到一个共享的骨干上,所有模型都在 2B 参数范围内。这意味着你可以选择适合你模态的模型,在单个 GPU 上使用你自己的数据微调,并在你的应用程序运行的地方部署它。

与我们的先前 LFM2 系列相比,LFM3 带来了四个主要变化:

  • 每个参数更高的能力:新的三混合架构和训练配方使 LFM3-1.7B 在使用 35% 更少参数的情况下优于 LFM2.5-2.6B。
  • 所有模态在一个骨干上:六个 2B 级别的模型(文本、视觉、音频、全模态和决策)从 LFM3-1.7B-Base 训练,包括我们第一个全模态模型和用于我们视觉模型的视频输入。
  • 为边缘设备设计:文本模型在 4 位精度下大约占用 1 GB,新的内部视觉和音频编码器加快了处理速度,文本模型的 256K 上下文窗口允许代理在设备上运行。
  • 专为专业化设计:每个模型都在单个 GPU 上微调,因此你可以将其适应你的数据、术语和部署环境。

我们如何构建了一个更表达性的骨干

LFM2 表明短卷积和注意力的混合可以在设备上快速运行而不会牺牲质量。对于 LFM3,我们使用我们的硬件在环架构搜索来重新设计该架构,以适应代理用例,这些用例需要每个参数更高的能力和在长上下文中快速推理。搜索现在涵盖了 14 种设备和后端组合,从手机和 Raspberry Pi 5 到笔记本电脑、云 CPU、GPU 和 Qualcomm Hexagon NPU。

lfm3-1.7b-architecture

LFM3-1.7B-Base 有 24 层和四个主要变化:

  1. 三混合层混合:13 个门控短卷积、5 个滑动窗口注意力 (SWA) 层,窗口大小为 256 个标记,以及 6 个全局注意力层。卷积使用 7 个内核大小,比 LFM2 中的 3 个要大。
  2. 逐头门控注意力:一个 Sigmoid 门控缩放每个头的输出,因此当它没有要添加的内容时,头可以关闭。这可以帮助抑制对量化有害的激活异常值。
  3. 部分 RoPE:全局注意力层只旋转每个头中最高频的一半,另一半根据内容匹配,而不管距离如何。SWA 层保持完整的 RoPE。
  4. 三明治规范:每个块都对其输入和输出进行归一化,以保持激活值适当缩放。

收益体现在长上下文中。每个参数,LFM3-1.7B 在边缘设备上对短提示与 LFM2-1.2B 相当,并且在上下文中有 8K 个标记时它大约快 25%。LFM3-1.7B-Base 是在 22T 个标记上预先训练的,与 LFM2.5-8B-A1B 具有相同的 128K 词汇表。最后的 3.5T 个标记是在经过筛选的数据上的中间训练阶段,其中代理跟踪和工具调用的比例更大,这也将上下文窗口扩展到 256K 个标记。

一个骨干用于六个模型

每个 LFM3 模型都分支自 LFM3-1.7B-Base。与其运行一个大型通用模型,不如选择适合你输入的模型,进行定制,并在设备上运行。

lfm3-post-training

模型 输入 输出 基于
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 倍更少的计算量。我们的 164M 参数编码器在准确性上与 Qwen3.5-2B 的视觉编码器相当,同时需要 2.2 倍更少的 FLOPs(使用相同的 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

当您需要一个能在设备上看到、听到并回复的模型时,请选择 LFM3-Omni-2B,以替代独立的 ASR 模型、视觉语言模型、LLM 和 TTS 模型。它可以回答有关图像的语音问题,一起观看和收听视频,并将所见所闻转换为工具调用。这是我们首个全功能模型,支持文本、视觉和音频输入,以及文本和语音输出,并保留了独立的 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 对 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观测结果跟随路线描述,仅用五个标记预测空间目标和路径轨迹。操作VLA将图像、语言和机器人状态映射到单个前向传递的八个步骤的连续动作块中。跨15个化身联合训练的VLA在四个LIBERO套件中平均成功率为96.2%,在RoboCasa-GR1桌面任务中为45.7%,在Jetson AGX Orin上使用TensorRT FP16时,在50毫秒内生成动作块。这些结果突出了LFM3-VL-2B作为机器人技术的紧凑型基础,涵盖高级规划到低级控制,并在嵌入式硬件上实时生成动作。

观看LFM3-VL-2B在这个演示视频中处理感知、导航和操作。

Video title

开始使用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