LFM2液态基础模型

1. 背景与动机

大语言模型(LLM)在各领域取得突破性进展,但高效设备端部署仍是核心挑战。传统Transformer架构在移动端面临三大瓶颈:

瓶颈类型具体问题影响
内存占用全参数激活,KV缓存随序列长度线性增长设备存储不足
计算延迟注意力复杂度响应时间长
功耗效率密集矩阵运算不适合嵌入式CPU续航焦虑

Liquid AI提出的LFM2(Liquid Foundation Models 2)采用了硬件在环架构搜索(Hardware-in-the-loop architecture search)策略,让模型设计直接针对目标硬件进行优化。1

2. 核心架构设计

2.1 硬件感知架构搜索

传统模型设计流程是”先设计架构,后优化部署”,而LFM2采用逆向思维:

# 硬件在环搜索的核心思想
def hardware_aware_search(target_device):
    """针对目标设备联合优化模型架构"""
    # 1. 在目标硬件上建立性能模型
    perf_model = ProfileHardware(target_device)
    
    # 2. 定义搜索空间
    search_space = {
        'backbone_type': ['transformer', 'convolution', 'state_space'],
        'attention_type': ['full', 'linear', 'grouped'],
        'moe_config': {'num_experts': [8, 16, 32], 'top_k': [2, 4]},
        'hidden_dim': [256, 512, 1024, 2048]
    }
    
    # 3. 联合优化(架构参数 + 部署配置)
    # 4. 在真实硬件上验证性能
    return optimized_model

关键创新点:

  • 联合优化:同时考虑模型质量与硬件效率
  • 真实测量:在Snapdragon等真实芯片上测量延迟和内存
  • 帕累托前沿:找到质量-效率的最优权衡

2.2 混合主干架构

LFM2的核心设计是**门控短卷积 + 分组查询注意力(GQA)**的混合架构:

┌─────────────────────────────────────────────────────────────┐
│                    LFM2 混合主干                            │
├─────────────────────────────────────────────────────────────┤
│  Input Token Sequence                                       │
│       ↓                                                     │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    │
│  │ Gated Conv  │    │ Gated Conv  │    │ GQA Layer   │    │
│  │ (3×1, k=3) │ → │ (3×1, k=3) │ → │ (h heads)   │    │
│  └─────────────┘    └─────────────┘    └─────────────┘    │
│       ↓                                                     │
│  ┌─────────────┐    ┌─────────────┐    ┌─────────────┐    │
│  │ SiLU激活    │    │ SiLU激活    │    │ SwiGLU     │    │
│  │ +残差连接   │    │ +残差连接   │    │ +残差连接   │    │
│  └─────────────┘    └─────────────┘    └─────────────┘    │
│       ↓                                                     │
│  Output Representations                                      │
└─────────────────────────────────────────────────────────────┘

门控短卷积模块

门控短卷积是LFM2区别于标准Transformer的关键组件:

// 门控短卷积的前向传播
template <typename T>
void gated_conv_forward(
    const T* input,      // [batch, seq_len, hidden_dim]
    T* output,
    const T* conv_w,    // 卷积权重 [kernel_size, hidden_dim, hidden_dim]
    const T* gate_w,    // 门控权重 [hidden_dim, hidden_dim]
    int batch, int seq_len, int hidden_dim, int kernel_size
) {
    // 1. 深度可分离卷积:捕获局部模式
    for (int b = 0; b < batch; ++b) {
        for (int i = kernel_size - 1; i < seq_len; ++i) {
            T conv_out = 0;
            for (int k = 0; k < kernel_size; ++k) {
                int idx = i - k;
                for (int d = 0; d < hidden_dim; ++d) {
                    conv_out += input[b*seq_len*hidden_dim + idx*hidden_dim + d] 
                             * conv_w[k*hidden_dim + d];
                }
            }
            
            // 2. 门控机制:控制信息流
            T gate = sigmoid(compute_gate(input, gate_w, i, hidden_dim));
            output[b*seq_len*hidden_dim + i*hidden_dim : 
                   (b+1)*seq_len*hidden_dim] = conv_out * gate;
        }
    }
}

设计优势

  • 局部建模能力强:适合处理连续 token 序列中的局部依赖
  • 计算效率高:相比全连接层,参数量大幅减少
  • 与注意力互补:注意力捕获全局关系,卷积捕获局部模式

2.3 分组查询注意力(GQA)

LFM2采用GQA来平衡表达能力和计算效率:

注意力变体Key头数Value头数表达能力计算成本
Multi-Head (MHA)最强
Multi-Query (MQA)11中等
Grouped-Query (GQA)平衡

LFM2-2.6B使用配置:

  • Query头数:
  • Key/Value头数:
  • 压缩比:4倍

3. MoE变体:LFM2-8B-A1B

3.1 架构概述

LFM2-8B-A1B是LFM2系列的稀疏MoE变体,采用”密集+稀疏”混合模式:

