从零构建大模型训练流程及原理(一)

news2025/1/19 14:38:56
这是一个大模型训练的系列文章,将从零开始手把手带大家构建大模型训练全流程。话不多说,开始发车~

什么是大语言模型

1. LLMs是什么?

大型语言模型(LLMs)是基于Transformer架构的深度学习模型,旨在理解、生成和响应类似人类文本的神经网络,具备数十亿参数,专门用于处理和生成自然语言文本。这些模型通过海量数据训练,利用其复杂的网络结构来捕捉语言的序列依赖性和上下文关系。LLMs的核心优势在于其无需手动特征工程,能够自动从数据中学习表示,从而在多种自然语言处理任务中展现出强大的性能和适应性。

图1.1 如此层次化的不同领域关系图表明,LLM(大语言模型)代表了深度学习技术的一种具体应用,利用其处理和生成类人文本的能力。深度学习是机器学习的一个专门分支,专注于使用多层神经网络。机器学习和深度学习是旨在实现能让计算机从数据中学习并执行通常需要人类智能才能完成的任务的算法的领域。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:
在这里插入图片描述

2. LLMs的应用场景

LLM被用于机器翻译、生成新文本、情感分析、文本摘要、内容创作等众多任务。此外,大型语言模型可以用于从医学或法律等专业领域的大量文本中有效检索知识。这包括筛选文档、总结长篇文章以及回答技术性问题。总之,大型语言模型对于涉及解析和生成文本的几乎所有任务来说都是不可或缺的。它们的应用几乎是无穷无尽的,随着我们不断创新发展使用这些模型的新方法,很明显,大型语言模型有潜力重新定义我们与技术的关系,使其更加对话化、直观并且易于访问。

图1.2 大型语言模型接口使得用户与AI系统之间能够进行自然语言交流。

3. 为什么要构建和使用自己的LLMs

从头开始编码一个LLM是理解其机制和局限性的极佳练习。同时还需要了解对现有的开源LLM架构进行预训练或微调,以适应我们自己特定领域的数据集或任务。使用自定义构建的LLMs有几个优点:

  1. 保护数据隐私;

  2. 方便在客户设备上直接部署,减少延迟和降低服务器成本;

  3. 能够按需控制对模型的更新和修改。

创建一个LLM的一般过程包括预训练和微调。“预”在“预训练”中的含义是指初始阶段,此时像LLM这样的模型在一个大的、多样的数据集上进行训练,以发展出对语言的广泛理解。这个预训练的模型随后作为一个基础资源,可以通过微调进一步精炼,即在特定任务或领域相关的更窄的数据集上对模型进行具体训练。

图1.3 预训练LLM(大型语言模型)涉及在大量文本数据集上进行下一个词的预测。然后可以使用较小的标注数据集对预训练的LLM进行微调。

4. 介绍Transformer架构

大多数现代的大语言模型依赖于 Transformer 架构,首次出现在2017年的论文《Attention Is All You Need》。Transfromer 架构由两个子模块组成:编码器和解码器。编码器模块处理输入文本,并将其编码成一系列的数值表示或向量,这些向量捕捉了输入内容的上下文信息。然后,解码器模块接收这些编码的向量并生成输出文本。例如,在一个翻译任务中,编码器会将源语言的文本编码成向量,而解码器则会解码这些向量来生成目标语言的文本。Transformer 的关键组件是自注意力机制,它允许模型衡量序列中不同单词或标记的重要性。这种机制使模型能够捕捉输入数据中的长距离依赖关系和上下文关系,增强其生成连贯且上下文相关的输出的能力。

图1.4 对原始 Transformer 架构的简化描绘,这是一种用于语言翻译的深度学习模型。Transformer 由两部分组成:(a) 处理输入文本并生成文本的嵌入表示(一种数值表示,在不同维度上捕捉许多不同因素)的编码器,以及 (b) 可以用来逐词生成翻译文本的解码器。此图显示了翻译过程的最后阶段,其中解码器只需要生成最后一个词(“Beispiel”),给定原始输入文本(“This is an example”)和部分翻译的句子(“Das ist ein”),以完成翻译。

