Token(词元),5分钟彻底搞懂

Token(词元),5分钟彻底搞懂 如果你习惯看视频就看《4. Token(词元)看会动画敲下代码就彻底搞懂了》喜欢看文章就接着往下看。Token的优化过程如下大模型单次调用的总消耗 Token 由两部分组成总消耗 Token 输入 Token 输出 Token。其中输入 Token 的构成更为细致包括当前用户提问 Token、系统提示词 Token、历史对话上下文 Token以及消息格式开销 Token。需要注意的是Token 的实际切分由各模型厂商自研的 Tokenizer分词器独立完成因此相同文本在不同模型上会产生不同的 Token 数量与序列。以上提及的换算比例等数据均为行业通用估算参考。下面通过代码实战带你彻底搞懂。首先打开命令行窗口使用 pip 命令安装 transformers和PyTorch 开发库。pip install transformers torch安装完成后我们便可以借助 transformers 库加载主流的分词器直观地观察文本到 Token 的切分过程。以下是具体代码示例# 首先从 transformers 库中导入 AutoTokenizer 类它能自动适配不同大模型的分词规则 from transformers import AutoTokenizer # 接着从预训练权重加载 Qwen2 模型的分词器 # 注意 Qwen2_tokenizer是下载到本地自命名的分词器 下载地址见文章最后链接 tokenizer AutoTokenizer.from_pretrained(Qwen2_tokenizer) # 定义待处理的输入文本 text 你好我是cool。 # --------------------------------------------------------- # 第1步分词 (Tokenization) # --------------------------------------------------------- # 使用 BPE算法将文本切分为“子词单元” # 规则是常见词为1个Token复杂词会拆开标点也算Token。 bpe_codes tokenizer.tokenize(text) # 先打印出来看一下结果 print(bpe_codes) # 为了让分词结果可读需要做一下处理 decoded_result [] for bpe_code in bpe_codes: # 先将子词转换为模型词汇表中的ID id tokenizer.convert_tokens_to_ids(bpe_code) # 再将单个ID解码回文本并将结果存起来 decoded tokenizer.decode([id]) decoded_result.append(decoded) # 输出最终的分词列表 print(分词结果, decoded_result) # --------------------------------------------------------- # 第2步向量化 (Numericalization) # --------------------------------------------------------- # 将字符串形式的 Token 列表转换为模型能处理的整数 ID 列表 # 这是大模型的“输入语言”模型只认识数字不认识文字 token_ids tokenizer.convert_tokens_to_ids(bpe_codes) print(向量ID, token_ids) # --------------------------------------------------------- # 第3步统计 Token 数量 # --------------------------------------------------------- # 计算 Token 总数 count len(token_ids) print(Token总数, count) # 将 ID 列表完整解码回原始文本