当前位置: 首页 > news >正文

asp公司网站外贸公司经营范围大全

asp公司网站,外贸公司经营范围大全,dw做的网站如何上传,全网最便宜的购物软件事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT#xff0c;一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界#xff0c;各大巨头也纷纷跟进发布了自家的大模型#…事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界各大巨头也纷纷跟进发布了自家的大模型如百度-文心一言、科大讯飞-星火大模型、Meta-LLama等 那么到底多大的模型算大模型呢截至目前仍没有明确的标准但从目前各家所发布的模型来看模型参数至少要在B十亿级别才能算作入门级大模型理论上还可以更大没有上限。以上只是个人理解目前还没有人对大模型进行详细的定义。 来一张图我们了解一下大模型的发展历程从图中可以看到所谓大模型家族都有同一个根elmo这一支除外即Transformer我们知道transformer由encoder-decoder两部分组成encoder部分负责编码更侧重于信息理解而decoder部分负责解码更侧重于文本生成这样在模型选型方面就会有3种不同的选型即【only-encoder】这部分以大名鼎鼎的Bert为代表、【only-decoder】这部分的代表就是我们的当红炸子鸡GPT系列、【encoder-decoder】这部分相比于其他两个部分就显得略微暗淡一些但同样也有一些相当不错的成果其中尤以T5为代表。个人理解T5更像一个过渡产品通过添加一些prefix或者prompt将几乎所有NLP任务都可以转换为Text-to-Text的任务这样就使得原本仅适合encoder的任务classification也可以使用decoder的模式来处理。 图中时间节点可以看到是从2018年开始2018年应该算是NLP领域的中兴之年这一年诞生了大名鼎鼎的Bert仅使用Transformer的Encoder部分一举革了以RNN/LSTM/GRU等为代表的老牌编码器的命。Bert确立了一种新的范式在Bert之前我们的模型是与任务强相关的一个模型绑定一个任务迁移性差。而Bert将NLP任务划分为预训练微调的两阶段模式预训练阶段使用大量的无标记数据训练一个Mask Language Model而具体的下游任务只需要少量的数据在预训练的基础上微调即可。这样带来两个好处a不需要针对专门的任务设计模型只需要在预训练模型上稍作调整即可迁移性好真的方便。b效果是真的好毕竟预训练学了那么多的知识。所以在接下来的几年内几乎所有的工作都是在围绕Bert来展看又好用又有效果谁能不爱呢如下图就是Bert家族的明星们。 Transformer解决了哪些问题 在没出现Transformer之前NLP领域几乎都是以RNN模型为主导RNN有两个比较明显的缺陷aRNN模型是一个串行模型只能一个时序一个时序的依次来处理信息后一个时序需要依赖前一个时序的输出这样就导致不能并行时序越长性能越低同时也会造成一定的信息丢失。bRNN模型是一个单向模型只能从左到右或者从右到左进行处理无法实现真正的双向编码。 Transformer摒弃了RNN的顺序编码方式完全使用注意力机制来对信息进行编码如上图所示Transformer的计算过程是完全并行的可以同时计算所有时序的注意力得分。另外Transformer是真正的双向编码如上图所示在计算input#2的注意力得分时input#2是可以同时看见input#1、input#3的且对于input#2而言input#1、input#3、甚至input#n都是同等距离的没有所谓距离的概念真正的天涯若比邻的感觉。 Tranformer的庐山真面目。 接下来我们从头更加深入的剖析一下Transformer结构以及为什么大模型都要基于Transformer架构。以及在大模型时代我们都对Transformer做了哪些调整及修改。 同样来一张图下面这张图就是我们Transformer的架构图从图中可以看出Transformer由左右两部分组成左边这部分是Encoder右边这部分就是Decoder了。Encoder负责对信息进行编码而Decoder则负责对信息解码 。下面我们从下往上对下图的每个部分进行解读。 Stage-1部分就做两件事对输入的文本进行编码、对文本位置进行编码。 Token Embedding 这部分主要是对文本进行编码其核心部分为如何切分Token。典型的做法有Sentence Piece、Word Picece、BPE、甚至UniGram切词等。切词方式没有定数个人理解切词的一个原则是在能够覆盖到你的数据集的同时词汇表尽可能的小。故对切词方式不在赘述。下面啰嗦一下如何得到Token Embedding Positional Encoding 位置编码前面我们有提到过在计算注意力的时候是没有所谓位置的概念的见图-3而对于任何一门语言单词在句子中的位置以及排列顺序是非常重要的它们不仅是一个句子的语法结构的组成部分更是表达语义的重要概念。一个单词在句子的位置或排列顺序不同可能整个句子的意思就发生了偏差比如”我喜欢你“和”你喜欢我“对于self attention来说可能会被处理为同一个意思但真实意思却不尽相同。再比如下面这句话“天上飞来一只鸟它的头上插着一支旗子地上躺着一只狗它的颜色是黑色的。”当我们在计算”鸟“的注意力分值的时候第一个“它”与第二个“它”理论上对“鸟”的贡献程度是不一样的同样若没有位置信息则这两个”它“对于”鸟“来说就会有同样的贡献度这显然是不合理的。为了消除上述这些问题Transformer里引入了Position Encoding的概念。那么如何对位置进行编码 **用整数值编辑位置。**一种很朴素的做法是按照token序列依次进行编码即0123……n。这种方式会有一些缺陷如a无法处理更长的序列外推性差。b模型的位置表示是无界的随着序列长度的增加位置值会越来越大。这种和Bert的可学习的编码方式原理一致不再赘述。 **用[0,1]范围标记位置。**为了解决整数值带来的问题我们可以考虑将范围编码限制在[0,1]之间0表示第一个token1表示最后一个token然后按照token的多少平均划分[0,1]区间这样一来我们的编码就是有界的。举个例子当有3个token时位置信息就表示为 4个token时则表示为 等以此类推。但这样同样会遇到一些问题比如当序列长度不一样时token之间的相对距离就会不同。比如当token数为3时token之间的相对值为 若token数为4时则相对值变为 1.它能为每个时间步骤输出一个独一无二的编码即编码是唯一且确定的 2.在序列长度不同的情况下不同序列中token的相对位置/距离也要保持一致 3.模型应该能毫不费力地泛化到更长的句子它的值应该是有界的 大模型时代常用的位置编码方式。 大模型时代如何编码能够获得更好的外推性显得尤为重要那么为什么要强调外推性一个很现实的原因是在随着模型不断的变大动辄几千张卡甚至几万张卡的计算资源就把绝大部分的从业者挡在了门外而我们面临的问题也越来越复杂输入越来越长。我们没办法根据不同的问题去调整模型这样就需要一个全能的基座模型它能够处理比训练长度更长的输入。以下面两种编码方式为代表。 具体操作流程如下图所示 **AliBi。**AliBi的做法相较于正弦波或RoPE编码来的简单粗暴与传统方法不同ALiBi不会向token embedding中添加position embedding取而代之的是直接将token的相对距离直接加到了AttentionScore矩阵上,比如_q_和_k_相对位置差 1 就加上一个 -1 的偏置两个 token 距离越远这个负数就越大代表他们的相互贡献越低。如下图左侧的矩阵展示了每一对query-key的注意力得分右侧的矩阵展示了每一对query-key之间的距离m是固定的参数每个注意头对应一个标量。原有注意力矩阵_A_叠加了位置偏移矩阵_B_之后为 AB_×_m Attention注意力机制 公式-5就是Self Attention的核心只要理解了这个公式也就理解了Transformer。 我们仔细看一下图-4中的Stage-2部分会发现Encoder和Decoder这部分是不太一样的Encoder这部分叫做Multi Head Attention而Decoder部分叫做Masked Multi Head Attention。多了个Masked先记下来后面我们来对这部分做解释。 在【那么为什么要提出Transformer架构】部分我们讲到了Transformer摒弃了RNN的顺序编码方式采用了一种叫做注意力机制的方法来进行编码那么什么是注意力机制如下 这个公式的输出就是注意力得分怎么来理解这个式子我们用一个例子来类比。想象一下我们在百度进行搜索的一个场景Q就相当于我们在输入框输入的关键词当我们输入关键词之后搜索引擎会根据我们的关键词与文档的相似度输出一个快照列表K就是这个快照列表每个文档与我们输入的关键词的相似度不同所以排在第一个的是搜索引擎认为最重要的文档打分就高其他依次降序排列然后你点进去阅读了这篇文章那么这篇文章的内容我们就可以类比为_V_。这是一个搜索引擎的检索过程而Attention的计算过程与搜索的过程几乎完全相同我们结合下面这张图来详细的说明一下注意力的计算过程。 Multi Head AttentionMHA 先来看一下Multi Head Attention的计算方法很清晰是吧。前面说到的Attention就是在一个头里的计算那么多头就是把这个计算多跑几次分别得到每个头的输出然后将所有的头输出进行连结最后再乘一个矩阵_WO_将输出拉回到某个维度空间Transformer里为512维如下图有8个注意力头。 为什么要使用多头注意力多头注意力机制提供了多个表示子空间每个头独享不同得_Q_KV权重矩阵这些权重矩阵每一个都是随机初始化在训练之后每个头都将输入投影到不同的表示空间多个head学习得注意力侧重点可能略微不同这样给了模型更大的容量。可以想象一下CNN中不同的滤波器分别关注着不同的特征一样。 这里说一下Multi Query AttentionMQA这也是在一些大模型中使用的对MHA进行改造的手段比如Falcon、PaLM等。MQA就是在所有的注意力头上共享_K_V提升推理性能、减少显存占用。就这么简单。 残差链接、Norm、FFN、激活函数。 在深度神经网络中当网络的深度增加时模型过拟合以及梯度消失、爆炸的问题发生的概率也会随之增加导致浅层网路参数无法更新残差链接正是为了解决这些问题Norm可以将每一层的输出通过归一化到符合某个分布可以使模型更加稳定。常见的Norm的方法有BatchNorm、LayerNorm。NLP任务中由于输入长度不一致的问题一般都是用LayerNorm来做归一化。在大模型时代很多模型都使用RMSNorm来替代LayerNorm比如LLaMA、ChatGLM等只不过大家在使用Norm的时候位置不同罢了。有些模型可能会将Norm放在残差之前LLaMA、有些可能会在残差之后ChatGLM、甚至Embedding之后甚至放在整个Transformer之后等至于哪个效果好仁者见仁。 下面是LayerNorm和RMSNorm的计算公式RMSNorm想相较于LayerNorm去除了计算均值平移的部分计算速度更快且效果与LayerNorm相当。公式如下所示。 激活函数如果非要提的话那就提一下SwiGLU在很多大模型中都有用到比如LLaMA2、ChatGLM2等扔个公式体会一下。 至此我们几乎已经聊完了Transformer的核心部分。图-4中Stage-2左部分与Stage-3右完全相同Stage-3左与Stage-4右完全相同Stage-2右部分几乎与Stage-2左部分完全相同只不过右侧部分的Attention需要掩码这是因为右侧是一个Decoder的过程而Decoder是一个从左到右的自回归的过程想象一下我们在写下一句话【今天的天很蓝】你是从左到右依次写出的这几个字当你在写“今”的时候这时候还没“天”所以“天”这个位置对于“今”这个位置的注意力应该为0以此类推。这时候就要对t1时刻做掩码。即计算t时刻的注意力分值的时候将t1时刻对t时刻的注意力设为0即可。如下图所示将查询矩阵的上三角设置为一个极小值即可不再赘述。 接下来说一下在大模型时代我们对Attention部分有哪些改造。常见的改造方法即Flash Attention Flash Attention。 3.依次迭代直至计算完毕。因整个计算全部在GPU SRAM中进行仅有个别中间值的保存需要与HBM进行交互减少了与HBM的交互提升计算性能。 预训练及微调方法 介绍完了Transformer的原理以及大模型时代针对于Transformer的每个组件都做了哪些修改。接下来我们聊一下如何训练以及如何微调大模型。 前面我们说到Bert时代将所有的NLP任务统一划分为了预训练微调两阶段预训练负责从大量无标记的数据中学习语言特征微调使用有标记的数据调整模型适应具体的下游任务。这个模式同样适用于大模型。 **预训练。**市面上绝大部分的大模型都是only-decoder的自回归模型即用前n个token预测第n1个token的值得概率。这是一个语言模型不再赘述。但也有比较特殊的比如ChatGLM如下图它既有Encoder部分也有Decoder部分。稍微复杂一点首先它会在输入中随机Mask一些span然后将Mask后的span随机的拼接在原始输入的后边。训练的时候分两步1对[S]后进行续写这部分是个Decoder的部分单向的。2对Mask掉的部分进行预测使用第1步的生成结果进行调整。从而使模型达到收敛。 总之预训练的任务就是从大量无标号得数据中学习到某些知识因为是很自然得语言模型所以不需要人工打标只要能收集到大量得文本数据就可以训练前提是算力够理论上预训练得数据越多越好。大模型时代几乎都是几十亿token的数据。 **微调Fine Tuning。**微调是为了适应具体得下游任务使用特定的有标记的数据集对模型进行进一步调整从而往模型中注入某些知识的手段。如果你有足够的资源全参数微调是个不错的选择它可以更加充分的学习到你的特定数据的特性理论上效果应该是最好的。但大模型动辄几十个G训练起来存储至少还要再翻一倍非常耗费资源。那么有没有别的方法也能往模型中注入特定域的知识呢还是有一些方法的既然全参数跑不动那么我们就调整部分参数这就是参数高效微调Parameter-Efficient Fine-Tuning这一类方法的思想。下面我们说一些几种参数高效微调的方法。 **P-Tuning。**这是一类方法prompt tuning、prefix tuning、p-tuning、p-tuning v2虽然实现不同但思路大同小异至于那个名字对应到那个方法我也记不清所以这块我们把这些放在一块来说。p-tuning这一类方法的做法是在模型原有结构上增加一部分参数比如在原输入上硬编码增加一些提示词、在原始Embedding前面拼接上一些可训练的张量等。当然这些张量的生成上也有不同有些是跟模型一起训练的、有些是专门针对这部分搞个编码器其次拼接位置也有所不同有的是拼接在Embedding上有的可能每个层都拼接。总之就是搞了一部分可学习的参数然后放在模型里面一起训练只更新这部分参数的权重从而达到往模型中注入知识的目的。来张图体验一下。这一类的方法的缺陷是会占用原有模型的一部分空间这样可能会降低原有模型能够处理的文本长度的上限。 **Adapter。**Adapter的做法是在预训练模型的某些层中间添加Adapter块如下图中间部分所示微调的时候主体模型冻结只更新Adapter块的权重由Adapter块学习特定的下游任务。每个Adapter由两个前馈层组成第一个前馈层将输入从原始维度投影到一个相对较小的维度然后再经过一层非线性转换第二个前馈层再还原到原始输入维度作为Adapter的输出与预训练其他模型进行连接。与前面提到的P-Tuning系列不同P-Tuning是在预训练模型的某些层上增加一些可训练的参数而Adapter是在预训练模型的层之间添加可训练参数。一个更形象的说法P-Tuning使模型变胖了实际上是压缩了一部分原有空间Adapter使模型变高了。Adapter的插入可以分为串行和并行两种如下图左右两图所示很好理解。 训练方式。 最后我们再聊一下在现有算力下如何训练一个大模型。大模型训练是一个复杂的任务随着模型和数据规模的增大意味着训练时间的增长。 传统的单卡训练几乎无法来完成这个事情于是就要借助于分布式训练来大规模的训练模型。分布式的思想其实也很简单总结一句话就是化繁为简、化整为零。将整个训练拆解到不同的卡上各卡之间协作来完成训练。那么如何来拆解整个训练过程大提升可以分为以下几种 **数据并行**所谓数据并行就是将样本数据切分成不同的更小的输入每张卡只需要处理更小的一部分数据最终在合并计算梯度然后将梯度分别更新到每个节点上。数据并行的前提是单卡能够吃得下整个模型。 模型并行模型并行可细分为流水线并行和张量并行。流水线并行是将模型的不同层分发到不同的机器上每个机器负责某些层的计算。比如03层由gpu0来处理、48层由gpu1来处理等最终再汇总计算梯度进行更新。张量并行相对于流水线并行切分的更细流水线并行是对层进行切分但每个层仍然是完整的分在一张卡上而张量并行是对层内进行切分将一个层切分为由多个张量组成的部分每个张量由不同的机器进行运算。如下图所示可能绿色部分在一张卡上蓝色部分在另一张卡上进行计算。 在模型训练这块也有很多现成的框架以供使用如DeepSpeed、Megatron-LM等本次介绍主要已模型框架及原理为主相关训练框架不在本次介绍范围之内后续我们再针对训练框架做一些专门的介绍。 总结 本文对大模型从原理及结构上做了简单的介绍希望能给各位在了解大模型的路上提供一些帮助。个人经验有限说的不对的地方还请及时提出宝贵的意见也可以联系本人线下讨论。下期会结合我们在财富领域训练大模型的经验写一篇偏实践的文章出来。 参考文献 1.Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 2.Fast Transformer Decoding: One Write-Head is All You Need 3.GLU Variants Improve Transformer 4.GAUSSIAN ERROR LINEAR UNITS GELUs 5.Root Mean Square Layer Normalization 6.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 7.Language Models are Few-Shot Learners 8.Attention Is All You Need 9.TRAIN SHORT, TEST LONG: ATTENTION WITH LINEAR BIASES ENABLES INPUT LENGTH EXTRAPOLATION 10.ROFORMER: ENHANCED TRANSFORMER WITH ROTARY POSITION EMBEDDING 11.GLM: General Language Model Pretraining with Autoregressive Blank Infilling 12.FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 13.Parameter-Efficient Transfer Learning for NLP 14.The Power of Scale for Parameter-Efficient Prompt Tuning 15.Prefix-Tuning: Optimizing Continuous Prompts for Generation 16.P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks 17.LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 18.Training language models to follow instructions with human feedback 19.https://spaces.ac.cn/archives/8265 作者京东科技 张新朋 来源京东云开发者社区 转载请注明来源
http://www.sadfv.cn/news/23320/

