大模型 Tokenizer:从字符到 Byte,再到大词表

从零实现BPE:大模型Tokenizer核心原理与代码实战 大模型无法直接理解字符串,所有文本都必须先通过Tokenizer转换为数字Token序列,而BPE正是GPT、Llama、Qwen等主流模型底层采用的子词切分算法。BPE通过统计字符或字节对的出现频率,迭代合并高频组合,在可控词表大小下实现无损编码,从根本上解决了词表爆炸与未知词问题。理解BPE对模型训练、微调和部署至关重要——词表大小直接影响Embedding层参数量、序列长度、显存占用甚至推理效率。无论是预处理训练语料、排除token数量异常,还是优化本地模型部署,掌握BPE原理都能帮助你快速定位根因。 阅读详情

大模型 Tokenizer:从字符到 Byte,再到大词表

Tokenizer 是大语言模型处理文本的第一步。
简单来说,它负责把一句话转换成模型能够理解的 Token。
例如:

我喜欢机器学习
↓
[我] [喜欢] [机器] [学习]
↓
[Token ID]

Tokenizer 的核心问题其实很简单:

怎么让文本既能被完整表示,又尽量使用更少的 Token?


一、为什么不能直接按词切?

最简单的方法是按照完整单词切分:

I love machine learning
↓
[I] [love] [machine] [learning]

这种方法很直观,但有一个明显的问题:新词怎么办?
如果词表里没有某个词,就会出现 OOV(Out-of-Vocabulary,登录外词)。

所以后来出现了 Character-level Tokenizer,把词拆成一个个字符:

machine
↓
[m] [a] [c] [h] [i] [n] [e]

这样基本不会遇到新词问题,但 Token 数量会明显增加,导致模型处理序列变长。

于是就有了折中方案:Subword Tokenizer。
它既不把整个词作为一个 Token,也不把所有东西拆成单个字符,而是学习常见的词片段。


二、BPE 是怎么做的?

BPE(Byte Pair Encoding) 是目前非常经典的一种 Subword 方法。
它的基本思路就是:常见的组合,就把它们合并起来。

例如:

a + b → ab
ab + c → abc

训练 Tokenizer 时,它会根据训练数据学习这些合并规则。到了真正使用的时候,就按照已经学好的规则进行切分。

除了 BPE,还有 WordPiece 和 Unigram 等方法,它们的训练方式不同,但目的类似:找到一套合适的 Token,让文本表示更加高效。


三、为什么又出现 Byte-level?

Subword 已经解决了很多 OOV 问题,但还有一个问题:Unicode 字符非常多。
如果把大量 Unicode 字符直接作为基础单元,词表会变得很复杂。

UTF-8 提供了一个更简单的办法。
一个 Byte 只有 256 种可能:

0∼2550 \sim 2550∼255

因此,可以先把文本转换成 UTF-8 Byte,再在 Byte 上进行 BPE。

例如:

中
↓
UTF-8
↓
E4 B8 AD

所以:

Character≠Byte≠Token\boxed{\text{Character} \neq \text{Byte} \neq \text{Token}}Character=Byte=Token​

“中”是一个字符,E4 B8 AD 是它的 UTF-8 编码,而 Token 是 Tokenizer 最终生成的离散单位。


四、什么是 BBPE?

BBPE 就是 Byte-Level BPE。
它的过程可以简单理解为:

文本
↓
UTF-8 Byte
↓
BPE 合并
↓
Token
↓
Token ID

它最大的优势是:

  • Byte:作为一种通用的基础表示,让各种 UTF-8 文本都有基本的表示路径,解决基础表示问题。
  • BPE:把常见的 Byte 序列组合成更大的 Token,从而减少 Token 数量,提高文本压缩效率。

五、为什么现在词表越来越大?

当 Tokenizer 能够表示各种文本之后,另一个问题就出现了:能不能用更少的 Token 表示相同的内容?

例如,如果一个常见词组总是一起出现,那么把它作为一个 Token,显然比拆成很多 Token 更高效。

因此,现在一些大模型的词表从早期的几十 K,逐渐扩大到 100K 甚至更大。

大词表的好处是:

词表更大
↓
可以容纳更多常见模式
↓
Token 数量可能减少
↓
文本表示更加紧凑

