Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

news2024/9/29 18:58:34

定制是关键! 

 

生成式人工智能对企业最有影响力的应用之一是创建自然语言界面,这些界面经过定制,可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题,例如银行、法律和医疗领域。  

我们经常谈论实现这一目标的两种方法: 

 

  1. 检索增强生成 (RAG):将这些文档存储在向量数据库中,并在查询时根据它们与问题的语义相似性检索文档,然后将它们用作 LLM 的上下文。
  2. 监督微调 (SFT):根据代表特定领域知识的一组提示和响应来训练现有的基础模型。 
     

虽然大多数尝试使用 RAG 的组织都希望利用其内部知识库来扩展 LLM 的知识,但许多组织如果不进行重大优化就无法实现预期结果。同样,整理足够大且高质量的数据集以进行微调也是一项挑战。这两种方法都有局限性:微调将模型限制在其训练数据中,使其容易受到近似和幻觉的影响,而 RAG 为模型奠定了基础,但仅根据文档与查询的语义接近度来检索文档——这可能不相关,并且可能导致推理不充分的答案。 

 

参考链接:
微软 Azure OpenAI 试用申请

RAFT 来救援! 

博客文章缩略图 1,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

我们可以结合使用 RAG微调,而不是只选择其中一种!将 RAG 视为一场开卷考试:模型查找相关文档来生成答案。微调就像一场闭卷考试:模型依赖于预先训练的知识。就像在考试中一样,最好的结果来自于学习和随手记笔记。 

 
检索感知微调 (RAFT) 是一种强大的技术,可用于为特定领域的开放式设置(例如域内 RAG)准备微调数据。它改变了语言模型的格局,结合了 RAG 和微调的最佳部分。RAFT 通过提高模型理解和使用特定领域知识的能力,帮助模型针对特定领域进行量身定制。它是 RAG 和特定领域的 SFT 之间的最佳结合点。 

 

它是如何工作的? 

 

RAFT 分为三个步骤:  

  1. 准备数据集来教模型如何回答有关您的领域的问题。
  2. 使用准备好的数据集对模型进行微调  
  3. 评估新的、定制的、领域适应模型的质量 

RAFT 的关键在于训练数据生成,其中每个数据点都包含一个问题 (Q)、一组文档 (Dk) 和一个思路链式答案 (A)。文档分为包含答案的 Oracle 文档 (Do) 和不包含答案的干扰文档 (Di)。微调教会模型区分这些文档,从而生成一个自定义模型,该模型的表现优于仅使用 RAG 或微调的原始模型。我们使用 GPT-4o 生成训练数据并微调 GPT-4o mini,从而根据您的用例量身定制经济高效、速度更快的模型。这种称为蒸馏的技术使用 GPT-4o 作为教师模型,使用 4o-mini 作为学生模型。 
 
 
 
 
 

在本博客的下一部分中,我们将开始实践。如果您想自己跟进,或查看参考代码,请查看https://aka.ms/aoai-raft-workshop。我们将为银行用例创建一个领域适配模型,该模型能够回答有关银行在线工具和账户的问题。  

 

笔记本 1- 生成 RAFT 训练数据 

 

首先收集特定领域的文档;在我们的示例中,这些是银行文档的 PDF。为了生成我们的训练数据,我们将 PDFS 转换为 markdown 文本格式。该文档为 PDF 格式,包含许多表格和图表,我们将使用 GPT-4o 将页面内容转换为 markdown。我们使用 Azure OpenAI GPT 4o 将所有这些信息提取到 Markdown 文件中,以用于下游处理。然后,我们使用 GPT-4o(我们的教师模型)生成合成的“问题-文档-答案”三元组,包括“黄金文档”(高度相关)和“干扰项”(误导)的示例。这将确保模型学会区分相关信息和不相关信息。RAFT利用思维链 (CoT) 过程,通过集成 CoT RAFT 过程提高了模型提取信息和执行逻辑推理的能力。这种方法有助于防止过度拟合并增强训练鲁棒性,使其对于需要详细和结构化思维的任务特别有效 

 
然后,我们将这些数据格式化以进行微调,将其分为训练集、验证集和测试集。验证集用于训练,测试集用于最后测量性能。 

 

