菜单

基本用法示例

相关源文件

本页提供了如何使用Llama 2模型进行文本生成任务的实用示例。它涵盖了两种主要的使用模式:文本补全和聊天补全。有关运行这些示例所需的模型权重下载信息,请参阅下载模型

概述

无论您使用文本补全还是聊天补全,Llama 2模型的使用都遵循一致的模式

  1. 构建Llama模型实例
  2. 准备输入数据(提示或对话)
  3. 使用指定参数生成文本
  4. 处理结果

基本工作流程

下图展示了使用Llama 2的基本工作流程

来源: example_text_completion.py32-37 example_chat_completion.py35-40

构建Llama实例

使用Llama 2的第一步是通过Llama.build()方法初始化模型

来源: example_text_completion.py32-37 example_chat_completion.py35-40

不同的模型在使用torchrun运行时需要不同的参数

模型MP (--nproc_per_node)
7B1
13B2
70B8

来源: 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

参数影响

  • 温度:

    • 较低 (0.1-0.5):更具确定性,更适合事实性回复
    • 中等 (0.6-0.8):在创意和连贯性之间取得平衡
    • 较高 (0.9-1.0):更具创意,但可能连贯性较差
  • Top-p (核采样):

    • 通过仅考虑累积概率超过阈值的token来控制生成文本的多样性
    • 默认值0.9适用于大多数用例
  • 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