大语言模型(LLM)入门学习路线图

news2024/9/23 12:15:18

Github项目上有一个大语言模型学习路线笔记,它全面涵盖了大语言模型的所需的基础知识学习,LLM前沿算法和架构,以及如何将大语言模型进行工程化实践。这份资料是初学者或有一定基础的开发/算法人员入门活深入大型语言模型学习的优秀参考。这份资料重点介绍了我们应该掌握哪些核心知识,并推荐了一系列优质的学习视频和博客,旨在帮助大家系统性地掌握大型语言模型的相关技术。

大语言模型(Large Language Model,LLM)入门学习路线包括了三个方面:

  • 大语言模型基础: 这涵盖了学习LLM所需的基本知识,包括数学、Python编程语言以及神经网络的原理。
  • 大语言模型前沿算法和框架: 在这一部分,重点是利用最新的技术构建LLM。这包括研究和应用先进的算法和模型架构,以提高模型的性能和效率。
  • 大语言模型工程化: 这一部分专注于创建基于LLM的应用程序,并将这些应用部署到实际环境中。这包括学习如何将LLM集成到各种平台和系统中,以及如何确保这些系统的稳定性和可扩展性。
1. 大语言模型基础

包括了数学基础知识、python基础、神经网络和NLP自然语言四个方面的学习。

1.1 机器学习的数学
  • 线性代数:理解算法的关键。主要概念包括向量、矩阵、行列式、特征值和特征向量、向量空间和线性变换。
  • 微积分:许多机器学习算法涉及连续函数的优化,这需要理解导数、积分、极限和级数。多变量微积分和梯度的概念也很重要。
  • 概率与统计:对于理解模型如何从数据中学习也同样重要。主要概念包括概率论、随机变量、概率分布、期望、方差、协方差、相关性、假设检验、置信区间、最大似然估计和贝叶斯推断。

📚 资源:(可能需要科学上网,国内可访问版本在这里也给出一些链接)

  • 3Blue1Brown - 线性代数的本质:教学视频,以生动直观的方式介绍了线性代数的相关概念。(B站一个已经翻译配音的版本)
  • StatQuest with Josh Starmer - 统计基础:为许多统计概念提供简单清晰的解释。(只找到B站生肉)
  • AP Statistics Intuition by Ms Aerin:博文,比较详细和基础,它是Medium文章,需要科学上网才能访问。
  • 沉浸式线性代数:线性代数的另一种视觉解释。
  • Khan Academy - 线性代数:可汗学院的线性代数课程,适合初学者(B站有中文字幕版)
  • Khan Academy - 微积分:涵盖了所有的基础的微积分知识。(B站)
  • Khan Academy - 概率与统计:以易于理解的方式讲授。(B站)
1.2 机器学习的Python

Python一直是机器学习和深度学习的首选语言,这得益于其可读性、一致性和鲁棒的数据科学库生态系统。

  • Python基础:理解基本语法、数据类型、错误处理和面向对象编程。
  • 数据科学库:包括熟悉NumPy进行数值操作,Pandas进行数据操作和分析,Matplotlib和Seaborn进行数据可视化。
  • 数据预处理:涉及特征缩放和规范化、处理缺失数据、异常值检测、分类数据编码以及将数据分割成训练、验证和测试集。
  • 机器学习库:熟练掌握Scikit-learn,这是一个提供了许多监督和非监督学习算法的库。重点需要了解如何实现线性回归、逻辑回归、决策树、随机森林、最近邻(K-NN)和K均值聚类等算法。

📚 资源:

  • Real Python:python学习网站
  • freeCodeCamp - 学习Python:Python中所有核心概念的详细介绍视频。该官网的可以访问,但是视频资源需要通过科学上网观看。
  • Python数据科学手册:学习pandas、NumPy、Matplotlib和Seaborn的免费书籍。
  • freeCodeCamp - 机器学习入门:机器学习算法学习。
  • Udacity - 机器学习入门:免费课程,涵盖了PCA和其他几个机器学习概念。
1.3. 神经网络
  • 基础知识:这包括理解神经网络的结构,如层、权重、偏置和激活函数(sigmoid、tanh、ReLU等)。
  • 训练和优化:熟悉反向传播和不同类型的损失函数,如均方误差(MSE)和交叉熵。理解各种优化算法,如梯度下降、随机梯度下降、RMSprop和Adam。
  • 过拟合:理解过拟合的概念(模型在训练数据上表现良好但在未见数据上表现差)并学习各种正则化技术(dropout、L1/L2正则化、早停、数据增强)以防止它。
  • 实现多层感知器(MLP):使用PyTorch构建一个MLP,也称为全连接网络。

