15 M 问答对、8 B 参数、1 个信念:数据干净才是终极杠杆——Bee-8B 全景拆解

故事从一条“翻车”推文开始。
某工程师把 InternVL3.5-8B 与 Bee-8B 同时放进 ChartQA 测试集,结果后者以 86.7 vs. 86.3 的微弱优势登顶。 InternVL 是半开源“重量档”,Bee 却是全开源“草根”。他在评论区补刀:“Bee 只靠数据,就把我们砸显卡的氪金局给破了。”
这条推文被疯狂转发,也引出本文的主题:当参数军备竞赛熄火,数据工程如何接管比赛


一、开源 MLLM 的三座暗礁

  1. 数据噪声像甲醛:24 M 开源图文对里,图文不符、重复文本、低分辨率“三毒”俱全,模型被迫把“橙子”和“函数题”强行关联。
  2. “黑盒”数据集一锤子买卖:发布者只给 JSON,不给清洗脚本,复现者只能“望 JSON 兴叹”。
  3. 长推理稀缺:复杂数学、图表推理样本占比 <1%,导致开源模型在“多步思考”考题上集体宕机。

Bee-8B 的方案出奇地老派——把数据洗干净,再喂饱模型。下面拆开这套“洗烘熨”全流程。


二、Honey-Data-15M:一条数据流水线的自我修养

1. 原料:24 M 开源图文对

来源包括 LLaVA-OneVision、PixMo、MAmmoth-VL 等 40+ 项目。
第一道去重:图像感知哈希 + 文本 SimHash,双哈希碰撞才丢,避免“同图不同文”被误杀。

2. 清洗:规则过滤 + 大模型裁判

过滤器 案例 结果
规则 图片 < 32 px、长宽比 > 5:1、文本重复 > 60 % 直接丢弃
模型 Qwen2.5-VL-72B 判断“图与问是否相关” 丢弃 18 % 图文不符样本

3. 双级 CoT enrichment:短链 vs 长链

  • 短 CoT(12.2 M):一句话变三步,适合“图中几辆车”这类中度推理。
  • 长 CoT(2.7 M):带 <think> 标签的 10+ 步推理,专为几何、函数、图表准备。
    路由策略:短 CoT fidelity check 失败 → 自动进入长 CoT 循环,确保难样本不被降智

pipeline
图:HoneyPipe 双级路由示意

4. 质量消融:19.8 % 的数学跃升

Baseline → 仅清洗 → 清洗+短 CoT → 清洗+双级 CoT 的四级对比,MathVista 成绩从 63.2 → 83.1,19.8 % 的绝对提升全部来自数据


三、Bee-8B 模型:把“蜂蜜”酿成“啤酒”

1. 架构速览

  • LLM 底座:Qwen3-8B(8.0 B 激活)
  • 视觉编码器:SigLIP2-so400m-384,支持 384×384 原生分辨率
  • 投影器:2 层 MLP + GELU,参数量 < 0.1 B
    总参数量 8.3 B,推理可在单张 A100-80G 跑满 16 k token

2. 五阶段训练节奏

阶段 数据 目的 关键超参 时长
MLP Warmup 1 M 图-文对 视觉对齐 lr 1e-3,冻结 LLM 2 h
Full Align 14 M 图-文 + 1.4 M 纯文本 保语言不掉点 lr 4e-5 18 h
SFT 15 M Honey 灌双级 CoT lr 5e-5,pack=16 k 36 h
Refine 1 M 精选子集 话题再平衡 lr 3e-5→5e-6 4 h
RL(GRPO) 50 K prompt 格式奖励 0.2 格式 + 0.8 准确 8 h

关键经验

  • Packing:把 3-5 条样本拼成 16 k,显存利用率 ↑ 17 %。
  • RL 奖励:强制 \boxed{} 输出,解决“只写推理不给答案”的老毛病。

四、Benchmark 实战:以下克上的细节

任务档 Bee-8B 得分 对标半开源 领先幅度
ChartQA 86.7 InternVL3.5-8B 86.3 +0.4
MathVerse 67.0 InternVL3.5-8B 61.5 +5.5
CharXiv-RQ 57.3 Keye-VL-8B 45.4 +11.9
MMMU-Pro 50.7 Qwen2.5-VL-7B 47.1 +3.6

拆解胜利

  • 图表:长 CoT 把“读柱→求和→比较”拆成 9 步,减少口算错误。
  • 几何:利用“中线=斜边一半”先锁定 AB=10,再勾股定理一步到位。
  • OCR:在 211 K 清洗后的 K12 印刷体上微调,字符错误率 ↓ 23 %。

五、快速上手:从 pip install 到第一条推理

1. 安装

pip install transformers==4.46.0 accelerate flash-attn --no-build-isolation
# 官方建议 torch ≥ 2.2

2. 推理代码(单卡 24G 可跑)

from PIL import Image
import requests, torch
from transformers import AutoProcessor, AutoModel

model_path = "Open-Bee/Bee-8B-RL"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(
        model_path,
        torch_dtype=torch.bfloat16,
        trust_remote_code=True
      ).cuda().eval()

image = Image.open(requests.get("https://your/image.jpg", stream=True).raw)
text = processor.apply_chat_template(
        [{"role":"user","content":[{"type":"image"},{"type":"text","text":"How many monitors?"}]}],
        add_generation_prompt=True,
        enable_thinking=True   # False=短链,True=长链
      )
inputs = processor(images=image, text=text, return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=4096, temperature=0.6)
print(processor.decode(out[0], skip_special_tokens=True))

3. vLLM 高并发(≥ 0.11.1)

vllm serve Open-Bee/Bee-8B-RL \
  --tensor-parallel-size 2 \
  --gpu-memory-utilization 0.85 \
  --served-model-name bee-8b-rl

实测 2×A100-80G,1860 tokens/s(batch=64,16k 上下文)。


六、常见问题解答(FAQ)

Q:15 M 数据能商用吗?
A:Honey-Data-15M 全部源自 MIT/Apache 许可的开源集,可商用,但含 CC-BY-NC 的 STEM 子集(约 0.8 M)需单独剔除。

Q:长 CoT 推理慢多少?
A:同样 2k 输出,长 CoT 比短链慢 38 %,但数学 benchmark 平均 +9.2 pts;生产环境可动态关闭。

Q:能否继续微调?
A:官方已开放 Stage-3 权重(未 RL),用户可在 Honey-Data-1M 子集上继续 SFT,学习率 3e-6,epoch=1 即可


七、写在最后:把“数据优先”写进开源字典

Bee-8B 的故事给社区的最大启示,不是又一个 SOTA,而是一套可复现的数据工程范式

  • 清洗 → 去噪、去重、去幻觉
  • ** enrichment** → 让每条样本处在“最近发展区”
  • 开源 → 流水线、评测、训练脚全套放出

当大模型进入“数据质量红利期”,参数竞赛将让位于工程竞赛。愿下一个爆款开源模型,不再靠神秘“内部数据”,而是靠人人可跑的 HoneyPipe。

我们下次见——也许是在你 fork 的 HoneyPipe 仓库里。

: 分析 transformer 模型的参数量、计算量、中间激活、KV cache – 知乎专栏
4090 可跑,长文本处理 5 倍常规加速丨清华&面壁开源 – 量子位