非工程师指南:训练 LLaMA 2 聊天机器人

发布日期:2023年9月28日
在 GitHub 上更新

简介

在本教程中,我们将向您展示如何无需编写任何代码即可构建自己的开源 ChatGPT!我们将使用 LLaMA 2 基础模型,通过开源指令数据集对其进行微调以实现聊天,然后将模型部署到一个您可以与朋友分享的聊天应用程序。所有这些都只需点击几下即可实现。😀

这为什么重要?嗯,机器学习,尤其是 LLMs(大型语言模型),已经获得了前所未有的普及,成为我们个人和商业生活中至关重要的工具。然而,对于大多数机器学习工程专业领域之外的人来说,训练和部署这些模型的复杂性似乎遥不可及。如果机器学习的未来是充满无处不在的个性化模型,那么即将面临一个挑战:我们如何赋能非技术背景的人独立地利用这项技术?

在 Hugging Face,我们一直在默默地为这个包容的未来铺平道路。我们的一系列工具,包括 Spaces、AutoTrain 和 Inference Endpoints 等服务,旨在让每个人都能接触到机器学习的世界。

为了展示这个民主化未来有多容易实现,本教程将向您展示如何使用 SpacesAutoTrainChatUI 构建聊天应用程序。所有这些只需三个简单的步骤,无需一行代码。就我个人而言,我也不是机器学习工程师,而是 Hugging Face GTM 团队的一员。如果我能做到,你也能做到!让我们开始吧!

Spaces 简介

Hugging Face 的 Spaces 是一项服务,它提供易于使用的图形用户界面(GUI),用于构建和部署网络托管的机器学习演示和应用程序。该服务允许您使用 Gradio 或 Streamlit 前端快速构建机器学习演示,在 Docker 容器中上传自己的应用程序,甚至选择许多预配置的机器学习应用程序即时部署。

我们将部署 Spaces 中两个预配置的 Docker 应用程序模板:AutoTrain 和 ChatUI。

您可以在此处阅读更多关于 Spaces 的信息。

AutoTrain 简介

AutoTrain 是一款无代码工具,允许非机器学习工程师(甚至是非开发人员 😮)训练最先进的机器学习模型,而无需编写代码。它可用于自然语言处理(NLP)、计算机视觉、语音、表格数据,甚至现在也可用于微调大型语言模型(LLM),就像我们今天要做的那样。

您可以在此处阅读更多关于 AutoTrain 的信息。

ChatUI 简介

ChatUI 正如其名,是 Hugging Face 构建的开源用户界面(UI),提供了一个与开源大型语言模型(LLM)交互的接口。值得注意的是,它与 HuggingChat 背后的 UI 相同,HuggingChat 是我们 100% 开源的 ChatGPT 替代品。

您可以在此处阅读更多关于 ChatUI 的信息。

步骤 1:创建新的 AutoTrain Space

1.1 访问 huggingface.co/spaces 并选择“创建新 Space”。


1.2 为您的 Space 命名,如果您计划将模型或 Space 公开,请选择首选的使用许可。

1.3 为了在您部署的 Space 中部署 Docker 模板中的 AutoTrain 应用程序,请选择 Docker > AutoTrain。


1.4 选择运行应用程序的“Space 硬件”。(注意:对于 AutoTrain 应用程序,免费的 CPU 基本选项就足够了,后续的模型训练将使用单独的计算资源,我们稍后可以选择)

1.5 在“Space secrets”下添加您的“HF_TOKEN”,以便此 Space 可以访问您的 Hub 账户。如果没有此令牌,Space 将无法训练或将新模型保存到您的账户。(注意:您的 HF_TOKEN 可以在您的 Hugging Face 个人资料的“设置”>“访问令牌”中找到,请确保令牌选择为“写入”权限)

1.6 选择您是否要将其设为“私有”或“公开”,对于 AutoTrain Space 本身,建议保持私有,但您可以随时公开分享您的模型或聊天应用程序。

1.7 点击“创建 Space”,大功告成!新 Space 将需要几分钟来构建,之后您可以打开 Space 并开始使用 AutoTrain。


步骤 2:在 AutoTrain 中启动模型训练