📚 资源:

  • 3Blue1Brown - 但什么是神经网络?:直观地解释了神经网络及其内部工作原理。(B站配音版本)
  • 吴恩达深度学习
  • lfreeCodeCamp - 深度学习速成课:深度学习中所有最重要的概念的视频
  • Fast.ai - 实用深度学习:为想学习深度学习的有编程经验的人设计的免费课程
  • 推荐书籍《一起动手学习深度学习》
  • 李宏毅深度学习:更适合中国宝宝的深度学习视频
1.4. 自然语言处理(NLP)

NLP在许多应用中扮演着关键角色,如翻译、情感分析、聊天机器人等。

  • 文本预处理:学习各种文本预处理步骤,如分词(将文本分割成单词或句子)、词干提取(将单词还原为其根形式)、词形还原(类似于词干提取但考虑上下文)、停用词去除等。
  • 特征提取技术:熟悉将文本数据转换为机器学习算法能理解的格式的技术。关键方法包括词袋模型(BoW)、词频-逆文档频率(TF-IDF)和n-gram。
  • 词嵌入:词嵌入是一种单词表示,允许具有相似含义的单词具有相似的表示。关键方法包括Word2Vec、GloVe和FastText。
  • 循环神经网络(RNNs):理解RNNs的工作原理,这是一种为序列数据设计的神经网络类型。探索LSTMs和GRUs,两种RNN变体,它们能够学习长期依赖关系。

📚 资源:

  • RealPython - 使用spaCy进行Python自然语言处理:关于在Python中使用spaCy库进行NLP任务的详尽指南。
  • Kaggle - NLP指南:一些notebook和资源,用于手把手解释Python中的NLP。
  • Jay Alammar - Word2Vec的插图解释:理解著名的Word2Vec架构的好参考。
  • Jake Tae - 从头开始的PyTorch RNN:在PyTorch中实现RNN、LSTM和GRU模型的实际和简单操作。
  • colah的博客 - 理解LSTM网络:关于LSTM网络的理论性文章。
2. 大语言模型前沿算法和框架
2.1. 大语言模型(LLM)架构

需要清楚地了解模型的输入(token)和输出(logits),而原始的注意力机制( attention mechanism)是另一个必须掌握的关键部分,因为它是很多改进算法的基础,具体来说需要包括以下技术。

  • 高层视角(High-level view:):编码器encoder-解码器decoder的Transformer架构,特别是仅有解码器的GPT架构,几乎所有流行LLM都应用了该架构。
  • 令牌化(Tokenization):如何将原始文本数据转换成模型能理解的格式,这包括将文本拆分成Token(通常是单词或子词)。
  • 注意力机制(Attention mechanisms):掌握注意力机制的理论,包括自注意力和缩放点积注意力,这使得模型能够在产生输出时关注输入的不同部分。
  • 文本生成(Text generation):模型生成输出序列的多种方式。常见方法包括了贪婪解码(greedy decoding)、束搜索(beam search)、top-k采样(top-k sampling,)和核心采样(nucleus sampling)。

📚 资源:

  • Jay Alammar《揭秘Transformer》:对Transformer模型进行了直观和形象的解释。
  • Jay Alammar《揭秘GPT-2》:重点讨论了与Llama非常相似的GPT架构。
  • Brendan Bycroft《LLM可视化》:对LLM内部发生情况的进行3D可视化。
  • Andrej Karpathy《nanoGPT》:一个2小时长的YouTube视频,从头开始重新实现GPT(面向程序员)。(B站中文字幕版)
  • Lilian Weng《注意力?注意力!》:以更正式的方式介绍注意力机制的需求。
  • 《LLM中的解码策略》:提供代码和对生成文本不同解码策略的视觉介绍。
2.2. 构建指令数据集