特别是在中文、多语言、代码和数字等场景中,大词表可能带来更好的 Token 压缩效果。


六、大词表是不是越大越好?

当然不是。
词表越大,也意味着更高的系统成本。

例如 Embedding 参数量大致为:

V×dmodelV \times d_{\text{model}}V×dmodel​

其中 VVV 是词表大小。

所以:

词表变大
↓
可以容纳更多高频文本模式
↓
在合适的训练条件下,Token 数量可能减少
↓
但 Embedding / LM Head 等成本增加

因此,Tokenizer 实际上一直在做一个平衡:

覆盖能力+Token 压缩效率↔词表成本\boxed{\text{覆盖能力} + \text{Token 压缩效率} \leftrightarrow \text{词表成本}}覆盖能力+Token 压缩效率↔词表成本​


七、总结

从 Word-level 到 Character-level,再到 Subword、Byte-level BPE,Tokenizer 的发展可以简单理解为:

按词
↓ (解决语义粒度问题)

按字符
↓ (减少 OOV)

Subword
↓ (在词和字符之间寻找平衡)

Byte-level
↓ (提供通用的基础表示)

大词表
↓ (进一步减少 Token 数量)

最终,Tokenizer 要解决的并不是“怎么分词”这么简单,而是一个很实际的工程问题:

如何用尽可能少的 Token,稳定、高效地表示尽可能多的文本,同时控制词表带来的成本。

BPE Tokenizer完全指南:从字节合并规则到大模型输入表示 在大模型训练与推理链路中,Tokenizer 是连接原始文本与神经网络张量的关键桥梁。理解其底层原理,对模型微调、部署及问题排查至关重要。子词切分技术有效平衡了词表规模与序列长度,其中字节级 BPE(Byte Pair Encoding)因仅需256个基础符号即可覆盖任意文本,成为主流方案。其核心机制并非简单查表,而是通过统计高频相邻字节对,按顺序迭代合并,生成一组有序规则与词表。工程实践中,训练阶段与推理阶段的规则一致性、预分词策略以及词表与模型维度的对齐,直接决定tokenizer的稳定性。无论是解析G 阅读详情

相关推荐

中文NLP必备:Tokenizer原理与Post Training实战指南

在自然语言处理(NLP)任务中,Tokenizer是连接原始文本与模型计算的桥梁,它决定了模型感知语义的最小单元。中文因缺少天然词边界,对分词策略更为敏感,BPE、WordPiece、SentencePiece等子词算法各有适用场景。理解其原理,能帮助开发者判断何时应训练自定义中文分词器,以及如何评估词表对领域语料的覆盖效率。当通用预训练模型与垂直领域数据分布差异较大时,Post Training(后期继续训练)成为提升模型领域能力的有效手段。通过高质量中文语料库的清洗与构建,再结合Transformers

weixin_26801149的博客 341

大模型学习 - 基础组件Tokenizer

Tokenizer分词算法是NLP大模型最基础的组件,基于Tokenizer可以将文本转换成独立的token列表,进而转换成输入的向量成为计算机可以理解的输入形式。

fj1024的博客 2461

NLP后训练前必懂:Tokenizer与中文分词实战

在自然语言处理与语言模型训练中,文本必须先经由分词器(Tokenizer)转换为模型可理解的数字序列。分词策略直接决定输入表示的质量,尤其面对中文这种无天然分隔符的语言,词汇切分与词表覆盖直接影响模型理解能力,也关乎后续后训练(Post Training)阶段的最终效果。主流子词算法如BPE通过频次合并构建词表,但在垂直领域常遇到未登录词(OOV)或专业术语被切碎的问题。若要让领域模型更好吸收知识,需要从语料清洗、质量筛选到针对性的词表扩展进行系统性设计。通过增量扩展已有词表并结合继续预训练,可以在保留原有

weixin_29072299的博客 386

大模型基础扫盲------从文本到 Token、Embedding、QKV 与 Transformer 大模型处理文本的全流程解析(一)

