php网站环境配置,网站开发搭建合同范本,微网站开发需要多少钱,网站开发课程学习大语言模型#xff08;Large Language Model#xff0c;LLM#xff09;是一类基于Transformer架构的深度学习模型#xff0c;主要用于处理与自然语言相关的各种任务。简单来说#xff0c;当用户输入文本时#xff0c;模型会生成相应的回复或结果。它能够完成许多任务Large Language ModelLLM是一类基于Transformer架构的深度学习模型主要用于处理与自然语言相关的各种任务。简单来说当用户输入文本时模型会生成相应的回复或结果。它能够完成许多任务如文本续写、分类、摘要、改写、翻译等。常见的LLM包括GPT、LLaMA等。本文将重点介绍LLM的基本原理和应用。详细内容可参考modelscope-classroom进行深入学习。 文章目录 1 LLM基础知识1.1 LLM介绍1.2 LLM训练范式1.3 Transformer结构解析1.4 LLM扩展应用 2 LLM训练概览2.1 LLM推理过程2.2 LLM应用构建2.2.1 提示词工程2.2.2 模型训练与微调2.2.3 RAG 2.3 LLM评估2.3.1 LLM自动评估2.3.2 LLM人工评估2.3.3 LLM评估工具 2.4 LLM量化、部署、优化2.4.1 模型量化2.4.2 模型推理部署2.4.3 模型优化技术 3 总结4 参考 1 LLM基础知识
1.1 LLM介绍
LLM发展历程
2022年11月30日OpenAI推出的ChatGPT在LLM技术领域取得了创新突破迅速引起了全球业界的广泛关注并在短短两个月内成功吸引了超过一亿用户。作为一款基于LLM的应用ChatGPT以其强大的文本生成、对话交互和信息提取能力成为人工智能领域的一个重要里程碑推动了人机交互的边界。然而由于OpenAI未公开其底层技术并封闭源代码这引发了全球AI开发者对开源技术的强烈需求。 随着LLM技术的飞速发展Meta推出的LLaMA模型、Mistral AI发布的Mistral模型以及BigScience团队推出的BLOOM模型等多个开源LLM相继问世。这些模型在性能上已接近甚至媲美商业化LLM进一步推动了LLM技术的广泛应用与创新。以下是几款代表性LLM系列的发展时间线展现了这一领域的迅猛进步 到2024年底在众多LLM中闭源模型中表现最为出色的是GPT-4而在开源模型中LLama 3.3和LLama 3.2最为推荐。尽管LLama 3.2在各类基准测试中优于GPT-4但在实际应用中GPT-4的表现仍然更为卓越 LLM的“大”体现在哪些方面
庞大的参数量LLM的“大”首先体现在参数数量上。例如OpenAI的GPT-3有1750亿个参数GPT-4更为庞大。参数越多模型的语言理解和任务处理能力越强。海量的训练数据LLM依赖海量数据进行训练包括书籍、新闻、网页内容和社交媒体等。这些多样化的数据帮助模型掌握丰富的语言模式具备强大的理解和生成能力。广泛的任务适应性模型在多种数据上训练赋予其从自然语言理解到翻译、摘要、情感分析等多任务的处理能力使其具备显著的通用性。巨大的计算资源需求LLM的训练与推理依赖大量高性能计算资源如GPU和专用加速器。随着模型规模的增加计算需求呈指数级增长。
LLM为什么要基于Transformer架构
在Transformer架构出现之前自然语言模型主要依赖循环神经网络RNN但RNN的顺序处理方式限制了计算的并行性且在处理长序列时信息容易丢失或遗忘。
Transformer通过引入自注意力机制和位置编码克服了传统模型在捕捉长距离依赖和并行计算方面的局限。自注意力机制允许模型同时关注输入序列中的所有词捕捉更远距离的依赖关系避免了RNN及其变体LSTM模型中存在的顺序处理瓶颈。因此Transformer成为大规模预训练模型的基础架构并在多个任务中展现了出色的性能。
1.2 LLM训练范式
LLM训练阶段
LLM的训练可分为以下四个关键阶段 预训练Unsupervised Pretraining构建基座模型。 数据来源广泛采集的书籍、新闻、科研论文、社交媒体等多领域文本数据作为模型训练的素材。学习目标利用无监督学习技术使模型能够根据上下文预测下一个词。训练过程不依赖标注数据通过不断优化模型预测与实际结果之间的差异随着数据量的增加逐步提升模型的性能。 有监督微调Supervised Fine-TuningSFT打造对话模型。 数据来源采用人工标注的对话数据以提高模型在对话任务中的表现。学习目标通过有针对性的训练增强模型与用户互动的能力。训练过程使用少量但高质量的对话数据进行微调显著提高模型的对话能力。 奖励模型训练Reward Model Training培养能够评估回答的模型。 数据来源生成多个候选答案并依据人工评分和排序进行评估。学习目标培养奖励模型利用评分数据来评估和优化模型生成的答案质量。训练过程奖励模型根据人工评分提供反馈引导模型生成更符合人类预期的答案这个过程也常被称为人类对齐训练alignment。 强化学习训练Reinforcement Learning with Human FeedbackRLHF进一步提升对话模型的回答质量。 数据来源利用第三步训练好的奖励模型通过强化学习进一步优化第二步训练好的对话模型。学习目标依据奖励模型的反馈调整生成策略提高模型回答的质量。训练过程模型根据奖励评分调整其策略并结合用户反馈进一步改进生成答案的质量。
这一过程可以用Llama 2论文中的示例图片更为直观地展示 基座模型和对话模型
在LLM的训练过程中主要有两种模型类型基座模型Base模型和对话模型Chat模型。两者的工作方式相似都是通过预测文本的后续内容来进行训练。Base模型经过了预训练可能进行了部分通用指令的微调而Chat模型则在Base模型的基础上进一步通过大量通用数据的微调和人类反馈的训练来优化性能。虽然“指令模型”Instruction Model这一术语有时也被提及但它与Chat模型本质上是相同的都是通过指令微调和强化学习对Base模型进行优化以提高其理解和生成能力。 开源LLM的研究机构通常会同时发布Base模型和Chat模型以满足不同的需求。例如Llama 2Base模型和Llama 2-ChatChat模型。Base模型主要侧重于泛化能力通常仅经过预训练具备基本的文本补全功能但缺乏对话上下文的理解因此在与人类对话时回答往往显得较为生硬、感觉在背书。而Chat模型则在Base模型的基础上进行优化和调整增强了对话能力和自然语言理解生成的回答更加自然。两者具体对比如下
维度Base模型Chat模型训练方式预训练预训练监督微调SFT强化学习RLHF数据来源大量未标注文本数据标注好的对话数据集、人类对齐模型特性庞大的参数规模具备广泛的语言特征强大的对话生成和理解能力能够生成连贯且有意义的回复应用场景适用于多种NLP任务如文本生成、语义理解、翻译等专门用于构建聊天机器人、虚拟助理等对话系统优势泛化能力强适用于多种任务对话能力强能够生成符合人类偏好的回复不足可能需要进一步的微调才能适应特定任务相对于Base模型训练过程更复杂
1.3 Transformer结构解析
LLM通过预测下一个词生成高质量文本这得益于强大的Transformer架构。Transformer的基本结构包括输入嵌入、编码器、解码器和输出层。编码器和解码器通过多层堆叠的自注意力机制和前馈神经网络相互作用进而实现复杂的序列处理任务。自注意力机制使得Transformer能够在全局范围内捕捉词语之间的依赖关系这是其处理长序列和大量数据的关键优势。 Transformer编码器
Transformer的编码器部分主要包括以下几个步骤
输入token化将输入文本拆分为可以被计算机处理的token每个token对应词汇表中的一个索引。嵌入层将这些token转换为向量表示捕捉词汇之间的语法和语义关系。位置编码给嵌入向量添加位置信息帮助模型理解词在句子中的顺序。自注意力机制这是编码器的核心通过计算每个词与其他词之间的相关性确定注意力权重捕捉输入序列中的重要信息。多头自注意力使用多个“头”来分别关注输入数据的不同方面增强模型的表达能力。前馈神经网络对多头自注意力的输出进行处理帮助模型识别更复杂的模式。堆叠编码器将多个编码器层叠加在一起让模型能够在不同层次上理解输入数据从而逐步提炼信息。
Transformer解码器
Transformer解码器的工作流程可以简化为以下几个步骤
输入处理解码器接收上一个时间步的输出和编码器的输出。初始步骤时输入通常是一个特殊的起始标记如 sos或先前生成的结果。嵌入和位置编码解码器将每个输入词转化为向量并加入位置编码使模型知道词在序列中的位置。自注意力机制带掩码解码器的自注意力机制只关注当前词之前的词通过掩码确保模型生成下一个词时只依赖已生成的部分从而实现自回归生成。编码器-解码器注意力解码器通过这个机制关注编码器的输出帮助理解输入序列从而生成更合适的输出。前馈神经网络和解码器堆叠解码器使用前馈神经网络对注意力输出进行处理并通过多层堆叠提升对输入输出关系的理解生成更复杂的结果。线性层和Softmax解码器将输出转化为词汇表大小的向量通过Softmax层生成词的概率分布。选择输出模型选择概率最高的词作为下一个输出直到生成结束标记如 eos完成整个序列的生成。
解码器中的多头自注意力机制与编码器类似但采用遮蔽处理以防模型关注未来词语。这样模型在预测位置 i i i的输出时仅依赖于位置 i i i之前的已知信息。如下图所示解码器逐步生成每个单词 LLM中的Transformer
Transformer架构是一种非常灵活且强大的神经网络结构已经被广泛应用于各种自然语言处理任务。根据不同的任务需求Transformer的架构可以分为几种不同的类型每种类型都有其特定的优点和用途。以下是这几种主要结构的特点 仅编码器模型自编码器模型 主要用途 仅编码器模型通常用于从输入数据中提取有用的特征信息进行理解或表示学习。这些模型不需要生成输出而是侧重于学习输入的上下文和表示。工作方式 编码器的作用是将输入的序列通过多层的自注意力机制和前馈神经网络处理最终将其转化为一个固定长度的向量或一组向量。应用 这类模型在需要提取深度特征或做文本分类、情感分析等任务时非常有效。它们不涉及生成过程而是通过理解和表示输入数据来完成任务。代表模型 BERT双向编码器表示模型 BERT是一种双向编码器它通过“遮蔽”输入中的某些单词来训练模型让模型预测这些被遮蔽的单词从而获得输入文本的深层次理解。BERT的预训练后可以通过微调应用于多种任务如文本分类、命名实体识别NER、问答等。 仅解码器模型自回归模型 主要用途 解码器模型通常用于生成任务尤其是序列生成任务如文本生成、对话生成等。这类模型的目标是从给定的输入或上下文中生成连贯的输出。工作方式 解码器采用自回归的方式生成序列它会基于已生成的词或标记不断预测下一个词直到生成完整的输出。应用 解码器模型广泛应用于需要生成连续文本的任务比如机器翻译、文本生成、代码生成等。代表模型 GPT基于Transformer的解码器结构采用自回归方式生成文本。在训练过程中它通过大量的文本数据学习语言模式并通过不断预测下一个词生成连贯的文章。GPT系列如GPT-3、GPT-4已经成为文本生成任务中的重要模型。 编码器-解码器模型序列到序列模型 主要用途 编码器-解码器模型适用于需要将一个输入序列映射到一个输出序列的任务例如机器翻译、文本摘要、图像描述等。这种结构通常包含两个部分编码器负责理解输入序列解码器负责生成输出序列。工作方式 编码器首先处理输入序列将其转化为一个中间的表示通常是一个上下文向量然后解码器基于该表示生成输出序列。解码器可以使用自回归方式来逐步生成输出。应用 这类模型适用于任何需要将一个序列转换为另一个序列的任务常见的应用场景包括机器翻译、摘要生成、对话生成等。代表模型 T5将所有任务统一转换为文本到文本的任务即输入和输出都是文本形式。它结合了编码器和解码器的结构可以用于机器翻译、文本摘要、问答等多种任务。BART一种结合了BERT和GPT优点的模型使用编码器-解码器架构既能够进行双向的理解又能进行自回归的生成。它特别适用于文本生成、序列到序列的转换等任务。 然而随着技术发展Transformer架构不断优化尤其是LLMGPT系列取得突破后解码器模型变得更加流行而编码器-解码器模型逐渐不再主流原因如下
简洁高效解码器模型结构简单训练和推理时更加高效。更佳上下文理解解码器专注于生成任务能更好地理解上下文生成连贯、符合语境的文本。
1.4 LLM扩展应用
为了应对日益复杂的任务需求一些新型的大模型应运而生它们对单一LLM的能力进行了扩展和补充。这些模型主要包括多模态大语言模型、LLM智能体Agent、垂直领域LLM等。以下是对这些模型的简要介绍 多模态大语言模型 (Multimodal Large Language Models) 多模态大语言模型通过融合文本、图像、视频和音频等多种信息能够同时处理不同类型的输入生成更丰富的语义理解。与传统模型不同它在多元数据训练下显著提升了对各类数据的理解能力展现出更强的任务适应性和通用性。例如在图像描述任务中模型结合图像和文本生成精准自然的语言在音频处理任务中通过融合音频和文本信息提高语音识别和语义理解的准确性。 LLM智能体Agent LLM智能体Agent是基于LLM的人工智能系统它能够理解、生成和处理语言以执行各种任务。与传统的程序或工具不同智能体不仅能够提供信息和答案还能根据上下文进行自主推理、决策和行动。通过与用户的互动它可以处理复杂的问题提供个性化建议并完成诸如对话、文本生成、翻译、问答等多种任务。智能体的核心是成熟的LLM它通过大量的语料库学习语言的结构和含义不断优化其理解和生成能力。 垂直领域LLM 垂直领域LLM是指专门针对某一特定行业或应用场景进行训练和优化的LLM。这类模型与通用LLM不同它们在处理特定领域的问题时表现出更强的专业性和精确性。垂直领域LLM通常会利用行业专有的数据和知识进行训练从而提高在该领域内的表现。 例如在代码生成上它能根据需求自动生成高质量代码减少开发时间与错误在医学领域它协助医生分析病历、解读检查结果并提出诊断与治疗建议提升诊疗效率在法律咨询中模型帮助解析法律条文、提供法律意见让用户更清晰地理解法律问题和风险在金融分析中它能分析市场趋势、预测股市走向为投资者提供数据支持在客户服务方面它能自动处理咨询、快速回应问题提高服务质量在技术支持中它能识别技术问题并提供解决方案保障用户体验。
2 LLM训练概览
2.1 LLM推理过程
LLM推理是指在训练完成后利用训练好的模型对新数据进行预测或生成的过程。通过LLM解决实际问题如回答问题、生成文案等便是在进行模型推理。可以认为模型推理是LLM应用的核心环节。 在推理阶段LLM根据输入的提示prompt以及先前生成的内容逐步预测下一个词或标记token。这一过程持续进行直到生成完整的句子或多个句子。因而这类模型被称为自回归模型autoregressive Model。 在推理阶段单个词生成的过程如下所示
提示Prompt作为输入文本用来引导模型生成特定类型的回应或输出。首先分词器会将提示文本拆分成一系列的标记tokens。根据模型的词汇表一些单词可能会被拆成多个标记每个标记都会对应一个唯一的数字。接下来这些数字会被数字转化成固定长度的向量嵌入embedding。所有的向量合起来形成一个embedding矩阵作为模型的输入。Embedding矩阵首先通过Transformer层进行处理Transformer由多个堆叠的子层组成每一层的输出作为下一层的输入。每个子层包含自注意力机制能够在处理当前输入时综合考虑序列中其他位置的信息从而捕捉全局依赖关系。与此同时经过每一层处理后输入矩阵的维度保持不变。在Transformer层处理后模型生成logits这些logits表示每个可能token的预测分数。然后通过softmax函数将logits 转换为概率分布并使用多种采样技术如贪心解码、top-k采样或top-p采样等之一从概率分布中选择下一个token。上一步所选的token会被附加到当前生成的token序列中。然后新的token序列作作为输入模型会再次执行步骤1至步骤3的过程生成后续token。生成后续token。此过程会持续进行直到模型生成特殊的结束标记EOS或达到预设的token数量。
2.2 LLM应用构建
构建LLM应用时选择合适的方法整合专有和领域数据是关键一步常用的方式包括提示词工程Prompt Engineering、模型训练与微调、以及检索增强生成RAGRetrieval-Augmented Generation等。
2.2.1 提示词工程
提示词工程通是用户和LLM互动中最常用的方式。提示词工程通过设计和优化输入给模型的提示词如问题或指令帮助模型生成更加准确、符合需求的回答。相当于在告诉模型应该关注哪些信息或如何理解问题。可以把它理解为学会提出正确的问题以获得最佳的答案。不过能从中获得的帮助是有限的因为模型的回答只能基于它已经学到的信息。 提示词工程的优缺点以及适用环境如下所示
优点
易用操作简单无需专业技术任何用户都能轻松上手。成本低使用预训练模型计算开销小比微调方式更具成本效益。灵活可以快速调整提示内容探索不同的结果无需重新训练模型。
缺点
一致性差模型的响应质量可能因提示的措辞不同而产生较大的差异。定制化受限回答的个性化程度取决于提示的设计和技巧定制能力有限。知识局限输出依赖于模型训练时获得的知识无法处理过于专业或最新的信息。
适用环境
模型能力视情况而定提示词工程的效果依赖于所用模型的能力。在使用前用户应评估模型是否具备处理业务问题的基础能力。若模型基础能力较强提示词工程可作为快速、高效的解决方案。适合通用任务和简单场景与其他深度学习技术相比提示词工程的开发门槛较低适用于常识问答、文本生成、情感分析、角色扮演等通用任务和简单应用。
对于提示词工程的应用Zero-Shot Learning零样本学习和Few-Shot Learning少样本学习是两种常见的提示词策略它们在帮助用户获取所需内容时各有特点。以下是对这两种学习模式及其应用的进一步扩展说明
Zero-Shot Learning
在Zero-Shot Learning模式下用户提出任务时并不提供任何示例或样本模型依赖于其预先学习的知识和语言能力直接生成答案。这样的模式适用于当用户需要一种快速、直接的生成内容方式且不想提供或不需要提供额外的训练数据或背景信息。
举例来说如果用户想了解宠物狗的基本情况可以在LLM应用中通过一个简洁、明确的提示词来引导模型生成所需的内容
请写一段介绍宠物狗的文字描述一下它的外观、性格特点以及和人类相处的情况。此时模型基于其在大量文本数据中学习到的语言规律和知识能够从各类资料中提取信息生成一段介绍宠物狗的文字涵盖它的外观、性格以及与人类的互动方式。例如模型可能会生成如下内容
宠物狗通常体型适中拥有毛茸茸的皮毛种类繁多常见的有短毛、长毛、卷毛等。它们的耳朵形状、眼睛颜色和尾巴的长短各不相同。性格上狗狗一般忠诚、活泼喜爱与人类互动是非常好的家庭伴侣。它们常常热情迎接主人喜欢与家人一起散步、玩耍。狗狗特别喜欢获得主人的关注和奖励在日常生活中会表现出对主人的深厚感情。这种生成方式快速高效适合快速获取一些普遍性信息。
Few-Shot Learning
与Zero-Shot Learning不同Few-Shot Learning是通过提供少量示例或样本来帮助模型更好地理解任务要求。通过这些示例模型能够更准确地理解输入和输出之间的关系从而提高生成内容的质量。此方式在某些情况下会更加精确尤其是当用户有特定需求时示例可以帮助引导模型产生更符合预期的回答。
例如以下是一个典型的Few-Shot Learning的提示词示例
以下是几个描述动物的示例请你按照这样的格式写一段介绍宠物狗的文字描述它的外观、性格特点以及和人类相处的情况。示例 1动物猫咪外观猫咪体型较小毛茸茸的身体眼睛大而明亮耳朵尖尖尾巴长而灵活走路时轻盈优雅。性格特点猫咪性格独立喜欢自己待着但也会对主人撒娇开心时会发出呼噜声。和人类相处它喜欢依偎在主人身边陪伴主人休息或看电视偶尔会捣乱但总是给家庭带来温馨感。示例 2动物兔子外观兔子身体小巧耳朵长而竖立眼睛圆润嘴巴三瓣后腿强壮蹦跳时非常可爱。性格特点兔子性格温顺胆小喜欢啃食干草和胡萝卜平时安静乖巧。和人类相处兔子是孩子们的好伙伴可以被抱在怀里抚摸吃东西时很治愈。请写一段介绍宠物狗的文字在这个示例中通过提供两个不同动物的描述LLM能够识别出描述结构和内容的相似性从而在生成宠物狗的描述时保持一致的格式和逻辑结构。在LLM应用中使用该提示词生成的内容可能是
动物宠物狗
外观宠物狗体型从小巧到中等大小不等毛发种类繁多有短毛、长毛或卷毛。它们的眼睛明亮耳朵多为立耳或垂耳尾巴通常是卷曲或直的走动时充满活力。
性格特点宠物狗通常友好、忠诚喜欢与人类互动性格开朗适合做家庭宠物。它们非常聪明能够学会一些基本的指令喜欢参与户外活动。
和人类相处狗狗是人类的忠实伙伴喜欢陪伴主人无论是散步、玩耍还是安静地待在主人身边都会表现出对主人的深厚情感。狗狗还会通过摇尾巴、撒娇等方式表达情感是非常合适的家庭宠物。2.2.2 模型训练与微调
LLM的训练通过海量数据学习语言规律和知识而微调则是在特定任务或领域上对已经训练好的模型进行优化以便更好地满足具体需求。训练LLM通常需要巨大的显存和长时间的训练周期受限于成本。微调常常通过在已有的LLM模型上附加额外结构、冻结原模型的参数仅训练新结构从而降低计算开销。在推理阶段额外结构可以与原模型合并但并非所有结构都支持合并。目前LoRA低秩适配是最流行的微调方法它具有简单的结构和较低的训练成本并在部分任务上能够接近全量微调的效果。
微调使模型能够学习新知识或调整生成结果。通过向已训练好的LLM提供额外数据微调会改变模型的权重从而更好地控制生成内容。与全量训练相比微调通常是一个相对轻量的过程且往往只需少量数据便能在特定任务上显著提升性能。然而微调也可能带来意想不到的副作用甚至可能削弱模型的通用能力因此需要谨慎评估其效果。
对于大多数公司来说微调模型是一种更加经济、高效和灵活的选择尤其是在LLM已经预训练的情况下。公司无需承担从零开始训练模型的高昂成本和技术难题只需关注特定领域的定制化需求。 下面是微调的优缺点以及适用场景的总结
优点
高定制化微调能根据特定任务调整模型提升在特定领域或任务中的表现如金融、法律、医学等领域的专业应用。一致性高微调能减少因提示词不同导致的输出差异使模型在特定任务中的表现更加稳定和一致。长效性与可扩展性微调后的模型能在当前任务中表现更好且可以通过进一步微调适应新任务具有较强的长期适应性。应对复杂场景微调能处理比提示词工程更复杂的场景尤其是需要高精度和深度的任务如技术文档生成、编程辅助等。
缺点
数据质量要求高微调通常需要大量特定领域的高质量标注数据这增加了数据准备的成本。计算资源需求高微调涉及重新训练部分模型参数计算开销较大需要较强的计算资源。开发难度较大微调需要一定的深度学习背景开发者需要理解如何设计数据、调整参数和评估效果门槛较高。过拟合风险如果微调的数据集过于单一或有限模型可能在特定任务上过拟合导致在其他场景中表现差。
适用环境
需要高定制化的任务如医疗、法律、金融等领域微调能帮助模型精确处理专业术语和规则。拥有大量标注数据的任务当有足够标注数据时微调能有效提升模型性能。要求高度一致性的任务如自动文案生成、客户支持等微调能确保模型输出的稳定性和一致性。复杂或多任务场景在多任务学习或复杂问题求解中微调能够提升模型在不同任务中的适应性和处理能力。
除了模型训练和微调开发LLM的一个关键环节是确保模型能够理解并回答符合人类需求的问题这一过程被称为人类对齐。经过人类对齐的模型Chat模型通常能够更好地进行通用的问答任务还可以在此基础上通过少量数据进行微调以适应特定领域的应用场景。需要注意的是人类对齐的技术难度通常高于微调一般由LLM开发方负责实施。
此外如果想要获取公开的LLM数据集以进行模型微调可以参考以下开源仓库data-prep-kit和LLMDataHub。
2.2.3 RAG
检索增强生成RAG简介
检索增强生成RAG, Retrieval-Augmented Generation是一种融合LLM与外部知识库的技术。其核心理念是在LLM为用户提供答案时首先通过从知识库中检索相关信息并基于这些信息生成精确的回答类似于对信息库进行快速查询以获得最佳解答。RAG的工作流程如下
问题转化与检索当用户提出问题时RAG系统会将问题转换为向量表示并利用向量数据库进行高效检索找到与问题相关的文档或信息。信息召回系统从知识库中召回与问题相关的文档或信息确保模型能够基于最新且相关的内容生成答案。答案生成通过将检索到的信息与LLM的生成能力相结合生成最终的回答。此过程可以是直接返回检索结果也可以将召回的资料作为上下文输入LLM由模型进一步加工整理生成更为详细和精准的答案。 RAG的优缺点及适用场景总结
优点
提高准确性与覆盖面结合外部信息RAG能够生成更准确、详细的答案尤其适用于处理大量实时信息的任务如问答和文本生成。灵活性强动态检索相关文档避免依赖固定训练数据适应多领域及变化任务。生成与检索结合融合生成模型的语言能力与检索模型的知识使答案既自然流畅又准确及时。减少训练难度相比微调模型RAG通过检索系统的外部知识提升表现减少对大规模标注数据的依赖。
缺点
依赖外部数据源若检索源质量差或不准生成结果会受到影响。计算资源需求高双重过程增加计算开销尤其在实时检索时需更多资源。模型复杂度高联合训练与推理增加系统复杂性需更多调试与优化。上下文窗口限制信息量受限于上下文窗口超大规模知识无法完全纳入生成过程。
适用场景
实时更新任务如新闻生成、知识问答能够整合最新外部数据生成高质量内容。处理大量知识或冷门任务适合医学、法律等领域能检索并生成准确答案。跨领域应用支持跨学科研究与复杂决策利用多领域信息进行综合分析。增强通用LLM提升通用LLM的表现尤其在缺乏实时信息或知识库时。
2.3 LLM评估
LLM表现出卓越的泛化能力和适应性在以前未见过的任务和不同领域中展现出强大的迁移能力。然而其强大的能力也为评估带来了新的挑战。由于其输出具有高度生成性和开放性标准化指标通常不足以进行全面评估。
这是因为尽管LLM具有巨大的潜力和显著的优势但它也面临着一些关键挑战。例如LLM的评估结果往往受到提示模板的影响这可能导致评估有偏见或不一致。考虑到 LLM是在大量文本语料库上训练的它们还可能继承各种隐性偏见影响其评估的公平性和可靠性。
目前常见的评估方法主要分为两种自动评估和人工评估。其分类标准基于评估是否可以自动计算若评估标准能够自动计算则归类为自动评估否则归类为人工评估。关于LLM评估的详细指南可以查看huggingface提供评估工具evaluation-guidebook。 2.3.1 LLM自动评估
自动评估是最常见且广泛应用的评估方法之一通常利用标准化的指标和工具来衡量模型性能。与人工评估相比自动评估不依赖大量人工参与能够节省时间并减少人为主观偏差从而使评估过程更加规范化。自动评估通常从多个维度对模型进行评价包括准确率、校准性、公平性和鲁棒性等 准确率衡量模型在特定任务上正确预测的程度。准确率的定义因任务和问题的不同而有所差异通常使用多种指标进行衡量如精确匹配、F1 分数和 ROUGE 分数。 精确匹配Exact Match用于评估模型在文本生成任务中的输出是否与参考答案完全一致。在问答任务中如果模型生成的答案与人工提供的答案完全一致则精确匹配为1否则为0。F1分数综合考虑模型的精度和召回率。ROUGE分数主要用于评估文本摘要和机器翻译任务衡量生成文本与参考文本之间的重叠和匹配程度。 校准性衡量模型输出的置信度与实际预测精度之间的一致性。 期望校准误差Expected Calibration Error评估模型校准性能的常用方法。该方法通过将预测概率划分为多个区间计算每个区间内的预测误差并对这些误差加权平均得出整体的校准误差。较低的值表示模型在不同置信度水平下具有较好的校准性。选择性准确率和覆盖率的曲线下面积AUC选择性准确率表示在特定置信度阈值下模型正确预测的比例而覆盖率则是该置信度阈值下模型预测结果中有效预测的比例。通过绘制选择性准确率与覆盖率之间的关系曲线可以计算出其曲线下面积AUC。AUC值较大的模型通常表明高置信度的预测更为准确。 公平性评估模型对不同群体表现的一致性即模型在不同群体中的表现是否公平。群体差异可能涉及性别、种族、年龄等因素 人口平衡差异Demographic Parity Difference衡量模型的预测是否在不同人群之间均匀分布。如果不同群体的预测结果差异较大说明模型可能存在对某些群体的偏见。平等机会差异Equalized Odds Difference旨在确保模型在不同群体中具有相等的错误率即模型在各群体中的预测错误概率应相似。 鲁棒性评估模型在面对各种挑战性输入时的表现包括对抗性攻击、数据分布变化和噪声等因素的影响 攻击成功率Attack Success Rate用于评估LLM在面对对抗性攻击时的鲁棒性。性能下降率Performance Drop Rate评估LLM在面对不同提示词时的鲁棒性衡量模型性能在这些情况下的下降程度。 2.3.2 LLM人工评估
随着LLM能力的不断增强它们已经超越了传统的通用自然语言任务评估标准。虽然一些生成任务可以采用自动评估方法但在人类评估的情况下生成结果往往能超越标准答案因此备受青睐。
人工评估是一种通过人类参与来评估模型生成结果质量和准确性的方法。与自动评估相比人工评估更贴近实际应用场景能够提供更全面、准确的反馈。在LLM的人工评估中通常会邀请评估者如专家、研究人员或普通用户对模型生成的结果进行评价。然而即使是人工评估也可能存在较大的波动和不稳定性这可能与文化差异和个体差异有关。在实际应用中通常会综合考虑这两种评估方法并根据具体情况进行权衡。
探索LLM的人工评估方法需要特别关注多个关键因素以确保评估结果的可靠性和准确性。评估者的数量是一个至关重要的因素它与评估的代表性和统计意义密切相关。合理选择评估者数量有助于对LLM进行更细致、全面的评估从而更可靠地将评估结果推广到更广泛的场景中。
评估标准是人工评估过程中的核心内容。这些标准能够全面分析LLM在语法、语义和上下文等方面的表现从而更深入地评估生成文本的质量。常见的评估标准包括
准确性准确性是评估标准中最为关键的一项关注生成文本的正确性与精确性。该标准要求检查模型生成的信息是否与事实一致避免出现错误或不准确的内容。相关性相关性评估生成内容的适切性和重要性考察文本是否与给定的上下文或问题紧密相关确保提供的信息不仅直接相关还具有实际应用价值。流畅性流畅性评估模型生成内容的连贯性和一致性。一个流畅的文本不仅语法正确还需确保可读性和用户体验避免出现生硬的表达或突兀的语言转换。透明性透明性关注模型决策过程的清晰度与可解释性评估模型是否能够清晰地传达其思维过程使用户理解为何以及如何生成某些回答。透明的模型能够提供对其内部工作原理的深入洞察。安全性安全性是评估标准中的一个关键项关注生成文本可能带来的潜在风险或不良后果。该标准评估模型在避免生成不适当、冒犯性或有害内容方面的能力确保用户的安全并防止虚假信息的传播。人类对齐性人类对齐性评估生成内容是否符合人类的价值观、偏好和期望。该标准关注生成内容的伦理影响确保模型生成的文本符合社会规范与用户期望促进积极的用户互动。
2.3.3 LLM评估工具
随着LLM在各行各业及应用场景中的广泛应用评估流程在自然语言处理、内容生成、客户服务自动化等任务中的重要性日益凸显。与此同时随着LLM技术的不断进步涌现出一系列自动化评估工具、评估数据集和评估基准以更好地满足日益增长的实际应用需求。开源仓库Awesome-LLM和Awesome LLM Eval提供了各类LLM评测工具、基准/数据集、排行榜等内容的精选资源。
如果想了解LLM的评估情况尤其是当前开源LLM的表现可以参考Open LLM排行榜这是由Hugging Face 设立的一个专注于评测开源LLM的公开榜单。该排行榜汇集了多个模型的评测结果展示了各种模型在不同任务中的性能包括推理速度、生成质量、理解能力等多个维度。 2.4 LLM量化、部署、优化
2.4.1 模型量化
随着LLM技术的迅猛发展其模型复杂度呈现出指数级增长导致参数数量的显著增加。例如2018年发布的首个GPT模型拥有约1.1亿个参数而至2019年底GPT-2的参数量已扩展至15亿2020年底发布的GPT-3更是突破了1750亿个参数。目前GPT-4的参数量已预计突破1万亿。
这一增长伴随着一系列挑战随着模型规模的扩大内存需求急剧上升。这种日益增长的内存需求不仅限制了推理模型的训练与部署也制约了基于LLM的解决方案在实际应用中的普及。因此如何在保证模型性能的前提下缩减模型规模成为亟待解决的核心问题。量化技术作为一种有效的解决手段在尽可能保持性能的同时显著降低内存占用。
量化旨在将LLM中的权重和激活值从高精度表示转化为低精度表示即将数据从能够存储更多信息的类型转换为存储信息较少的类型。例如将32位浮点数float32转换为8位整数int8。尽管量化技术在LLM中得到广泛应用但它很早便在深度学习领域中得到应用尤其在图像处理等任务中。通过减少每个权重或激活值所需的位数量化显著减少了模型的总体大小。因此量化不仅能够减小LLM在内存中的占用还能降低存储需求并提升能效。然而在提升计算效率的同时量化技术需要在性能和精度之间寻找到合理的平衡点。
量化的基本原理是基于每个张量tensor的浮点型最大值与最小值将其映射为一个固定范围内的整数集合例如[-127, 127]。其公式可表示为 q weight round ( weight scale ) q_{\text{weight}} \text{round} \left( \frac{\text{weight}}{\text{scale}} \right) qweightround(scaleweight) 其中 q weight q_{\text{weight}} qweight 为量化后的权重 weight \text{weight} weight 为量化前的权重 scale \text{scale} scale 为缩放因子。可以看出在进行量化时通过缩放和取整操作浮点数会丢失小数部分。在后续的计算或反量化过程中由于无法完全恢复原浮点值因此会出现一定的精度损失。
量化过程可以类比于图像压缩。高分辨率图像通常需要进行压缩以加快网页加载速度。压缩通过去除部分数据或信息位减小图像文件的大小。尽管压缩会在一定程度上影响图像质量但它显著减少了文件体积同时仍能提供较为清晰的视觉效果。 根据量化发生的阶段量化方法可以分为两种一种是训练后量化Post-Training QuantizationPTQ也称为离线量化它在模型训练完成后对参数进行量化不修改训练过程。在推理阶段模型参数的动态范围将被重新计算另一种是训练感知量化Quantization-Aware TrainingQAT也称为在线量化它通过修改训练过程模拟量化对模型的影响从而增强模型对量化误差的鲁棒性并提高最终的准确性。在QAT过程中训练的中间状态同时保存量化后的权重和原始未量化的权重两者存储在内存中推理时使用量化版本的模型而在反向传播阶段则使用未量化的权重进行更新。QAT相较PTQ更加复杂且训练时间较长但通常能够带来更高的准确性。
更多关于LLM量化的详细介绍可参考Quantization Overview。
2.4.2 模型推理部署
LLM推理
LLM的推理部署有多种方式
直接使用PyTorch代码 对于熟悉PyTorch的用户来说可以直接利用其提供的接口进行推理。使用专用框架 VLLM: 专为高效处理LLM而设计。XInference: 提供便捷的部署流程可以快速将模型部署到不同的硬件平台。FastChat: 专注于对话模型的推理和优化。 使用C推理框架 llama.cpp/chatglm.cpp/qwen.cpp: 提供了高性能的C实现适合对性能有较高要求的场景。
文本生成策略
在文本生成过程中LLM通常采用自回归生成方式即基于已生成的部分预测下一个部分。不同的采样策略会影响模型生成下一个词的方式常见的采样策略包括
贪婪搜索Greedy Search模型根据前文内容从词表中选择生成概率最高的下一个token。该方法简单高效但由于始终选择概率最大值生成的文本可能显得单调和重复。束搜索Beam Search与贪婪搜索不同束搜索会同时考虑生成概率最高的k个token。在每一步生成下一个token时模型会根据当前已生成的tokens生成k个候选token从而形成k²个可能的组合并从中选择概率最高的k个序列继续生成最终输出条件概率最优的序列。该方法能够在生成质量与多样性之间取得平衡但可能导致生成的文本显得较为保守且不够自然。随机采样Sampling根据每个token的生成概率从词表中随机选择下一个token。此方法能够增加生成文本的多样性是目前主流的文本生成方式但也可能导致生成的文本缺乏连贯性或逻辑性。 可以看出以上方法各自存在一定的局限性因此LLM中引入了temperature温度参数用于调节生成文本的随机性与确定性并结合top-k采样和top-p采样这两种介于贪心解码和完全随机采样之间的策略以优化文本生成过程。具体解释如下
temperature该参数控制生成文本的随机性与确定性之间的平衡。该值越高生成的文本越具有多样性而值越低生成的文本则趋向于更加确定性和一致性。top-ktop-k采样是对传统贪心解码策略的一种优化它从概率排名前k的token中进行采样允许其他高概率的token也有机会被选中。这种方式通过引入一定的随机性有助于提升生成文本的质量。top-ptop-p采样在每一步生成时只从累积概率超过预设阈值p的最小token集合中进行随机采样忽略低概率的token。该方法聚焦于概率分布的核心部分避免了过多依赖概率较低的尾部元素。
top-p采样在实际应用中通常被认为比top-k采样更自然和灵活因为它允许模型考虑更多的候选词通过累积概率的方式来选择下一个词从而生成的文本更加连贯和多样化而不是像 top-k采样那样只从概率最高的几个词中选择可能导致生成的文本过于单一和重复。
对于温度参数temperature首先需要了解Softmax函数的基本概念。Softmax函数广泛应用于神经网络的输出层。它将一个向量或一组实数映射到另一个向量使得输出值位于0到1之间并且所有输出值的总和为1。因此Softmax函数的输出可以被解释为概率分布。
具体而言对于输入向量 z z z中的第 i i i个元素Softmax函数的定义为 Softmax ( z i ) e z i ∑ j e z j \text{Softmax}(z_i) \frac{e^{z_i}}{\sum_{j} e^{z_j}} Softmax(zi)∑jezjezi
其中 e z i e^{z_i} ezi表示 z i z_i zi的指数而分母是所有输入元素的指数和。这样的设计确保了较大值的输入元素对应的概率较高而较小值的输入元素对应的概率较低但不会完全为零。
为了调整输出的概率分布在Softmax函数中引入了温度参数temperature parameter T T T。温度参数 T T T可以通过修改指数部分来控制输出的平滑度。具体形式为 Softmax ( z i , T ) e z i / T ∑ j e z j / T \text{Softmax}(z_i, T) \frac{e^{z_i / T}}{\sum_{j} e^{z_j / T}} Softmax(zi,T)∑jezj/Tezi/T
当 T T T值较大时输出的概率分布趋于平坦即所有输出的概率接近均匀分布而当 T T T趋向于0时概率分布则变得更加集中几乎所有的概率都会集中在最大的元素上。这种调整可以控制模型输出的确定性或多样性。
关于文本生成策略更详细的介绍见
2.4.3 模型优化技术
随着LLM的发展各种优化技术从不同角度不断涌现具体包括常见以下几种 Static kv-cache and torch.compile Static kv-cache键值缓存是一种优化技术旨在存储LLM在解码过程中的键值对以避免重复计算从而提高效率。与torch.compile结合使用时通过预先分配kv-cache的大小可以实现静态分配进一步优化性能可能带来最多4倍的速度提升。 Speculative decoding 推测性解码是一种加速自回归模型采样的技术。它使用一个较小且更快的辅助模型生成候选token然后由较大的LLM在单次前向传播中验证这些token。如果验证正确LLM可以“免费”获得这些token而不需要自己生成且不会损失准确性。 Prompt lookup decoding Prompt lookup decoding适用于输入和输出之间存在重叠词汇的任务如摘要生成。它通过在输入提示中进行字符串匹配生成候选token序列从而替代传统推测性解码中的草稿模型。 Attention optimizations FlashAttention-2这是一种优化算法通过将注意力计算分解为更小的块减少GPU内存的中间读写操作从而加速推理过程。Fine-Tuning with torch.compile and Padding-Free Data Collation通过使用torch.compile进行微调结合无填充数据整理技术可以进一步提高模型运行效率。PyTorch scaled dot product attention通过硬件加速和优化的计算图来加速模型的训练和推理。 VLLM VLLM是一个快速且易于使用的LLM推理与服务库支持分布式和容器化部署且内置LLM服务用户可通过命令直接启动。 FastChat FastChat是一个开源平台旨在支持训练和分布式部署。它提供了先进模型的训练评估代码和分布式多模型服务系统包含Web界面以及与OpenAI兼容的RESTful API。
关于这些技术的详细介绍见llm inference optimization。
3 总结
涉及LLM的项目可能是一项艰巨的任务。它需要适当的协调和技能才能成功执行任务。一个LLM项目从最初的构思到最终部署的整个过程。可以将这个过程分为如下主要阶段 定义项目的范围 明确目标首先要明确这个LLM项目的目标是什么是用于生成文本、对话助手、翻译语言、还是执行其他任务确定范围接下来要确定项目的范围即这个LLM模型需要处理的数据量、任务复杂度以及所需的性能。 数据预处理和相关考虑 数据收集收集与项目相关的大量高质量数据。数据清洗对数据进行清洗去除噪声、错误和不一致的数据。数据标注为数据添加标签以便模型能够学习到正确的关联。 选择一个基座的模型 模型选择根据项目的需求选择一个合适的基座模型以及是使用Base模型还是Chat模型。不同的模型在处理不同任务时表现会有所不同。考虑因素在选择模型时需要考虑模型的规模、参数数量、训练数据量以及计算资源等因素。 模型训练 模型训练利用准备好的数据集和适当的训练方法对模型进行训练特别要注重选择合适的训练策略。训练稳定性LLM的训练相比其他深度学习模型更容易遇到意外问题如不收敛、训练不稳定、突发中断等要提前做好应对方案。 强化学习 交互学习通过与环境的交互让模型不断学习和改进。奖励机制设计合理的奖励机制引导模型朝着目标方向发展。 评估模型 性能评估使用测试数据对模型的性能进行评估以确定模型是否达到预期的效果。指标选择选择合适的评价指标。 模型优化和部署 模型优化对模型进行量化等以减小模型的尺寸和提高推理速度。部署将训练好的模型部署到实际应用中提供服务。 模型监控和构建LLM应用 模型监控持续监控模型的性能及时发现问题并进行调整。应用开发基于训练好的模型开发各种LLM应用如聊天机器人、文本生成工具等。 总之LLM项目的整个生命周期是一个持续迭代的过程涵盖了目标定义、模型训练、模型部署、监控以及应用开发等各个环节且每个阶段都紧密相连、相互依赖。训练LLM的难点不仅仅在于单一技术的挑战更在于系统性复杂性的应对。这一过程需要数据、工程师、框架和硬件等多个方面的紧密协作与配合才能推动工作的顺利进行。
4 参考
modelscope-classroomLlama 2: Open Foundation and Fine-Tuned Chat ModelsUnderstanding Encoder And Decoder LLMsPrompt Engineering vs Fine-tuning vs RAGdata-prep-kitLLMDataHubevaluation-guidebookAwesome-LLMAwesome LLM EvalQuantization OverviewHow LLMs Generate Textllm inference optimization