虽然从维基百科和其他网站可以轻松地找到原始数据,但何如将数据转换为问题和答案的配对配对却很难。而数据集的质量将直接影响模型的质量,它们是大模型微调(finetune)过程中最重要的组成部分。

  • Alpaca-样式数据集:使用OpenAI API(GPT)从头开始生成合成数据。你可以指定种子和系统提示以创建多样化的数据集。
  • 高级技术:学习如何通过Evol-Instruct改进现有数据集,如何像在Orca和phi-1论文中那样生成高质量的合成数据。
  • 数据过滤:使用正则表达式、移除近似重复项、关注令牌数较多的答案等传统技术。
  • 提示模板:在没有真正标准的问题和答案的情况下,了解不同的聊天模板很重要,比如ChatML、Alpaca等。

📚 参考资料:

  • 由Thomas Capelle撰写的《为指令调优准备数据集》:探索Alpaca和Alpaca-GPT4数据集及其格式化方法。
  • 由Solano Todeschini撰写的《生成葡萄牙语临床指令数据集》:教程,介绍如何使用GPT-4创建合成指令数据集。
  • 由Kshitiz Sahay撰写的《使用GPT 3.5为新闻分类创建指令数据集》:使用GPT 3.5创建指令数据集以微调Llama 2进行新闻分类。
  • 《为LLM微调创建数据集》:包含一些过滤数据集和上传结果的技术的笔记本。
  • 由Matthew Carrigan撰写的《聊天模板》:Hugging Face关于提示模板的页面。
2.3. 模型预训练

是指从大量的无监督数据集中进行模型预训练,模型预训练是一个非常漫长和消费资源的过程,因此它不是本学习路线教程的重点。但是我们可以了解它,以方便后续的学习。它主要包括以下几个部分:

  • 数据管道:预训练需要巨大的数据集(例如,Llama 2是在2万亿令牌上训练的),这些数据集需要被过滤、令牌化,并与预定义的词汇表进行整合。
  • 因果语言模型:了解因果和掩码语言模型的区别,以及在这种情况下使用的损失函数。为了有效的预训练,了解更多关于Megatron-LM或gpt-neox。
  • 规模化定律:规模化定律描述了基于模型大小、数据集大小和用于训练的计算量的预期模型性能。
  • 高性能计算:这里不讨论,但如果你计划从头开始创建自己的LLM(硬件、分布式工作负载等),则需要更多关于HPC的知识是基础。

📚 参考资料:

  • Junhao Zhao《LLMDataHub》:为预训练、微调和RLHF策划的数据集列表。
  • Hugging Face《从头开始训练因果语言模型》:使用transformers库从头开始预训练GPT-2模型。
  • Zhang等人创建的《TinyLlama》:检查此项目以了解如何从头开始训练Llama模型。
  • Hugging Face提供的《因果语言模型》:解释因果和掩码语言模型的区别,以及如何快速微调DistilGPT-2模型。
  • nostalgebraist撰写的《Chinchilla的狂野含义》:讨论规模化定律并解释它们对LLM通常意味着什么。
  • BigScience提供的《BLOOM》:Notion页面,描述了如何构建BLOOM模型,包括大量有关工程部分和遇到的问题的有用信息。
  • Meta提供的《OPT-175日志》:研究日志显示了什么出了问题,什么做得对。如果你计划预训练一个非常大的语言模型(在这种情况下,是175B参数),这将非常有用。
  • 《LLM 360》:一个开源LLM框架,提供训练和数据准备代码、数据、指标和模型。
2.4. 监督式微调(Supervised Fine-Tuning)

监督式微调就是让我们在已经标注的数据集上对已经预训练好的模型进行再次训练,以符合任务需求,它是一个非常重要的过程。

  • 完全微调(Full fine-tuning):完全微调指的是训练模型中的所有参数。这不是一种高效的技术,但它产生稍好的结果。
  • LoRA:一种基于低秩适配器的参数高效技术(PEFT)。我们只训练这些适配器,而不是所有参数。
  • QLoRA:另一种基于LoRA的PEFT,它还将模型的权重量化为4位,并引入分页优化器来管理内存峰值。将其与Unsloth结合使用,可以在免费的Colab笔记本上有效运行。
  • Axolotl:一个用户友好且强大的微调工具,被用于许多最先进的开源模型。
  • DeepSpeed:高效的预训练和微调LLM,适用于多GPU和多节点设置(在Axolotl中实现)。

📚 参考资料:

  • 由Alpin撰写的《LLM训练新手指南》:概述微调LLM时要考虑的主要概念和参数。
  • 由Sebastian Raschka提供的《LoRA洞察》:关于LoRA的实际洞察和如何选择最佳参数。
  • 《自己微调Llama 2模型》:关于如何使用Hugging Face库微调Llama 2模型的动手教程。
  • 由Benjamin Marie撰写的《为因果LLM填充训练示例》:因果LLM填充训练示例的最佳实践。
  • 《LLM微调初学者指南》:关于如何使用Axolotl微调CodeLlama模型的教程。
