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

LLM基础-什么是Token?

LLM基础-什么是Token?

概述

Token 是大语言模型(LLM, Large Language Model)中最基本的输入单元,它是语言被模型“理解”的方式。不同于人类可以直接看懂一段自然语言文本,LLM 只能处理数字,而这些数字就是由 token 转换而来的。

通过本文你将了解:

  • 什么是 token,它和文字的关系是什么?
  • 为什么 LLM 不直接处理文字,而是需要 token?
  • tokenizer 是做什么的,它的原理是什么?
  • 常见的 tokenizer 类型和编码方式有哪些?

理解 token 是高效使用 LLM 的关键,无论你是要写 prompt、构建聊天机器人、做嵌入检索,还是进行微调训练,都离不开 token。


大模型如何接收输入

我们平常使用大模型,比如 ChatGPT、Deepseek等,都是通过输入一段文字(也就是“提示词”,Prompt)与模型进行交互,看似模型直接把这段文字作为输入,并处理了这段文本。但真实的处理流程情况并非如此。

模型内部并不会直接接收自然语言文本,而是接收经过token转换器编码后的 token 序列。

为什么需要这个转换过程?

  • 神经网络只能处理数字。
  • 文本需要映射成固定的向量才能进入模型计算。
  • 使用 token 可以让模型更好地压缩、理解和预测语言结构。
输入流程图
用户输入文本
Tokenizer 编码
Token 序列-整数数组
Transformer 网络计算
输出 Token 序列
Tokenizer 解码
最终文本输出

这个过程不仅用于模型输入,也用于模型输出。Transformer生成的是一个个 token,它们最终会通过一个Tokenizer解码器再被转换回自然语言。


什么是 Token?

Token 是自然语言中被token转换器(Tokenizer)切分处理的最小单元。它可以是:

  • 一个字符(例如:“你”)
  • 一个单词(例如:“dog”)
  • 一个词的一部分(例如:“play” + “ing”)
举例说明:
文本Token 序列Token 数量
Hello[“Hello”] → [15496]1
playing[“play”, “ing”] → [1223, 342]2
我喜欢你[“我”, “喜欢”, “你”]3
Let’s go![“Let”, “'”, “s”, " go", “!”]5

注意:token 是模型所识别的基础单元,并不一定等同于自然语言中的“词”或“字”。

为什么要这么分?

这样的切分方式有助于:

  • 减少词表大小,节省模型参数量。
  • 提升对罕见词、新词、拼写错误的泛化能力。
  • 对多语言尤其有效,尤其像中文、日文、韩文等语言没有天然空格分词的情况。

Token 是整数序列

神经网络不理解文本,只能处理数字。因此,token 需要被编码为整数,再被嵌入成向量,供模型处理。

示例流程:

文本输入:

"你好,世界"

Tokenizer 切分:

["你", "好", ",", "世界"]

编码为整数 ID:

[9234, 8721, 13, 45012]

这些整数再被转换成向量(通过嵌入层),输入给 Transformer 模型进行计算。

为什么是整数?

因为神经网络的嵌入层(Embedding Layer)就是通过“整数索引”去查一个巨大的向量表:

embedding[token_id] → 向量

所以 token 最终表现为一串整数 ID,是大模型能够理解语言的桥梁。


Tokenizer(Token 转换器)

Tokenizer 是完成文本和 token 之间转换的关键工具。

它的作用分为两部分:

  1. **编码(Encode):**将原始自然语言转为 token 数组。
  2. **解码(Decode):**将 token 数组转换回文本。

一个优秀的 tokenizer 应该具备以下特点:

  • 高效:转换速度快,节省内存
  • 可压缩:长文本能切分成较少 token
  • 泛化性强:对未知单词也能合理切分
举个实际例子(使用 Tiktoken):
python复制编辑from transformers import GPT2Tokenizertokenizer = GPT2Tokenizer.from_pretrained("gpt2")
text = "I love AI"
token_ids = tokenizer.encode(text)
print(token_ids)  # 输出:[40, 502, 1332]

常见的 Token 编码算法

不同的模型和任务,会使用不同的 tokenizer 和编码方式,主要包括以下几种:

1. BPE(Byte Pair Encoding)
  • 原理:通过统计频繁出现的字节对,逐步合并成较大的单元。
  • 应用:GPT 系列(如 GPT-2/3/4)。
  • 特点:压缩效率高,适合多语言场景。
2. WordPiece
  • 原理:将词拆解成词根 + 后缀,用于解决罕见词问题。
  • 应用:BERT、RoBERTa。
  • 特点:词表更小,训练更稳定。
3. SentencePiece
  • 原理:不依赖空格分词,基于字符级建模。
  • 应用:T5、XLNet、ALBERT。
  • 特点:适用于无空格语言,如中文、日文。
4. Tiktoken(OpenAI 专用)
  • 特点:优化 GPT 使用场景,速度极快,token 估算准确。
  • 提供工具支持编码、解码和 token 计数。

Token 使用中的常见问题

1. Token 限制

每个大模型都有上下文 token 限制:

模型最大上下文长度
GPT-3.54096 tokens
GPT-4 (8K)8192 tokens
GPT-4 (32K)32768 tokens
Claude 2100,000+ tokens

当我们提供的输入 + 模型生成的输出 token 总和超过限制,就会导致:

  • 截断输入
  • 报错
  • 输出不完整

总结

  • Token 是语言模型理解语言的基本单位,实质上是一个整数序列。
  • Tokenizer 是桥梁,负责把文本编码成模型可识别的 token,或将生成结果解码回文本。
  • 理解 token 的本质和机制,有助于更合理地设计提示词、避免上下文超限、评估模型成本。
  • 不同的 tokenizer 编码算法适用于不同的模型架构和语言类型。
http://www.xdnf.cn/news/44785.html

相关文章:

  • 位运算---总结
  • ASP.NET Core 最小 API:极简开发,高效构建(下)
  • From RAG to Memory: Non-Parametric Continual Learning for Large Language Models
  • wordpress独立站的产品详情页添加WhatsApp链接按钮
  • docker配置skywalking 监控springcloud应用
  • 缓存 --- Redis性能瓶颈和大Key问题
  • 数据通信学习笔记之OSPF其他内容3
  • 学习设计模式《四》——单例模式
  • sizeof和strlen区分,(好多例子)
  • gbase8s之线程状态详解(超值)
  • deep-share开源浏览器扩展,用于分享 DeepSeek 对话,使用户能够将对话内容保存为图片或文本以便轻松分享
  • Linux 进程间通信之消息队列:原理 + API 与实战 (System-V IPC)
  • 人工智能-机器学习其他技术(决策树,异常检测,主成分分析)
  • 论文笔记(七十八)Do generative video models understand physical principles?
  • vscode使用技巧
  • SpringBoot 3 与 SpringDoc 打造完美接口文档
  • 面试常用基础算法
  • JSON-RPC远程控制
  • Linux中的信号量
  • 健身房管理系统设计与实现(springboot+ssm+vue+mysql)含万字详细文档
  • 01.04、回文排序
  • AI日报 - 2025年04月21日
  • 高效获取淘宝实时商品数据:API 接口开发与数据采集实战指南
  • Vue3核心源码解析
  • nvm管理node版本 与 nvm常用指令的使用
  • SpringBoot3集成ES8.15实现余额监控
  • Docker镜像仓库
  • 深拷贝和浅拷贝的区别
  • React Router V7使用详解
  • LeetCode[232]用栈实现队列