当前位置:首页|资讯|Hugging Face|Midjourney|LLaMA

使用免费Colab创建带有Gradio和Hugging Face 的 LLaMa 2 聊天机器人

作者:二师兄talk发布时间:2023-12-17


Midjourney

本文,您将学习如何使用 Gradio ChatInterface和 Hugging Face 构建一个聊天机器人。而且,您可以免费在 Colab 中运行(文末付源码)!

我们将逐个步骤地进行,因此这个教程适合初学者。但有经验的工程师也会受益匪浅。

操作流程

在这个分步指南中,我们将执行以下步骤:

  1. 安装: 通过安装所需的库来设置运行环境。

  2. 前提条件: 确保能够访问 Hugging Face 上的 LLama-2 7B 模型。

  3. 加载模型和分词器: 获取会话的模型和分词器。

  4. 创建Llama管道: 准备模型以生成响应。

  5. 为Llama 2格式化提示: 准备正确提示结构的消息。

  6. 生成Llama响应: 创建一个函数,根据聊天历史获取响应。

  7. 通过Gradio的聊天界面与Llama互动: 提示模型回答问题并探索其功能。


前提条件

在看代码之前,需要花2分钟来完成以下3个必要步骤:

  1. 确保将 Colab 运行时切换到 GPU 以获得最佳性能。在顶部菜单中转到 “Runtime” -> “Change runtime type” 并选择 “T4 GPU”。

  2. 在 Hugging Face 上创建帐户以访问模型。

  3. 获取对 Llama 2 的访问权限。重要提示:在表单中提供的电子邮件必须与您Hugging Face帐户的电子邮件完全相同。还要注意:获取模型访问权限可能需要几分钟时间。


步骤1:安装所需库

我们将需要以下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


步骤2:对 Hugging Face 进行身份验证

验证当前会话以获取 Llama-2 7B 模型的权限。

这是以您的身份运行 Hugging Face 代码的方式。


步骤2A:验证您的 Hugging Face 身份

仔细检查您的登录状态,确保一切正常。

在输出中,您应该看到您的 Hugging Face 用户名。


步骤3:加载模型和分词器

引入Llama模型及其分词器

提醒一下,我们正在使用针对聊天机器人进行微调的 Llama 2 的 7B 参数版本。


步骤4:创建 Llama 管道

设置一个简化的管道,用于提示生成文本响应。

注意: 这是我们实际加载 Llama 2 模型的步骤。因此,这段代码需要几分钟才能完成。

我们在管道中设置了4个参数,但前两个至关重要:

  • “text-generation” 是我们希望管道执行的任务。

  • “model” 是我们使用的模型。对于我们来说,它是先前定义的 7B chat Llama 2。


步骤5:为 Llama 格式化提示

在我们进入代码之前,我们需要回答一个问题:


如何以正确的方式提示 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>> 行开头,以确保遵循正确的提示结构。


步骤6:生成 Llama 2 的响应

使用 llama_pipeline() 函数,让 Llama 响应提示:

重要提示:

  • 我们首先使用来自上一步的 format_message 函数格式化我们的提示。

  • message 和 history 参数直接来自我们将在下一步显示的聊天界面。


步骤7:与 Llama 2 互动

如下所示:

这段代码将生成一个功能齐全的聊天机器人:

截图

在 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 获取更多资讯,并在 头条 上阅读我的短篇技术文章



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1