2.5. 通过人类反馈进行强化学习(Reinforcement Learning from Human Feedback)

在监督式微调之后,RLHF是一个用来将LLM产生的答案达到和人类回答差不多的重要步骤。其思想是从人工反馈中学习偏好。它比SFT更复杂,但是该步骤通常被视为可选的。

  • 偏好数据集(Preference datasets):这些数据集通常包含几个答案,并有某种排名,但是这种数据集更难产生。
  • 近端策略优化(Proximal Policy Optimization):这个算法利用一个奖励模型来预测给定文本是否被人类高度评价。然后使用这个预测来优化SFT模型,一般使用基于KL散度加上惩罚的方式来执行。
  • 直接偏好优化(Direct Preference Optimization):DPO简化将其重新构架为一个分类问题。它使用参考模型而不是奖励模型(无需训练),只需要一个超参数,使其更稳定和高效。

📚 参考资料:

  • 由Ayush Thakur撰写的《使用RLHF训练LLM简介》:解释为什么使用RLHF减少偏见并提高LLM性能是可取的。
  • 由Hugging Face提供的《RLHF插图》:介绍了奖励模型训练和通过强化学习进行微调的RLHF。
  • 由Hugging Face提供的《StackLLaMA》:使用transformers库高效对齐LLaMA模型与RLHF的教程。
  • 由Sebastian Rashcka撰写的《LLM训练:RLHF及其替代方案》:概述RLHF过程和替代方案,如RLAIF。
  • 《使用DPO微调Mistral-7b》:使用DPO微调Mistral-7b模型的教程,并复现NeuralHermes-2.5。
2.6. 评估(Evaluation)

评估LLM是一个被低估的部分,它既耗时但是又相对可靠。你的下游任务应该决定你想评估什么,但始终记住Goodhart法则:“当一个指标成为目标时,它就不再是一个好的指标。”

  • 传统指标:困惑度和BLEU分数这样的指标不再像以前那样受欢迎,因为在大多数情况下它们是有缺陷的。了解它们以及何时可以应用它们很重要。
  • 通用基准:基于语言模型评估工具,Open LLM排行榜是通用LLM(如ChatGPT)的主要基准。还有其他流行的基准,如BigBench、MT-Bench等。
  • 特定任务基准:如摘要、翻译和问答等任务有专门的基准、指标甚至子领域(医疗、金融等),如PubMedQA用于生物医学问答。
  • 人类评估:最可靠的评估是用户的接受率或人类做出的比较。如果你想知道模型是否表现良好,最简单但最可靠的方式是自己使用它。

📚 参考资料:

  • 由Hugging Face提供的《固定长度模型的困惑度》:困惑度概述,包括用transformers库实现它的代码。
  • 由Rachael Tatman撰写的《自担风险使用BLEU》:BLEU分数及其许多问题的概述,附有示例。
  • 由Chang等人撰写的《评估LLM的调查》:关于评估什么、在哪里评估以及如何评估的综合论文。
  • 由lmsys提供的《聊天机器人竞技场排行榜》:基于人类比较的通用LLM的Elo评分。
2.7. 量化

量化是将模型的权重(和激活)使用更低精度进行转换的过程。例如,使用16位存储的权重可以转换为4位表示。这项技术已经越来越重要,因为它可以减少与LLM相关的计算和内存成本,以使其在计算资源更低的设备上运行。

  • 基础技术:了解不同的精度水平(FP32, FP16, INT8等)以及如何使用absmax和零点技术进行朴素量化。
  • GGUF和llama.cpp:最初设计用于在CPU上运行,llama.cpp和GGUF格式已成为在消费级硬件上运行LLM的最受欢迎的工具。
  • GPTQ和EXL2:GPTQ特别是EXL2格式提供了惊人的速度,但只能在GPU上运行。模型也需要很长时间才能被量化。
  • AWQ:这种新格式比GPTQ更准确(困惑度更低),但使用的VRAM更多,不一定更快。

