pico-type:一个1.5M参数的字节级多头内容分类器
摘要
Pico-type是一个1.5M参数的字节级多头分类器,可在单次前向传播中从原始UTF-8字节预测七种内容属性,旨在以最小资源实现高效的设备上推理。
arXiv:2608.14658v1 公告类型:新
摘要:我们介绍pico-type,一个字节级多头内容分类器,具有约150万参数,可在单次前向传播中同时从原始UTF-8字节预测七种内容属性。直接在字节级运行——无需分词器、子词词汇表或预训练嵌入——pico-type对粗类型(12类)、模态(8)、子类型(24)、代码语言(62)、文本语言(30)、文件MIME类型(90)和风险标志(6标签多标签:API密钥、JWT、密码、电子邮件、电话号码、SSH密钥)进行分类。该架构结合了学习的字节嵌入、三个具有增长感受野的卷积块、两个带有旋转位置编码的双向注意力层,以及一个向七个套娃式分类头提供输入的统计池化层。四个分层变体(tiny/small/base/pro)共享相同的主干,使用从16到576维度的切片表示,生成的ONNX导出小于210 KB,CPU推理时间小于10毫秒。在合成模板和真实数据(8709个GitHub代码样本、5000篇Wikipedia文章)的混合上训练,pico-type在The Heap基准(24种语言)上实现了60.3%的代码语言准确率,在Wikipedia(30种语言)上实现了98.2%的文本语言准确率——分别比仅合成基线提高了+57和+79个百分点。基于格式的头(粗、模态、子类型、file_mime、风险)在合成基准上保持100%的准确率。模型、代码和预训练权重在Apache 2.0下发布。
查看缓存全文
缓存时间: 2026/08/18 10:22
# 一个150万参数的字节级多头内容分类器
来源:https://arxiv.org/html/2608.14658
###### 摘要
我们推出了 **pico-type**,一个约150万参数的字节级多头内容分类器,它能在一次前向传播中直接从原始 UTF-8 字节同时预测七项内容属性。**pico-type** 完全在字节层操作——无需分词器、无需子词词表、无需预训练嵌入——可同时分类:粗粒度类型(12类)、模态(8类)、子类型(24类)、代码语言(62种)、文本语言(30种)、文件MIME类型(90类),以及风险标记(6标签多标签:API密钥、JWT、密码、电子邮件、电话号码、SSH密钥)。该架构结合了可学习的字节嵌入、三个具有递增感受野的卷积块、两个带旋转位置编码的双向注意力层,以及一个统计池化层,该池化层为七个套娃式分类头提供输入。四种分级变体(tiny/small/base/pro)共享同一主干,通过从16维到576维的表示切片实现,生成单文件ONNX导出,模型大小约为9 MB(FP32),CPU推理时间约为18毫秒。该模型在合成模板和真实世界数据的混合数据集上训练(8,709个GitHub代码样本,5,000篇维基百科文章),在The Heap基准测试(24种语言)上达到60.3%的代码语言准确率,在维基百科(30种语言)上达到98.2%的文本语言准确率——相比仅使用合成数据的基线分别提升了+57和+79个百分点。基于格式的头部(粗粒度、模态、子类型、file\_mime、风险)在合成基准测试中保持了100%的准确率。该模型、代码和预训练权重均在Apache 2.0许可证下发布。
## 1 引言
内容分类是许多应用的基础构建块:剪贴板管理器需要识别复制的内容类型;文件浏览器和安全扫描器必须识别格式并检测机密信息;开发工具受益于知道选定的文本是代码、配置还是文章——以及使用的是哪种语言。尽管用途广泛,现有方法在能力和效率之间仍存在差距。
基于正则表达式的工具(如 ClipGate 和类似的剪贴板管理器)使用手写规则检测固定的模式集合。它们快速且轻量,但最多只能处理几十种类型,在处理模糊或非结构化内容时会失败,并且无法在不手动编写规则的情况下泛化到新格式。
大型语言模型提供了更大的灵活性——在适当的提示下,它们可以高精度地分类任意内容。然而,即使是最大的蒸馏LLM也超过1亿参数\[5 ([https://arxiv.org/html/2608.14658#bib.bib5](https://arxiv.org/html/2608.14658#bib.bib5)), 7 ([https://arxiv.org/html/2608.14658#bib.bib7](https://arxiv.org/html/2608.14658#bib.bib7))\],需要GB级存储,并且在CPU上的推理延迟达到数百毫秒或更长。这使得它们对于实时、设备端使用场景(如剪贴板监控)不切实际,因为分类必须在毫秒内完成,并且需要在后台持续运行。
字节级模型(如 ByT5\[1 ([https://arxiv.org/html/2608.14658#bib.bib1](https://arxiv.org/html/2608.14658#bib.bib1))\])已经证明,直接操作原始UTF-8字节可以匹配或超越基于子词的方法。但ByT5的参数量超过十亿,对于本地部署来说规模过大了几个数量级。同样,语言识别模型\[3 ([https://arxiv.org/html/2608.14658#bib.bib3](https://arxiv.org/html/2608.14658#bib.bib3))\]和专用的格式检测器各自只解决了内容理解问题的一个方面。
我们发现了一个明确的需求:一个 **微小的、多头的、字节级的分类器**,能够在单次前向传播中直接从原始字节预测多个内容属性,完全在设备端运行,无需GPU、无需分词器、且无网络依赖。为此,我们提出了 **pico-type**,其主要贡献如下:
- • **字节级操作**:输入是原始UTF-8字节(0–255)。无需分词器、无需子词词表、无需预训练嵌入。这确保了零预处理即可支持所有语言和二进制格式。
- • **七头联合输出**:共享主干配合七个套娃式分类头,在单次前向传播中同时预测粗粒度类型、模态、子类型、代码语言、文本语言、文件MIME类型和风险标记。
- • **套娃分级**:四种分级变体(tiny: 16维, small: 64维, base: 192维, pro: 576维),参数量从143万到156万不等,所有变体均通过单次训练运行,对池化表示进行切片得到。
- • **设备端就绪**:单文件ONNX模型,大小约9 MB(FP32),支持动态批处理和序列形状,在CPU上通过ONNX Runtime推理时间约18毫秒。
- • **开放发布**:模型权重、推理代码、CLI、MCP服务器、Gradio Space和Rust二进制文件在Apache 2.0许可证下于 https://github.com/eulogik/pico-type 发布。
## 2 相关工作
#### 字节级建模。
字节级表示在文本处理上的有效性由 ByT5\[1 ([https://arxiv.org/html/2608.14658#bib.bib1](https://arxiv.org/html/2608.14658#bib.bib1))\] 所确立,它表明无分词器的Transformer可以匹配基于子词的BART在判别任务上的性能。Kim 的早期工作\[2 ([https://arxiv.org/html/2608.14658#bib.bib2](https://arxiv.org/html/2608.14658#bib.bib2))\] 证明了在字符嵌入上操作的卷积网络对于句子分类具有惊人效果,这启发我们使用 Conv1D 模块作为全量Transformer的轻量级替代方案。Li 等人\[3 ([https://arxiv.org/html/2608.14658#bib.bib3](https://arxiv.org/html/2608.14658#bib.bib3))\] 将深度双向Transformer应用于字节级的语言识别。尽管这些工作验证了字节级方法,但其规模都远大于我们的目标范围(ByT5:12亿参数)。
#### 紧凑型分类模型。
基于知识蒸馏的方法(如 DistilBERT\[5 ([https://arxiv.org/html/2608.14658#bib.bib5](https://arxiv.org/html/2608.14658#bib.bib5))\])将BERT缩减至6600万参数,而 ALBERT\[6 ([https://arxiv.org/html/2608.14658#bib.bib6](https://arxiv.org/html/2608.14658#bib.bib6))\] 通过分解嵌入和跨层共享实现了1200万参数。MobileBERT\[7 ([https://arxiv.org/html/2608.14658#bib.bib7](https://arxiv.org/html/2608.14658#bib.bib7))\] 通过瓶颈架构达到了2500万参数。这些模型仍然比 pico-type 的150万参数大10-50倍。在低于500万参数的规模下,SqueezeBERT\[11 ([https://arxiv.org/html/2608.14658#bib.bib11](https://arxiv.org/html/2608.14658#bib.bib11))\] 达到380万参数,但依赖于预训练的子词嵌入,这限制了语言覆盖范围。
#### 套娃表示。
套娃表示学习\[8 ([https://arxiv.org/html/2608.14658#bib.bib8](https://arxiv.org/html/2608.14658#bib.bib8))\] 提出了通过切片嵌入向量在多个粒度上训练表示,使单个模型能够服务于具有不同容量约束的部署场景。Gist\[9 ([https://arxiv.org/html/2608.14658#bib.bib9](https://arxiv.org/html/2608.14658#bib.bib9))\] 将其扩展到多模态设置。我们将相同的原理应用于多头分类:共享的576维池化向量在四个维度上被切片,每个切片用于特定层级的线性层。这种设计通过一次训练运行生成四个模型变体,参数开销小于10%。
#### 多任务与多头分类。
Polymorph\[10 ([https://arxiv.org/html/2608.14658#bib.bib10](https://arxiv.org/html/2608.14658#bib.bib10))\] 引入了针对高效多标签分类器的逐头蒸馏,表明一个小的共享主干配合专门的头可以匹配更大的单任务模型。我们的架构采用了类似的多头理念,但没有使用蒸馏流程,而是直接在合成数据上从头联合训练所有头。
#### 内容分类工具。
现有的剪贴板工具(如 ClipGate 和 PasteBot)依赖于基于规则的模式匹配,仅限于URL、电子邮件地址和少数几种格式。文件识别工具\[12 ([https://arxiv.org/html/2608.14658#bib.bib12](https://arxiv.org/html/2608.14658#bib.bib12))\] 使用魔数字节签名与包含数千种格式的数据库进行比对。‘guesslang’库\[13 ([https://arxiv.org/html/2608.14658#bib.bib13](https://arxiv.org/html/2608.14658#bib.bib13))\] 使用TensorFlow模型提供代码语言检测,但只分类单一属性。pico-type 的独特之处在于将所有这些能力——类型、语言、格式和安全风险——结合在一次前向传播中。
## 3 模型架构
图1 ([https://arxiv.org/html/2608.14658#S3.F1](https://arxiv.org/html/2608.14658#S3.F1)) 展示了整体架构。模型通过五个可学习的阶段处理原始UTF-8字节序列:字节嵌入、卷积特征提取、双向注意力、统计池化和多头分类。

图1:pico-type 架构。原始字节从顶部输入,经过嵌入、三个Conv1D块、两个双向注意力块和统计池化,生成576维的共享表示。七个套娃式头在四个维度(16/64/192/576)上切片该向量,用于分级分类。
### 3.1 字节嵌入
每个输入字节 b∈{0,...,255} 通过一个可学习的嵌入表 E∈R256×96 映射为96维向量,初始化使用 N(0,0.02)。字节0保留用于填充;所有其他字节值都出现在自然文本和二进制数据中。不应用分词、词干提取、子词处理或预训练初始化——模型从头学习所有表示。
### 3.2 卷积块
三个核大小分别为3、5和7的Conv1D块,以递增的感受野处理嵌入后的字节序列。每个块应用:
x′ = LayerNorm(Conv1D_k(x))
x = Proj(x) + Dropout(GELU(x′))
其中 Proj 是一个1×1卷积(当通道维度变化时,如块1之后从96→192),否则为恒等映射。这种多尺度卷积设计在不同宽度上捕获字符n-gram模式,避免了在长序列上进行完整自注意力的二次复杂度。
### 3.3 双向注意力
两个双向自注意力块紧跟在卷积阶段之后。每个块使用预归一化层归一化、融合QKV投影、旋转位置编码(RoPE)\[4 ([https://arxiv.org/html/2608.14658#bib.bib4](https://arxiv.org/html/2608.14658#bib.bib4))\](基础频率θ=500,000),以及4个注意力头,头维度为48:
Attention(Q, K, V) = softmax(Q K^T / √d_k) V
RoPE通过应用旋转来编码查询和键向量的位置:
q_m = R(m) W_q x_m, k_n = R(n) W_k x_n
其中 R 是一个块对角旋转矩阵,其频率为 θ^{-2i/d},i=0,...,d/2-1。每个注意力块包含一个两层MLP,隐藏维度扩展为4倍,并使用GELU激活,遵循标准Transformer设计。
### 3.4 池化层
池化层通过连接三种统计量,将注意力输出在序列维度上聚合:
p = [mean(X); max(X); std(X)] ∈ R^576
其中 X∈R^{L×192} 是仅针对有效位置进行掩蔽后的注意力输出。这种连接方式保留了集中趋势(均值)、极端值(最大值)和离散度(标准差),比单纯的均值池化提供了更丰富的摘要。
### 3.5 套娃式头
七个独立的分类头各包含四个层级特定的线性层。所有头共享576维的池化向量 p。对于维度为 d_t 的层级 t(tiny: 16, small: 64, base: 192, pro: 576),每个头计算:
y^{(h)} = W^{(h)}_t p_{:d_t} + b^{(h)}_t
其中 p_{:d_t} 是 p 的前 d_t 个元素,W^{(h)}_t ∈ R^{c_h × d_t} 是针对具有 c_h 个类别的头 h 的层级特定权重矩阵。
所有四个层级线性层都存在于单个检查点中。在推理时,仅加载所选层级的线性层。这种设计使得一次训练运行就能产生四个模型变体,开销可忽略不计(各层级间参数数量差异小于10%)。
### 3.6 输出头
表1 ([https://arxiv.org/html/2608.14658#S3.T1](https://arxiv.org/html/2608.14658#S3.T1)) 总结了七个分类头。这些头是*门控的*:例如,code_lang仅在 coarse 为 code 时才被评估,text_lang 仅在 coarse 为 text 时才被评估。门控头在训练期间使用 ignore_index = -100,以确保其梯度不影响共享主干中不适用的样本。风险头使用逐类sigmoid进行多标签检测;任何sigmoid输出 ≥ 0.5 的类都会被标记。
表1:分类头及标签数量(所有头)。file_mime 总共有90个标签;上表列出了最常见的几种。
## 4 训练
### 4.1 真实世界数据收集
为了提升代码语言和文本语言检测能力(超越合成模板),我们从两个来源收集真实世界的训练数据:
- • 代码:来自 nick007x/github-code-2025 的 8,709 个样本,这是一个跨 62 种编程语言的源代码文件数据集,通过文件扩展名过滤。在 62 种目标语言中,有 52 种有真实样本;其余 10 种稀有语言(smalltalk, prolog, cobol, ada, lisp, scheme, forth, vhdl, verilog, tcl)使用合成模板补充。
- • 文本:来自 wikimedia/wikipedia(20231101 转储)的 5,000 篇文章,涵盖所有 30 种目标语言,每种语言 50-200 篇。
每个真实样本以原始 UTF-8 字节表示,截断至 1,024 字节。标签分配来源于数据集元数据:代码样本使用文件扩展名,文本样本使用文章语言标签。为避免数据污染,评估数据集(第5节 [https://arxiv.org/html/2608.14658#S5](https://arxiv.org/html/2608.14658#S5))来自不同来源:代码使用 The Heap [15 ([https://arxiv.org/html/2608.14658#bib.bib15](https://arxiv.org/html/2608.14658#bib.bib15))],文本使用单独的维基百科分割数据。
我们使用一个混合数据集(MixedDataset)进行训练,该数据集以50:50的比例交错真实数据和合成数据:每个批次包含50%的真实代码或文本样本,以及50%覆盖所有七个头的合成样本。这既防止了基于格式的头部(粗粒度、模态、子类型、file_mime、风险)性能退化,又让语言头部接触到了真实世界的分布。
表2 ([https://arxiv.org/html/2608.14658#S4.T2](https://arxiv.org/html/2608.14658#S4.T2)) 显示了真实训练数据的按语言分布。代码样本在42种最常用语言上大致平衡(每种206-412个样本),而20种较稀有语言的样本少于50个——这些主要依赖合成模板。文本样本在所有30种语言上分布良好(每种144-226篇)。
表2:真实训练数据分布。20种代码语言样本少于50个,这解释了评估中稀有语言准确率较低的原因。
### 4.2 合成数据生成
合成数据提供了对所有12个粗粒度类别和所有七个头部的均衡覆盖。每个类别通过专门的生成器产生样本:
- • 代码:覆盖18个语法组(类Python、类C、类JS、类Lisp、类ML、shell、SQL、标记-模板、配置、数据序列化、构建、查询、数学、硬件、样式表、协议缓冲区及其他)的所有62种语言的参数化模板。模板使用语言相关的关键词和语法填充占位符令牌。
- • 文本:每种语言包含50-200个常用词的特定语言词表,以...相似文章
Perceptual Image Codec: 实际学习型图像压缩中的关键因素
PICO (Perceptual Image Codec) 是苹果公司推出的一种新型学习型编解码器,针对人类视觉系统进行了优化,相比AV1和VVC等传统编解码器可节省2.3–3倍的比特率,同时在iPhone 17 Pro Max上实现230毫秒编码/150毫秒解码。
@FeitengLi: OpenBMB 开源 MiniCPM-V 4.6 了,1.3B 参数(SigLIP2-400M + Qwen3.5-0.8B),262k 上下文,视觉编码 FLOPs 比上一代少 50%+。 同任务 token 成本比 Qwen3.5-0…
OpenBMB releases MiniCPM-V 4.6, a 1.3B-parameter multimodal LLM with 262k context and significantly reduced visual encoding FLOPs, achieving strong benchmark performance and broad inference framework support.
内容即所存:从平行话语中提取不变语音分词
本文介绍了PINT,一种不变语音分词方法,该方法通过平行话语间的对齐损失微调SSL编码器以提取语言内容,实现了说话者探测准确率和语言模型困惑度的显著降低。
一个编码器,七个头:使用掩码损失训练统一安全分类器的经验 [P]
他们发布了一个统一的多头安全分类器(mmBERT-small编码器,七个头),使用掩码损失处理缺失任务标签,在七个任务上取得了高F1分数,同时还发布了量化的ONNX INT8变体。权重和指标已公开。
MiniCPM4:面向终端设备的超高效大语言模型
MiniCPM4 是一款专为终端设备设计的高效大语言模型,通过稀疏注意力、数据筛选、训练算法和推理系统等方面的创新,在0.5B和8B参数版本上实现了强大性能。