Elasticsearch:特定领域的生成式 AI - 预训练、微调和 RAG

news2024/11/27 22:25:51

作者:来自 Elastic Steve Dodson

有多种策略可以将特定领域的知识添加到大型语言模型 (LLM) 中,并且作为积极研究领域的一部分,正在研究更多方法。 对特定领域数据集进行预训练和微调等方法使 LLMs 能够推理并生成特定领域语言。 然而,使用这些 LLM 作为知识库仍然容易产生幻觉。 如果领域语言与 LLM 训练数据相似,则通过检索增强生成 (RAG) 使用外部信息检索系统向 LLM 提供上下文信息可以改善事实响应。 最终,微调和 RAG 的组合可能会提供最佳结果。

该博客试图描述一些存储和检索 LLMs 知识的基本过程。 后续博客将更详细地描述不同的 RAG 策略。

Pre-training(预训练)Fine-tuning (微调)Retrieval Augmented Generation (RAG)
训练时间几天,几周甚至几个月几分钟到几小时不需要
定制需要大量领域训练数据

可定制模型架构、大小, 分词器等

创建新的 “基础” LLM 模型
添加特定于域的数据

针对特定任务进行调整。

更新LLM模型。
没有模型权重

外部信息检索系统可以调整以与 LLM 对齐。

提示可以优化以提高任务性能。
目的下一个 token 预测提高任务绩效提高特定领域文档集的任务性能
专业知识

介绍

基于大型语言模型 (LLM) 的生成式人工智能技术极大地提高了我们开发处理、理解和生成文本工具的能力。 此外,这些技术引入了创新的信息检索机制,其中生成式人工智能技术使用模型存储的(参数)知识直接响应用户查询。

然而,值得注意的是,模型的参数知识是整个训练数据集的浓缩表示。 因此,将这些技术应用于原始训练数据之外的特定知识库或领域确实存在一定的局限性,例如:

  • 生成人工智能的响应可能缺乏上下文或准确性,因为它们无法访问训练数据中不存在的信息。
  • 有可能产生听起来合理但不正确或误导性的信息(幻觉)。

存在不同的策略来克服这些限制,例如扩展原始训练数据、微调模型以及与特定领域知识的外部源集成。 这些不同的方法会产生不同的行为并带来不同的实施成本。

特定领域的预训练

LLMs 接受了代表各种自然语言用例的庞大数据集的预训练:

模型总数据集大小数据来源训练成本
PaLM 540B7800 亿  tokens社交媒体对话(多语言)50%; 过滤网页(多语言)27%; 书籍(英文)13%; GitHub(代码)5%; 维基百科(多语言)4%; 新闻(英文)1%8.4M TPU v2 hours
GPT-34990 亿 tokens普通爬行(已过滤)60%; WebText2 22%; 书籍18%; 书籍 28%; 维基百科 3%0.8M GPU hours
LLaMA 22 兆 tokens“来自公开来源的数据混合”3.3M GPU hours 

这个预训练步骤的成本是巨大的,并且需要大量的工作来整理和准备数据集。 这两项任务都需要高水平的技术专业知识。

此外,预训练只是创建模型的第一步。 通常,然后在针对特定任务精心策划和定制的较小数据集上对模型进行微调。 此过程通常还涉及人工审核员,他们对可能的模型输出进行排名和审核,以提高模型的性能和安全性。 这进一步增加了过程的复杂性和成本。

这种方法应用于特定领域的示例包括:

  • ESMFold、ProGen2 等 - 蛋白质序列的 LLM:蛋白质序列可以使用类似语言的序列表示,但不被自然语言模型覆盖
  • Galatica - 科学 LLM:专门接受大量科学数据集的培训,并包括处理科学符号的特殊处理
  • BloombergGPT - 金融 LLM:接受 51% 金融数据、49% 公共数据集的培训
  • StarCoder - 代码 LLM:使用 384 种编程语言的 6.4TB 许可源代码进行培训,并包含 54GB GitHub 问题和存储库级元数据

特定领域模型通常优于各自领域内的通用模型,在与自然语言显着不同的领域(例如蛋白质序列和代码)中观察到最显着的改进。 然而,对于知识密集型任务,这些特定领域模型由于依赖参数知识而受到相同的限制。 因此,虽然这些模型可以更有效地理解领域的关系和结构,但它们仍然容易出现不准确和幻觉。

特定领域的微调

LLMs 的微调涉及针对特定任务或领域训练预先训练的模型,以提高其在该领域的表现。 它通过使用特定于任务的数据更新模型的参数,使模型的知识适应更狭窄的上下文,同时保留在预训练期间获得的一般语言理解。 这种方法针对特定任务优化了模型,与从头开始训练相比,节省了大量时间。

