LFM3-1.7B 微调教程:如何用 TRL SFT 在单 GPU 上从杂乱文档中提取结构化 JSON
- 基础模型
- 大模型
- 人工智能
- NLP
- 本地部署
【免费下载链接】LFM3-1.7B
LFM3-1.7B是 Liquid AI 开源的 1.7B 参数轻量级文本模型,官方明确定位它"专为快速单 GPU 微调而生"。本教程带你用TRL SFT(监督微调)把它改造成一台"文档抽取器":喂给它格式混乱的合同、邮件、扫描件文本,让它稳定输出干净的结构化 JSON。全程只需一块 12GB 显存的显卡,普通用户也能跑通。
一、LFM3-1.7B 模型概览:为什么选它做文档抽取
LFM3-1.7B 采用了独特的tri-hybrid(三混合)架构——把卷积、滑动窗口注意力、全局注意力组合在一起。这个设计直接决定了它的两个关键优势:
| 指标 | 数值 | 对文档抽取的意义 |
|---|---|---|
| 参数量 | 1.73B | 单卡即可微调、可部署到边缘设备 |
| 上下文长度 | 256K tokens | 长合同、长报告可以整篇喂进去 |
| 架构 | 24 层(13 卷积 + 5 滑动注意力 + 6 全局注意力) | 长文本处理成本低 |
| 词表 | 128,000 tokens | 覆盖 16 种语言,含中文 |
| 4-bit 精度内存占用 | 约 1 GB | 笔记本甚至手机都能推理 |
256K 上下文是"从杂乱文档中抽取信息"这类任务的天然优势——你不需要自己切分文档,直接整篇输入即可。架构细节可在 config.json 中查看,模型配置与训练配方见 README.md。
二、快速上手:环境安装与模型获取
2.1 硬件要求(单 GPU 参考值)
| 训练方式 | 建议显存 | 说明 |
|---|---|---|
| LoRA / QLoRA 微调 | 8–12 GB | 推荐新手方案 |
| 全参数微调 | 20–24 GB | 效果上限更高 |
| 推理部署(BF16) | 6 GB 左右 | 权重约 3.4 GB |
💡 以上为参考值,实际占用随序列长度和 batch size 变化。
2.2 安装依赖并获取模型
pip install transformers torch trl datasets accelerategit clone https://gitcode.com/hf_mirrors/LiquidAI/LFM3-1.7B克隆下来的仓库就是模型本身:权重文件 model.safetensors、分词器 tokenizer.json 和对话模板 chat_template.jinja 都在根目录,后续加载时直接指向这个目录即可。
三、准备训练数据:构建"杂乱文档 → 结构化 JSON"数据集
微调质量 80% 取决于数据。推荐准备200–2000 条高质量样本,格式为 JSONL,每行包含system(固定指令)和messages(用户输入杂乱文档 + 助手输出目标 JSON)。
示例数据(一行一条):
{"system": "从输入文档中提取实体,只输出 JSON,不要任何解释。", "messages": [{"role": "user", "content": "【发票】客户:深圳市xx科技有限公司 金额:¥12,380.00 日期:2026-08-01 税号:91440300…(OCR 文本,含噪点)"}, {"role": "assistant", "content": "{\"customer\": \"深圳市xx科技有限公司\", \"amount\": 12380.0, \"date\": \"2026-08-01\", \"tax_id\": \"91440300…\"}"}]}3 个数据技巧:
- system 指令写死 JSON schema——字段名、类型、取值范围都写清楚,模型会严格按格式输出;
- 输入要"真杂乱":保留错别字、换行混乱、OCR 噪声,这样微调后模型对真实脏数据才鲁棒;
- 输出必须是合法 JSON:先用
json.loads()批量校验一遍数据集,坏样本会直接带偏模型。
四、使用 TRL SFTTrainer 微调 LFM3-1.7B
4.1 先搞清楚 LFM3 的对话模板
LFM3 使用 ChatML 格式,并默认开启思考链(thinking)。微调 JSON 抽取时建议在模板中设置enable_thinking=False,避免思考过程干扰 JSON 输出;模板细节见 chat_template.jinja。
prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False, )官方同时提供 DPO、GRPO、CPT 三种 TRL 微调路径,本文聚焦最实用的 SFT。
4.2 SFT 训练配置(核心代码)
from trl import SFTConfig, SFTTrainer from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "./LFM3-1.7B" # 本地克隆目录 model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype="bfloat16", trust_remote_code=True ) tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) training_args = SFTConfig( output_dir="./output-lfm3-json-extractor", dataset_text_field="prompt", # 模板渲染后的完整文本 max_length=8192, # 文档长可调到 16K,注意显存 per_device_train_batch_size=2, gradient_accumulation_steps=4, num_train_epochs=3, learning_rate=2e-5, bf16=True, gradient_checkpointing=True, ) trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=train_dataset, args=training_args, ) trainer.train()4.3 关键超参数速查表
| 参数 | 推荐值 | 说明 |
|---|---|---|
learning_rate | LoRA 2e-4 / 全参 2e-5 | 全参学习率过大容易"学崩" |
max_length | 4096–16384 | 按文档实际长度定,直接影响显存 |
num_train_epochs | 2–4 | 小数据集宁少勿多 |
| 量化 | QLoRA 4-bit | 显存紧张时首选 |
gradient_checkpointing | True | 用算力换显存,几乎必开 |
五、验证效果与部署:采样参数别踩坑
训练完成后,用测试集文档跑一遍推理,检查三点:JSON 是否合法、字段是否齐全、空值时是否诚实输出null而不是编造。
生成参数直接使用官方推荐值(与 generation_config.json 一致):
outputs = model.generate( **inputs, do_sample=True, temperature=0.1, # 低温度 = 输出更稳定 top_k=50, repetition_penalty=1.1, max_new_tokens=2048, )⚠️ 文档抽取任务务必用
temperature=0.1的低温度采样,别用 1.0 以上的高随机性参数。
部署方面,微调后的模型可以直接用 vLLM / SGLang / Transformers 服务化,单卡吞吐量表现相当可观:
六、常见问题与调优技巧
| 问题 | 原因 | 解决 |
|---|---|---|
| 输出 JSON 夹杂解释文字 | system 指令不够强 | 指令中强调"只输出 JSON",并加 2–3 个 few-shot 示例 |
| 训练集表现好、测试集差 | 过拟合 | 减少 epoch、增加数据多样性、降学习率 |
| 显存不足 OOM | 序列太长 | 开gradient_checkpointing、改用 QLoRA、缩短max_length |
输出里出现<think>思考内容 | 模板默认开启思考 | 渲染时设置enable_thinking=False |
微调方式怎么选?官方按任务给出了明确建议:
| 训练方式 | 适用场景 |
|---|---|
| SFT | 从杂乱文档中提取结构化 JSON(本文) |
| DPO | 基于检索文档作答,或在信息不足时拒绝回答 |
| GRPO | 复杂工具调用(如 108 个工具的调度) |
七、总结
- LFM3-1.7B 是专为单 GPU 快速微调设计的 256K 上下文轻量模型,微调门槛极低;
- 数据是核心:固定 JSON schema 指令 + 真实脏文档 + 合法 JSON 输出;
- TRL
SFTTrainer+ QLoRA,12GB 显存即可跑通全流程; - 部署时用
temperature=0.1低采样参数,保证 JSON 输出的稳定性。
仓库关键文件索引:
| 文件 | 作用 |
|---|---|
| README.md | 微调方法与使用指南 |
| config.json | 模型架构与上下文配置 |
| chat_template.jinja | 对话模板(含思考链开关) |
| generation_config.json | 官方推荐采样参数 |
| LICENSE | LFM Open License v1.0 |
- 基础模型
- 大模型
- 人工智能
- NLP
- 本地部署
【免费下载链接】LFM3-1.7B
相关推荐
用LFM3-VL-2B读文档:OCR、图表解析与结构化提取实战教程
用LFM3 VL 2B读文档:OCR、图表解析与结构化提取实战教程 LFM3 VL 2B 是 Liquid AI 推出的端侧视觉语言模型,天生擅长"读文档":O
人工智能大模型多模态计算机视觉3分钟极速配置黑苹果:OpCore Simplify图形化工具完全指南
3分钟极速配置黑苹果:OpCore Simplify图形化工具完全指南 还在为复杂的OpenCore配置而烦恼吗?OpCore Simplify是一款革命性的黑
开发工具CLI微信聊天记录备份与导出终极指南:用WeChatMsg把十年对话永久存下来
微信聊天记录备份与导出终极指南:用WeChatMsg把十年对话永久存下来 微信聊天记录永久备份,是每个微信重度用户都该认真对待的事。很多人直到换手机、修手机的那
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考