一文搞懂LLM大模型!LLM从入门到精通万字长文(2024.12月最新)

 LLM从入门到精通精品文章

目录

一、LLM基本概念

二、LLM发展历程

三、LLM大模型的分类

四、LLM主流大模型类别

五、LLM大模型建立的流程

六、Fine-Tuning

七、Prompt-Tuning

八、超大规模参数模型Prompt-Tuning方法

8.1上下文学习 In-Context Learning

8.2.指令学习 Instruction- Tuning

8.3 思维链Chain-of-Thought

九、Prefix-Tuning

十、LoRA

一、LLM基本概念

        大模型LLM(Large Language Model)是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数。大模型的设计目的是为了提高模型的表达能力和预测性能,能够处理更加复杂的任务和数据。大模型在各种领域都有广泛的应用,包括自然语言处理、计算机视觉、语音识别和推荐系统等。大模型通过训练海量数据来学习复杂的模式和特征,具有更强大的泛化能力,可以对未见过的数据做出准确的预测。

        大模型本质上是一个使用海量数据训练而成的深度神经网络模型,其巨大的数据和参数规模,实现了智能的涌现,展现出类似人类的智能。

        LLM的使用场景非常广泛。首先,LLM可以用于文本生成,可以生成连贯的段落、文章、对话等,可以应用于自动写作、机器翻译等任务中。其次,LLM可以用于问答系统,可以回答复杂的问题,甚至进行对话式问答。再者,LLM可以用于语义理解和推理,可以进行情感分析、命名实体识别、文本分类等任务。此外,LLM还可以用于智能助理、机器人交互、自动摘要、信息提取等应用领域。总的来说,LLM在自然语言处理和人工智能领域都有很大的潜力,可以提供更加智能和自然的人机交互体验。

二、LLM发展历程

截止目前,语言模型发展走过了三个阶段:

三、LLM大模型的分类

按照输入数据类型的不同,LLM大模型主要可以分为以下三大类:

语言大模型(NLP):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。

视觉大模型(CV):是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。这类模型通过在大规模图像数据上进行训练,可以实现各种视觉任务,如图像分类、目标检测、图像分割、姿态估计、人脸识别等。例如:VIT系列(Google)、文心UFO、华为盘古CV、INTERN(商汤)。

多模态大模型:是指能够处理多种不同类型数据的大模型,例如文本、图像、音频等多模态数据。这类模型结合了NLP和CV的能力,以实现对多模态信息的综合理解和分析,从而能够更全面地理解和处理复杂的数据。例如:DingoDB多模向量数据库(九章云极DataCanvas)、DALL-E(OpenAI)、悟空画画(华为)、midjourney。

四、LLM主流大模型类别

        随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。开源语言大模型种类有以下4个:

1 ChatGLM-6B模型简介:

        ChatGLM-6B 是清华大学提出的一个开源、支持中英双语的对话语言模型,基于General LanguageModel (GLM) 架构,具有 62 亿参数.该模型使用了和 ChatGPT 相似的技术,经过约 1T 标识符的中英双语训练(中英文比例为1:1),辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答(目前中文支持最好).

        GLM是一种基于自回归空白填充目标的通用预训练框架. GLM 将 NLU 任务转化为包含任务描述的完形填空问题,可以通过自回归生成的方式来回答.

        原理:在输入文本中随机挖去一些连续的文本片段,然后训练模型按照任意顺序重建这些片段.

        完形填空问题是指在输入文本中用一个特殊的符号(如[MASK])替换掉一个或多个词,然后训练模型预测被替换掉的词.

优点:较低的部署门槛: INT4 精度下,只 需6GB显存,使得 ChatGLM-6B 可 以部署在消费级显卡上进行推理.  更长的序列长度: 相比 GLM-10B (序列长度1024),ChatGLM2-6B 序列长度达32K,支持更长对话和应 用。  人类类意图对齐训练。

缺点:模型容量小,相对较弱的模型记忆和语言能力。 多轮对话能力较弱。

模型配置(6B)与硬件要求:

2 LLaMA模型简介

        LLaMA(Large Language Model Meta AI),由 Meta AI 于2023年发布的一个开放且高效的大型基础语言模型,共有 7B、13B、33B、65B(650 亿)四种版本. LLaMA训练数据是以英语为主的拉丁语系,另外还包含了来自 GitHub 的代码数据。训练数据以英文为主,不包含中韩日文,所有训练数据都是开源的。其中LLaMA-65B 和 LLaMA-33B 是在 1.4万亿 (1.4T) 个token上训练的,而最小的模型 LLaMA-7B 和LLaMA-13B 是在 1万亿 (1T) 个 token 上训练的.

