首页 > 其他分享 >大语言模型LLM

大语言模型LLM

时间:2024-08-20 15:27:38浏览次数:12  
标签:KG 语言 训练 模型 微调 学习 LLM

目录

  • LLM训练方法
  • LLM高效训练/省内存
  • LLM与知识图谱(KGs)结合
  • LLM开源项目
  • LLM训练集及评估

一、语言模型的发展

语言模型(Language Model,LM) 目标是建模自然语言的概率分布,具体目标是构建词序列w1,w2,…,wm的概率分布,即计算给定的词序列作为一个句子出现可能的大小P(w1w2…wm)。但联合概率P的参数量十分巨大N^m(m代表句子的长度,N代表可能单词的数量),一种简化思路是,利用句子序列从左至右的生成过程来分解联合概率:

也就是说,将词序列w1w2…wm的生成过程看成单词的逐个生成,假设第i个单词的概率取决于前i-1个单词。需要指出的是,这种分解本身并未降低模型所需的参数量,但是这种转换为接下来的简化提供了一种途径。

  • 统计语言模型:N-gram模型,即元文法模型。根据上述假设,词的概率受前面i-1个词的影响,称为历史影响,而估算这种概率最简单的方法是根据语料库,计算词序列在语料库中出现的频次。
  • 神经语言模型(Neural Network Language Models,NNLM):克服了n元语言模型的维度灾难,出现了以词向量(Word Embedding)为代表的分布式表示的语言模型FFN, RNN, LSTM
  • 预训练语言模型(Pre-trained Model,PLM):ELMo首先预训练双向LSTM网络,Transformer基于注意力机制,BERT利用掩码机制构造了基于上下文预测中间词的预训练任务
编码预训练语言模型(Encoder-only Pre-trained Models):如BERT模型解码预训练语言模型(Decoder-only Pre-trained Models):如GPT模型基于编解码架构的预训练语言模型(Encoder-decoder Pre-trained Models):Seq2Seq模型如BART模型,采用的预训练方式为输入含有各种噪声的文本,再由模型进行去噪重构

  • 大语言模型(Large Language Model,LLM)

2019年Google发布了T5。2020年1月,OpenAI发表了论文《Scaling Laws for Neural Language Models》,研究了基于交叉熵损失的语言模型性能的经验尺度法则,并且发现:大模型使用样本的效率显著更高,因此最优的高效训练方式是在中等数据集上训练超大模型,并在显著收敛前提前停止。

LLM成功的一些关键技术:

  • 模型缩放(Scaling):模型规模的扩大,训练数据的质量对实现良好性能起着关键作用
  • 模型训练(Training):使用各种优化框架来部署并行算法,比如DeepSpeed和Megatron-LM
  • 能力诱导(Ability Eliciting):用合适的任务步骤和Prompt来引导大语言模型解决复杂任务
  • 对齐调优(Alignment Tuning): 大语言模型进行了大量数据量的训练,因此有可能因为低质量数据产生错误甚至有害的内容。GPT采取了人类反馈强化学习(RLHF)的策略,通过精心设计的标签将人类融入训练循环中,来避免这种问题的出现。
  • 工具利用(Tools Manipulation):外置工具如插件,可以拓展大语言模型的能力

LLM 大致可以分为两种类型,即基础LLM和指令微调LLM。基础LLM是基于文本训练数据,训练出预测下一个单词能力的模型,其通常是在互联网和其他来源的大量数据上训练的。指令调整的 LLMs 的训练通常是从已经训练好的基本 LLMs 开始,该模型已经在大量文本数据上进行了训练。然后,使用输入是指令、输出是其应该返回的结果的数据集来对其进行微调,要求它遵循这些指令。然后通常使用一种称为 RLHF(reinforcement learning from human feedback,人类反馈强化学习)的技术进行进一步改进,使系统更能够有帮助地遵循指令

1. LLM训练技术

基本流程:

预训练语料的来源大致可以分为两类:通用语料和专业语料。

  • 通用语料:如网页、书籍和会话文本等,其庞大、多样化和可访问的特性,可以增强大语言模型的语言建模和泛化能力。
  • 专业语料:鉴于大语言模型出色的泛化能力,也有研究将预训练语料库扩展到更专业的数据集,如多语言数据、科学数据和代码,赋予大语言模型特定的任务解决能力。

以 BERT 为代表的预训练语言模型需要根据任务数据进行微调(Fine-tuning),这种范式可以应用于参数量在几百万到几亿规模的预训练模型。但是针对数十亿甚至是数百亿规模的大模型,针对每个任务都进行微调的计算开销和时间成本几乎都是不可接受的。

