> 自媒体 > AI人工智能 > ChatGPT模型微调实战【心理健康机器人】
ChatGPT模型微调实战【心理健康机器人】
来源:新缸中之脑
2023-05-15
356
管理

在之前的文章中,我概述了通过创建虚拟心理健康助手来集成 GPT-3 和 Dialogflow 所需的步骤。 在这一篇中,我们将通过学习如何微调(Fine-Tuning)我们的 GPT-3 模型来完善我们创建的心理健康聊天机器人。

数据是一个yaml文件,其中包含大约50个关于抑郁症的对话。看起来带有双破折号 (- -) 的第一行是用户的问题,以下行是机器人对用户的回答。让我们在 Colab 笔记本中进一步探索它。

探索性笔记可以在这里找到。

从 Kaggle 下载数据集并将其复制到你的 Google 云端硬盘文件夹。导入 yaml 包以读取我们的 .yml 文件,并使用 yaml.safe_load()将其转换为 json 对象。

import yamlwith open('/content/gdrive/MyDrive/depression-data/depression.yml', 'r') as file: data = yaml.safe_load(file)

接下来,让我们以所需的格式准备我们的数据集。

convos = data['conversations']for convo in convos: completion = '' for i, dialog in enumerate(convo): if i == 0: prompt = dialog prompt = prompt.replace("xa0", " ") # print('prompt:',prompt) else: completion = " " dialog completion = completion.replace("xa0", " ") completion = completion.strip() line = {'prompt': prompt, 'completion': completion} # print(line) output.append(line) print(output)

上面的代码首先遍历我们的抑郁症数据,将第一行拆分为提示,并加入其余行作为完成。 它还从提示和完成中删除不需要的特殊字符。 这导致我们可以使用正确的数据格式来微调 GPT-3。

{'prompt': 'What Is Depression?', 'completion': 'Depression is a common and serious medical illness that negatively affects how you feel, the way you think and how you act. Fortunately,it is also treatable. Depression causes feelings of sadness and/or a loss of interest in activities you once enjoyed. It can lead to a variety of emotional and physical problems and can decrease your ability to function at work and at home.'},{'prompt': 'I feel i have let my parents down', 'completion': 'No matter what,your parents will always be proud of you and will love you. You will feel much better if you share your feelings with them.'}

看其中的几行,我们可以看到补全根据用户的查询提供了一些有用的响应,这正是我们需要我们的模型来获取的,以便为有需要的用户提供实际的答复。

最后,让我们将数据下载为 JSONL 文件并将其移动到我们的 Colab notebook 项目目录。

from google.colab import fileswith open('depression.jsonl', 'w') as outfile: for i in output: json.dump(i, outfile) outfile.write('n')files.download('depression.jsonl')

现在我们有了微调数据集,让我们准备文件,以便可以上传它来微调模型。注意 — OpenAI 提供了一个有用的 CLI(命令行界面)工具来准备我们的数据。它可以轻松地将CSV,TSV,XLSX和JSON转换为正确的JSONL格式。

要开始使用,在笔记本单元格或从项目终端中,只需使用以下命令安装 Open AI python 依赖项 -

!pip install openai

接下来,要准备微调数据,请运行命令 -

!openai tools fine_tunes.prepare_data -f '/content/gdrive/MyDrive/depression-data/depression.jsonl'

确保在“-f”之后替换你的特定文件路径。 在添加一些建议的更改后,此命令将准备最终微调数据集。 现在,可以接受所有推荐的操作“是”,因为这将有助于提高模型性能——

注意——对第一个推荐操作接受“是”需要你在推理期间在提示后添加分隔符“->”,否则模型将简单地继续提示而不是预测完成。

下载的最终文件将以“prepared”为后缀,然后可以上传并用于微调模型。

请注意,我们的微调任务只有 51 个样本。 为了获得更好的准确性,Open AI 建议至少有 150-200 个微调示例,因为模型准确性会随着训练样本的数量线性增加。

2、训练一个新的微调模型

现在我们已经准备好数据,是时候微调 GPT-3 了! ⚙️ 我们可以通过 3 种主要方式对模型进行微调 —

手动使用 OpenAI CLI以编程方式使用 OpenAI 包,以及通过 finetune API 端点。

对于本教程,我将使用 OpenAI CLI,因为它最容易上手。 要微调模型,请运行以下命令,其中“-m”后的值将用于训练特定的 GPT-3 模型。 因为我想训练最有能力的模型,所以我选择了也是使用成本最高的“davinci”。

!openai api fine_tunes.create -t "/content/gdrive/MyDrive/depression-data/depression_prepared.jsonl" -m davinci