LLaMA 的训练目标是语言模型,即根据已有的上文去预测下一个词

优点 : 具有 130 亿参数的 LLaMA 模型 「在大多数基准上」可以胜过 GPT-3( 参数量达 1750 亿).  可以在单块 V100 GPU 上运行; 而最大的 650 亿参数的 LLaMA 模型可以媲美谷歌的 Chinchilla70B 和 PaLM-540B.

缺点:会产生偏见性、有毒或者虚假的内容.  在中文上效果差,训练语料不包含中文或者一个汉字切分为多个token,编码效率低,模型学习难度大.

模型配置(7B)与硬件要求:

3 BLOOM模型简介

        BLOOM系列模型是由 Hugging Face公司训练的大语言模型. 训练数据包含了英语、中文、法语、西班牙语、葡萄牙语等共 46 种语言,另外还包含 13 种编程语言. 1.5TB 经过去重和清洗的文本,其中中文语料占比为16.2%. 按照模型参数量,BLOOM 模型有 560M、1.1B、1.7B、3B、7.1B 和 176B 这几个不同参数规模的模型.

BLOOM 的训练目标是语言模型,即根据已有的上文去预测下一个词

优点:具有良好的多语言适 应性,能够在多种语 言间进行切换,且无 需重新训练.

缺点:会产生偏见性、有毒或者虚假的内容.

模型配置(176B)与硬件要求

4 Baichuan-7B模型

        Baichuan-7B由百川智能于2023年6月发布的一个开放且可商用的大型预训练语言模型,其支持中英双语,是在约 1.2万亿 (1.2T) 个 token上训练的70亿参数模型.

Baichuan-7B 的训练目标也是语言模型,即根据已有的上文去预测下一个词。

模型配置(7B)与模型特点:

五、LLM大模型建立的流程

LLM(Large Language Model)大模型训练的流程一般涉及以下几个阶段:

1. 数据收集和预处理:首先需要收集大量的训练数据,这些数据可以是从互联网上收集的文本数据,也可以是从现有的数据集中获取的。收集的数据需要进行预处理,包括去除噪声、标记化、分词等操作。

2. 构建模型架构:选择适合的模型架构来搭建LLM模型,常见的架构包括Transformer、BERT等。

3. 模型预训练:大模型首先在大量的无标签数据上进行训练,预训练的最终目的是让模型学习到语言的统计规律和一般知识。在这个过程中模型能够学习到词语的语义、句子的语法结构、以及文本的一般知识和上下文信息。需要注意的是,预训练本质上是一个无监督学习过程;得到预训练模型(Pretrained Model), 也被称为基座模型(Base Model),模型具备通用的预测能力。如GLM-130B模 型、OpenAI的A、B、C、D四大模型,都是基座模型;

4. 微调:在微调阶段,LLM使用特定的数据集进行训练,以适应特定的任务或应用。这个阶段通常使用迁移学习的方法,将预训练的模型作为基础,在特定任务上进行微调。

5. 模型评估:训练完成后,需要对训练得到的模型进行评估。评估的方式可以是计算模型在验证集或测试集上的准确率、召回率等指标。同时,也可以对生成的文本进行人工评估,判断模型生成的文本是否符合预期。

6. 模型部署和优化:训练完成后,需要将模型进行部署,可以通过将模型封装成API接口的形式提供给用户使用。同时,也可以进行模型的优化,如模型压缩、量化等,以提高模型的效率和性能。

        需要注意的是,LLM大模型训练的过程通常需要大量的计算资源和时间,并且在训练过程中需要进行大规模的参数更新,因此需要有高效的训练算法和计算平台来支持。

六、Fine-Tuning

        首先解释一下什么是Prompt?
        prompt顾名思义就是“提示”的意思,应该有人玩过你画我猜这个游戏吧,对方根据一个词语画一幅画,我们来猜他画的是什么,因为有太多灵魂画手了,画风清奇,或者你们没有心有灵犀,根本就不好猜啊!这时候屏幕上会出现一些提示词比如3个字,水果,那岂不是好猜一点了嘛。

        Fine-Tuning属于一种迁移学习方式,在自然语言处理(NLP)中,Fine-Tuning是用于将预训练的语言模型适应于特定任务或领域。Fine-Tuning的基本思想是采用已经在大量文本上进行训练的预训练语言模型,然后在小规模的任务特定文本上继续训练它.

 Fine-Tuning的目的是把模型适配到特定的任务上!