本文系统介绍了大语言模型处理文本的完整流程,核心可概括为:文本→分词→TokenID→Embedding向量→位置编码→多层Transformer处理(注意力机制+前馈网络)→输出概率→生成文本。关键点包括: 文本需通过Tokenizer切分为Token并转换为数字ID,再通过Embedding映射为语义向量; Transformer通过注意力机制使Token动态交互,结合上下文区分多义词; 位置编码(如RoPE)注入顺序信息; 训练过程通过预测下一个Token来优化模型参数。 特别强调: Embeddin

m0_66705547的博客 527

Ministral 3B/8B:轻量级开源大模型的工程化突围

轻量级大语言模型(LLM)是边缘计算、终端AI与教育实践的关键技术路径,其核心在于平衡参数规模、推理效率与任务可用性。基于Transformer架构的微型模型通过结构精简、分层量化与指令强化训练,在有限算力下实现高精度中文理解与稳定长文本处理。Ministral系列以3B和8B为典型代表,突破传统小模型在法律、金融、技术文档等垂直场景的能力瓶颈,支持GGUF量化、llama.cpp/Ollama开箱部署,并在Jetson、MacBook M系列及RTX消费级显卡上实现实时低功耗推理。本文深入解析其RoPE位

weixin_30323631的博客 376

AI术语实战速查手册:50个高频词的工程本质与避坑指南

人工智能术语不是孤立词汇,而是承载技术原理、工程权衡与业务约束的认知单元。从‘token’的多模态原子性到‘quantization’的硬件感知精度平衡,每个术语背后都关联着模型设计、推理优化与部署落地的关键决策链。理解‘KV cache’需结合显存管理机制,掌握‘RAG’必须厘清检索与生成的协同边界,而‘fine-tuning’已演进为QLoRA等参数高效范式。这些概念共同构成AI系统构建的底层语言体系,直接影响算法选型、性能调优与合规交付。本文聚焦真实项目中高频出现、高误用率、强决策依赖的50个核心术语

weixin_33755557的博客 321

子词分词器(Byte Pair Encoding + WordPiece)

BPE和WordPiece都是常用的子词分词器,子词分词器可以控制词表的大小的同时学习到有意义的上下文表示,所以现在的深度学习模型一般会使用子词分词器。都要指定一个词典的大小都包含更细粒度的子词,所以可以控制词典的大小的同时,缓解OOV问题将词加入基础词典的选择策略不一样,BPE是选择频率最高的字符对,WordPiece是选择使训练数据的似然概率最大的字符对。BPE和WordPiece的区别在于如何选择两个子词进行合并。

IMdandelion的专栏 588

TensorFlow机器翻译实战:从Seq2Seq到Transformer完整落地指南

机器翻译是自然语言处理的核心任务之一,其本质是建模源语言与目标语言之间的序列到序列映射关系。基于Encoder-Decoder架构的神经网络通过注意力机制实现上下文感知的动态对齐,显著提升长句翻译鲁棒性。技术价值体现在端到端可训练、支持多语言迁移、易于集成部署等工程优势。典型应用场景包括跨境电商商品描述本地化、实时会议字幕生成、文档批量翻译系统等。本文聚焦Python与TensorFlow生态下的可复现落地实践,覆盖数据清洗、Subword分词、可学习位置编码、Masked损失函数及Beam Search解

xpmwgcwm的博客 392

大模型词元化技术解析:BPE、WordPiece与Unigram算法对比与应用

词元化是自然语言处理中的基础技术,它将文本切分为模型可处理的数字序列,是连接人类语言与机器理解的桥梁。其核心原理在于通过算法将连续文本分解为更小的语义单元,以解决词汇表爆炸和未登录词问题,从而提升模型的数据效率和泛化能力。从技术价值看,高效的词元化能显著缩短输入序列长度、降低计算开销,并直接影响模型对专业术语、多语言混合文本及代码等复杂场景的理解能力。在应用层面,主流的预训练大模型如GPT、BERT、T5等,分别采用了BPE、WordPiece和Unigram三种算法。BPE基于频率迭代合并,在GPT系列中

weixin_34367257的博客 429

数据预处理与 Tokenizer 原理:从文本清洗到现代大模型数据策展(分层式精讲)

数据预处理的核心不是“清洗得更干净”,而是“构造更可信的训练输入”。Tokenizer 的算法差异和输入协议作用。词表大小、压缩率、延迟、多语言覆盖之间的权衡。清洗策略为什么必须任务相关。去重、去污染、PII、安全、许可证为什么是训练质量的一部分。chat template、packing、loss mask 为什么决定模型实际学习目标。数据版本和实验消融为什么比经验口号更可靠。