后来的 Transformer 架构变体,例如BERT(即来自变压器的双向编码器表示的简称)和各种GPT模型(即生成预训练变压器的简称),在此概念的基础上发展,以适应不同的任务。BERT基于原始变压器的编码器子模块构建,在训练方法上与GPT不同。虽然GPT是为了生成任务设计的,但BERT及其变体专门用于掩码词预测,在给定的句子中,模型预测被掩码或隐藏的词。

图1.5 Transformer 的编码器和解码器子模块的可视化表示。左边,编码器部分体现了类似BERT的LLM(大型语言模型),它们专注于掩码词预测,主要用于文本分类等任务。右边,解码器部分展示了类似GPT的LLM,它们设计用于生成任务,生成连贯的文本序列。

5. 数据集

大量训练数据集用于流行的类似GPT和BERT的模型,代表了多样且全面的文本语料库,涵盖了数十亿的文字,其中包括大量的主题和自然及计算机语言。总之,就是数据量大,一个CommonCrawl 数据集大约需要570GB的存储空间。

数据名称

描述

数据量(tokens)

训练中占比

CommonCrawl (filtered)

Web crawl data

410 billion

60%

WebText2

Web crawl data

19 billion

22%

Books1

Internet-based book corpus

12 billion

8%

Books2

Internet-based book corpus

55 billion

8%

Wikipedia

High-quality text

3 billion

3%

表1.1 主流的GPT-3大语言模型的预训练数据集(tokens数相当于文本中的单词和标点符合的数量)

6. 细品GPT架构

GPT 最初是由 OpenAI 的 Radford 等人在论文《通过生成预训练改进语言理解》中引入的。GPT-3 是该模型的放大版本,具有更多的参数,并在更大的数据集上进行了训练。这些模型是强大的文本补全模型,并且可以执行其他任务,例如拼写纠正、分类或语言翻译。相比原始 Transformer 架构,通用的 GPT 架构相对简单。基本上,它只有解码器部分而没有编码器。由于像 GPT 这样的解码器风格的模型通过一次预测一个词来生成文本,因此它们被视为一种自回归模型。

图1.6 GPT 架构仅使用了原始变压器的解码器部分。它是为了单向、从左到右的处理而设计的,使其非常适合以迭代的方式生成文本,一次预测一个词。

7. 构建大语言模型

构建大模型语言模型分为一下几个阶段:

  1. 基本的数据预处理步骤;

  2. 编码每个大型语言模型(LLMs)核心的注意力机制;

  3. 编码并预训练一个类似GPT的大型语言模型,使其能够生成新的文本;

  4. 采用一个预训练的大型语言模型,并对其进行微调。

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

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

相关文章

[枚举坤坤]二进制枚举基础

我们都知道数据是以二进制形式存储在计算机中的。当我们使用十进制数进行编程时(如a10)实际上计算机要先进行一步转码,将其化为二进制的形式进行计算。如果在编程的过程中我们可以直接越过转码这一步去操纵二进制形式进行运算,程序…

EMNLP 2024 个性化/风格化 文本生成 论文汇总(19篇主会论文)

引言:调研,搬砖… 😊 🌘🌗🌖 😇 ✅ 笔者简介:Wang Linyong,NPU,2023级,计算机技术 研究方向:文本生成、大语言模型 文章目录 1 Perso…

【C++】STL----map和set

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:C从小白到高手 🌹往期回顾🌹:[C]二叉搜索树 🔖 流水不争,争的是滔滔不息 文章目录 一、set和map的简介setm…

Java设计模式梳理:行为型模式(策略,观察者等)

行为型模式 行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰。 策略模式 策略模式太常用了,所以把它放到最前面进行介绍。它比较简单,我就不废话,直接用代码说事吧。 下面设计的…

某ai gpt的bug

某ai gpt的bug 背景 遇到了一个奇怪的现象: 输入内容 2024-10-21 10:09:31,052 ERROR o.a.j.t.JMeterThread: Test failed! java.lang.IllegalArgumentException:输出结果

Android开发教程二维码扫描功能

Android开发教程二维码扫描功能 二维码扫描大一点的app都有的功能,因为扫一下真的很方便 一、思路: 用zxing库 二、效果图: 看视频更加直观点: Android开发教程实战案例源码分享-二维码扫描功能 三、关键代码: c…

音频声音怎么调大?将音频声音调大的几个简单方法