解决方法:Prompt-Tuning, 通过添加模板的方法来避免引入额外的参数,从而让模型可以在小样本(few-shot)或者零样本(zero-shot)场景下达到理想的效果 。

七、Prompt-Tuning

        Prompt-Tuning方法是一种用于改进语言模型的训练方法,是由谷歌提出的一种轻量级的优化方法。在语言模型中,Prompt是一个前缀文本,用于指导生成的文本内容。Prompt-Tuning方法通过对Prompt进行优化,使其能够更好地引导模型生成符合预期的文本。

        基于Fine-Tuning的方法是让预训练模型去迁就下游任务,而基于Prompt-Tuning的方法可以让下游任务去迁就预训练模型, 其目的是将Fine-tuning的下游任务目标转换为Pre-training的任务.

        传统的语言模型训练方法通常使用大量的无标签文本来预训练模型,然后使用有标签数据进行微调。然而,这种方法存在一些问题,例如模型生成的文本可能缺乏准确性和一致性。Prompt-Tuning方法通过添加或调整Prompt,可以更精确地指导模型生成特定类型的文本。具体来说,Prompt-Tuning方法有以下几个步骤:

1. 创建Prompt:根据任务需求,设计一个能够引导生成文本的Prompt。Prompt可以是一个简单的问题、一句话的描述、或者一段指令等。

2. 选择优化策略:根据不同的优化目标,选择适当的优化策略。常见的策略包括Prompt Engineering、Prompt Language Modeling、Prompt Optimization等。

3. 优化Prompt:根据选择的优化策略,在训练数据中对Prompt进行优化。这可以包括通过梯度下降方法调整Prompt的权重,或者通过生成和筛选多个Prompt进行优选。

4. 微调模型:使用优化后的Prompt和有标签数据对模型进行微调,以便模型能够更好地生成符合Prompt要求的文本。

        通过使用Prompt-Tuning方法,可以提高语言模型生成文本的准确性和一致性,并且能够更好地指导模型生成特定类型的文本,适用于各种任务,例如机器翻译、对话系统、摘要生成等。

八、超大规模参数模型Prompt-Tuning方法

        近两年来,随着Prompt-Tuning技术的发展,对于超过10亿参数量的模型来说,Prompt-Tuning所带来的增益远远高于标准的Fine-tuning. 如GPT-3模型, 只需要设计合适的模板或指令即可以实现免参数训练的零样本学习.

        根本原因:模型参数量足够大,训练过程中使用了 足够多的语料,同时设计的 预训练任务足够有效.

        该方法在参数规模非常大的模型微调时效果很好,当参数规模达到 100亿时和全量微调效果一致。

        面向超大规模的模型的Prompt-Tuning方法有三种:

        1.上下文学习 In-Context Learning :直接挑选少量的训练样本作为该任务的提示.。

        2.指令学习 Instruction- Tuning :构建任务指令集,促使模型根据任务指令做出反馈。

        3.思维链Chain-of-Thought :给予或激发模型具有推理和解释的信息,通过线性链式的模式指导模型生成合理的结果。

8.1上下文学习 In-Context Learning

        In-Context learning(ICL)最早在GPT3中提出, 旨在从训练集中挑选少量的标注样本,设计任务相关的指令形成提示模板,用于指导测试样本生成相应的结果,有以下三种学习方式。

8.2.指令学习 Instruction- Tuning

        其实Prompt-Tuning本质上是对下游任务的指令,简单的来说:就是告诉模型需要做什么任务,输出什么内容. 上文我们提及到的离散或连续的模板,本质上就是一种对任务的提示.

        因此, 在对大规模模型进行微调时, 可以为各种类型的任务定义更明显的指令, 并进行训练,来提高模型对不同任务的泛化能力.

举个例子:

        指令学习和Prompt的区别是什么?

        指令学习激发语言模型的理解能力;指令学习激发语言模型的补全能力.

8.3 思维链Chain-of-Thought

        思维链方法的核心思想是将思考的过程及其相关的观念和想法串联起来,形成一个连续的思维链条。这种链条可以由线性或非线性的思维过程构成,从而帮助模型不断延伸和扩展思考。相比于之前传统的上下文学习(即通过x1,y1,x2 ,y2 ,....xtest作为输入来让大模型补全输出ytest),思维链多了中间的推导提示.

