本页提供了如何使用Llama 2模型进行文本生成任务的实用示例。它涵盖了两种主要的使用模式:文本补全和聊天补全。有关运行这些示例所需的模型权重下载信息,请参阅下载模型。
无论您使用文本补全还是聊天补全,Llama 2模型的使用都遵循一致的模式
下图展示了使用Llama 2的基本工作流程
来源: example_text_completion.py32-37 example_chat_completion.py35-40
使用Llama 2的第一步是通过Llama.build()方法初始化模型
来源: example_text_completion.py32-37 example_chat_completion.py35-40
不同的模型在使用torchrun运行时需要不同的参数
| 模型 | MP (--nproc_per_node) |
|---|---|
| 7B | 1 |
| 13B | 2 |
| 70B | 8 |
来源: README.md75-81
文本补全用于通用文本生成任务,模型会根据给定的提示继续生成文本。
来源: example_text_completion.py39-61
要使用文本补全,您需要创建一个提示列表,并将其传递给text_completion()方法
可以通过迭代提示和结果来处理结果
来源: example_text_completion.py39-65
| 提示类型 | 示例 | 目的 |
|---|---|---|
| 开放式 | "我认为生命的意义是" | 创意写作或观点生成 |
| 事实性 | "简单来说,相对论指出" | 信息检索 |
| 少样本学习 | "将英语翻译成法语:sea otter => loutre de mer..." | 在任务前通过示例训练模型 |
来源: example_text_completion.py39-54
聊天补全专用于基于对话的交互,其中模型在对话中扮演助手角色。
来源: example_chat_completion.py42-86 example_chat_completion.py87-92
要使用聊天补全,您需要创建一个对话列表(每个对话都是一个消息列表),并将其传递给chat_completion()方法
来源: example_chat_completion.py42-92
对话中的每条消息都具有特定角色
| 角色 | 描述 | 示例 |
|---|---|---|
user | 人类用户的输入 | {"role": "user", "content": "what is the recipe of mayonnaise?"} |
助手 (assistant) | AI助手的回复 | {"role": "assistant", "content": "Mayonnaise is..."} |
system | 指导助手行为的指令 | {"role": "system", "content": "Always answer with Haiku"} |
来源: example_chat_completion.py42-85
系统消息是控制助手行为的强大方式
代码库中系统消息的示例
来源: example_chat_completion.py59-69 example_chat_completion.py70-78
文本补全和聊天补全方法都接受控制生成过程的参数
| 参数 | 描述 | 典型值 |
|---|---|---|
max_gen_len | 生成文本的最大长度 | 64-512 |
temperature | 控制随机性(值越高随机性越大) | 0.6-0.8 |
top_p | 通过核采样控制多样性 | 0.9 |
温度:
Top-p (核采样):
max_gen_len:
来源: example_text_completion.py12-16 example_chat_completion.py13-18
要运行仓库中的示例
来源: README.md89-96
来源: README.md107-112
请注意,--nproc_per_node参数应设置为您所使用模型的MP值(7B为1,13B为2,70B为8)。
来源: README.md67-71