QLoRA 微调 Falcon-7B 心理对话模型
高效微调技术的垂直领域实战案例。程序员可参考方法论构建专业 AI 应用。
高效微调技术的垂直领域实战案例。程序员可参考方法论构建专业 AI 应用。
心理健康问题往往被公众误解,或未得到充分认识。这种理解上的缺失,可能引发人们对心理健康状况的恐惧、不适与负面看法。媒体对心理健康的呈现也常常强化负面刻板印象,进而造成误解和恐惧。消除心理健康污名需要采取多方面的措施,包括普及教育、提高认知、培养同理心与理解、挑战刻板印象,以及确保人们能够获得便捷且优质的心理健康服务。心理健康会直接影响一个人的整体幸福感、生活质量,以及在日常生活中有效行动的能力。良好的心理健康是感受幸福、获得满足感与找到人生目标的基础。心理健康与身体健康密切相关。未经治疗的心理健康问题可能引发或加重身体健康问题,例如心血管疾病、免疫系统功能减弱和慢性疾病。
Chatbot 为寻求支持的人提供了一个随时可用且易于访问的平台。人们可以随时随地使用 Chatbot,让有需要的人立即获得帮助。Chatbot 能够以富有同理心、没有评判意味的方式回应,为用户提供情感支持。虽然它们无法完全取代人与人之间的互动,但可以作为一种有益的补充,尤其是在用户陷入痛苦时。注意:需要特别说明的是,心理健康 Chatbot 虽然能够提供帮助,但不能替代专业的心理健康服务。它们可以提供额外的支持和资源,作为现有心理健康服务的补充。
该数据集整理自与心理健康相关的在线 FAQ、WebMD、Mayo Clinic 和 Healthline 等热门医疗健康博客,以及其他与心理健康有关的 Wiki 文章。数据集经过预处理并转换为对话格式,将患者提出的问题与医生给出的回答放在同一段文本中。这个心理健康对话式 AI 使用的数据集可以在这里找到:heliosbrahma/mental_health_chatbot_dataset。注意:所有问题和回答都已匿名化,以移除任何 PII 数据,并经过预处理以删除不需要的字符。
这是整个项目中最关键的一步。我使用了分片的 Falcon-7B 预训练模型,并通过 QLoRA 技术在自定义的心理健康数据集上对其进行了 fine-tuning。整个 fine-tuning 过程耗时不到一小时,并且完全是在 Google Colab Pro 提供的 Nvidia A100 上完成的。不过,它也可以使用 Colab 免费层提供的 Nvidia T4 GPU 进行训练。在这种情况下,需要确保将 max_steps 设置为小于 150。使用分片预训练模型的原因,在我的博客文章《使用 QLoRA 在心理健康数据集上对 Falcon-7B Large Language Model 进行 Fine-tuning》中有所说明。这里补充一份来自 WandB 监控日志的训练损失指标跟踪报告,对应一次训练 180 steps 的运行:Falcon-7B PEFT 的 train/loss 日志。注意:请根据自己的需求,尝试调整 TrainingArguments 和 LoraConfig 中的超参数。使用 notebook 中给出的设置,我在 320 steps 后将训练损失降到了 0.031。
经过 PEFT fine-tuning 的模型已更新至:heliosbrahma/falcon-7b-sharded-bf16-finetuned-mental-health-conversational。运行 gradio_chatbot_app.ipynb notebook,即可使用 Gradio 作为演示前端,获得类似 Chatbot 的交互界面。你可以尝试不同的答案生成超参数配置,并运行多条查询,以检查生成回答的质量。
生成模型回答所需的时间不到 3 分钟。你可以在 funetuned_qlora_falcon7b.ipynb notebook 中,将 PEFT 模型的回答与原始模型的回答进行比较。
我写了一篇详细的技术博客,介绍 QLoRA 的关键概念以及 PEFT fine-tuning 方法:《使用 QLoRA 在心理健康数据集上对 Falcon-7B Large Language Model 进行 Fine-tuning》。如果你仍有任何疑问,可以在这个 repo 中提交 issue,或者在我的博客下留言。
如果你喜欢这个项目,请为该 repository 点亮 ⭐。