📚 参考资料:

  • 《量化简介》:量化概述,absmax和零点量化以及LLM.int8()的代码。
  • 《使用llama.cpp量化Llama模型》:关于如何使用llama.cpp和GGUF格式量化Llama 2模型的教程。
  • 《使用GPTQ进行LLM的4位量化》:使用GPTQ算法量化LLM的教程,附有AutoGPTQ。
  • 《ExLlamaV2:运行LLM的最快库》:关于如何使用EXL2格式量化Mistral模型并使用ExLlamaV2库运行它的指南。
  • 《理解激活感知权重量化》由FriendliAI提供:AWQ技术及其优势的概述。
2.8. 新趋势
  • 位置嵌入(Positional embeddings**)**:了解LLM如何编码位置,尤其是RoPE这样的相对位置编码方案。实现YaRN(通过温度因子乘以注意力矩阵)或ALiBi(基于token距离的注意力惩罚)以延长上下文长度。
  • 模型合并(Model merging):合并训练好的模型已成为创建性能模型而无需任何微调的流行方式。流行的mergekit库实现了最受欢迎的合并方法,如SLERP、DARE和TIES。
  • 专家混合:Mixtral因其出色的性能而重新流行化MoE架构。与此同时,OSS社区出现了一种通过合并模型(如Phixtral)的frankenMoE,这是一个更便宜且性能良好的选项。
  • 多模态模型:这些模型(如CLIP、Stable Diffusion或LLaVA)处理多种类型的输入(文本、图像、音频等),具有统一的嵌入空间,解锁了强大的应用,如文本到图像。

📚 参考资料:

  • 《扩展RoPE》由EleutherAI提供:总结不同位置编码技术的文章。
  • 《理解YaRN》由Rajat Chawla提供:YaRN介绍。
  • 《使用mergekit合并LLM》:关于使用mergekit合并模型的教程。
  • 《专家混合解释》由Hugging Face提供:关于MoEs及其工作原理的详尽指南。
  • 《大型多模态模型》由Chip Huyen提供:多模态系统及其近期历史的概述。
3. LLM工程化

在这阶段集中于如何构建和部署基于大语言模型(LLM)的应用程序,以便在生产环境中使用。它分为几个部分,每部分都聚集于LLM应用开发的不同方面:

3.1 运行大型语言模型 (LLMs)

运行LLMs可能会因为硬件要求而变得困难。而我们可以通过Api的方式(如GPT-4)来简单的使用大模型。当然也可以进行本地运行。无论哪种方式,都需要额外的提示和引导技巧(也叫做提示工程, prompting engineer)来提升模型的输出质量。

  • LLM APIs: API是部署LLMs的一种比较简单的方式,它不要求设备拥有显卡资源,但是这种一般需要付费得到API。这个领域分为私有LLMs(OpenAI, Google, Anthropic, Cohere, 等.) 和开源LLMs (OpenRouter, Hugging Face, Together AI, 等.).
  • 开源LLMs:Hugging Face Hub开源了大量的LLMs。你可以直接在Hugging Face Spaces中运行其中一些,或者下载并在像LM Studio这样的应用程序中或通过CLI与llama.cpp或Ollama在本地运行它们。
  • 提示工程Prompt engineering):常见技术包括零次提示、少数提示、思维链和ReAct。它们在更大的模型上效果更好,也可以适应更小的模型。
  • 结构化输出(Structuring outputs):大部分任务需要结构化输出,如严格的模板或JSON格式。可以使用LMQL、Outlines、Guidance等库来指导生成并遵循给定的结构。

📚 参考资料:

  • 由Nisha Arya撰写的使用LM Studio在本地运行LLM:如何使用LM Studio的简短指南。
  • 由DAIR.AI撰写的提示工程指南:提示工程学习
  • Outlines - 快速开始:由Outlines启动的指导生成技术。
  • LMQL - 概述:LMQL语言的介绍。
3.2. 构建向量存储(Building a Vector Storage)

有时候我们想要在特定知识库下让LLMs搜索答案,而检索增强生成(RAG)结合了信息检索(IR)方法的能力,提高文本生成任务的质量和相关性。这种方法在处理需要广泛背景知识或特定信息的任务时特别有用,例如问答、文章撰写、摘要生成等。构建向量存储是构建检索增强生成(RAG)管道的第一步。它涉及文档加载,拆分,生成向量表示(嵌入),并存储等步骤:

  • 文档加载:文档加载器可以处理多种格式:PDF、JSON、HTML、Markdown等。它们还可以直接从一些数据库和API(GitHub、Reddit、Google Drive等)检索数据。
  • 文档拆分:文本拆分器将文档拆分成更小、有语义信息的块。与其在_n_个字符后拆分文本,不如更好地按标题或递归拆分,附加一些额外的元数据。
  • 嵌入模型:嵌入模型将文本转换为向量表示。这对于执行语义搜索至关重要,可以深入并更细致地理解语言。
  • 向量数据库:向量数据库(如Chroma、Pinecone、Milvus、FAISS、Annoy等)旨在存储嵌入向量。它们能够根据向量相似度高效检索与查询“最相似”的数据。

