使用Tokenizer
概述
Hugging Face Tokenizer 是由 Hugging Face 开发的一款高效、灵活的文本分词工具。它旨在为自然语言处理(NLP)任务提供强大的支持,通过将文本转换为模型能够理解的形式——即分词(tokens)。Tokenizer 不仅负责将文本分割成词汇单元,还管理着这些词汇单元与它们对应的索引之间的映射关系,这在机器学习模型中用于输入表示至关重要。
MindSpore Transformers中涉及使用Tokenizer的流程有:推理、微调在线数据集加载及离线数据集预处理等。当前已支持直接使用基于Hugging Face transformers的Tokenizer。
MindSpore Transformers原有的Tokenizer组件与Hugging Face Tokenizer的功能相同,直接使用无需额外开发成本,对于迁移Hugging Face上的模型时比较友好。本文档主要介绍以推理流程为例,介绍如何复用Hugging Face Tokenizer。目前仅支持新架构的Qwen3系列模型,后续持续优化泛化性。
基本流程
使用流程可以分解成以下几个步骤:
1. 根据模型选择下载Tokenizer文件
根据模型下载对应的Tokenizer相关文件到对应的文件夹,文件包括词表文件等。此外,Hugging Face的Tokenizer具体可以分为两大类:
transformers的内置Tokenizer。如Qwen2Tokenizer;
继承transformers的Tokenizer的基类实现的自定义的Tokenizer,并没有合入transformers。只是在Hugging Face的仓库上或者本地存在Tokenizer的Python文件,需要支持远程加载和将Tokenizer的Python文件存到对应文件夹。如ChatGLM4Tokenizer。
2. 修改配置文件
3. 执行任务
参考样例拉起任务。
推理流程示例
推理流程以Qwen3模型为例。
使用run_mindformer.py脚本启动
修改yaml配置
Qwen3模型的配置文件predict_qwen3.yaml需要修改的地方如下:
use_legacy: False pretrained_model_dir: "path/to/qwen3_dir"
参数说明:
use_legacy:决定是否使用老架构,默认值:
True
;pretrained_model_dir:放置Tokenizer相关文件的文件夹路径。
拉起任务
以
Qwen3-8b
的单卡推理为例,启动命令如下:python run_mindformer.py \ --config configs/qwen3/predict_qwen3.yaml \ --load_checkpoint /path/to/model_dir \ --run_mode predict \ --trust_remote_code False \ --predict_data '帮助我制定一份去上海的旅游攻略'
参数说明:
config:yaml配置文件的路径;
load_checkpoint:放置权重的文件夹路径;
run_mode:运行模式,推理任务配置为
predict
;trust_remote_code:是否信任从远程下载的代码,默认值:
False
;predict_data:推理的输入。
自定义脚本
推理的自定义脚本实现过程涉及Tokenizer的实例化,其实现代码参考如下:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name_or_path="path/to/pretrained_model_dir",
trust_remote_code=False)
参数说明:
pretrained_model_name_or_path:Hugging Face下载的Tokenizer相关的文件存储的文件夹路径。
trust_remote_code:是否信任从远程下载的代码,默认值:
False
。
训练流程示例
在线数据集加载
修改yaml配置中train_dataset部分中和Tokenizer相关的部分。
use_legacy: False
pretrained_model_dir: &pretrained_model_dir "path/to/qwen3_dir"
train_dataset: &train_dataset
data_loader:
type: CommonDataLoader
handler:
- type: AlpacaInsturctDataHandler
pretrained_model_dir: *pretrained_model_dir
trust_remote_code: False
tokenizer:
padding_side: "right"
参数说明:
use_legacy:决定是否使用老架构,默认值:
True
;pretrained_model_dir:HuggingFace下载的Tokenizer相关的文件存储的文件夹路径。
padding_side: 指定Tokenizer的padding的位置,训练时需要设置:
"right"
。trust_remote_code:是否信任从远程下载的代码,默认值:
False
。
离线数据集预处理
将离线数据集预处理的脚本中Tokenizer实例化的代码替换成以下代码即可:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(pretrained_model_name_or_path="path/to/pretrained_model_dir",
trust_remote_code=False)
tokenizer.padding_side = "right"
参数说明:
pretrained_model_name_or_path:HuggingFace下载的Tokenizer相关的文件存储的文件夹路径。
trust_remote_code:是否信任从远程下载的代码,默认值:
False
。