AI浩 896

PyTorch → Quantize → ONNX → TensorRT Engine 流程总结与现代llm的差别

Builder = 在上做图级 fusion,为每层枚举合法 kernel(tactic),在目标 GPU 上实测 timing 并选最快方案,再规划内存、序列化为 engine。Layer fusion 决定算子能否合并;tactic 搜索决定合并后/单层的 kernel 有多快。量化模型的性能 largely 取决于 Stage 3 的 Q/DQ 布局能否被 Builder fusion 成 Tensor Core 量化 kernel。阶段输入输出核心工具1. PyTorch预训练权重。

happyAnger6的专栏 161

大模型输入处理全流程:从文本清洗到张量格式化

大语言模型(LLM)的输入处理是推理链路的首要环节,本质是将原始字符串转化为模型可计算的数值化张量。其核心原理涵盖Unicode归一化、子词分词(如BPE/WordPiece)、token ID映射、对话模板结构化及attention mask构建等步骤。该过程直接决定语义保真度与服务稳定性,技术价值在于规避零宽字符、标点混用、OCR噪声等导致的静默失效。典型应用场景包括金融客服问答、多轮对话系统、OCR后处理及API网关预处理。本文聚焦Input Processing与Tokenization两大关键热词

weixin_34234721的博客 307

SoC芯片时钟树优化实战:如何用分段CTS解决DDRPHY与Memory Controller的时序难题

本文深入探讨了SoC芯片时钟树优化中的分段CTS技术,重点解决DDRPHY与Memory Controller之间的时序难题。通过分析多域时钟架构的复杂性,提出三级分段CTS策略,并结合28nm移动SoC实战案例,展示如何通过Guide Buffer插入和本地段重构实现72%的跨域偏差改善。文章还涵盖5nm以下工艺的线阻变异、热梯度效应等特殊考量,为数字IC设计提供时钟树综合的高阶解决方案。

kkk56的博客 904

大模型分词器如何工作?从零实现BPE完整指南

自然语言处理与大模型训练中,Tokenization是最基础却常被忽视的环节。文本如何被切分为token,直接决定了模型的训练效率、推理成本甚至API账单。字节对编码(BPE)作为GPT、LLaMA等主流模型采用的分词算法,通过统计数据频率动态合并子词,在词表大小与序列长度之间取得平衡。本文从Token基本概念出发,剖析直接按单词切分的缺陷,逐步拆解BPE的训练与编码原理,并用Python手写完整实现,最后通过OpenAI的tiktoken库对照真实大模型的编码效果。无论你是准备训练大模型、理解token计

weixin_33755649的博客 379

从报错到定位:Memtest86 DQ位算法解析与实践指南

本文深入解析了Memtest86内存测试工具报错信息的解读方法,重点介绍了通过地址解析、数据转换、位比对和DQ定位四步算法,精准锁定故障DQ位的实践流程。文章以DDR4和DDR5为例,详细拆解了从十六进制报错到二进制比对的完整步骤,并提供了从单个报错分析到故障模式诊断的进阶指南,帮助用户将抽象的报错信息转化为具体的维修或排查依据。

sre5engineer的博客 486

从零搭建:基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台

本文详细介绍了如何从零搭建基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台。通过环境准备、模型部署、接口配置及联合仿真等步骤,帮助用户快速掌握飞行器仿真的核心技术,实现高效的三维可视化与实时数据交互。

weixin_29100399的博客 516

Naive UI Highlight 高亮文本组件完全指南:从基础用法到正则匹配原理

本文围绕 Naive UI(A Vue 3 Component Library,主题可调、TypeScript 编写)中的 **Highlight 高亮文本组件**展开。该组件自 `2.40.0` 版本开始提供,用于在给定文本中自动高亮指定的关键词,其核心使用场景包括搜索结果的命中词标注、文档关键字强调、代码片段中的术语突出等。读完本文,你将掌握 `n-highlight` 的全部 7 个 Pro

gitblog_00491的博客 1124

杰理SDK入门教程(一):SDK的四种编译方式的使用

