当前位置: 首页 > news >正文

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

定制是关键! 

 

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

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

 

  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 对比

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

 

相关文章:

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

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

ISP Pipeline

系列文章目录 文章目录 系列文章目录前言一、RAW域二、RGB域三、YUV域总结 前言 一、RAW域 黑电平校正(BLC)数字增益调整(DGain)自动白平衡(AWB)局部色调映射(LTM)坏点修复&#xf…...

< IDE编程环境配置>

IDE编程环境配置 LIB,DLL区别 我们在写项目时会链接(调用)第3方库,或者比如在vs的解决方案solution创建项目project时,不仅可以开发可执行程序exe(可单独运行)(windows/控制台 应用…...

Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; func findDisappearedNumbers(nums []int) (ans []int) {n : len(nums)for _, v : range nums {v (v - 1) % nnums[v] n}for i, v : range nums {if v < n {ans append(ans, i1)}}return }...

【Spring Boot 入门三】Spring Boot与数据库集成 - 构建数据驱动的应用

一、引言 在之前的文章中&#xff0c;我们已经对Spring Boot有了初步的认识&#xff0c;了解了如何构建第一个Spring Boot应用&#xff0c;以及如何通过配置文件来掌控应用的设置。这些知识为我们进一步探索Spring Boot与数据库的集成奠定了坚实的基础。 数据库是现代应用的核…...

Web 服务器与动态脚本语言通信的接口协议有哪些

Web 服务器与动态脚本语言通信的接口协议主要有以下几种&#xff1a; 一、FastCGI&#xff08;Fast Common Gateway Interface&#xff09; 特点&#xff1a;使用持久进程处理请求&#xff0c;减少了进程启动和关闭的开销&#xff0c;提高了性能和可扩展性。多个请求可由同一个…...

ESXI识别服务器磁盘,虚拟机显示无效

ESXI识别服务器磁盘&#xff0c;虚拟机显示无效 系统意外断电识别不到磁盘的情况下可以管理-》硬件-》搜索磁盘名称&#xff0c;选择切换直通&#xff0c;则虚拟机正常。...

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…...

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…...

golang学习笔记22-面向对象(四):接口【重要】

本节也是GO核心部分&#xff0c;很重要。 注&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法&#xff0c;但不需要实现&#xff0c;不需要…...

SpringBoot技术栈:打造下一代网上租赁系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”&#xff0c;是因为它允许开发者根据项目的需求逐步引入和使用其功能&#xff0c;而不需要一次性使用整个框架。简单来说&#xff0c;Vue 提供了从简单到复杂的功能层次&#xff0c;可以灵活选择使用。 按需使用&#xff1a;Vue 的核心功能…...

网上租赁系统开发:SpringBoot实践与应用

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

User-Agent在WebMagic爬虫中的重要性

对于需要从网站上抓取数据的开发者来说&#xff0c;WebMagic是一个强大的工具。它是一个简单灵活的Java爬虫框架&#xff0c;用于抓取网页数据。在爬虫技术中&#xff0c;User-Agent&#xff08;用户代理&#xff09;是一个关键的HTTP请求头&#xff0c;它告诉服务器关于客户端…...

如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

一、介绍 MCR(Miscrosoft Container Registry) 加速器&#xff0c;助你在中国大陆急速下载 netcore 相关的 docker 镜像。二、解决办法。     1、如何使用       至少三种方法进行加速&#xff1a;         使用 docker-mcr &#xff08;推荐&#xff09;  …...

网络编程,端口号,网络字节序,udp

前面一篇我们讲了网络的基础&#xff0c;网络协议栈是什么样的&#xff0c;数据如何流动传输的&#xff1b;接下来这篇&#xff0c;我们将进行实践操作&#xff0c;真正的让数据跨网络进行传输&#xff1b; 1.网络编程储备知识 1.1 初步认识网络编程 首先我们需要知道我们的…...

Android入门

下载Android studio&#xff0c;创建第一个项目 模板可以选择empty views Activity 在这个界面可以修改&#xff0c;使用语言&#xff0c;项目名字&#xff0c;存储路径以及适用版本 完成后&#xff0c;得到一个最初始的Android 项目&#xff0c;红色标记的两个文件&#xf…...

二叉树深搜专题篇

目录 计算布尔二叉树的值 求根节点到叶节点数字之和 二叉树剪枝 验证二叉搜索树 二叉搜索树中第K小的元素 二叉树的所有路径 计算布尔二叉树的值 题目 思路 这道题其实是比较简单的&#xff0c;对二叉树来一次后序遍历即可&#xff0c;当遇到叶子结点直接返回叶子节点中…...

堆【数据结构C语言版】【 详解】

目录-笔记整理 一、思考二、堆概念与性质三、堆的构建、删除、添加1. 构建2. 删除3. 添加 四、复杂度分析4.1 时间复杂度4.2 空间复杂度 五、总结 一、思考 设计一种数据结构&#xff0c;来存放整数&#xff0c;要求三个接口&#xff1a; 1&#xff09;获取序列中的最值&#…...

初识React

在最新写需求的时候&#xff0c;我遇到了一个需求&#xff0c;这个需求改后端改的不算多&#xff0c;而且也比较简单&#xff0c;但是在改前端的时候&#xff0c;很复杂。因为我们这个项目用的是React做前端的&#xff0c;而我对于前端知识没有了解&#xff0c;所以理解很多代码…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

C++ 类基础:封装、继承、多态与多线程模板实现

前言 C 是一门强大的面向对象编程语言&#xff0c;而类&#xff08;Class&#xff09;作为其核心特性之一&#xff0c;是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性&#xff0c;包括封装、继承和多态&#xff0c;同时讨论类中的权限控制&#xff0c;并展示如何使用类…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

python打卡day47

昨天代码中注意力热图的部分顺移至今天 知识点回顾&#xff1a; 热力图 作业&#xff1a;对比不同卷积层热图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import D…...

LeetCode第244题_最短单词距离II

LeetCode第244题&#xff1a;最短单词距离II 问题描述 设计一个类&#xff0c;接收一个单词数组 wordsDict&#xff0c;并实现一个方法&#xff0c;该方法能够计算两个不同单词在该数组中出现位置的最短距离。 你需要实现一个 WordDistance 类: WordDistance(String[] word…...

【AI大模型】Transformer架构到底是什么?

引言 —— 想象一台能瞬间读懂整本《战争与和平》、精准翻译俳句中的禅意、甚至为你的设计草图生成前端代码的机器——这一切并非科幻&#xff0c;而是过去七年AI领域最震撼的技术革命&#xff1a;Transformer架构创造的奇迹。 当谷歌在2017年揭开Transformer的神秘面纱时&…...