超详细!AIGC面试系列 大模型基础(2)

本文深入探讨了大模型领域的关键概念,包括Scallinglaw在性能与计算量、参数量和数据大小的关系,Tokenizer的实现方法,大模型显存消耗的原因,Transformer架构的工作原理,以及训练和微调大模型的步骤。
摘要由CSDN通过智能技术生成

关于我

从2022年末开始接触AIGC,便一直紧跟最近技术与实践落地。期间参与copilot项目研发,落地了多个垂类AIGC大模型应用,熟悉各种AIGC相关技术如Agent,Langchain,chatdoc,向量数据库等。

关于本系列

每个问题回答后面我都会放上参考的原文链接,方便大家深度阅读。有覆盖不到的问题,尽请留言,会在下期更新。

本期问题快浏

1. 大模型领域的Scalling law是什么意思

2. 大模型的Tokenizer的实现方法及原理?

3. 为什么大模型这么消耗显存?

4. 简要介绍下Transformer架构

5. 训练一个大模型需要哪些步骤?

6. 微调一个大模型需要哪些步骤?


1. 大模型领域的Scalling law是什么意思

Scaling Law 是指在深度学习中,模型性能与计算量、模型参数量以及数据大小之间的关系。具体来说,当不受其他因素制约时,模型的性能与这三者呈现幂律关系。

  1. 核心结论

    • 对于仅有解码器的模型,计算量(Flops)、模型参数量(N)、数据大小(D,以 token 数表示)之间满足以下关系:C ≈ 6ND
    • 模型的最终性能主要与计算量 C、模型参数量 N 和数据大小 D 相关,而与模型的具体结构(层数、深度、宽度)基本无关。
    • 固定模型的总参数量,调整层数、深度或宽度,不同模型的性能差距很小,大部分在 2% 以内。
  2. 幂律关系

    • 对于计算量 C、模型参数量 N 和数据大小 D,当不受其他两个因素制约时,模型性能与每个因素都呈现幂律关系。
    • 为了提升模型性能,模型参数量 N 和数据大小 D 需要同步放大,但模型和数据分别放大的比例还存在争议。
  3. 适用范围

    • Scaling Law 不仅适用于语言模型,还适用于其他模态以及跨模态的任务。
    • 这些规律可以帮助我们理解和预测大模型的性能表现,并指导模型设计和训练中的决策。
  4. 实际应用

    • 根据 Scaling Law,我们可以在计算效率最优的情况下,选择合适的模型规模和数据大小,以获得更好的性能。
    • 在大模型的训练阶段,我们可以根据这些原则来设计和训练模型,以达到更好的性能。

References

  1. 解析大模型中的Scaling Law - 知乎
  2. 大模型中的Scaling Law是什么? - 阿里云开发者社区
  3. 大语言模型中的第一性原理:Scaling laws - 知乎
  4. 大模型中的Scaling Law是什么? - 阿里云开发者社区
  5. AI大模型深度洞察:为什么Scaling Laws重要? - 百家号

2. 大模型的Tokenizer的实现方法及原理?