例子

  • Alpaca - 经过微调的 LLaMA-7B 模型,其行为在质量上与 OpenAI 的 GPT-3.5 类似
  • xFinance - 针对特定金融任务的微调 LLaMA-13B 模型。 据报道,其表现优于 BloombergGPT
  • ChatDoctor - 用于医疗聊天的微调 LLaMA-7B 模型。
  • falcon-40b-code-alpaca - 经过微调的 falcon-40b 模型,用于从自然语言生成代码

成本

微调的成本明显低于预训练的成本。 此外,诸如参数高效微调(PEFT)方法(例如如上所述的 LoRA、适配器、提示调整和上下文学习)等新颖方法可以使预训练语言模型(PLM)非常有效地适应各种不同的环境。 下游应用程序无需微调所有模型参数。 例如,

模型微调方法微调数据集成本
Alpaca Self-Instruct52K 条独特的指令和相应的输出3 hours on 8 80GB A100s:24 GPU hours
xFinance使用 xTuring 库进行无监督微调和指令微调493M token文本数据集; 82K指令数据集25 hours on 8 A100 80GB GPUs:200 GPU hours
ChatDoctorSelf-Instruct11 万次医患互动3 hours on 6 A100 GPUS: 18 GPU hours
falcon-40b-code-alpacaSelf-Instruct52K指令数据集; 20K 指令输入代码三元组4 hours on 4 A100 80GB GPUs: 16 GPU hours

与特定领域的预训练模型类似,这些模型通常在各自的领域内表现出更好的性能,但它们仍然面临与参数知识相关的限制。

检索增强生成 - RAG

LLMs 将事实知识存储在其参数中,但他们访问和精确操纵这些知识的能力仍然有限。 这可能会导致 LLMs 提供非事实但看似合理的预测(幻觉)—— 特别是对于不受欢迎的问题。 此外,为他们的决策提供参考并有效地更新他们的知识仍然是开放的研究问题。

解决这些限制的通用方法是 RAG,其中 LLM 的参数知识以来自信息检索系统的外部或非参数知识为基础。 这些知识作为提示中的附加上下文传递给 LLM,并向 LLM 提供有关如何使用此上下文信息的具体说明。这使其更符合迄今为止有关参数知识的讨论。这种方法的优点是 :

  • 与微调和预训练不同,LLM 参数不会改变,因此没有训练成本
  • 简单实施所需的专业知识较低(尽管存在更高级的策略)
  • 响应可以严格限制于从信息检索系统返回的上下文,从而限制幻觉
  • 可以使用较小的特定于任务的 LLM - 因为 LLM 用于特定任务而不是知识库。
  • 知识库很容易更新,因为它不需要改变 LLM
  • 回复可以引用人工验证的来源和链接输出

将这种非参数知识(即检索到的文本)与 LLM 的参数知识相结合的策略是一个活跃的研究领域。

其中一些方法涉及结合检索策略修改 LLM,因此不能像本博客中的定义那样明确分类。 我们将在以后的博客中深入探讨更多细节。

简单的例子

在一个简单的示例中,我们使用了基于本博客信息的微调 LLaMA2 13B 模型。 该模型使用 LLaMA2 预训练和微调数据截止日期(特别是 2023 年 7 月 23 日之后)发布的 AWS 博客文章进行了微调。我们还将这些文档提取到 Elasticsearch 中,并建立了一个简单的 RAG 管道。 在此管道中,模型响应是根据作为上下文的检索到的文档生成的。 红色突出显示表示错误的响应,蓝色突出显示正确的响应。

不过,需要注意的是,这只是一个单一的例子,并不构成对 fine-tuning 与 RAG 的综合评价,只是提供了一个之前的 fine-tuning 的例子,用于形式,而不是事实。我们计划在即将发布的博客中进行更彻底的研究的比较。

原文:Domain Specific Generative AI: Pre-Training, Fine-Tuning, and RAG — Elastic Search Labs

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

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

相关文章

009集——磁盘详解——电脑数据如何存储在磁盘

很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在,但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。 首先我们要明白的是,计算机中只有0和1,那么我们存入硬盘的数据,实际上也就是一堆0…

猫头虎分享已解决Bug ‍ || Go Error: no Go files in /path/to/directory

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

JVM(5)面试篇

1 什么是JVM? 关联课程内容 基础篇-初识JVM基础篇-Java虚拟机的组成 回答路径 JVM的定义作用功能组成 1、定义: JVM 指的是Java虚拟机( Java Virtual Machine )。JVM 本质上是一个运行在计算机上的程序,他的职责是…

猫头虎分享已解决Bug ‍ || Python Error: IndentationError: expected an indented block

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

