SentencePiece
一种语言无关的子词分词工具,支持BPE和Unigram等多种分词算法,广泛用于大语言模型的Tokenizer,可直接从原始文本学习分词模型
核心事实
时间轴 (近 90 天)
llama.cpp的tokenizer实现遵循SentencePiece与BPE两套主流方案,并针对GGUF内嵌的词表做了统一抽象,涵盖特殊token、字节回退、归一化规则等细节。
SentencePiece的字节回退机制在遇到词汇表中不存在的字符时,会将该字符拆解为UTF-8原始字节序列,每个字节映射为一个token,从而避免产生UNK标记。
TinyLlama在所有测试文字上的UNK率均为0.0%,因为SentencePiece的字节回退机制从不产生UNK标记。
在覆盖全部三个split的9,000道贪心解码问题上,token ID 3582(对应裸词'yes')和1217(对应裸词'no')一次都没有被LLaVA-1.5-7B生成过,模型实际输出的是' Yes'(token 3869)和' No'(token 1939)。
研究者对另外四个VLM、覆盖三个分词器家族做了四读数审计,结论是Yes/No读数混淆属于协议层面而非模型层面。
把LLaVA-1.5的token ID原样移植到两个词表不相交的模型上,F1直接跌到0.00;而使用分词器派生的读数,F1稳定保持在0.80到0.92之间。
SentencePiece将空格视为普通字符(用▁表示),当提示词以'ASSISTANT:'结尾时会在冒号后保留空格字节,导致模型预测的下一个token实际是带空格前缀的' Yes'/' No'形式。
ArcLM 同时提供词级分词器和 SentencePiece 支持。
子词分词将单词切成更小的片段,常见算法有 BPE、WordPiece 和 Unigram,SentencePiece 是其中一种与语言无关的工程实现。
ArcLM 核心安装会自动引入 NumPy、SentencePiece 等依赖,但不会拉取 PyTorch。
还有 15 条时间轴事件
全部知识事实 (20)
子词分词将单词切成更小的片段,常见算法有 BPE、WordPiece 和 Unigram,SentencePiece 是其中一种与语言无关的工程实现。
65%已验证不同模型使用不同的分词方案(如BPE、SentencePiece等),同样一段文本在不同模型中被计量的token数可能不同
65%已验证Token由BPE(字节对编码)算法生成,英文文本平均每个token约对应4个字符(约0.75个单词)
65%待验证SentencePiece是Google提出的一种与语言无关的分词框架,直接在原始文本上建模,适合多语言和无明确词边界的语言
60%待验证OpenAI使用BPE(Byte Pair Encoding)算法进行分词,Google的SentencePiece采用与语言无关的分词方法直接在原始文本上训练
60%待验证OpenAI 使用 tiktoken 分词算法,Google 使用 SentencePiece 分词算法
60%待验证llama.cpp的tokenizer实现遵循SentencePiece与BPE两套主流方案,并针对GGUF内嵌的词表做了统一抽象,涵盖特殊token、字节回退、归一化规则等细节。
50%待验证SentencePiece的字节回退机制在遇到词汇表中不存在的字符时,会将该字符拆解为UTF-8原始字节序列,每个字节映射为一个token,从而避免产生UNK标记。
50%待验证TinyLlama在所有测试文字上的UNK率均为0.0%,因为SentencePiece的字节回退机制从不产生UNK标记。
50%待验证研究者对另外四个VLM、覆盖三个分词器家族做了四读数审计,结论是Yes/No读数混淆属于协议层面而非模型层面。
50%待验证在覆盖全部三个split的9,000道贪心解码问题上,token ID 3582(对应裸词'yes')和1217(对应裸词'no')一次都没有被LLaVA-1.5-7B生成过,模型实际输出的是' Yes'(token 3869)和' No'(token 1939)。
50%待验证SentencePiece将空格视为普通字符(用▁表示),当提示词以'ASSISTANT:'结尾时会在冒号后保留空格字节,导致模型预测的下一个token实际是带空格前缀的' Yes'/' No'形式。
50%待验证把LLaVA-1.5的token ID原样移植到两个词表不相交的模型上,F1直接跌到0.00;而使用分词器派生的读数,F1稳定保持在0.80到0.92之间。
50%待验证ArcLM 同时提供词级分词器和 SentencePiece 支持。
50%待验证ArcLM 核心安装会自动引入 NumPy、SentencePiece 等依赖,但不会拉取 PyTorch。
50%待验证Tokenizer负责将原始文本切分为模型可处理的token序列,主流方案包括BPE、WordPiece和SentencePiece
50%待验证Metaspace 是一种特殊的预分词处理技术,常见于 SentencePiece 分词体系,它将词语之间的空格替换为特殊的下划线字符(▁)
50%待验证SentencePiece工具库对Unigram语言模型分词有完整实现
50%待验证GLM 系列使用基于 SentencePiece 的分词器,并包含若干特殊控制 token(如 [gMASK]、<sop>)
50%待验证主流大模型普遍采用BPE(字节对编码)或其变体(如SentencePiece)作为分词算法,GPT-4的词表约为100,000个Token
50%