AI-NEWS · 2024年 10月 26日

大语言模型的工作原理,无需数学解释 [译]

摘要

本文详细介绍了AI(尤其是GenAI)中的Token概念,重点讲解了LLM(大型语言模型)中Token的使用。通过Python代码示例展示了如何对文本进行编码和解码,并深入探讨了分词器(如BPE)的工作原理以及在生成文本过程中的应用。

主要内容

  1. Token化与编码

    • 使用tiktoken库,将英文句子“The quick brown fox jumps over the lazy dog.”进行编码,得到的Token分别为:464, 2068, 7586, 21831, 18045, 625, 262, 16931, 3290, 13。
    • GPT-2 模型使用的是字节对编码(BPE),其词典大小为大约 50,000 个Token。
  2. 分词器BPE

    • BPE 将文本切分为更小的子词单元,例如将“lazy”分解为[laz, y]。
    • 示例代码展示了如何用BPE进行编码和解码操作:
import tiktoken

# 加载GPT-2模型的分词器
encoder = tiktoken.get_encoding("gpt2")

text = "The quick brown fox jumps over the lazy dog."
tokens = encoder.encode(text)

print(f"Encoded tokens: {tokens}")

decoded_text = encoder.decode(tokens)
print(f"Decoded text: {decoded_text}")
  1. 文本生成过程
    • 文本生成过程中,模型利用上下文信息预测下一个Token。通过调整温度(temperature)参数可以控制生成的随机性。
    • 示例代码展示了如何基于前缀进行文本生成:
import torch

def generate_text(prefix, model, tokenizer):
    input_ids = tokenizer.encode(prefix, return_tensors='pt')
    
    with torch.no_grad():
        output = model.generate(input_ids, max_length=50)
        
    generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
    return generated_text

prefix = "The quick brown fox jumps over"
generated_text = generate_text(prefix, model, tokenizer)

print(generated_text)
  1. 模型规模与Token
    • 模型的参数量和Token大小关系密切,例如GPT-2有约15亿个参数,而GPT-3则有1750亿个参数。
    • GPT-4具有8,192 tokens的最大输入长度,并且支持扩展到更大的上下文窗口(如32K或128K)。

结论

本文详细阐述了Token在LLM中的重要性,包括其编码、解码和生成过程。通过Python代码示例,帮助读者更好地理解分词器(BPE)的使用方法及如何基于已有的上下文进行文本生成。此外,文中还介绍了不同模型(如GPT-2, GPT-3和GPT-4)在参数量和Token大小方面的差异。

关键技术点

  • 编码与解码:通过tiktoken库将英文句子转换为Token,并反向解码。
  • BPE分词器:字节对编码,将文本切分为子词单元。
  • 文本生成过程:利用上下文信息预测下一个Token。

参考资料

希望这些内容能帮助您更好地理解AI中的Token概念及其应用。

Source:https://baoyu.io/translations/llm/how-llms-work-explained-without-math