Ollama 可以在 Windows 上运行了

Ollama 可以在 Windows 上运行了 0. 引言1. 下载 Ollma 安装文件2. 安装 Ollama3. 使用 Ollama 0. 引言 Ollama 终于可以在 Windows 上运行了,一直以来都是 “Coming soon”。 运行 Mixtral 8*7B 试了一下,推理速度和推理效果都很不错。 而且模型的下…

【mysql】数据约束

一、数据约束: 什么是约束? 为了确保表中的数据的完整性(准确性、正确性),为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确,从而减少冗余数据(脏数据)。 数据库完整性约…

PowerShell搭建vue起始项目

Windows PowerShell搭建vue起始项目 搜索PowerShell,以管理员身份运行。 复制文件夹路径 cd 到这个文件夹位置 命令行创建项目:vue create 项目名 这里写自己的项目名就行,我写的yeb vue create yeb 创建成功后是这样的 有颜色的就是选中的&#xff…

【区块链技术开发语言】在ubuntu18 系统环境下命令操作安装GO语言开发环境

要在Ubuntu 18系统上安装GO语言开发环境,您可以按照以下步骤进行: 打开终端(Ctrl + Alt + T)。 使用以下命令下载GO语言安装包: 或者手动打开链接下载: wget https://golang.org/dl/go1.17.5.linux-amd64.tar.gz确保替换链接中的版本号为最新版本。 解压下载的安装包…

Stable Diffusion系列(五):原理剖析——从文字到图片的神奇魔法(扩散篇)

文章目录 DDPM论文整体原理前向扩散过程反向扩散过程模型训练过程模型生成过程概率分布视角参数模型设置论文结果分析 要想完成SD中从文字到图片的操作,必须要做到两步,第一步是理解文字输入包含的语义,第二步是利用语义引导图片的生成。下面…

计网体系结构

计算机网络的概述 概念 网络:网状类的东西或系统。 计算机网络:是一个将分散的、具有独立性功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。即计算机网络是互连(通过通信链路互连…

Recovering a Small String-Codeforces

题目链接&#xff1a;Problem - A - Codeforces 解题思路&#xff1a;分三种情况 第一个字母a,最后一个字母z 前两个字母a 最后两个字母z 其他根据大小算出剩下的字母 下面是c代码&#xff1a; #include<iostream> using namespace std; int main() {int t, n;cin…

投稿状态Editor evaluating revision

See: https://nejm.net/talk/2303 https://muchong.com/t-15298340-1-pid-11 https://muchong.com/t-15298340-1-pid-11 https://muchong.com/t-15312191-1

ESP32学习(3)——连接WIFI

1.简介 Wi-Fi是基于IEEE 802.11标准的无线网络技术 让联网设备以无线电波的形式&#xff0c;加入采用TCP/IP通信协议的网络. Wi-Fi设备有两种模式&#xff1a; 1.Access Point(AP) 模式&#xff0c;此为无线接入点&#xff0c;家里的光猫就是结合WiFi和internet路由功能的AP。…

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…

java排课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java排课管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&#…

微信小程序的疑惑总结

未解决&#xff1a; 1.storebindings 这里的storebindings是什么 2.空行怎么写&#xff1f; 我用这个<text>\n</text>写&#xff0c;在模拟器上好使&#xff0c;在真机上显示\n 解决方法&#xff1a;在组件里写class类名&#xff0c;wxss里面改高度 已解决&am…

关于保存int型变量进int型数组的做法

如何保存int型变量进int型数组呢&#xff0c;大家先来看看我写的这串代码&#xff1a; #include <bits/stdc.h>using namespace std; int main(){int n;cin >> n;int num;vector<int>a;for (int i 1;i<n;i){cin >> num;if(num % 2 ! 0){a.push_ba…

Vue核心基础1:数据代理

1 回顾Object.defineProperty方法 let str hello const person {name: 张三,age: 18 } Object.defineProperty(person, sex, {// value: 男,// enumerable: true, // 控制属性是否可以枚举&#xff0c;默认值是false// writable: true, // 控制属性是否可以被修改&#xff0…

Date类(Java)、SimpleDateFormat

一、Date Date代表的是日期和时间 import java.util.Date;public class Test {public static void main(String[] args) {//Date日期类的使用//1.创建一个Date对象&#xff1a;代表系统当前时间信息Date d new Date();System.out.println(d); //打印当前时间信息//2.拿到时间…

Spring AOP的实现方式

AOP基本概念 Spring框架的两大核心&#xff1a;IoC和AOP AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程&#xff09; AOP是一种思想&#xff0c;是对某一类事情的集中处理 面向切面编程&#xff1a;切面就是指某一类特定的问题&#xff0c;所以AOP可…