因此,指令微调(Instruction Finetuning) 方法被创造出来,将大量各类型任务,统一为生成式自然语言理解框架,并构造训练语料进行微调。

通过指令微调,大模型学习到了如何响应人类指令,可以根据指令直接能够生成合理的答案。由于指令微调阶段训练了非常多的任务,大模型任务能力可以泛化到之前没有见过的任务上,这使得模型初步具备了回答人们提出的任何指令的可能。这种能力对于大模型来说至关重要,使其可以在开放领域有很好的表现。

尽管指令微调后的模型,在开放领域任务能力表现优异,但是模型输出的结果通常与人类的回答相差很大,简而言之就是“没有人性”。因此需要进一步优化模型,使得模型的输出与人类的习惯对齐。其中最具有代表性且已取得巨大成功的方法,就是OpenAI开发的、塑造了ChatGPT的人类反馈强化学习(Reinforcement Learning from Human Feedback,RLHF)。

训练方法:

  • 无监督预训练 Unsupervised Pre-training
  • 监督微调(Supervised Fine-Tuning,SFT)
  • 基于人类反馈强化学习(RLHF)
  • 奖励 / 偏好建模 (Reward / preference modeling,RM)

2. LLM省内存方法

  • fp16 / int8 (量化)
  • LoRA:Low-Rank Adaptation of Large Language Models 处理大模型微调。 LoRA 建议冻结预训练模型的权重并在每个 Transformer 块中注入可训练层(_秩-分解矩阵_)。因为不需要为大多数模型权重计算梯度,所以大大减少了需要训练参数的数量并且降低了 GPU 的内存要求。
  • Prefix Tuning
  • P-Tuning
  • Prompt Tuning
  • Textual Inversion:通过几张概念图片,通过学习文图生成模型Text Embedding空间中的伪词(pseudo-word)来表示这些概念。然后把这些伪词组合成自然语言的句子,指导个性化生成。即图片prompt
  • Gradient checkpointing
  • Torch FSDP
  • CPU offloading

开源微调库:

  • PEFT: State-of-the-art Parameter-Efficient Fine-Tuning 大模型参数高效微调,支持LoRA,Prefix Tuning,Prompt tuning等
2.1 LoRA 低秩自适应微调

LoRA主要用于处理大模型微调的问题。目前超过数十亿以上参数的具有强能力的大模型(例如 GPT-3)通常在为了适应其下游任务的微调中会呈现出巨大开销。 LoRA 建议冻结预训练模型的权重并在每个 Transformer 块中注入可训练层(_秩-分解矩阵_)。因为不需要为大多数模型权重计算梯度,所以大大减少了需要训练参数的数量并且降低了 GPU 的内存要求。研究人员发现,通过聚焦大模型的 Transformer 注意力块,使用 LoRA 进行的微调质量与全模型微调相当,同时速度更快且需要更少的计算。

重新参数化,只训练A和B

LoRA优势:

  • 预训练的模型可以共享,并用于为不同的任务构建许多小型LoRA模块。通过替换图1中的矩阵A和B,可以冻结共享模型参数并高效地切换任务,从而显著降低存储需求和任务切换开销。
  • 当使用自适应优化器时,LoRA使训练更有效,并将硬件进入障碍降低3倍,因为不需要计算梯度或维护大多数参数的优化器状态。相反,只优化注入的小得多的低秩矩阵
  • 简单的线性设计允许在部署时将可训练矩阵与冻结权重合并,与完全微调的模型相比,通过构造,不会引入推理延迟。

例如,假设ΔW是权重矩阵 W∈R^A×B 的权重更新。然后,可以将权重更新矩阵分解为两个较小的矩阵: ΔW=WA·WB ,其中 WA∈R^A×r ,并且 WB∈R^r×B 。在这里,保留原始重量W冻结并且仅训练新矩阵 WA 和 WB 。

重新参数化时,对 A 使用随机高斯初始化,对 B 使用零初始化,因此 ΔW=BA 在训练开始时为零。然后,用 α/r 缩放 ΔWx ,其中α是r中的常数。当使用Adam进行优化时,如果适当缩放初始化,则调整α与调整学习率大致相同。

2.2 模型量化

在这里插入图片描述

FP32压缩FP16

2.3 Textual Inversion