笔记本2-RAFT微调  

 

现在是时候教我们的学生了!准备好训练和验证数据后,下一步是将这些数据上传到 Azure OpenAI 并创建微调作业。这非常简单:在 AI Studio 中,选择您的模型、上传您的训练和验证数据以及设置您的训练参数只需点击几下即可。我们将选择 4o-mini 作为我们的学生模型进行训练。 在实验室中,我们将向您展示如何使用 SDK 上传和触发微调作业。UI 使其成为一种简单的实验方式,而 SDK 方法是生产化和启用 llmops 策略以在生产中部署的首选方式。

 

博客文章缩略图 2,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

一旦微调作业开始运行,我们就可以监控其进度,并在完成后在 Azure OpenAI Studio 中分析微调后的模型。最后,我们使用微调后的模型创建一个新的部署,准备用于我们的专业领域任务。 

 

笔记本 3 - 我们的 RAFT 模型真的比基础模型更好吗?让我们检查一下! 

 

您可以首先查看 AI Studio 返回的内置指标,显示损失和准确度。我们希望看到准确度提高,而损失下降: 

博客文章缩略图 3,标题为“检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用”

 

但是,我们可以做更多的事情来衡量模型的质量。还记得我们一开始的测试数据集吗?这就是我们准备它的原因! 

 

虽然有很多评估选项,包括 AI Studio 评估,但在我们的示例中,我们使用开源库 RAGAS,它使用答案相关性、忠实度、答案相似性和答案正确性等指标来评估 RAG 管道。这些指标要么依靠 LLM 作为评判者,要么依靠嵌入模型来评估生成答案的质量和准确性。 

 

 

 

缩略图 4 标题为 gpt4o-mini vs gpt4o-mini-raft

gpt4o-mini 与 gpt4o-mini-raft 对比

我们可以通过调整训练参数和/或生成额外的训练数据来进一步改善模型指标。  

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux第五课-进程上】PCB内部属性、标识符、进程状态、Linux下的进程状态、进程的优先级、Linux进程的调度与切换

目录 体系结构 -- 硬件上操作系统 -- 软件上进程PCB内部属性1、在linux里面看程序2、标识符获取程序的标识符父进程标识符 PPID查看进程的另一种方法通过系统调用创建进程 - fork杀掉一个进程for循环创建多个代码 3、进程状态进程排队 - 队列教程上关于进程状态表述运行阻塞&am…

ubuntu2204操作系统使用可执行文件方式安装docker-compose记录

文章目录 前言一、版本信息二、操作步骤2.1 确认版本2.2 下载部署2.官网参考3.docker-compose版本 总结 前言 记录一下在ubuntu操作系统上使用下载可执行文件方式部署docker-compose的记录。 一、版本信息 操作系统版本: docker-compose版本: 备注&…

RISC-V开发 linux下GCC编译自定义指令流程笔记

第一步:利用GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言 第二步:利用RSIC-V的中的.insn模板进行自定义指令的插入 第三步:RISC-V开发环境的搭建 C语言插入汇编 GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言语句方便了…

Vue3.0面试题汇总

Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发的项目,普遍会存在以下问题: 代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺…

【Linux基础IO】Linux IO编程入门:揭秘动态库与静态库的秘密

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🤡往期回顾🤡:Linux Shell 🌹🌹期待您的关注 🌹🌹 ❀Linux基础IO 📒1. …

Mysql梳理10——使用SQL99实现7中JOIN操作

10 使用SQL99实现7中JOIN操作 10.1 使用SQL99实现7中JOIN操作 本案例的数据库文件分享: 通过百度网盘分享的文件:atguigudb.sql 链接:https://pan.baidu.com/s/1iEAJIl0ne3Y07kHd8diMag?pwd2233 提取码:2233 # 正中图 SEL…

Git 的安装和配置

Git 是跨平台的,可以在 Windows,Linux、Unix 和 Mac 各几大平台上使用 由于笔者主要是使用 Windows,其他平台下安装 Git 的方法暂且不表(可参考廖雪峰老师的博客:安装 Git) ‍ Windows 安装 Git 从 Git…

【案例73】Uclient无法读取https地址添加应用