音频声音怎么调大?在现代生活中,音频内容无处不在,从在线课程和播客到音乐和电影,音频已经成为我们获取信息和娱乐的重要方式。然而,许多人在使用音频时可能会遇到一个常见问题:音频声音太小,无…

手机投屏到电脑上的scrcpy软件 scrcpy v2.4

下载:https://drive.uc.cn/s/b1285b1fb9f94?public1 最近的工作需要用到用手机演示一些操作,但是手机屏幕比较小,我就想把手机投到我的电脑上,然后电脑连接投影仪就行了。 scrcpy是一款开源的软件,在githus上可以下…

少儿编程学习,如何走,之点评一二

前言: 不少孩子在少儿机构学习编程的家长跟我反馈,机构学习孩子学了记不住,有些家孩子索性就不去,不愿意再谈编程学习之事。 从一位专业信息学教师出身的老师,稍作点评一二: 【同时也引用了一些主流媒体的…

力扣OJ算法题:合并两个有序链表

—————————————————————————————————————————— 正文开始 OJ算法题:合并两个有序链表 思路 创建一个新的空链表(可以用malloc优化)和两个指针L1、L2分别指向两个链表,遍历两个链表&am…

python poetry包管理的安装和使用

目录 设置国内(清华)镜像源和升级pip 安装poetry pycharm中使用 常用的poetry命令 本文背景为已经安装好python 设置国内(清华)镜像源和升级pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple python -m pip install --upgrade pip 安装po…

【峟思仪器】高边坡安全监测起到哪些作用

高边坡安全监测起到哪些作用?在当今的工程建设领域,高边坡监测犹如一道坚实的安全防线,其重要性不容小觑。无论是大型水利工程,还是交通基础设施建设,高边坡的稳定性都直接关系到工程的安全和周边环境的安危。高边坡监测在工程建…

在Debian上安装向日葵

说明: 因为之前服务器上安装了 PVE (Proxmox VE),之前是用 Proxmox VE 进行服务器资源管理的。出于某些原因,现在不再通过 PVE构建的虚拟机来使用计算资源,而是通过 PVE 自带的 Debian 系统直接使用虚拟机资源(因为积…

使用Python抓取房源信息

1. 引言 在当今大数据时代,网络爬虫成为获取信息的重要手段之一。本文将以某家二手房为例,演示如何使用Python爬虫抓取房源信息,并将这些信息保存到Excel文件中。 目标网站 2. 准备工作 2.1 安装必要的库 在开始之前,请确保你…

银行客户贷款行为数据挖掘与分析

#1024程序员节 | 征文# 在新时代下,消费者的需求结构、内容与方式发生巨大改变,企业要想获取更多竞争优势,需要借助大数据技术持续创新。本文分析了传统商业银行面临的挑战,并基于knn、逻辑回归、人工神经网络三种算法&#xff0…

【在Linux世界中追寻伟大的One Piece】Socket编程UDP

目录 1 -> UDP网络编程 1.1 -> V1版本 -echo server 1.2 -> V2版本 -DictServer 1.3 -> V2版本 -DictServer(封装版) 1 -> UDP网络编程 1.1 -> V1版本 -echo server 简单的回显服务器和客户端代码。 备注:代码中会用到地址转换函数。 noc…

Java面试题库——多线程

1.并行和并发有什么区别? 并行:是指两个或多个事件在同一时刻发生,是在不同实体上的多个事件; 并发:是指两个或多个事件在同一时间间隔发生,是同一实体上的多个事件。2.线程和进程的区别? 根本…

数据结构修炼——常见的排序算法:插入/希尔/选择/堆排/冒泡/快排/归并/计数

目录 一、常见的排序算法二、常见排序算法的实现2.1 排序算法回顾2.1.1 冒泡排序2.1.2 堆排序 2.2 直接插入排序2.3 希尔排序2.4 选择排序2.5 快速排序2.5.1 快速排序(霍尔法)2.5.2 快速排序(挖坑法)2.5.3 快速排序(前…

极客wordpress模板

这是一个展示WordPress主题的网页设计。页面顶部有一个导航栏,包含多个选项,如“关于我们”、“产品中心”、“案例展示”、“新闻动态”、“联系我们”和“技术支持”。页面中间部分展示了多个产品,每个产品都有一个图片和简短的描述。页面下…

【Linux】冯诺依曼体系结构 OS的概念

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 前言废话&#xff1a…