本文详解大语言模型中分词模型(Tokenizer)的核心作用,作为连接人类语言与模型数值表示的桥梁,负责将文本切分为token并映射为整数ID。文章以DistilBERT为例,通过代码演示文本编码解码过程,解释分词文件结构及其对模型性能的重要影响,是理解大模型底层原理的基础必备知识。

  • 背景
  • 分词模型在大模型中的作用
  • 开源分词模型功能代码演示

背景

未来已来,不可否认的是人类已经进入人工智能时代,目前人工智能在语音、图像、文字实际应用场景落地过程中,虽在某些方面表现不是很理想的,毕竟这只是它来时的路,用历史发展观点来看,一定是在从AI(人工智能)、AGI(通用人工智能)、ASI(超级人工智能)演进路径中,最终会走向ASI(超级人工智能)。

这是一场不以人类意志为转移的智能化革命,对于个人来说,须拥抱变化与AI为伍,与时代同行。

笔者往期文章分享了大模型基础使用如提示词、大模型本地部署使用以微调方法,还有智能体搭建和应用等等。这些从学习路径来看,是首先会用网络开源的AI应用,其次私有部署应用来实现具体场景应用,最后了解其原理甚至自己来实现。

目前各通用大模型是以Transformer模型思想为基础进行优化迭代,一个通用大模型训练步骤使用数据准备(词元化)、模型结构初始化(嵌入模型初始化)、大模型训练(嵌入模型参数更新)、大模型评估和优化和大模型保存和部署应用。

本篇来讲述大模型实现原理和训练准备的分词模型-词元化环节,并详细讲解词元化在大模型训练的作用及开源分词模型代码实现演示。

分词模型在大模型中的作用

目前大模型实现以Transformer思想为基础的优化和迭代,其 用 “自注意力机制” 取代了 卷积神经网络(RNN,缺点:串行处理、长距离序列会丢失)、卷积神经网络(CNN,主要处理视觉),能并行处理序列并捕捉长距离依赖,通过多头注意力 + 前馈网络堆叠,配合残差连接和层归一化,实现了高效且强大的序列建模能力。

在整个大模型训练过程中,分词模型(Tokenizer) 扮演着 文本输入的第一道加工工序的角色:它负责将原始文本切分成模型能够处理的最小语义单位(token),并将这些 token 映射为唯一的整数 ID,从而建立起 “人类语言” 到 “模型内部数值表示” 的桥梁。在训练的每一轮迭代中,Tokenizer 都需要对批量文本进行一致的切分和编码,确保输入到嵌入层(Embedding Layer)的 token ID 序列与模型词表严格对应;它的切分策略(如 BPE、WordPiece)直接影响词表大小、未登录词处理能力以及模型的语义表达能力。此外,由于 Tokenizer 与嵌入层的词表是绑定的,其设计和选择对模型最终性能、训练效率以及多语言支持等方面都有深远影响。在反向传播过程中,虽然 Tokenizer 本身参数不会更新,但它输出的 token ID 序列决定了嵌入层权重的访问路径,间接影响参数更新的方向和效果。

大模型本质上是数值计算系统,只能处理张量(Tensor),不能直接处理字符串,而分词模型-词元化就是将原始文本(字符串)转换成模型可以处理的离散符号(Token)序列的过程,其核心任务就是把文本→整数 ID,从而能在嵌入层(Embedding model)中映射成向量。

常用词元算法对比,如图:

分词模型-词元化步骤主要功能或说明:

  • 因计算机不能直接处理文本,词元化是把文本→整数 ID****
  • 词元化虽把文本转换计算机可识别的数值编码,这些编码是孤立的,没有上下文之间的关系,要产生上下文信息是使用嵌入模型和大模型训练而得到。
  • 词元的语料、嵌入模型的语料和大模型训练的语料不一定完全一致,其目标是构建合理的词汇表(如子词、字符级词元,像词典一样要全),语料需满足覆盖性和代表性,以确保词元能适配后续模型的输入需求。****
  • 一次性处理分词任务是不现实的,一般分批次处理,因Token ID 是由 tokenizer 根据词表映射生成的,只要多次处理时使用的是同一个 tokenizer**(同一个词表),那么相同文本的 Token ID 一定是一致的。******

词元化是大模型的 “语言翻译官”,它把人类的自然语言转成模型能理解的数值符号,同时决定了模型的词汇覆盖、语义表示粒度和计算效率,是模型实现和训练中不可或缺的第一步。

开源分词模型功能代码演示

本篇DistilBERT 分词器(基于 WordPiece 算法) distilbert-base-uncased为例进行,使用一句话文字“马高食香”(为啥是这个几个字,笔者在DistilBERT 模型源码词表文件看到这token编码在一起,方便查看),然后通过DistilBERT 分词模型对上述四个字进行词化出“词列表”分词结果,还有Token_id表等。

首先,下载DistilBERT 分词模型,实现部分使用hugging face国内镜像网站下载,本篇下载地址如下:

hf download
distilbert/distilbert-base-uncased
--local-dir ./distilbert

把distilbert分词模型下载到本地,实现部分使用Transformer包加载分词器模型,先导入相关应用包

from
transformers
import
DistilBertTokenizer

加载预训练的 DistilBERT 分词器(基于 WordPiece 算法) distilbert-base-uncased
tokenizer = DistilBertTokenizer.from_pretrained(“/Users/houyi/distilbert”)

示例文本

text = “马 高 食 香”
#1. 基础编码 :返回的是一个字典,包含 input_ids、attention_mask 等,对“马高食香”,使用分词模型进行编码以及注意力掩码