九、Prefix-Tuning

        2021年斯坦福大学论文《Prefix-Tuning: Optimizing Continuous Prompts for Generation》中提出了PrefixTuning 方法,该方法是在输入 token 之前构造一段任务相关的 virtual tokens 作为Prefix,然后训练的时候只更新 Prefix 部分的参数,而 Transformer 中的其他部分参数固定.

        原理简述:在原始模型基础上,增加一个可被训练的Embedding 层,用于给提示词增加前缀进行信息过滤,从而让模型更好的理解提示词意图, 并在训练过程中不断优化这些参数;

        优点:Prefix Tuning既能够在模型结构上增加一些新的灵活性,又能够在模型使用上提供一种自动的、能够改进模型表现的提示机制;

十、LoRA

        低秩适应(Low-Rank Adaptation,LoRA)是一种参数高效的微调技术,LoRA是最早由微软研究院发布的一项微调技术; 其核心思想是对大型模型的权重矩阵进行隐式的低秩转换,也就是:通过一个较低维度的表示来近似表示一个高维矩阵或数据集。

LoRA 原理:

        LoRA技术冻结预训练模型的权重,并在每个Transformer块中注入可训练层(称为秩分解矩阵),即在模型的Linear层的旁边增加一个“旁支”A和B。其中,A将数据从d维降到r维,这个r是LoRA的秩,是一个重要的超参数;B将数据从r维升到d维,B部分的参数初始为0。模型训练结束后,需要将A+B部分的参数与原大模型的参数合并在一起使用。

        简而言之:基于大模型的内在低秩特性,LoRA通过在模型的权重矩阵中添加一个低秩矩阵来实现微调。这个低秩矩阵可以看作是对原始权重矩阵的一个小的调整,它不会显著改变模型的参数规模,但可以有效地捕捉到特定任务的特征。

点个收藏,持续更新中。。。

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

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

相关文章

Next.js跟React关系(Next.js是基于React库的全栈框架)(文件系统路由、服务端渲染SSR、静态生成SSG、增量静态再生ISR、API路由)

文章目录**1. React 是基础,Next.js 是扩展****2. Next.js 解决了 React 的哪些痛点?****3. 核心区别****4. Next.js 的核心特性**1. **文件系统路由**2. **服务端渲染(SSR)**3. **静态生成(SSG)**4. **增量…

Nightingale源码Linux进行跨平台编译

最近使用Nightingale 需要实现对服务的监测,想要在Windows 系统中使用,看官方文档中并不直接提供执行程序,原文如下: 准备工作 本地环境 本地已经安装git 本地安装git 便于后续下载源码并进行自动编译。 Linux操作系统环境&…

抽丝剥茧丨PostgreSQL 系国产数据库%SYS CPU newfstatat() high 调优一例(二)

续接上回《PostgreSQL 系国产数据库%SYS CPU newfstatat() high 调优一例(一)》,这个问题还在持续,并且原因并不只是一个,从调了文件系统级atime,到调整wal size减少日志被动清理,还有在验证tem…

【新手入门】Android Studio 项目结构拆解,快速理解文件作用!

目 录 一、【Project】视图下项目结构(真实目录) 二、【Android】视图下项目结构 三、【app/】下重要文件解析 1、 build.gradle 2、AndroidManifest.xml 3、res/ 作为刚刚接触Android开发的小白,使用Android Studio创建项目后&…

Python实现点云Kmeans、欧式和DBSCAN聚类

本节我们分享点云处理中的三种常见聚类方法,分别是K-means、欧氏与 DBSCAN聚类。具体介绍如下:1. K-means 聚类定义:一种基于距离度量的无监督学习算法,将数据划分为 K 个紧凑的簇,使簇内数据相似度高、簇间差异大。算…

【Java后端】MyBatis-Plus 原理解析

MyBatis-Plus 原理解析 其实 MyBatis-Plus 的 Service 层设计就是为了让开发者不用重复写很多样板代码。我们来一点点剖析 UserServiceImpl、IService、UserService、ServiceImpl 之间的关系和调用链。1. 类/接口关系图IService<T>▲│UserService (接口) <-- 自定义…

Nacos 注册中心学习笔记

&#x1f389; Alibaba微服务组件 Nacos 注册中心超详细学习笔记 &#x1f389; &#x1f4cc; 写在前面&#xff1a;本文基于官方PDF文档与实战经验&#xff0c;整理了Nacos注册中心的核心知识点、部署流程与实战技巧&#xff0c;力求图文并茂、通俗易懂&#xff0c;适合收藏反…

java 策略模式 demo

策略模式介绍策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来并使它们可相互替换。策略模式让算法的变化独立于使用算法的客户端&#xff0c;从而实现灵活的算法切换。核心角色&#xff1…