┌─────────────────────────────────────────────────────────────┐
│                 LFM2-8B-A1B 架构                            │
├─────────────────────────────────────────────────────────────┤
│  Layer 1-N(前2层):全专家激活(Dense)                      │
│  ┌─────────────────────────────────────────────────┐       │
│  │  Input → GatedConv → GQA → Output (N=2层)        │       │
│  └─────────────────────────────────────────────────┘       │
│                      ↓                                      │
│  Layer 3-N(剩余层):稀疏MoE                                │
│  ┌─────────────────────────────────────────────────┐       │
│  │  Router → Top-4 Expert Selection                 │       │
│  │       ↓        ↓        ↓        ↓              │       │
│  │  ┌─────┐  ┌─────┐  ┌─────┐  ┌─────┐             │       │
│  │  │Exp 1│  │Exp 2│  │Exp 3│  │Exp 4│  (32 experts)│    │
│  │  └─────┘  └─────┘  └─────┘  └─────┘             │       │
│  │       ↓                                         │       │
│  │  Weighted Sum → Output                          │       │
│  └─────────────────────────────────────────────────┘       │
└─────────────────────────────────────────────────────────────┘

3.2 规范化Sigmoid门控机制

LFM2的专家路由采用规范化sigmoid门控(Normalized Sigmoid Gating):

class NormalizedSigmoidGating(nn.Module):
    """LFM2 MoE的门控机制"""
    def __init__(self, hidden_dim, num_experts, top_k):
        super().__init__()
        self.hidden_dim = hidden_dim
        self.num_experts = num_experts
        self.top_k = top_k
        
        # 门控投影
        self.gate = nn.Linear(hidden_dim, num_experts, bias=False)
        
        # 自适应路由偏置(可学习)
        self.routing_bias = nn.Parameter(torch.zeros(num_experts))
        
    def forward(self, x):
        """
        x: [batch, seq_len, hidden_dim]
        """
        batch_size, seq_len, _ = x.shape
        
        # 1. 计算原始门控分数
        raw_logits = self.gate(x)  # [B, S, E]
        
        # 2. 添加可学习路由偏置(平衡专家负载)
        logits = raw_logits + self.routing_bias
        
        # 3. 规范化Sigmoid门控(核心创新)
        #    相比softmax,更适合稀疏激活
        probs = torch.sigmoid(logits)  # [B, S, E]
        
        # 4. Top-K选择 + 负载均衡正则化
        topk_probs, topk_indices = torch.topk(probs, self.top_k, dim=-1)
        
        # 5. 归一化
        topk_probs = topk_probs / topk_probs.sum(dim=-1, keepdim=True)
        
        return topk_probs, topk_indices

规范化Sigmoid门控的优势

特性Softmax门控Sigmoid门控
输出分布竞争性(和为1)非竞争性(可多激活)
专家利用率可能不均衡更易平衡
梯度特性赢家通吃更平滑
稀疏性隐式稀疏显式稀疏

3.3 温度化解耦Top-K知识蒸馏

训练LFM2-8B-A1B采用温度化解耦Top-K知识蒸馏策略:

class TemperedDecoupledKD(nn.Module):
    """温度化解耦知识蒸馏"""
    def __init__(self, temperature=2.0, alpha=0.5):
        self.temp = temperature
        self.alpha = alpha
        
    def compute_loss(self, student_logits, teacher_logits, 
                     student_router, teacher_router):
        # 1. 响应蒸馏损失
        soft_loss = F.kl_div(
            F.log_softmax(student_logits / self.temp),
            F.log_softmax(teacher_logits / self.temp),
            reduction='batchmean'
        ) * (self.temp ** 2)
        
        # 2. 解耦路由器损失
        # 路由器预测与实际激活解耦
        hard_loss = F.cross_entropy(student_router, teacher_router)
        
        # 3. 温度化组合
        total_loss = self.alpha * soft_loss + (1 - self.alpha) * hard_loss
        return total_loss

4. 训练策略

4.1 数据规模与配比

阶段数据规模配比策略
预训练10-12T tokens多领域均衡采样
课程学习渐进式难度提升短文本→长文本,简单→复杂
后训练精选高质量数据SFT + 偏好优化

4.2 三阶段后训练流程

┌─────────────────────────────────────────────────────────────┐
│              LFM2 三阶段后训练流程                           │
├─────────────────────────────────────────────────────────────┤
│  Stage 1: SFT (Supervised Fine-Tuning)                      │
│  ─────────────────────────────────────────────────────      │
│  目标: 基础指令跟随能力                                       │
│  数据: 100K-1M 指令-响应对                                    │
│  loss = -Σ y log P(y|x)                                      │
│                                                              │
│  Stage 2: Length-Normalized Preference Optimization          │
│  ─────────────────────────────────────────────────────      │
│  目标: 对齐人类偏好                                          │
│  方法: 长度归一化防止长度作弊                                  │
│  loss = -log σ( (r_+/L_+ - r_-/L_-) / τ )                   │
│                                                              │
│  Stage 3: Model Merging (不确定时使用)                        │
│  ─────────────────────────────────────────────────────      │
│  目标: 结合多个模型的优点                                     │
│  方法: 任务向量平均 / RegMean / TIES                          │
└─────────────────────────────────────────────────────────────┘