📚 参考资料:

  • LangChain - 文本拆分器:LangChain实现的不同文本拆分器列表。
  • Sentence Transformers库:流行的嵌入模型库。
  • MTEB排行榜:嵌入模型的排行榜。
  • 由Moez Ali撰写的前5大向量数据库:最好和最流行的向量数据库的比较。
3.3. 检索增强生成 (Retrieval Augmented Generation, RAG)

RAG技术可以使LLMs从数据库检索上下文文档以提高其答案的准确性。RAG是一种流行的增强模型知识的方式,无需任何微调。

  • 协调器Orchestrators):协调器(如LangChain、LlamaIndex、FastRAG等)是将LLMs与工具、数据库、记忆等连接并增强其能力的流行框架。
  • 检索器Retrievers):用户指令并不是为检索优化的。可以应用不同技术(例如,多查询检索器、HyDE等)来重述/扩展它们并提高性能。
  • 记忆Memory):为了记住以前的指令和答案,LLMs和聊天机器人(如ChatGPT)将这个历史添加到它们的上下文窗口中。这个缓冲区可以通过摘要(例如,使用一个较小的LLM)、向量存储+RAG等来改进。
  • 评估:我们需要评估文档检索(上下文的精度和召回率)和生成阶段(保真度和答案相关性)。可以使用工具Ragas和DeepEval来简化这一过程。

📚 参考资料:

  • Llamaindex - 高级概念:构建RAG管道时需要了解的主要概念。
  • Pinecone - 检索增强:检索增强过程的概述。
  • LangChain - 使用RAG的Q&A:构建典型RAG管道的分步教程。
  • LangChain - 记忆类型:不同类型记忆的列表及其相关用途。
  • RAG管道 - 指标:用于评估RAG管道的主要指标概述。
3.4. 高级RAG