如果尝试运行它,可能会收到类似“未提供 API 密钥”的错误。 那是因为我们还没有链接我们的 API 密钥。 为此,只需在 CLI 中将环境变量设置为你的 API 密钥,方法是运行 -

!set OPENAI_API_KEY=

或者通过在笔记本中运行以下单元 -

os.environ['OPENAI_API_KEY'] = ""

现在再次运行之前的 finetune 命令,瞧! — 你的 GPT-3 微调作业现已成功创建。

CLI 还将向你显示相关的微调成本、队列位置和训练时期。 完成后,你自己的微调 GPT-3 模型现在可以进行推理了!

3、使用你的微调模型

要使用新创建的微调模型,我们可以先在 Open AI Playground 中对其进行测试。 前往游乐场并选择你的微调模型。

从这里,我们可以测试一些提示,看看我们微调模型的表现如何。

3、提示

在我之前的帖子中,我们向模型给出了以下提示,它本身表现得很好——

The following is a conversation with an AI assistant that can have meaningful conversations with users. The assistant is helpful, empathic, and friendly. Its objective is to make the user feel better by feeling heard. With each response, the AI assisstant prompts the user to continue the conversation in a natural way

它运行良好,但我决定在一些额外的提示工程之后添加更多信息。 首先,我给了我的 AI 治疗助手一个角色——JOY。 (很贴切,嗯?)

然后我给 JOY 添加了一些个性特征,最后指定了 JOY 的核心目标功能——通过被倾听来帮助用户感觉更好。 我最终使用的最终提示是——

The following is a conversation with a therapist and a user. The therapist is JOY, who uses compassionate listening to have helpful and meaningful conversations with users. JOY is empathic and friendly. JOY's objective is to help the user feel better by feeling heard. With each response, JOY offers follow-up questions to encourage openness and continues the conversation in a natural way.

结果如下:

如你所见,结果是成功的。 JOY能够运用人性化的特质,如富有同情心的倾听和同理心,也能够正确地为用户的问题提供有用的解决方案!

注意 —— JOY 仍然无法在长时间的对话中进行对话,需要在与用户的长时间对话中进行微调,以获得更好的上下文和结果。

一旦你对输出感到满意,我们就可以将其部署到我们的应用程序中。 需要更改的只是模型的名称,它将被我们新训练的模型替换。 我们现在可以在我们的应用程序中以编程方式使用微调模型。 只需在 OpenAI Playground 中点击“显示代码”即可复制代码。

4、整合在一起

现在我们的微调模型可以使用了,让我们将它与我们的 Dialogflow 代理集成。 为此,我们需要更新之前的 webhook 实现代码并进行部署。

上次,我们使用 Node.js 和 Repl.it 作为我们的 Web 服务器,但为了混合使用,这次让我们使用 Python Flask 服务器 。 更新后,我们的 webhook 端点应如下所示。 现在,开始部署我们的 webhook 实现服务器。

在我们继续之前,让我们为 Heroku 的免费层的死亡默哀片刻。 Heroku 是一个简单易用的平台,可用于部署你的任何 Web 应用程序。 现在它不再提供免费计划,我们需要一个替代方案来免费快速部署我们的应用程序——进入 Railway.App!

Railway 是一个云平台,你可以在其中轻松托管和部署任何应用程序。 他们提供了一个慷慨的免费层,并拥有超快的部署速度。 确保先将你的本地存储库推送到 github,以便可以部署它。 登录到你的Railway帐户,进入仪表板后,去添加一个新项目。 然后选择从 Github 上传并选择你的 git 仓库,就是这样! 你的应用现已上线。 (确保更新 Dialogflow 代理中的 Webhook URL)。

输出结果如下:

可以在此处测试经过微调的心理健康助手。

5、结束语

微调 GPT-3 和其他 LLM,被证明是特定领域任务的完美解决方案,通常可以将性能提高很多倍。 该模型在提取训练数据中指定的模式方面非常有效,即使在训练数据最少的情况下也能表现良好。

随着 LLM 变得更大、更易于访问和开源,正如我们目前所见,在不久的将来,我们预期微调将在自然语言处理中变得无处不在,因为它有可能解决任何 NLP 任务 。

原文链接:http://www.bimant.com/blog/chatgpt-fine-tuning/

0
点赞
赏钱
0
收藏
免责声明:本文仅代表作者个人观点,与华威派无关。其原创性以及文中陈述文字和内容未经本网证实,对本文以及其中全部或者 部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
凡本网注明 “来源:XXX(非华威派)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对 其真实性负责。
如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。
QQ:2443165046 邮箱:info@goodmaoning.com
关于作者
轻随风之舞(普通会员)
点击领取今天的签到奖励!
签到排行
0
0
分享
请选择要切换的马甲:

个人中心

每日签到

我的消息

内容搜索