LLM预训练大型语言模型Pre-training large language models
在上一个视频中,您被介绍到了生成性AI项目的生命周期。
如您所见,在您开始启动您的生成性AI应用的有趣部分之前,有几个步骤需要完成。一旦您确定了您的用例范围,并确定了您需要LLM在您的应用程序中的工作方式,您的下一步就是选择一个要使用的模型。
您首先的选择将是使用现有的模型还是从头开始训练您自己的模型。在某些特定情况下,从头开始训练您自己的模型可能是有利的,您将在本课程后面了解到这些情况。
但是,通常情况下,您将使用现有的基础模型开始开发您的应用程序。许多开源模型都可供像您这样的AI社区成员在您的应用程序中使用。一些主要框架的开发者,如用于构建生成性AI应用的Hugging Face和PyTorch,已经策划了您可以浏览这些模型的中心。
这些中心的一个非常有用的特点是包括模型卡片,描述了每个模型的最佳用例、如何进行训练以及已知的限制的重要细节。您将在本周结束时的阅读材料中找到这些模型中心的一些链接。
您选择的确切模型将取决于您需要执行的任务的细节。Transformers模型架构的变体适用于不同的语言任务,这主要是因为模型训练方式的差异。为了帮助您更好地了解这些差异,并发展关于哪个模型用于特定任务的直觉,让我们仔细看看大型语言模型是如何被训练的。有了这些知识,您将更容易浏览模型中心并找到最适合您用例的模型。
首先,让我们从高层次看看LLMs的初始训练过程。这个阶段通常被称为预训练。
如您在第1课中所见,LLMs编码了语言的深度统计表示。这种理解是在模型的预训练阶段发展起来的,当模型从大量的非结构化文本数据中学习时。这可以是GB、TB,甚至是PB大小的非结构化文本。这些数据来自许多来源,包括从互联网上抓取的数据和为训练语言模型专门组装的文本语料库。
在这个自监督学习步骤中,模型内化了语言中存在的模式和结构。这些模式然后使模型能够完成其训练目标,这取决于模型的架构,正如您很快将看到的那样。在预训练期间,模型权重得到更新,以最小化训练目标的损失。编码器为每个令牌生成一个嵌入或向量表示。预训练也需要大量的计算和使用GPUs。
请注意,当您从公共网站如互联网抓取训练数据时,您通常需要处理数据以提高质量,解决偏见,并删除其他有害内容。由于这种数据质量策划,通常只有1-3%的令牌用于预训练。当您估计需要收集多少数据时,如果您决定预训练您自己的模型,您应该考虑这一点。
本周早些时候,您看到Transformers模型有三种变体;仅编码器、编码器-解码器模型和仅解码器。
每一个都是基于一个不同的目标进行训练的,因此学会执行不同的任务。
仅编码器模型也被称为自动编码模型,它们使用遮罩语言建模进行预训练。
这里,输入序列中的令牌被随机遮罩,训练目标是预测遮罩令牌以重构原始句子。
这也被称为去噪目标。
自动编码模型产生了输入序列的双向表示,这意味着模型对令牌的整个上下文有了解,而不仅仅是之前的单词。仅编码器模型非常适合从这种双向上下文中受益的任务。
您可以使用它们执行句子分类任务,例如情感分析或令牌级任务,如命名实体识别或单词分类。自动编码模型的一些众所周知的示例是BERT和RoBERTa。
现在,让我们看看仅解码器或自回归模型,它们使用因果语言建模进行预训练。这里,训练目标是基于之前的令牌序列预测下一个令牌。
预测下一个令牌有时被研究人员称为完整的语言建模。基于解码器的自回归模型,遮罩输入序列,只能看到直到问题令牌的输入令牌。
模型不知道句子的结尾。然后,模型一个接一个地迭代输入序列来预测下一个令牌。
与编码器架构相反,这意味着上下文是单向的。
通过学习从大量示例中预测下一个令牌,模型建立了语言的统计表示。这种类型的模型使用原始架构的解码器组件,而不使用编码器。
仅解码器模型通常用于文本生成,尽管较大的仅解码器模型显示出强大的Zero shot推理能力,并且通常可以很好地执行一系列任务。GPT和BLOOM是基于解码器的自回归模型的一些众所周知的示例。
Transformers模型的最后一个变体是使用原始Transformers架构的编码器和解码器部分的序列到序列模型。预训练目标的确切细节因模型而异。一个受欢迎的序列到序列模型T5,使用Span corruption跨度腐败预训练编码器,这遮罩随机输入令牌序列。那些遮罩序列然后被替换为一个唯一的哨兵令牌,这里显示为x。哨兵令牌是添加到词汇表的特殊令牌,但不对应于输入文本的任何实际单词。
解码器然后被分配自回归地重建遮罩令牌序列。输出是哨兵令牌后面的预测令牌。
您可以使用序列到序列模型进行翻译、摘要和问答。当您有一体文本作为输入和输出时,它们通常是有用的。除了T5,您将在本课程的实验室中使用,另一个众所周知的编码器-解码器模型是BART,不是Bird。
总之,这是一个快速比较不同的模型架构和预训练目标的目标。自动编码模型使用遮罩语言建模进行预训练。它们对应于原始Transformers架构的编码器部分,通常与句子分类或令牌分类一起使用。
自回归模型使用因果语言建模进行预训练。这种类型的模型使用原始Transformers架构的解码器组件,并经常用于文本生成。
序列到序列模型使用原始Transformers架构的编码器和解码器部分。预训练目标的确切细节因模型而异。T5模型使用span corruption跨度腐败进行预训练。序列到序列模型通常用于翻译、摘要和问答。
现在您已经看到了这些不同的模型架构是如何被训练的,以及它们适合的特定任务,您可以选择最适合您用例的模型类型。还有一件事要记住的是,任何架构的较大模型通常更有能力很好地执行它们的任务。研究人员发现,模型越大,就越有可能在没有额外的上下文学习或进一步训练的情况下按照您的需要工作。这种观察到的模型能力随大小增加的趋势,近年来推动了更大模型的发展。
这种增长是由研究中的拐点驱动的,如高度可扩展的Transformers架构的引入,用于训练的大量数据的访问,以及更强大的计算资源的开发。
这种模型大小的稳定增长实际上使一些研究人员推测LLMs存在一个新的摩尔定律。像他们一样,您可能会问,我们是否可以只是继续添加参数来增加性能并使模型更智能?这种模型增长可能会导致什么?
虽然这听起来很棒,但事实证明,训练这些巨大的模型是困难和非常昂贵的,以至于不断地训练更大和更大的模型可能是不可行的。让我们在下一个视频中仔细看看与训练大型模型相关的一些挑战。
参考
https://www.coursera.org/learn/generative-ai-with-llms/lecture/2T3Au/pre-training-large-language-models
相关文章:

LLM预训练大型语言模型Pre-training large language models
在上一个视频中,您被介绍到了生成性AI项目的生命周期。 如您所见,在您开始启动您的生成性AI应用的有趣部分之前,有几个步骤需要完成。一旦您确定了您的用例范围,并确定了您需要LLM在您的应用程序中的工作方式,您的下…...
[Machine Learning] 损失函数和优化过程
文章目录 机器学习算法的目的是找到一个假设来拟合数据。这通过一个优化过程来实现,该过程从预定义的 hypothesis class(假设类)中选择一个假设来最小化目标函数。具体地说,我们想找到 arg min h ∈ H 1 n ∑ i 1 n ℓ ( X i…...
serialVersionUID 有何用途?如果没定义会有什么问题?
序列化是将对象的状态信息转换为可存储或传输的形式的过程。我们都知道,Java 对象是保持在 JVM 的堆内存中的,也就是说,如果 JVM 堆不存在了,那么对象也就跟着消失了。 而序列化提供了一种方案,可以让你在即使 JVM 停机…...

C# OpenCvSharp DNN 二维码增强 超分辨率
效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Dnn; using OpenCvSh…...
this.$refs使用方法
深入理解和使用this.$refs——Vue.js的利器 Vue.js是一个流行的JavaScript框架,用于构建交互性强大的用户界面。在Vue.js中,this.$refs是一个强大的特性,允许你直接访问组件中的DOM元素或子组件实例。本教程将带你深入了解this.$refs的使用方…...

Ohio主题 - 创意组合和代理机构WordPress主题
Ohio主题是一个精心制作的多用途、简约、华丽、多功能的组合和创意展示主题,具有敏锐的用户体验,您需要构建一个现代且实用的网站,并开始销售您的产品和服务。它配备了最流行的WordPress页面构建器 WPBakery Page Builder(以前称为…...

mysql 、sql server trigger 触发器
sql server mySQL create trigger 触发器名称 { before | after } [ insert | update | delete ] on 表名 for each row 触发器执行的语句块## 表名: 表示触发器监控的对象 ## before | after : 表示触发的时间,before : 表示在事件之前触发&am…...
自然语言处理从入门到应用——LangChain:索引(Indexes)-[检索器(Retrievers)]
分类目录:《自然语言处理从入门到应用》总目录 检索器(Retrievers)是一个通用的接口,方便地将文档与语言模型结合在一起。该接口公开了一个get_relevant_documents方法,接受一个查询(字符串)并返…...

春秋云境:CVE-2022-0543(Redis 沙盒逃逸漏洞)
目录 一、i春秋题目 二、CVE-2022-0543:(redis沙盒逃逸) 漏洞介绍: 漏洞复现: 一、i春秋题目 靶标介绍: Redis 存在代码注入漏洞,攻击者可利用该漏洞远程执行代码。 进入题目:…...
关于uniapp组件的坑
关于uniapp组件的坑 我有一个组件写的没什么问题,但是报下面这个错误 is not found in path “components/xxx/xxxx” (using by “components/yyy/yyy”) 最后经过排除发现命名需要驼峰命名法 我原本组件命名: 文件夹名 test_tttt 文件名 test_tttt.vue 不行 最后改成文件…...

AIGC与软件测试的融合
一、ChatGPT与AIGC 生成式人工智能——AIGC(Artificial Intelligence Generated Content),是指基于生成对抗网络、大型预训练模型等人工智能的技术方法,通过已有数据的学习和识别,以适当的泛化能力生成相关内容的技术。…...

滑动验证码-elementui实现
使用elementui框架实现 html代码 <div class"button-center"><el-popoverplacement"top":width"imgWidth"title"安全验证"trigger"manual"v-model"popoverVisible"hide"popoverHide"show&quo…...

ubuntu 20.04 安装 高版本cuda 11.7 和 cudnn最新版
一、安装显卡驱动 参考另一篇文章:Ubuntu20.04安装Nvidia显卡驱动教程_ytusdc的博客-CSDN博客 二、安装CUDA 英伟达官网(最新版):CUDA Toolkit 12.2 Update 1 Downloads | NVIDIA Developer CUDA历史版本下载地址:C…...

svg图片如何渲染到页面,以及svg文件的上传
svg图片渲染到页面的几种方式 背景🟡require.context获取目录下的所有文件🟡方式1: 直接在html中渲染🟡方式: 发起ajax请求,获取SVG文件 背景 需要实现从本地目录下去获取所有的svg图标进行预览,将选中的图片显示在另…...
GPT-LLM-Trainer:如何使用自己的数据轻松快速地微调和训练LLM
一、前言 想要轻松快速地使用您自己的数据微调和培训大型语言模型(LLM)?我们知道训练大型语言模型具有挑战性并需要耗费大量计算资源,包括收集和优化数据集、确定合适的模型及编写训练代码等。今天我们将介绍一种实验性新方法&am…...

深入理解ForkJoin
任务类型 线程池执行的任务可以分为两种:CPU密集型任务和IO密集型任务。在实际的业务场景中,我们需要根据任务的类型来选择对应的策略,最终达到充分并合理地使用CPU和内存等资源,最大限度地提高程序性能的目的。 CPU密集型任务 …...

Spring5学习笔记—AOP编程
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Spring专栏 ✨特色专栏: M…...
适用于 Docker 用户的 kubectl
适用于 Docker 用户的 kubectl 你可以使用 Kubernetes 命令行工具 kubectl 与 API 服务器进行交互。如果你熟悉 Docker 命令行工具, 则使用 kubectl 非常简单。但是,Docker 命令和 kubectl 命令之间有一些区别。以下显示了 Docker 子命令, 并…...

网络安全设备篇——加密机
加密机是一种专门用于数据加密和解密的网络安全设备。它通过使用密码学算法对数据进行加密,从而保护数据的机密性和完整性。加密机通常被用于保护敏感数据,如金融信息、个人身份信息等。 加密机的主要功能包括: 数据加密:加密机使…...
Rust 基础入门 —— 2.3.所有权和借用
Rust 的最主要光芒: 内存安全 。 实现方式: 所有权系统。 写在前面的序言 因为我们这里实际讲述的内容是关于 内存安全的,所以我们最好先复习一下内存的知识。 然后我们,需要理解的就只有所有权概念,以及为了开发便…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...