杰理SDK提供了四种主要编译方式:1) JL Studio官方IDE,适合初学者;2) VS Code轻量级编辑器,需在SDK根目录打开;3) 命令行/脚本编译,灵活支持自动化;4) Code::Blocks开源IDE。每种方式都有详细操作指南,开发者可根据需求选择,初学者推荐从JL Studio开始熟悉编译流程。环境配置注意事项和编译成功标识均有明确说明,确保开发效率。

qq_42014563的博客 1145

大语言模型输出层与反分词:从概率分布到文本生成的关键技术

在自然语言处理中,语言模型的核心任务是将高维向量表示转化为人类可读的文本序列。这一过程涉及两个关键技术环节:输出层负责将模型最后一层的隐状态映射到整个词表空间,通过线性变换和Softmax函数为每个候选词生成概率分布;反分词则负责将离散的token序列还原为连贯的自然语言文本,处理子词合并、空格还原等复杂问题。从工程实践角度看,理解输出层的概率分布特性对于控制文本生成质量至关重要,温度参数和核采样等策略能有效调节生成文本的确定性与多样性平衡。在实际的大语言模型应用中,输出层与反分词共同构成了模型与用户交互的

weixin_30920597的博客 358

8.Python基础语法(五)续【光说不练假把式,上题】

Python基础语法(二) 有关于Python循环语句的几道实操,让大家理解知识点更深更透彻~

孤寒者的博客 2万+

YOLO系列专栏(六):YOLO26热力图可视化 | 解析模型推理逻辑,定位检测关键区域

YOLO26作为新一代目标检测模型,其核心优势是高效的特征提取和精准的目标定位,但模型内部的推理过程的“黑盒”特性,给我们的优化带来了很大困扰:❌ 检测精度低:不知道是模型没学到关键特征,还是特征提取不充分;❌ 出现误检/漏检:无法定位问题根源——是锚框不合适?还是特征图未捕捉到目标?❌ 模型优化盲目:调参、修改网络结构全靠“猜”,缺乏针对性;❌ 难以解释模型行为:实际项目中,需要说明模型“为什么检测到这个目标”,尤其是医疗、工业等对可解释性要求高的场景。而热力图可视化。

qq_36130719的博客 729

LLM-learn-1

维度,使得输出特征维度与输入特征维度保持一致,方便后续的层归一化(Layer Normalization)和残差连接(Residual Connection)操作。具体实现:在 Transformer 中,MLP 通常包含两层全连接层。维度,然后经过激活函数(常用 ReLU)引入非线性,接着第二层全连接层再将特征从。它是一种最基础的前馈神经网络,由多层全连接(Dense/Linear)层组成。一般结构是:输入层 → 多个隐藏层(每层都是全连接+激活函数)→ 输出层。是两层全连接层的权重矩阵,

m0_53203911的博客 1218

44位abogus补环境与纯算逆向分析

44位ab参数补环境与纯算加密流程逆向分析

吴秋霖的博客 2760

python 环境下gensim中的word2vec的使用笔记

centos 7, python2.7, gensim (0.13.1)语料:http://211.136.8.18/files/10940000015A9F94/mattmahoney.net/dc/text8.zip程序:# -*- coding: utf-8 -*- ''' Created on 2016年8月29日 测试gensim使用 @author: root '''from gensi

大鹏的专栏 3万+

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案

Android Studio无法启动,Failed to create JVM:error code -1. JVM Path 完美解决方案。 找到Android studio的启动文件bin目录,把studio64.exe.vmoptions 删除或改名(推荐改名,方便恢复),如果你是32位系统这个文件就是 studio.exe.vmoptions

陈万洲的专栏 4847

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习:keras 学习笔记

http://keras-cn.readthedocs.io/en/latest/getting_started/concepts/ 向量: import numpy as np a = np.array([[1,2],[3,4],[5,6]]) sum0 = np.sum(a, axis=0) sum1 = np.sum(a, axis=1) print sum0 print sum

大鹏的专栏 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 工业 AI Agent 引入 DSL 的架构必要性:从概率生成到确定执行
下一篇: Focal Loss 深度解析:密集检测、梯度机制与应用边界
大鹏的NLP博客
博客等级 码龄16年 375粉丝 351原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值