SAP Valuation Category在制造业成本核算中的使用场景与配置方案

Valuation Category在制造业成本核算中的使用场景与配置方案一、核心使用场景&#xff08;制造业特有&#xff09;1. 内制 vs 外购成本分离业务需求&#xff1a;同一物料可能通过内部生产&#xff08;成本含料工费&#xff09;或外部采购&#xff08;成本含采购价运费&#xff…

我的 LeetCode 日记:Day 36 - 动态规划,背包问题的千变万化

昨天&#xff0c;我初步掌握了 0/1 背包问题的理论基础和标准解法。今天&#xff0c;我将这种思想应用到了更广泛的场景中。今天的几道题&#xff0c;乍一看和背包没什么关系&#xff0c;但通过巧妙的数学转化&#xff0c;它们的核心都变成了 0/1 背包问题。 这让我深刻体会到…

本地处理不上传!隐私安全的PDF转换解决方案

PDF能锁定排版、字体、图片位置&#xff0c;无论在什么设备打开都保持一致。它是无广告、简洁高效的专业PDF处理工具。功能丰富&#xff0c;支持批量操作&#xff1a;只需将文件拖入界面&#xff0c;选择目标格式&#xff08;如Word、PPT、Excel、图片等&#xff09;&#xff0…

Docker build创建镜像命令入门教程

一、核心概念Dockerfile 定义镜像构建步骤的文本文件&#xff0c;包含一系列指令和配置&#xff0c;用于自动化创建镜像。镜像层&#xff08;Layer&#xff09; Docker 镜像由多层只读层叠加而成&#xff0c;每个指令&#xff08;如 RUN、COPY&#xff09;会生成一个新的层。层…

Redis 是单线程模型吗?

最近在面试中经常被问到这个问题&#xff1a;"Redis是单线程的吗&#xff1f;"很多同学都会脱口而出&#xff1a;"是的&#xff01;"但其实这个答案并不完全正确。今天我们就来聊聊Redis的线程模型&#xff0c;把这个问题彻底搞清楚。 先说结论 Redis的线程…

Hologres实战:路径分析函数

前言 Hologres提供了一套高效的路径分析函数&#xff0c;包括路径明细计算和结果解析功能&#xff0c;能够帮助用户深入理解用户行为路径&#xff0c;并通过桑基图实现数据可视化。 一、核心功能 路径明细计算&#xff1a;精确记录用户在产品或功能中的完整访问路径结果解析…

产品开发实践(常见的软硬结合方式)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】前面说过&#xff0c;传统的纯软件开发&#xff0c;在国内的大背景下面是很难存活的。但是如果是把软件&#xff0c;构建在硬件基础之上&#xff0c…

Linux | i.MX6ULL网络通信-套字节 UDP(第十八章)

01 Linux | i.MX6ULL网络通信-套字节 TCP(第十七章) 02 iTOP-IMX6ULL 实现基于 UDP 的 socket 编程。

学习嵌入式第三十天

文章目录进程和线程&#xff08;续&#xff09;线程1.线程传参2.线程属性3.线程间通信1.概念2.方式3.互斥锁4.死锁5.信号量习题 进程和线程&#xff08;续&#xff09; 线程 1.线程传参使用第四个参数实现对线程内部的传参 代码实现&#xff1a; #include <stdio.h> #inc…

GaussDB 数据库架构师修炼(十三)安全管理(3)-行级访问控制

1 背景行级访问控制特性将数据库的访问控制精确到数据表行级别 &#xff0c;只允许用户查看 、更新或删除特定的行数据。2 实例场景实例以医生只能看到治疗的病人&#xff0c;不能看其它医生的病人为例&#xff1a;1)医院病人的信息表pat_info&#xff1a;csdn> set search_…

Wi-Fi 与蜂窝网络(手机网络)的核心区别,以及 Wi-Fi 技术未来的发展方向

在日常生活中&#xff0c;我们既离不开家里的 Wi-Fi&#xff0c;也离不开手机的 4G/5G 网络。它们都能把我们连接到互联网&#xff0c;但底层的工作方式却大不相同。一、设计初衷的不同Wi-Fi诞生于 1997 年的 IEEE 802.11 标准&#xff0c;定位是局域网无线替代。它的目标是让电…

C++编程实战:高效解决算法与数据结构问题

个人主页 &#xff1a; zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 题目1. 数字统计2. 两个数组的交集3. 牛牛的快递4. 点击消除5. 最小花费爬楼梯6. 简写单词1. 数字统计 BC153 数字统计 #include <iostream> using na…