encoded = tokenizer(text)

print(“【编码结果】”)
print(encoded)

{‘input_ids’: [101, 100, 1981, 1978, 1979, 102], ‘attention_mask’: [1, 1, 1, 1, 1, 1]}

  • 分词编码:

分词器文件tokenizer.json对应的编码是100 1981 1978 1979。100代表没找到(文件中繁体字“马”,如果输入词表中不存在的词,就会得到 [UNK]:100),其中101、102分别代表开头和结尾。以下是tokenizer.json文件截图:


DistilBERT(以及 BERT 系列)中,分词器(WordPiece 算法)会定义几个固定的特殊 token:

  • 注意力掩码:

    {‘input_ids’: [101, 100, 1981, 1978, 1979, 102], ‘attention_mask’: [1, 1, 1, 1, 1, 1]}

在tokenizer 输出中,attention_mask 是一个与 input_ids 形状完全相同的张量(或列表),由 0 和 1 组成:

  • 1:表示该位置是一个有效 token需要参与注意力计算
  • 0表示该位置是一个padding token(填充),在注意力计算中应该被忽略

transformer / DistilBERT 是通过自注意力机制来计算每个 token 对其他 token 的关注度的。如果一个批次(batch)里句子长度不一样,我们会用 <pad> 把短句子补齐到相同长度。如果没有 mask,模型在计算注意力时会把 <pad> 也当成正常 token,这会引入噪声,让模型 “关注” 到无意义的填充;结果是模型性能下降,训练不稳定。

所以attention_mask 的作用:告诉模型哪些位置是真实 token,哪些是填充,从而在注意力计算时屏蔽掉 padding 的影响

#2. 查看 token ,把上述四个字氛围一个列表
tokens = tokenizer.tokenize(text)
print(“\n【分词结果】”)
print(tokens)

[‘[UNK]’, ‘高’, ‘食’, ‘香’]

#3. 解码(ID → 文本) 同时使用编码的列表(这里只取了input_ids([101, 100, 1981, 1978, 1979, 102],),因为还有注意力掩码列表)
decoded_text = tokenizer.decode(encoded[“input_ids”])
print(“\n【解码结果】”)
print(decoded_text)

[CLS] [UNK] 高 食 香 [SEP]

以上是通过加载distilbert模型,找一段文本去进行编码、解码,在分词模型文件中中还有其他文件可去探究,如图:

这些文件是加载模型和分词器的必要条件,缺少任何一个都会导致无法正常加载。

1. config.json

  • 类型:模型配置文件(JSON 格式)
  • 作用:记录模型的超参数,包括:
  • 隐藏层维度(dim)
  • 层数(n_layers)
  • 注意力头数(n_heads)
  • 词表大小(vocab_size)
  • 最大位置嵌入长度(max_position_embeddings)
  • dropout 比例等
  • 用途:

AutoModel.from_pretrained() 根据该文件自动构建模型结构

2. pytorch_model.bin

  • 类型:模型权重文件(二进制)
  • 作用:保存模型所有层的参数,包括:
  • 嵌入层(Embedding)权重
  • Transformer 编码器层权重
  • 输出层权重
  • 用途:加载预训练权重到模型中

3. vocab.txt

  • 类型:词表文件(文本)
  • 作用:存储 WordPiece 分词器的词表,每行一个 token,按 ID 顺序排列
  • 用途:将 token 映射为整数 ID,或从 ID 映射回 token

4. tokenizer_config.json

  • 类型

    :分词器配置文件(JSON 格式)

  • 作用

    :定义分词器的基本参数,如:

  • 是否小写(do_lower_case)
  • 特殊 token(unk_token、sep_token、pad_token 等)
  • 最大序列长度(model_max_length)
  • 用途

    :初始化分词器时读取配置

5. special_tokens_map.json

  • 类型

    :特殊 token 映射文件(JSON 格式)

  • 作用

    :定义特殊 token 的名称与符号,例如:

  • [CLS]

    [SEP][PAD][UNK][MASK]

  • 用途

    :统一不同模型 / 语言的特殊 token 命名


二、可选文件

这些文件根据使用场景可存在或不存在,不影响基本加载,但可能影响功能或加载速度。

6. tokenizer.json

  • 类型:完整分词器序列化文件(JSON 格式)
  • 作用:一次性保存分词器的所有状态,包括:
  • 词表
  • 合并规则
  • 文本归一化规则(normalizer)
  • 预分词规则(pre_tokenizer)
  • 后处理规则(post_processor)
  • 用途:快速加载分词器,支持跨语言 / 跨平台使用

7. tf_model.h5

  • 类型:TensorFlow 权重文件(HDF5 格式)
  • 作用:保存 TensorFlow 版本的模型权重
  • 用途:当使用 TensorFlow/Keras 框架加载模型时使用

8. generation_config.json

  • 类型:文本生成配置文件(JSON 格式)
  • 作用:记录文本生成相关的超参数,如:
  • 最大生成长度
  • 采样温度
  • top-k、top-p 等
  • 用途:在文本生成任务中控制生成行为(DistilBERT 一般无此文件)

9. added_tokens.json

  • 类型:用户自定义 token 列表(JSON 格式)
  • 作用:保存训练过程中添加的自定义 token 及其 ID
  • 用途:在微调或推理时正确处理新增的特殊 token

以上以distilbert分词模型为例,讲述了文本进行编码、解码的过程以及功介绍,还有源码文件中常用文本功能。


如何系统学习掌握AI大模型?

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。

在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型行业报告

行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

在这里插入图片描述

5. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

6. 大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