问题现象 客户做了一个https的域名转换,网页端是正常访问的,但是在uclient里面添加应用就不行了,出来两个不对的应用,也安装不了,提示失败。 问题分析 点击添加应用发现,本来添加地址是https://域名:外网端口&#x…

【C++报错已解决】std::bad_alloc

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

海外媒体投稿:如何运用3种国内外媒体套餐发稿突出重围?

在当今瞬息万变的经营环境中,突出重围营销推广是每家企业都需要思考的问题。为了能突出重围并提升影响力,国内外媒体套餐内容成为了一个非常受欢迎的挑选。下面我们就为大家讲解如何运用三种不同种类的国内外媒体套餐内容来推广突出重围。 2.微博营销新浪…

GIS在构建虚拟世界中的新机遇

地理信息系统(GIS)技术在构建虚拟世界中扮演着越来越重要的角色。随着数字孪生、虚拟现实(VR)、增强现实(AR)和混合现实(MR)等技术的发展,GIS为虚拟世界提供了地理信息和…

QT开发:基于Qt实现的交通信号灯模拟器:实现一个带有倒计时功能的图形界面应用

介绍 本文将介绍如何使用Qt框架实现一个简单的交通信号灯控制程序。本程序包括一个图形界面,显示红、黄、绿三色信号灯,并通过定时器控制信号灯的切换。同时,我们还将实现一个带有按钮的界面,用于展示信号灯的状态。 1. 安装Qt开…

Linux下的git开篇第一文:git的意义

目录 1.git版本控制器 2.git gitee&&github 3.Linux中gitee的使用 ( 三板斧 git add git commit -m " " git push ) 4.git log 查看之前的修改信息 (所有提交日志) 5.git status 查看工作目录与本地…

三防手机也能实现双卫星通信?智慧应急再添一员猛将!

随着可重复使用运载火箭技术取得显著进展,民营航天快速发展,商业卫星的发射成本不断降低,卫星通信全面普及的时代即将来临。遨游通讯提前布局双卫星通信技术,AORO M5-5G三防手机集成了天通卫星电话与北斗短报文两大国产通信技术。…

怎么将excel表格数据自动生成二维码?批量静态二维码转换的方法

在日常生活中,遇到需要大量二维码制作需求时,比如说需要给同一批产品生成不同编号的二维码时,有什么方法能够快速批量生成二维码呢?如果一个个二维码去制作不仅需要浪费大量的时间,而且也比较容易出错,那么…

MATLAB读取TIF文件,并可视化

在GIS领域,TIF文件则常用于存储地图、地形图等地理空间数据,TIF文件用于地理信息系统时,它通常包含地理坐标、投影信息等地理元数据,这些元数据使得图像能够与地理信息系统无缝集成,便于进行地理定位和分析。 1.读取T…

初始C++模板

1.泛型编程 1.1什么事泛型编程 在学习C语言时,我们时常会有这样的烦恼: 在针对每一种不同的类型变量进行函数传参或者是运算处理时,我们总是编写不同的函数或者是进行不同的处理,才能达到目的,这时,我们…

【JavaEE初阶】深入解析单例模式中的饿汉模式,懒汉模式的实现以及线程安全问题

前言: 🌈上期博客:【JavaEE初阶】深入理解wait和notify以及线程饿死的解决-CSDN博客 🔥感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 ⭐️小编会在后端开发的学习中不断更新~~~ 🥳非常感谢你的…

YOLOv8改进 - 注意力篇 - 引入LSKA注意力机制

一、本文介绍 作为入门性篇章,这里介绍了LSKA注意力在YOLOv8中的使用。包含LSKA原理分析,LSKA的代码、LSKA的使用方法、以及添加以后的yaml文件及运行记录。 二、LSKA原理分析 LSKA官方论文地址:LSKA文章 LSKA注意力机制(大可分…

胤娲科技:揭秘AI记忆宫殿—LLM如何用动画玩转乔丹打篮球的秘密

当AI遇上“乔丹打篮球”,真相竟然藏在动画里? 想象一下,你向一位AI大模型轻声询问:“迈克尔・乔丹从事的体育运动是……”几乎在瞬间,它就自信满满地回答:“篮球!” 这一刻,你是否曾…