Token 在 LLM

大语言模型需要将原始文本转换为数字序列,这一过程涉及Tokenization策略、Token到token id映射以及Token Embedding。预训练和自注意力机制在生成高质量的上下文感知向量中起关键作用。Token序列长度有限制,以适应计算资源和注意力机制的局限。Transformer模型通过自注意力机制处理序列依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大语言模型不能理解原始文本,所以需要把原始文本转换成大语言模型可以理解的数字表示形式,经过大模型处理以后,需要将该数字表示形式转换为人可以理解的文本。

在这里插入图片描述

原始文本到 token

原始文本转换为token序列的过程通常是在LLM的预处理阶段完成的。

在大型语言模型(LLM)中,token是指模型输入或输出序列中的基本单元。通常情况下,一个token可能是一个单词、一个字符或一个字节序列,这取决于模型的预处理方式。
Token在LLM中扮演着非常重要的角色,主要有以下几个原因:

  1. 输入表示 - LLM需要将原始文本转换为模型可以理解的数字序列。将文本分解为token序列是这个转换过程的第一步。

  2. 输出生成 - LLM生成文本时,也是通过预测下一个token的概率分布,然后采样或选择概率较高的token,循环这个过程直到达到终止条件。

  3. 上下文窗口 - 大多数LLM有最大输入长度的限制,通过将输入分解为token,模型可以处理比词或字符级别更长的上下文。

  4. 子词tokenization - 一些tokenizer采用基于字节对编码(BPE)等子词tokenization算法,可以更好地处理未见词并减小词表大小。

  5. 模型参数 - LLM通常以token为单位计算参数大小。更大的token数量通常意味着模型可以处理更长、更复杂的输入。

总的来说,token是LLM进行序列建模和生成的基本单位,对于输入理解、输出生成、上下文捕获和参数大小等都有重要影响。合理的token设计对于LLM的性能至关重要。

根据不同的Tokenization(分词)策略,Token可以是单词、子词或者字符等。

以下是一些常见Token的例子:

  1. 单词Token

    • 句子: “The quick brown fox jumps over the lazy dog.”
    • Tokens: “The”, “quick”, “brown”, “fox”, “jumps”, “over”, “the”, “lazy”, “dog”
  2. 子词Token

    • 单词: “Unbelievable”
    • BPE子词Tokens: “Unbeli”, “evable”
  3. 字符Token

    • 单词: “Hello”
    • 字符Tokens: “H”, “e”, “l”, “l”, “o”
  4. SentencePiece Token

    • 句子: “The student studies at university.”
    • SentencePiece Tokens: “The”, " stu", “dent”, " studi", “es”, " at", " un", “ivers”, “ity”, “.”

不同Token粒度会影响模型的词汇表大小、输入长度等,需要根据具体任务和模型权衡选择。通常单词是最自然的Token单元,但对于特殊词或未见词,需使用子词或字符Token处理。

值得注意的是,不同NLP模型可能对同一个单词使用不同的Token划分方式,如BERT使用的是WordPiece子词Token。合理的Token设计对模型性能有很大影响。

https://platform.openai.com/tokenizer

在这里插入图片描述

### LLM Token 工作机制及使用方法 #### 1. Token 的定义与作用 在大型语言模型(LLM)中,词汇表通过将文本分割成更小的单元——即 tokens 来实现数字化表示。每个 token 被映射到一个唯一的数值标识符,以便模型能够将其作为数字序列进行处理和操作[^1]。这种机制使 LLM 可以高效地学习和生成自然语言。 #### 2. Tokenization 过程及其特性 Tokenization 是指将原始文本拆分为一系列 tokens 的过程,这一过程通常是特定于模型的。不同的模型采用不同的分词策略,例如字节对编码(BPE)、WordPiece 或 Unigram Language Model 等[^2]。这些策略决定了哪些子字符串会被视为独立的 tokens,并直接影响模型对语法结构的理解能力。 #### 3. 不同模型间 token 表示差异 由于各家公司开发的语言模型拥有各自独特的 tokenizer 和词汇表设计,即使是相同的词语,在不同框架下也可能被分解为完全不一样的 tokens 序列。比如,“running” 和 “ran”,虽然语义关联紧密但在某些情况下却需分别对待;而 GPT 家族成员之间以及与其他竞品如 Qwen、Claude 对应的最大上下文长度和支持最大数量亦存在显著区别[^5]。 #### 4. 实际应用场景下的考量因素 当实际部署基于 Transformer 架构的大规模预训练模型时,开发者需要考虑以下几个方面: - **选择合适尺寸**:针对具体任务需求调整输入片段粒度大小; - **评估效果影响**:研究改变单位划分方式后对于最终输出质量产生的正面或负面影响; - **优化资源利用效率**:合理规划每批次请求所含字符量级以免超出硬件限制同时兼顾成本效益分析[^3]。 #### 示例代码展示如何获取指定平台上的token数目统计功能 以下是 Python 中调用 Hugging Face Transformers 库来计算一段英文句子对应多少tokens的例子: ```python from transformers import AutoTokenizer def count_tokens(text, model_name="gpt2"): tokenizer = AutoTokenizer.from_pretrained(model_name) encoded_input = tokenizer.encode_plus( text, max_length=None, truncation=False, padding=False, return_tensors='pt' ) num_tokens = len(encoded_input['input_ids'][0]) return num_tokens sample_text = "This is an example sentence to demonstrate token counting." print(f"The number of tokens in the sample text is {count_tokens(sample_text)}.") ``` 此脚本展示了怎样加载预训练好的tokenizer实例并通过它把给定字符串转化为整数列表形式再进一步求得其长度值代表该句子里有多少个单独计价项可供后续深入探讨。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值