相关文章:

  • 网站建设自学 优帮云学做网站论坛会员账号
  • 网站首页版式cdn资源访问出现问题怎么办
  • 做720效果的还有哪个网站360建筑网怎么重新注册
  • 网站建设服务器是什么意思溧阳有做网站的吗
  • 网站建设单选按钮广告设计专业简历
  • 珠海十大网站建设公司排名公司注册网上核名流程
  • 文学类网站模板wordpress建站流量
  • 做网站有名的公司有哪些手机网站建设教程视频
  • 网站的排版好看欧美网站建设
  • 岳阳整站优化网站开发常见问题
  • 网站设计行业前景贵卅省住房和城乡建设厅网站
  • 无锡网站制作无锡做网站广州17做网站
  • 二手东西网站怎么做免费网站建设社区
  • 网站建设发展状况网页制作网站图片
  • 网站运行费用一般多少深圳住房城乡建设局网站
  • 外贸网站怎么换域名软件开发入门教程自学
  • iis 显示网站建设中第三方微信网站建设
  • 一般网站的建设步骤有哪些工厂拿货回家加工
  • 长沙长沙网站建设公司免费做mc皮肤网站
  • 深圳网站建设公司公司深圳市中心是哪个区
  • 广东企业网站seo哪里好聊城做网站的公司案例
  • 苏州网站建设信息网络wordpress建站需要学什么意思
  • 扬州开发区建设局网站陕西省建设厅便民服务网站
  • typecho做网站小程序用什么开发
  • 湖南省郴州市汝城县站长工具seo综合查询关键词
  • 全媒体门户网站建设装修效果图软件app哪个好
  • 推图制作网站html编辑器的程序怎么设置
  • 汉化主题做网站网站建设与开发试题与答案
  • wordpress mysql 安装厦门seo蜘蛛屯
  • 国外有哪些网站是做弱电的怎么简单做网站排名