广东省做农业网站公司,什么自己做网站吗,网站域名注册查询,广西桂林公司目录 一、语言模型的发展
语言模型#xff08;Language Model#xff0c;LM#xff09;目标是建模自然语言的概率分布#xff0c;具体目标是构建词序列w1,w2,...,wm的概率分布#xff0c;即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量…目录 一、语言模型的发展
语言模型Language ModelLM目标是建模自然语言的概率分布具体目标是构建词序列w1,w2,...,wm的概率分布即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量十分巨大N^mm代表句子的长度N代表可能单词的数量一种简化思路是利用句子序列从左至右的生成过程来分解联合概率 也就是说将词序列w1w2...wm的生成过程看成单词的逐个生成假设第i个单词的概率取决于前i-1个单词。需要指出的是这种分解本身并未降低模型所需的参数量但是这种转换为接下来的简化提供了一种途径。
统计语言模型N-gram模型即元文法模型。根据上述假设词的概率受前面i-1个词的影响称为历史影响而估算这种概率最简单的方法是根据语料库计算词序列在语料库中出现的频次。神经语言模型Neural Network Language ModelsNNLM克服了n元语言模型的维度灾难出现了以词向量Word Embedding为代表的分布式表示的语言模型FFN, RNN, LSTM预训练语言模型Pre-trained ModelPLMELMo首先预训练双向LSTM网络Transformer基于注意力机制BERT利用掩码机制构造了基于上下文预测中间词的预训练任务
编码预训练语言模型Encoder-only Pre-trained Models如BERT模型解码预训练语言模型Decoder-only Pre-trained Models如GPT模型基于编解码架构的预训练语言模型Encoder-decoder Pre-trained ModelsSeq2Seq模型如BART模型采用的预训练方式为输入含有各种噪声的文本再由模型进行去噪重构
大语言模型Large Language ModelLLM
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 开始该模型已经在大量文本数据上进行了训练。然后使用输入是指令、输出是其应该返回的结果的数据集来对其进行微调要求它遵循这些指令。然后通常使用一种称为 RLHFreinforcement learning from human feedback人类反馈强化学习的技术进行进一步改进使系统更能够有帮助地遵循指令
1. LLM训练技术
基本流程: 预训练语料的来源大致可以分为两类通用语料和专业语料。
通用语料如网页、书籍和会话文本等其庞大、多样化和可访问的特性可以增强大语言模型的语言建模和泛化能力。专业语料鉴于大语言模型出色的泛化能力也有研究将预训练语料库扩展到更专业的数据集如多语言数据、科学数据和代码赋予大语言模型特定的任务解决能力。
以 BERT 为代表的预训练语言模型需要根据任务数据进行微调Fine-tuning这种范式可以应用于参数量在几百万到几亿规模的预训练模型。但是针对数十亿甚至是数百亿规模的大模型针对每个任务都进行微调的计算开销和时间成本几乎都是不可接受的。
因此指令微调Instruction Finetuning方法被创造出来将大量各类型任务统一为生成式自然语言理解框架并构造训练语料进行微调。
通过指令微调大模型学习到了如何响应人类指令可以根据指令直接能够生成合理的答案。由于指令微调阶段训练了非常多的任务大模型任务能力可以泛化到之前没有见过的任务上这使得模型初步具备了回答人们提出的任何指令的可能。这种能力对于大模型来说至关重要使其可以在开放领域有很好的表现。
尽管指令微调后的模型在开放领域任务能力表现优异但是模型输出的结果通常与人类的回答相差很大简而言之就是“没有人性”。因此需要进一步优化模型使得模型的输出与人类的习惯对齐。其中最具有代表性且已取得巨大成功的方法就是OpenAI开发的、塑造了ChatGPT的人类反馈强化学习Reinforcement Learning from Human FeedbackRLHF。 无监督预训练 Unsupervised Pre-training监督微调Supervised Fine-TuningSFT 2. LLM省内存方法
fp16int8LoRALow-Rank Adaptation of Large Language Models 处理大模型微调。 LoRA 建议冻结预训练模型的权重并在每个 Transformer 块中注入可训练层_秩-分解矩阵_。因为不需要为大多数模型权重计算梯度所以大大减少了需要训练参数的数量并且降低了 GPU 的内存要求。Textual Inversion通过几张概念图片通过学习文图生成模型Text Embedding空间中的伪词pseudo-word来表示这些概念。然后把这些伪词组合成自然语言的句子指导个性化生成。即图片promptGradient checkpointingTorch FSDPCPU offloading 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 的权重更新。然后可以将权重更新矩阵分解为两个较小的矩阵 ΔWWA·WB 其中 WA∈R^A×r 并且 WB∈R^r×B 。在这里保留原始重量W冻结并且仅训练新矩阵 WA 和 WB 。
重新参数化时对 A 使用随机高斯初始化对 B 使用零初始化因此 ΔWBA 在训练开始时为零。然后用 α/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进行优化 训练垂直领域问题知识文档的对话式大语言模型的几种方式按照资源由小到大的排序方式
p-tuning v2Deep Prompt Encoding和Multi-task Learning。Prefix-tuning的拓展版本lorafinetune 大语言模型项目
ChatGLM6B开源具有问答、多轮对话和代码生成功能的中英双语模型
SwissArmyTransformer:一个Transformer统一编程框架ChatGLM-6B已经在SAT中进行实现并可以进行P-tuning微调。ChatGLM-MNN:一个基于 MNN 的 ChatGLM-6B C 推理实现支持根据显存大小自动分配计算任务给 GPU 和 CPUJittorLLMs:最低3G显存或者没有显卡都可运行 ChatGLM-6B FP16 支持Linux、windows、Mac部署
Colossal AISFT监督微调 - 奖励模型(RM)训练 - 强化学习(RLHF)LLaMA stanford-alpacaalpaca-lora使用LoRA技术调用哪个PEFT库实现低价高效微调Dolly使用Alpaca数据集在GPT-J-6B上微调PaLM-rlhf-pytorch基于谷歌大模型PaLM架构Vicuna对LLaMA微调LMFlow低成本训练开放了网页体验ChatRWKV复旦MOSSGPTrillionKoalaStackLLaMA Chinese-LangChain 拆解 讲解 - 知乎 大语言模型数据集Dataset
RefGPT基于RefGPT生成大量真实和定制的对话数据集中文Alpaca-CoT统一了丰富的IFT数据如CoT数据目前仍不断扩充、多种训练效率方法如lorap-tuning以及多种LLMs三个层面上的接口打造方便研究人员上手的LLM-IFT研究平台 大语言模型评估 Evaluation
FlagEval 天秤大模型评测体系及开放平台构建了“能力-任务-指标”三维评测框架细粒度刻画基础模型的认知能力边界可视化呈现评测结果C-Eval: 构造中文大模型的知识评估基准AGIEval微软发布的一项新型基准测试这项基准选取20种面向普通人类考生的官方、公开、高标准往常和资格考试 应用集成LLM
koishi创建跨平台、可扩展、高性能的机器人 GitHub上资料Repository
FindTheChatGPTerChatGPT的开源平替们包括文本大模型、多模态大模型LLM_reviewer开源、规模较小、可私有化部署、训练成本较低的‘小羊驼类’模型Awesome-AITools整理了AI相关的实用工具、评测和相关文章DecryptPromptPromptLLM论文开源数据模型Awesome Pretrained Chinese NLP Models高质量中文预训练模型Awesome-LLM References
现有开源中文LLM整理 - 知乎自然语言处理前沿——大语言模型的前世今生一些LLMs的省内存方法 - 知乎GitHub - km1994/LLMsNineStoryDemonTower: 【LLMs九层妖塔】分享一下打怪(ChatGLM、Chinese-LLaMA-Alpaca、MiniGPT-4、FastChat、LLaMA、gpt4all等)实战与经验GitHub - datawhalechina/hugging-llm: HuggingLLM, Hugging Future.适合新手入门科普sss http://fleet.sv1.k9s.run:2271/