4.3 上下文长度

全系列LFM2模型支持32K上下文长度,采用:

  • 位置编码:RoPE(Rotary Position Embedding)
  • 注意力窗口:滑动窗口 + 全局注意力混合
  • 长度外推:YaRN或类似技术

5. 性能分析

5.1 推理效率对比

Snapdragon X Elite CPU上的基准测试结果:

模型参数量Prefill速度Decode速度内存占用
LFM2-1.2B1.2B45 tokens/s28 tokens/s2.4GB
LFM2-2.6B2.6B32 tokens/s18 tokens/s5.2GB
LFM2-8B-A1B8.3B total / 1.5B active28 tokens/s15 tokens/s3.8GB
Llama-3.2-3B3B (dense)22 tokens/s12 tokens/s6.2GB
Qwen2.5-3B3B (dense)20 tokens/s11 tokens/s6.0GB

关键发现:LFM2-8B-A1B在仅3.8GB内存下达到与6GB+ dense模型相当的性能。

5.2 质量基准

基准LFM2-2.6BLFM2-8B-A1BLlama-3.2-3BQwen2.5-3B
IFEval (指令遵循)79.56%86.2%81.4%83.7%
GSM8K (数学)82.41%89.3%85.2%87.1%
MMLU72.3%78.9%75.1%76.8%

5.3 CPU效率提升

LFM2相比同等规模基线的CPU推理加速

  • Prefill阶段:1.8-2.0× speedup
  • Decode阶段:1.6-1.9× speedup
  • 内存带宽利用率:提升约40%

6. 多模态扩展

6.1 LFM2-VL(视觉-语言)

架构:LFM2 backbone + 视觉编码器(SigLIP或CLIP)
输入:图像 + 文本
处理:
  1. 图像 → 分块 → SigLIP编码 → 视觉特征
  2. 文本 → LFM2 Tokenizer → 文本特征
  3. 跨模态注意力融合
  4. LLM生成响应

6.2 LFM2-Audio(语音)

支持:

  • 语音识别(ASR)
  • 语音合成(TTS)
  • 语音到语音对话

6.3 LFM2-ColBERT(检索)

基于ColBERT的延迟交互检索范式,适合RAG场景。

7. 设备端Fine-Tuning

7.1 Nanos系列

LFM2-Nanos是针对特定领域fine-tuned的轻量版本:

变体领域典型用例
LFM2-Nano-Tool工具调用代码助手、RAG
LFM2-Nano-Math数学推理tutoring
LFM2-Nano-Code代码生成IDE集成

7.2 LoRA支持

LFM2原生支持LoRA适配:

from peft import LoraConfig, get_peft_model
 
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["gate", "attn"],  # 针对LFM2模块
    lora_dropout=0.05,
    bias="none"
)
 
lfm2_lora = get_peft_model(lfm2_base, lora_config)

8. 部署支持

8.1 ExecuTorch部署

# ExecuTorch导出示例
from executorch.exir import EdgeCompileConfig, to_edge
 
# 1. 量化
quantized_model = quantize_dynamic(lfm2_model)
 
# 2. 导出
exported_program = to_edge(
    compile(quantized_model)
)
 
# 3. 保存
exported_program.dump("lfm2-mobile.pte")

8.2 llama.cpp支持

LFM2已集成到llama.cpp,支持:

  • Metal GPU加速(macOS)
  • Vulkan加速(Android)
  • CPU原生推理

8.3 vLLM支持

# vLLM推理
from vllm import LLM, SamplingParams
 
llm = LLM(
    model="LiquidAI/LFM2-2.6B",
    tensor_parallel_size=1,  # 单卡部署
    gpu_memory_utilization=0.8
)
 
sampling_params = SamplingParams(temperature=0.7, max_tokens=512)
outputs = llm.generate(["Explain quantum computing:"], sampling_params)

9. 与其他高效LLM的对比

特性LFM2MobileLLMMambaRWKV
注意力机制GQAGQASSM线性注意力
局部建模门控卷积深度卷积SSMRNN
MoE支持
硬件感知设计
开源程度完全开源部分开源开源开源

10. 总结

LFM2代表了设备端LLM设计的新范式:

  1. 硬件在环:真正面向目标硬件的联合优化
  2. 混合架构:卷积+注意力+MoE的协同
  3. 效率革命:在CPU上实现2倍加速
  4. 开源生态:完整的部署工具链

这些设计思想对于未来端侧AI的发展具有重要参考价值。


参考资料

Footnotes

  1. Liquid AI, “LFM2: Liquid Foundation Models 2 Technical Report”, arXiv:2511.23404, 2025. https://arxiv.org/abs/2511.23404