Text embedding

  • 输入字符串中的每个词(word)或子词(sub-word)都被转换为一个标记(Token),它是预定义词典中的索引(参见BPE算法);
  • 然后将每个Token对应到一个唯一的嵌入向量(embedding),这些嵌入向量通常作为文本编码器的一部分进行学习;
  • 选择这个嵌入向量空间作为反演(Inversion)的目标,指定一个占位符字符串 S* 来表示希望学习的新概念;
  • 用新学习的嵌入向量 v* 替换与新概念关联的嵌入向量,即将概念注入(inject)到词汇表中;
  • 跟处理其它单词一样,用该概念字符组成新句子,例如: A photo of S*, A painting in the style of S*.

Text inversion 最小化图像重建损失(LDM)进行优化

【AIGC第三篇】Textual Inversion:基于Prompt tuning方式的图像生成技术

LLM+知识图谱(KGs)

类别划分

  • KGs-enhanced LLM : 在KG增强的LLM中,KG不仅可以被纳入LLM的预训练和推理阶段,以提供外部知识,还可以用于分析LLM和提供可解释性。
  • LLM-augmented KGs : 在LLM增强的KG中,LLM已被用于各种与KG相关的任务,例如,KG embedding ,KG completion,KG construction ,KG-to-text generation and KGQA ,以提高性能并促进KG的应用。
  • Synergized LLMs + KGs : 在协同LLM+KG中,研究人员将LLM和KG的优点结合起来,共同提高知识表示和推理的性能。​​​​​​​

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

标签:KG,语言,训练,模型,微调,学习,LLM
From: https://blog.csdn.net/xiangxueerfei/article/details/141359815

相关文章

  • 小白也能看懂,大模型的6个评估指标!
    近年来,随着深度学习技术的飞速发展,大型神经网络模型如BERT、GPT-3等已经成为自然语言处理、计算机视觉、语音识别等领域的重要工具。这些模型之所以称为"大型",是因为它们通常包含数十亿甚至数千亿的参数,比以往的模型要庞大得多。然而,模型的规模庞大并不总是意味着性能更好,因......
  • AquaCrop模型数据制备、优化方法、敏感性与气候变化影响分析及源码解析
    AquaCrop是由世界粮食及农业组织(FAO)开发的一个先进模型,旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理,特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop不仅包含一个全面的数据库,还提供了用户友好的接口,使得......
  • 颜色模型及其转换
    学OpenCV================================================颜色模型之间可以互相转换 ================================================示例代码1#include<iostream>23#include<opencv2/opencv.hpp>4#include<opencv2/core/utils/logger.hpp>5......
  • 直击网络安全战场:DDoS攻击数据分析与机器学习模型的终极指南
    你还在为数据枯燥而发愁?不如让我们用机器学习来和DDoS攻击“打个招呼”!欢迎来到一场别开生面的数据科学冒险!你是否曾经面对一堆毫无生气的数据表格,感到头疼不已?是否在盯着屏幕苦苦寻找攻击模式时,觉得自己仿佛变成了一个被困在数据迷宫里的“网络侦探”?别担心!今天,我们要带你进......
  • 智能小程序 Ray 开发面板 SDK —— 多语言 API 汇总
    APIAPI示例中的多语言数据源均来自于下方多语言对象exportdefault{en:{dsc_edit:'Edit',//Basicmultilanguagewithdsc_startandnameitsemanticallydsc_hour:'Hour',dsc_minute:'Minute',dsc_countdown_on:'Turnon......
  • 【Redis】Redis线程与IO模型—(三)
    Redis线程与IO模型一、Redis单线程二、多路复用机制三、Redis6.0多线程特性四、IO多线程配置一、Redis单线程通常说Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,其他功能,比如持久化、异步删除、集群数据同步等,是由额外的线......
  • 大模型备案全网最详细流程解读(附附件+重点解读)
    文章目录一、语料安全评估二、黑盒测试三、模型安全措施评估四、性能评估五、性能评估六、安全性评估七、可解释性评估八、法律和合规性评估九、应急管理措施十、材料准备十一、【线下流程】大模型备案线下详细步骤说明十二、【线上流程】算法备案填报流程及重难......
  • 大模型备案流程最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 【C语言】基础知识详解(二) 字符串
    一、什么是字符串?在C语言中,字符串是一种特殊的字符数组,用于存储一系列字符。字符串的表示:在C语言中,字符串是由字符组成的数组,并以空字符'\0'结束。空字符用于标识字符串的结束。例如,字符串"hello"在内存中实际上是{'h','e','l','l','o','\0'}。字符串声明:可以使......
  • 新手专科准大一学习c语言的第4天之break、continue的学习
    学习brake        在昨天学习的循环里brake的作用个人明白了如何使条件达到一定值后退出提前终止循环不再按照循环表达式里的条件进行循环。        例如#include<stdio.h>intmain(){inti=1;//声明第一个变量intl=1;//声明第二个......