当前位置: 首页 > news >正文

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 列表完整解码回原始文本
http://www.jsqmd.com/news/1075231/

相关文章:

  • 百度网盘登录故障,显示网络开小差了
  • 市面上哪款降重工具,既能降重复率,又能消除论文的 AI 写作特征?
  • 【软件测试】day02设计测试点
  • 彻底解决大模型 JSON 报错:提示词 + 硬约束 + 兜底的全链路修复方案
  • 异化与伪饰:波普尔病毒的形而上学批判与大模型时代的认知危机
  • MUMmer终极指南:5步掌握基因组比对核心技术
  • ISO新兴认证全景图:42001人工智能治理与38505数据治理赋能企业数字化
  • AWS re:Invent 2021 AI/ML技术路线图:架构师级工程实践指南
  • 实战 LangGraph 循环执行:构建带自动重试的并行任务流
  • 100VIN,0.2A,耐高压LDO,XZ6203H
  • 教你如何将yolov8训练好的文件部署在RDK上
  • 解锁无损音乐宝藏:TIDAL Downloader Next Generation 让你的音乐收藏焕然一新![特殊字符]
  • Java 面试复习草稿:HashMap 与线程池
  • 在项目中使用了Nutz框架,能说一下它相比MyBatis的优势和不足吗?你们为什么选它?
  • 从零学习Kafka:生产者分区机制
  • 面试官问:“你怎么评估一个 Agent 到底好不好用?”,我笑了:“试了几个问题,没问题就行”,面试官:“你不叫评估,叫碰运气”
  • LSTM序列分类实战:门控机制、双向设计与工程调优指南
  • 终极指南:如何用DroneSecurity深度解析DJI无人机通信协议?
  • 《HarmonyOS技术精讲-UI开发 (基于NDK构建UI)》第4篇:高效Canvas绘制——NDK中的2D渲染加速
  • 一升主机跑百亿大模型:酷睿Ultra端侧AI实战指南
  • 磁盘空间告急?这个Rust工具帮你找出所有可以删的文件
  • 分钟看懂p值和置信区间:别再被_显著_忽悠了
  • 九大网盘直链下载助手完整指南:免费高速下载终极方案
  • MPC8360E内存控制器深度解析:SDRAM时序与UPM可编程接口实战
  • Bootstrap Tooltip XSS漏洞复现:从原理到防御的深度解析
  • 临床AI落地五大生死线:从模型可信度到人机协同的实战指南
  • hcip二层综合实验
  • LinkSwift终极指南:如何优雅获取九大网盘直链下载地址
  • Ghostty + Fish + Starship + fzf + zoxide + Raycast
  • UEditor远程文件抓取漏洞解析:从原理到修复的Web安全实战