现实生活中的应用可能需要复杂的管道,包括SQL或图数据库,以及自动选择相关工具和API。这些高级技术可以改进基线解决方案并提供额外功能。

  • 查询构造Query construction):存储在传统数据库中的结构化数据需要特定的查询语言,如SQL、Cypher、元数据等。我们可以直接将用户指令翻译成查询以访问数据。
  • 代理和工具Agents and tools):代理通过自动选择最相关的工具来增强LLMs,以提供答案。这些工具可以简单到使用Google或Wikipedia,或更复杂,如Python解释器或Jira。
  • 后处理(Post-processing::向LLM提供输入的最终步骤。它通过重新排列、RAG-fusion和分类等方式增强检索到的文档的相关性和多样性。

📚 参考资料:

  • LangChain - 查询构造:关于不同类型查询构造的博客文章。
  • LangChain - SQL:如何使用LLMs与SQL数据库交互的教程,涉及Text-to-SQL和一个可选的SQL代理。
  • Pinecone - LLM代理:介绍不同类型代理和工具。
  • 由Lilian Weng撰写的LLM驱动的自主代理:更多关于LLM代理的理论文章。
  • LangChain - OpenAI的RAG:OpenAI采用的RAG策略概述,包括后处理。
3.5. 推理优化 ( Inference optimization)

文本生成是一个成本高昂的过程,需要昂贵的硬件资源。除了量化,还提出了各种技术来最大化吞吐量并降低推理成本。

  • Flash Attention:优化注意力机制,将其复杂度从二次方降低到线性,加速训练和推理。
  • 键值缓存:了解键值缓存以及多查询注意力(MQA)和分组查询注意力(GQA)中引入的改进。
  • 推测解码:使用小型模型生成草稿,然后由更大的模型审查,以加速文本生成。

📚 参考资料:

  • GPU推理由Hugging Face提供:解释如何在GPUs上优化推理。
  • LLM推理由Databricks提供:如何在生产中优化LLM推理的最佳实践。
  • 为速度和内存优化LLMs由Hugging Face提供:解释优化速度和内存的三种主要技术,即量化、Flash Attention和架构创新。
  • 辅助生成由Hugging Face提供:HF版本的推测解码,是一篇详细介绍其如何工作的博客,包括实现它的代码。
3.6. 部署LLMs

部署LLMs是一项工程壮举,可能需要多个GPU集群。

  • 本地部署:与私有LLMs相比,开源LLMs可以保护用户隐私,是它的一大优势。本地LLM服务器(LM Studio、Ollama、oobabooga、kobold.cpp等)利用这一优势为本地应用提供动力。
  • demo部署:Gradio和Streamlit等框架有助于原型化应用程序并分享demo。你也可以轻松地在线托管它们,例如使用Hugging Face Spaces。
  • 服务器部署:在规模上部署LLMs需要云(参见SkyPilot)或本地基础设施,并常常利用优化的文本生成框架,如TGI、vLLM等。
  • 边缘部署:在受限环境中,高性能框架如MLC LLM和mnn-llm可以在网页浏览器、Android和iOS中部署LLM。

📚 参考资料:

  • Streamlit - 构建基础LLM应用:使用Streamlit制作基础ChatGPT-like应用的教程。
  • HF LLM推理容器:使用Hugging Face的推理容器在Amazon SageMaker上部署LLMs。
  • Philschmid博客由Philipp Schmid撰写:关于使用Amazon SageMaker部署LLM的高质量文章集。
  • 优化延迟由Hamel Husain提供:关于TGI、vLLM、CTranslate2和mlc在吞吐量和延迟方面的比较。
7. 保护LLMs

除了与软件相关的传统安全问题外,由于LLMs的训练和提示方式,它们还有独特的弱点。

  • 提示黑客攻击:与提示工程相关的不同技术,包括提示注入(额外指令以劫持模型的答案)、数据/提示泄露(检索其原始数据/提示)和越狱(制作提示以绕过安全功能)。
  • 后门:攻击向量可以针对训练数据本身,通过在训练数据中下毒(例如,使用错误信息)或创建后门(秘密触发器以在推理期间改变模型的行为)。
  • 防御措施:保护你的LLM应用程序的最佳方式是针对这些漏洞测试它们(例如,使用红队测试和像garak这样的检查)并在生产中观察它们(使用框架,如langfuse)。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

对于0基础小白入门:

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

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

😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

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

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

相关文章

【FPGA】FPGA芯片结构

目录 1 可编程输出/输出单元(IOB)2 可配置逻辑块(CLB)3 数字时钟管理模块(DCM)4 嵌入式块存储器(BRAM)5 布线资源6 内嵌功能模块(专用IP单元)6.1 PLL&#xf…

SpringBoot简易商品管理系统

> 这是一个基于SpringBootThymeleaf实现的简易商品管理系统。 > 包含基本的登录/注册与商品管理功能。 > 界面简洁美观,代码结构清晰,适用于JAVA初学者在此基础上进行二次开发。 一、项目演示 二、技术框架 框架描述Spring Boot容器管理 S…

CV之OCR:GOT-OCR2.0的简介、安装和使用方法、案例应用之详细攻略

CV之OCR:GOT-OCR2.0的简介、安装和使用方法、案例应用之详细攻略 目录 GOT-OCR2.0的简介 1、更新 GOT-OCR2.0的安装和使用方法 1、安装 安装环境cuda11.8torch2.0.1 安装包 安装Flash-Attention GOT权重:1.43G 2、演示 3、训练 4、评估 GOT-…

Tomcat靶场攻略

一.CVE-2017-12615 1.首页抓包,修改为 PUT 方式提交 ,将jsp木马写到数据包中 2.哥斯拉默认秘钥连接 二.后台弱⼝令部署war包 1.制作WAR包,上传 将JSP⽊⻢压缩为ZIP格式,然后修改后缀为war 2.文件上传成功后,默认会在网站根目录下生成和wa…

使用centos7搭建wiki论坛,使用nginx网站来搭建wiki负载均衡,反向代理。

1.安装一个wget,进入目录opt下 #安装wget yum -y install wget#进入目录/opt/下面 cd /opt/2.获取 mysql8.0 rpm包,安装mysql8.0,安装mysql-server,yum会自动下载所需安装及依赖包. #获取 mysql8.0 rpm包 wget https://dev.mysql.com/get/mysql80-comm…

2024人工智能结课作业-DFS/BFS/Astar解决数码问题

1 深度优先遍历搜索(DFS) 1.1算法介绍 深度优先搜索算法(Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发…

基于SSM的“在线CRM管理系统”的设计与实现(源码+数据库+文档+开题报告)

基于SSM的“在线CRM管理系统”的设计与实现(源码数据库文档开题报告) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 总体功能模块图 登录页面 后台管理页面 产品信息页面 客…

【Android】BottomSheet基本用法总结(BottomSheetDialog,BottomSheetDialogFragment)

BottomSheet BottomSheet 是一种位于屏幕底部的面板,用于显示附加内容或选项。提供了从屏幕底部向上滑动显示内容的交互方式。这种设计模式在 Material Design 中被广泛推荐,因为它可以提供一种优雅且不干扰主屏幕内容的方式来展示额外信息或操作。 具体…

大型综合医院供配电系统设计

摘要:众所周知,医院供配电系统关系着整个医院的正常运行,一旦出现故障将会对病患的安全造成威胁。基于此,本文就大型综合医院供配电系统设计进行深入探讨,以期为其他类似医院建筑供配电系统设计提供借鉴。 关键词&…

代理模式详解:控制对象访问的利器

代理模式(Proxy Pattern)是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。代理模式通常用于延迟对象的创建、控制对对象的访问或在访问对象时添加一些额外的操作。 代理模式通过引入一个代理对象来控制对目标对象的访…

超详细超实用!!!AI编程之cursor配置中文(一)

云风网 云风笔记 云风知识库 一、配置中文扩展 打开扩展,搜索chinese,安装chinese(simplified) 简体中文语言包,重启即可 二、配置中文方法二 使用快捷键组合【CtrlShiftp】,在搜索框中输入configure display language,选择中文也可配置中文 三、配置…

九、成功版--windows上安装artifactory配置postgressql

centos上搞不定,windows上搞定了 现阶段是想用java写程序控制制品库,等以后研究多了需要写一些脚本的时候,在研究linux上安装artifactory(公司就用的linux安装的配置mysql,有空对着配一下linux的) 源码地…

【实证数据】国家信息消费试点城市(2000年-2023年)

数据说明:2013年,国务院发布《促进信息消费若干意见》,旨在激发需求、拓宽市场及丰富服务内容。随后,工信部启动信息消费试点城市建设,分两批确立104个试点区域,旨在通过试点引领,促进信息消费增…

STM32—I2C通信外设

1.I2C外设简介 STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型(可变多主机)支持7位/10位地址模式(11110......)支持不同的通…

2024好评的开放式耳机排行榜10强?五款开放式蓝牙耳机推荐!

​开放式耳机目前非常流行,它们的设计不侵入耳道,长时间佩戴也不会感到不适,同时还能维护耳部卫生,这使得它们特别受到运动爱好者和耳机发烧友的喜爱。然而,市场上的开放式耳机品牌众多,质量参差不齐&#…

对HttpServletRequest中的Header进行增删

HttpServletRequest 没有提供修改/删除的 Api HttpServletRequest中定义的对 Header 的操作全是只读,没有修改。代码实现如下: public interface HttpServletRequest extends ServletRequest {...public long getDateHeader(String name);public String…

Isaac Sim 4.2.0 Windows版本打开报 fbgemm.dll 加载错误

方案一:下载缺少的dll复制到目录里即可 可以看到后台命令窗口出现了错误,发生在import pytorch的时候,根据提示,是因为fbgemm.dll缺少依赖,导致加载异常,一般情况是缺少 libomp140.x86_64.dll 这个文件&am…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分: 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的: 一、数据上报方式 本文的方案是,优先navigator.sendBeacon,降级使用1x1像素gif图片…

C语言 | Leetcode C语言题解之第419题棋盘上的战舰

题目&#xff1a; 题解&#xff1a; int countBattleships(char** board, int boardSize, int* boardColSize){int row boardSize;int col boardColSize[0];int ans 0;for (int i 0; i < row; i) {for (int j 0; j < col; j) {if (board[i][j] X) {if (i > 0 &…

手机在网状态查询接口如何用PHP进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口&#xff0c;即输入手机号码查询手机号在网状态&#xff0c;返回有正常使用、停机、在网但不可用、不在网&#xff08;销号/未启用/异常&#xff09;、预销户等多种状态。 二、手机在网状态查询适用哪些场景…