大型自然语言处理(NLP)模型中的Tokenizer是一个关键组件,用于将文本转换为模型可以处理的数据。

  1. Subword Tokenization(子词分词算法):

    • 基于子词的分词方法是目前主流的方式,它在词切分和字切分之间取得了平衡。
    • 基于词的切分会导致词表过大、信息丢失等问题。
    • 基于字的切分会使每个token的信息密度降低,序列变得过长。
    • 基于子词的切分是相对平衡的方案,它将高频词切分成完整的整词,低频词切分成有意义的子词(例如,将“dogs”切分为“dog”和“##s”)。
    • 常见的基于子词的分词模型包括:BPEWordPieceUnigram
  2. 分词流程

    • 归一化:对文本进行基础清洗,例如删除多余的换行和空格,转换为小写等。
    • 预分词:将句子切分成更小的“词”单元,可以基于空格或标点进行切分。
    • 基于分词模型的切分:使用不同的分词模型,例如BPE、WordPiece和Unigram。
    • 后处理:添加特殊的分词逻辑,如[CLS]、[SEP]等。
  3. Byte-Pair Encoding (BPE)

    • BPE是最广泛采用的subword分词器。
    • 训练阶段:从字符级的小词表出发,逐步合并pair并形成大词表。
    • 编码方法:将文本切分成字符,再应用训练阶段获得的合并规则。
    • 经典模型(例如GPT、GPT-2、RoBERTa等)使用BPE作为分词器。

References

  1. 大模型基础组件 - Tokenizer - 知乎
  2. 通俗易懂讲解大模型:Tokenizer_大模型的tokenizer是不是 ...
  3. Tokenizor简介一(BPE原理及python实现) - 知乎
  4. Tokenizer总结-CSDN博客
  5. 大模型中常用的分词器Tokenizer学习总结记录与代码实现

3. 为什么大模型这么消耗显存?

  1. 模型参数占用显存:大型语言模型通常具有巨大的参数量,这些参数需要存储在显存中以供推理使用。因此,在推理过程中,模型参数会占用相当大的显存空间。

  2. 输入数据占用显存:进行推理时,需要将输入数据加载到显存中。对于大型语言模型而言,输入数据通常也会占用较大的显存空间,尤其是对于较长的文本输入。

  3. 中间计算结果占用显存:在推理过程中,模型会进行一系列的计算操作,生成中间结果。这些中间结果也需要存储在显存中,以便后续计算使用。对于大型语言模型而言,中间计算结果可能会占用较多的显存空间。

  4. 内存管理策略:某些深度学习框架在推理时采用了一种延迟释放显存的策略,即显存不会立即释放,而是保留一段时间以备后续使用。这种策略可以减少显存的分配和释放频率,提高推理效率,但也会导致显存一直占用的现象。

References

  1. 多大的显存能够满足主流大模型的训练开销? - 知乎
  2. 为什么大模型推理时显存涨的那么多还一直占着? - 知乎
  3. 大模型训练推理显存计算简介 - 知乎
  4. 模型预测时GPU占用不断增长_forward模型不断增大-CSDN博客

4. 简要介绍下Transformer架构

Transformer 是一种神经网络架构,最早由谷歌在2017年的论文《Attention is All You Need》中提出。它引入了自注意力机制,并被广泛应用于序列到序列(seq2seq)任务。相比于传统的循环神经网络(RNN),Transformer摒弃了顺序处理的方式,充分利用了并行计算,从而减少了训练时间.

  1. 整体结构

    • Transformer由EncoderDecoder两个部分组成,每个部分包含6个block
    • Encoder负责将输入句子编码为表示向量,而Decoder则负责生成目标语言的翻译
  2. 输入表示

    • Transformer中单词的输入表示由单词Embedding位置Embedding相加得到。
    • 单词Embedding可以通过Word2Vec、Glove等预训练算法获得,也可以在Transformer中训练得到。
    • 位置Embedding用于表示单词在句子中的位置,因为Transformer不采用RNN的结构,需要保存单词的顺序信息.
  3. 自注意力机制

    • Transformer的关键部分是Self-Attention,它在Encoder和Decoder中都有应用。
    • Self-Attention结构包括查询(Q)、**键值(K)值(V)**的计算。
    • 通过线性变换,Self-Attention将输入(单词表示向量矩阵X)转换为Q、K、V[^1^].
  4. 工作流程

    • 获取输入句子的每个单词的表示向量X。
    • 将X传入Encoder,经过6个Encoder block得到句子的编码信息矩阵C。
    • 将C传递到Decoder,逐步预测翻译后的单词.

References

  1. Transformer模型详解(图解最完整版) - 知乎
  2. 一文读懂 Transformer 神经网络模型-腾讯云开发者社区-腾讯云
  3. Transformer 架构逐层功能介绍和详细解释 - 腾讯云
  4. 如何最简单、通俗地理解Transformer? - 知乎
  5. 【通俗易懂】大白话讲解 Transformer - 知乎

5. 训练一个大模型需要哪些步骤?

  1. 数据预处理

    • 这类似于为孩子提供学习材料。首先,我们需要将原始文本数据(例如故事、课本)转换成计算机可以理解的数字形式(向量)。这个过程类似于将一本书的内容分解成单词,并用数字表示每个单词。
  2. 定义模型

    • 这就像为孩子选择一种学习方法。我们需要确定一个模型(学习框架或策略),该模型将决定我们如何从数据中学习。例如,我们可以选择使用卷积神经网络、循环神经网络等方法来处理和学习这些数字。
  3. 训练模型

    • 这就像让孩子通过学习来提高知识水平。我们让模型(类似于孩子)查看这些数字(教材),并从中尽可能地学习和理解信息。
  4. 评估模型

    • 最后,我们需要检查模型(类似于孩子)的学习效果。我们使用一些标准(类似于考试)来检查模型的预测结果,以评估其表现.

总之,模型训练是一个复杂而关键的过程,涉及数据预处理、模型选择、参数调整、验证与测试,以及模型优化与部署等多个步骤.

References

  1. 大模型训练的过程(通俗易懂)_大模型训练过程概述-CSDN博客
  2. 大模型训练:步骤与策略探讨-百度开发者中心
  3. 大模型训练的过程(通俗易懂)_大模型训练过程概述-CSDN博客
  4. 【LLM】从零开始训练大模型 - 知乎
  5. 一篇文章让你了解大模型项目的整个研发流程 - 知乎

6. 微调一个大模型需要哪些步骤?

微调大型语言模型(LLM)是调整其参数以适应特定任务的过程。这通常通过在与任务相关的数据集上训练模型来完成。微调的量取决于任务复杂性和数据集大小。

  1. 全微调(Full Fine-tuning)

    • 对整个预训练模型进行微调,包括所有的模型参数。
    • 适用于任务和预训练模型之间存在较大差异的情况,或者任务需要模型具有高度灵活性和自适应能力的情况。
    • 需要较大的计算资源和时间,但可以获得更好的性能。
  2. 部分微调(Repurposing)

    • 在微调过程中只更新模型的顶层或少数几层,保持底层参数不变。
    • 目的是在保留预训练模型的通用知识的同时,通过微调顶层来适应特定任务。
    • 适用于目标任务与预训练模型之间有一定相似性的情况,或者任务数据集较小的情况。
  3. 微调预训练模型的方法

    • 微调所有层:适应新任务,更新整个预训练模型的所有层。
    • 微调顶层:只更新预训练模型的顶层,适应新任务。
    • 冻结底层:固定预训练模型的底层,只对顶层进行微调。
    • 逐层微调:从底层开始,逐层微调预训练模型,直到所有层都被微调。
    • 迁移学习:将预训练模型的知识迁移到新任务中,提高模型性能。
  4. Fine-tuning

    • 将预训练模型与少量特定任务数据一起继续训练。
    • 需要根据预训练语料库和任务特定语料库之间的相似性来确定Fine-tuning量。
  5. Prompt Tuning(P-tuning)

    • 固定模型前馈层参数,仅更新部分embedding参数,实现低成本微调大模型。
    • 利用输入提示或模板来指导预训练模型生成所需输出。
  6. Prefix Tuning

    • 在输入token之前构造一段任务相关的virtual tokens作为Prefix,只更新Prefix部分的参数。
    • 与全微调不同,只优化一小段可学习的continuous task-specific vector。
  • 如何选择预训练模型?
  • 有哪些常见的大型语言模型?
  • 微调需要多长时间?

References

  1. 大模型炼丹术:大模型微调的常见方法 - 知乎
  2. 微调入门篇:大模型微调的理论学习 - 哔哩哔哩
  3. 大模型微调的艺术:一个初学者和中级机器学习者的指南 ...
  4. 如何进行模型微调(Finetune) - 知乎
  5. 动手学深度学习(二十七)——微调(fine turning)-CSDN博客
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值