本文,您将学习如何使用 Gradio ChatInterface和 Hugging Face 构建一个聊天机器人。而且,您可以免费在 Colab 中运行(文末付源码)!
我们将逐个步骤地进行,因此这个教程适合初学者。但有经验的工程师也会受益匪浅。
在这个分步指南中,我们将执行以下步骤:
安装: 通过安装所需的库来设置运行环境。
前提条件: 确保能够访问 Hugging Face 上的 LLama-2 7B 模型。
加载模型和分词器: 获取会话的模型和分词器。
创建Llama管道: 准备模型以生成响应。
为Llama 2格式化提示: 准备正确提示结构的消息。
生成Llama响应: 创建一个函数,根据聊天历史获取响应。
通过Gradio的聊天界面与Llama互动: 提示模型回答问题并探索其功能。
在看代码之前,需要花2分钟来完成以下3个必要步骤:
确保将 Colab 运行时切换到 GPU 以获得最佳性能。在顶部菜单中转到 “Runtime” -> “Change runtime type” 并选择 “T4 GPU”。
在 Hugging Face 上创建帐户以访问模型。
获取对 Llama 2 的访问权限。重要提示:在表单中提供的电子邮件必须与您Hugging Face帐户的电子邮件完全相同。还要注意:获取模型访问权限可能需要几分钟时间。
我们将需要以下Python库:
Hugging Face Transformers: 为我们提供预训练模型的简单方法。
PyTorch: 用于深度学习操作。
Accelerate: 优化PyTorch操作,特别是在GPU上。
然后,我们想使用方便的聊天界面 ,需要 Gradio 的最新版本。需运行:
注意: 如果安装 gradio 时遇到问题。如果遇到错误,例如 “NotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968”,请执行以下操作:
重新启动运行时:Runtime -> Restart Runtime
验证当前会话以获取 Llama-2 7B 模型的权限。
这是以您的身份运行 Hugging Face 代码的方式。
仔细检查您的登录状态,确保一切正常。
在输出中,您应该看到您的 Hugging Face 用户名。
引入Llama模型及其分词器
提醒一下,我们正在使用针对聊天机器人进行微调的 Llama 2 的 7B 参数版本。
设置一个简化的管道,用于提示生成文本响应。
注意: 这是我们实际加载 Llama 2 模型的步骤。因此,这段代码需要几分钟才能完成。
我们在管道中设置了4个参数,但前两个至关重要:
“text-generation” 是我们希望管道执行的任务。
“model” 是我们使用的模型。对于我们来说,它是先前定义的 7B chat Llama 2。
在我们进入代码之前,我们需要回答一个问题:
如何以正确的方式提示 Llama 2 ?
如果使用 OpenAI API,您可以通过添加 messages 和 "role" 参数来通过简单的函数调用来提示 GPT 模型。 API 负责处理其他所有事情。
但开源模型更为复杂。 它要求开发人员了解如何微调特定模型。然后,它们遵循精确的结构来生成模型响应。
当前 Llama 2 的提示,我们需要遵循这个结构:
举例:
我们分解一下:
<s></s> 是“句子”标记。它们被用来分隔每次对话的交流。将它们视为包含单个用户查询和机器人响应的“回合”。
[INST][/INST] 是用户指令的标记。我们将每个用户查询放在标签之间。
<<SYS>><</SYS>> 是系统提示的标记。我们使用它来为模型提供清晰的指令。我们在对话的第一个“回合”中,在用户 [INST][/INST] 之间传递系统提示。
以下是代码用例,根据上面的结果,我们将提示词融合到 format_message 函数:
我们解释一下我们在这里使用的函数参数:
message — 用户的当前消息。
history — 当前对话的聊天记录。
memory_limit — 我们传递给模型的最后几个“回合”的数量。
此外,在代码片段的顶部,添加 SYSTEM_PROMT 来告知模型应该如何表现。它以 <s>[INST]<<SYS>> 行开头,以确保遵循正确的提示结构。
使用 llama_pipeline() 函数,让 Llama 响应提示:
重要提示:
我们首先使用来自上一步的 format_message 函数格式化我们的提示。
message 和 history 参数直接来自我们将在下一步显示的聊天界面。
如下所示:
这段代码将生成一个功能齐全的聊天机器人:
在 ChatInterface(get_llama_response) 部分,唯一的参数于生成答案的函数。Gradio 将自动传递 message 和 history。
现在已经可以与 Llama 2 7B 模型聊天,项目运行在免费的 Colab 上。按照上面的步骤,鼓励您也执行一遍。
您还可以进行以下尝试:
更改 llama_pipeline 中的一些参数
尝试不同的系统提示
编写您自己的提示
hugging Face 注册地址:
https://huggingface.co/join
Github 项目地址:
https://github.com/mcks2000/llm_notebooks/blob/main/notebooks/LLaMa_2_Prompting_Guide_with_Gradio.ipynb
Llama 2 申请访问地址:
https://ai.meta.com/resources/models-and-libraries/llama-downloads/
关注我 二师兄 talk 获取更多资讯,并在 头条 上阅读我的短篇技术文章