2.1 一旦您的 AutoTrain 空间启动,您将看到下面的图形用户界面。AutoTrain 可用于多种不同类型的训练,包括 LLM 微调、文本分类、表格数据和扩散模型。由于我们今天专注于 LLM 训练,请选择“LLM”选项卡。

2.2 从“模型选择”字段中选择您要训练的 LLM,您可以从列表中选择模型,或输入 Hugging Face 模型卡中的模型名称。在此示例中,我们使用了 Meta 的 Llama 2 7b 基础模型,您可以在此处了解更多信息。(注意:Llama 2 是一个受限模型,需要您在使用前向 Meta 申请访问权限,但您也可以选择许多其他非受限模型,例如 Falcon)

2.3 在“后端”中选择您要用于训练的 CPU 或 GPU。对于 7b 模型,“A10G Large”就足够大了。如果您选择训练更大的模型,您需要确保模型能够完全适应您选择的 GPU 内存。(注意:如果您想训练更大的模型并需要访问 A100 GPU,请发送电子邮件至 api-enterprise@huggingface.co

2.4 当然,要微调模型,您需要上传“训练数据”。上传时,请确保数据集格式正确且为 CSV 文件格式。所需格式的示例可在此处找到。如果您的数据集包含多列,请务必从您的文件中选择包含训练数据的“文本列”。在此示例中,我们将使用 Alpaca 指令微调数据集,有关此数据集的更多信息可在此处获取。您也可以从此处直接下载 CSV 文件。


2.5 可选:您可以上传“验证数据”来测试您新训练的模型,但这并非必需。

2.6 AutoTrain 中可以配置一些高级设置以减少模型的内存占用,例如更改精度(“FP16”)、量化(“Int4/8”)或是否使用 PEFT(参数高效微调)。建议使用默认设置,因为这将减少训练模型的时间和成本,并且对模型性能影响很小。

2.7 同样,您可以在“参数选择”中配置训练参数,但目前我们使用默认设置。


2.8 现在一切都已设置好,选择“添加任务”将模型添加到您的训练队列中,然后选择“开始训练”(注意:如果您想使用不同的超参数训练多个模型版本,可以添加多个任务同时运行)

2.9 训练开始后,您将看到您的 Hub 账户中已创建一个新的“Space”。此 Space 正在运行模型训练,一旦完成,新模型也将显示在您 Hub 账户的“模型”下。(注意:要查看训练进度,您可以在 Space 中查看实时日志)

2.10 去喝杯咖啡吧,根据您的模型和训练数据的大小,这可能需要几个小时甚至几天。一旦完成,您的 Hugging Face Hub 账户的“模型”下将出现一个新模型。


步骤 3:使用您的模型创建新的 ChatUI Space

3.1 按照步骤 1.1 > 1.3 的相同流程设置新 Space,但选择 ChatUI Docker 模板而非 AutoTrain。

3.2 选择您的“空间硬件”,对于我们的 7b 模型,A10G Small 就足以运行模型,但这会根据您模型的大小而有所不同。


3.3 如果您有自己的 Mongo DB,您可以提供详细信息以在“MONGODB_URL”下存储聊天日志。否则,留空该字段,将自动创建本地数据库。

3.4 为了使用您训练好的模型运行聊天应用,您需要在“空间变量”部分提供“MODEL_NAME”。您可以通过查看 Hugging Face 个人资料的“模型”部分找到模型名称,它将与您在 AutoTrain 中使用的“项目名称”相同。在我们的示例中,它是“2legit2overfit/wrdt-pco6-31a7-0”。

3.4 在“空间变量”下,您还可以更改模型推理参数,包括温度、top-p、最大生成令牌数等,以改变生成结果的性质。目前,我们坚持使用默认设置。


3.5 现在您已准备好点击“创建”并启动您自己的开源 ChatGPT。恭喜!如果您操作正确,它应该看起来像这样。


如果您受到启发,但仍需要技术支持才能入门,请随时通过此处联系并申请支持。Hugging Face 提供付费的专家咨询服务,或许能够提供帮助。

社区

感谢您为非程序员编写了这份初学者指南。不幸的是,当我看到它时,它已经不是最新的了。我真的很希望看到更多针对绝对初学者的文章,因为他们经常被忽略。

注册登录以发表评论