文本生成系统是 Llama 2 代码库的核心组件,负责使用预训练的 Transformer 模型生成文本。本文档解释了系统如何处理提示、管理分词以及为通用文本补全和基于聊天的应用生成连贯的文本响应。有关 Transformer 架构实现的信息,请参阅模型架构。
文本生成系统提供了一个使用 Llama 2 模型的高级接口,处理模型加载、分词处理以及使用各种采样参数生成文本的复杂性。它充当用户提示和模型输出之间的桥梁。
来源: llama/generation.py51-395 llama/tokenizer.py14-68
Llama 类作为文本生成的主要接口,封装了一个预训练的 Transformer 模型和分词器。它提供了文本补全和聊天补全的方法。
来源: llama/generation.py51 llama/generation.py125-127 llama/tokenizer.py14-68
build 静态方法使用指定的模型权重和分词器初始化 Llama 实例
generate 方法是处理给定分词提示的文本生成的核心函数
来源: llama/generation.py129-231
生成过程的关键组件是:
系统使用 top-p(核心)采样来控制文本生成中的随机性。
来源: llama/generation.py398-421
text_completion 方法为通用文本提示生成补全
generate 方法Input: "The best way to learn is to"
Output: "The best way to learn is to teach others what you've learned. When you explain a concept to someone else, you solidify your own understanding and identify gaps in your knowledge."
来源: llama/generation.py233-282
chat_completion 方法处理基于对话的交互
来源: llama/generation.py284-395
Tokenizer 类提供了文本和词元 ID 之间转换的方法
| 方法 | 目的 | 关键参数 |
|---|---|---|
编码 (encode) | 将文本转换为 token ID | s (输入字符串), bos (添加起始词元), eos (添加结束词元) |
解码 (decode) | 将词元 ID 转换为文本 | t (词元 ID 列表) |
特殊词元包括
bos=True 时添加到序列的开头eos=True 时添加到序列的末尾系统实施安全措施以防止提示注入
[INST]、[/INST]、<<SYS>>、<</SYS>>SPECIAL_TAGS = ["[INST]", "[/INST]", "<<SYS>>", "<</SYS>>"]
UNSAFE_ERROR = "Error: special tags are not allowed as part of the prompt."
来源: llama/generation.py43-48 llama/generation.py321-322 llama/generation.py374-395
文本生成系统可以使用各种参数进行配置,以控制生成过程。
| 参数 | 描述 | 默认值 |
|---|---|---|
温度 (temperature) | 控制随机性(值越高随机性越大) | 0.6 |
top_p | 核心采样概率阈值 | 0.9 |
max_gen_len | 生成序列的最大长度 | None(使用模型的 max_seq_len - 1) |
logprobs | 是否返回词元对数概率 | 否 |
echo | 是否在输出中包含提示 | False(仅限文本补全) |
来源: llama/generation.py129-231 llama/generation.py233-282 llama/generation.py284-395
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(689c7f)