免费服务器建立网站装饰工程网站模板下载

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

免费服务器建立网站,装饰工程网站模板下载,wordpress hq,施工企业总工程师述职报告大模型#xff08;LLMs#xff09;进阶篇 一、什么是生成式大模型#xff1f; 生成式大模型#xff08;一般简称大模型LLMs#xff09;是指能用于创作新内容#xff0c;例如文本、图片、音频以及视频的一类深度学习模型。相比普通深度学习模型#xff0c;主要有两点不…大模型LLMs进阶篇 一、什么是生成式大模型 生成式大模型一般简称大模型LLMs是指能用于创作新内容例如文本、图片、音频以及视频的一类深度学习模型。相比普通深度学习模型主要有两点不同 模型参数量更大参数量都在Billion级别可通过条件或上下文引导产生生成式的内容所谓的prompt engineer就是由此而来。 二、大模型是怎么让生成的文本丰富而不单调的呢 从训练角度来看 基于Transformer的模型参数量巨大有助于模型学习到多样化的语言模式与结构各种模型微调技术的出现例如P-Tuning、Lora让大模型微调成本更低也可以让模型在垂直领域有更强的生成能力在训练过程中加入一些设计好的loss也可以更好地抑制模型生成单调内容 从推理角度来看 基于Transformer的模型可以通过引入各种参数与策略例如temperaturenucleus samlper来改变每次生成的内容。
三、LLMs 复读机问题 3.1 什么是 LLMs 复读机问题 LLMs 复读机问题: 字符级别重复指大模型针对一个字或一个词重复不断的生成。例如在电商翻译场景上会出现steckdose steckdose steckdose steckdose steckdose steckdose steckdose steckdose…语句级别重复大模型针对一句话重复不断的生成。例如在多模态大模型图片理解上生成的结果可能会不断重复图片的部分内容比如这是一个杯子这是一个杯子…章节级别重复多次相同的prompt输出完全相同或十分近似的内容没有一点创新性的内容。比如你让大模型给你写一篇关于春天的小作文结果发现大模型的生成结果千篇一律甚至近乎一摸一样。大模型针对不同的prompt也可能会生成类似的内容且有效信息很少、信息熵偏低。 3.2 为什么会出现 LLMs 复读机问题 数据偏差大型语言模型通常是通过预训练阶段使用大规模无标签数据进行训练的。如果训练数据中存在大量的重复文本或者某些特定的句子或短语出现频率较高模型在生成文本时可能会倾向于复制这些常见的模式。训练目标的限制大型语言模型的训练通常是基于自监督学习的方法通过预测下一个词或掩盖词来学习语言模型。这样的训练目标可能使得模型更倾向于生成与输入相似的文本导致复读机问题的出现。缺乏多样性的训练数据虽然大型语言模型可以处理大规模的数据但如果训练数据中缺乏多样性的语言表达和语境模型可能无法学习到足够的多样性和创造性导致复读机问题的出现。模型结构和参数设置大型语言模型的结构和参数设置也可能对复读机问题产生影响。例如模型的注意力机制和生成策略可能导致模型更倾向于复制输入的文本。从 induction head 机制的影响角度也就是模型会倾向于从前面已经预测的word里面挑选最匹配的词。在翻译上由于input和output的天然差异性你会发现容易出现重复的都是一些复杂度perplexity比较高的文本也就是说input的句式越不常见本身重复度越高翻译结果重复的可能性也越高。 3.3 如何缓解 LLMs 复读机问题 3.3.1 Unlikelihood Training 思路在训练中加入对重复词的抑制来减少重复输出 介绍 Unlikelihood Training Loss − ∑ i 1 N log ⁡ ( p i ) − ∑ j ∈ C log ⁡ ( 1 − p j ) \text{Unlikelihood Training Loss} -\sum_{i1}^{N} \log(pi) - \sum{j \in C} \log(1 - pj) Unlikelihood Training Loss−i1∑N​log(pi​)−j∈C∑​log(1−pj​) 其中集合 ( C ) 代表上文生成的token本身likelihood training loss是要促使模型学习到原标签中自然的语言逻辑而修改后的loss不仅要促进模型学习到真实标签的语言自然性也要通过unlikelihood loss抑制模型使其尽量不生成集合 ( C ) 中的token。一般对于生成式任务只需要在原模型基础上加入unlikelihood training进行sentence级别finetune即可不需要通过token级别的unlikelihood和likelihood loss叠加训练。如果进入叠加训练虽然会降低重复率但是句子困惑度会升高准确率会下降 token级unlikelihood training loss Unlikelihood Training Loss − ∑ i 1 N log ⁡ ( p i ) − ∑ j ∈ C log ⁡ ( 1 − p j ) \text{Unlikelihood Training Loss} -\sum{i1}^{N} \log(pi) - \sum{j \in C} \log(1 - pj) Unlikelihood Training Loss−i1∑N​log(pi​)−j∈C∑​log(1−pj​) sentence级unlikelihood training loss Unlikelihood Training Loss − ∑ i 1 N log ⁡ ( p i ) − ∑ j ∈ C log ⁡ ( 1 − p j ) \text{Unlikelihood Training Loss} -\sum{i1}^{N} \log(pi) - \sum{j \in C} \log(1 - p_j) Unlikelihood Training Loss−i1∑N​log(pi​)−j∈C∑​log(1−pj​) 各训练Loss下的重复度结果 注上图为论文中的结果其中seq-rep-4代表4-gram重复率uniq-seq代表总共出现的不同词的个数ppl代表句子困惑度acc代表句子准确性rep代表前词重复率wrep代表加权前词重复率。从这些指标中可以明显观察到unlikelihood training能降低整体生成句子的重复度。 参考NEURAL TEXT DEGENERATION WITH UNLIKELIHOOD TRAINING 3.3.2 引入噪声 在生成文本时引入一些随机性或噪声例如通过采样不同的词或短语或者引入随机的变换操作以增加生成文本的多样性。这可以通过在生成过程中对模型的输出进行采样或添加随机性来实现。 3.3.3 Repetition Penalty 思路重复性惩罚方法通过在模型推理过程中加入重复惩罚因子对原有softmax结果进行修正降低重复生成的token被选中的概率。 Repetition Penalty e x i / T I \text{Repetition Penalty} \frac{e^{x_i / T}}{I} Repetition PenaltyIexi​/T​ 其中 ( T ) 代表温度温度越高生成的句子随机性越强模型效果越不显著 ( I ) 就代表惩罚项 ( c ) 代表我们保存的一个list一般为1-gram之前出现过的单词 ( \theta ) 值一般设置为1.21.0代表没有惩罚。 重复性惩罚方法是一种简单有效的重复抑制手段因为它通过提高 ( I ) 值有效降低集合 ( c ) 中词再次被选中的概率。当然类似与unlikelihood training本方法也可以通过设置不同的 ( c ) 集合来改变惩罚的方向。该方法仅能解决1.1节中阐述的前两种重复问题无法解决输入多次相同prompt输出单调性的问题 参考CTRL: A CONDITIONAL TRANSFORMER LANGUAGE MODEL FOR CONTROLLABLE GENERATION Huggingface中model.generate已经包含此参数仅需设置repetitionpenaltypp1.0即可开启重复惩罚因子。 3.3.4 Contrastive Search 动机Contrastive Search方法是为了解决原先解码方法例如Beam Search在采用最大化生成方式解码时出现解码退化的问题即生成的文本不自然的并包含文本重复而提出的一种解决方案。 思路对比loss以及对比搜索两个创新点从模型训练和模型推理层面缓解了生成式模型重复以及单调问题。 Contrastive Loss − ∑ i 1 N log ⁡ ( p i ) − ∑ j ∈ C log ⁡ ( 1 − p j ) \text{Contrastive Loss} -\sum{i1}^{N} \log(pi) - \sum{j \in C} \log(1 - pj) Contrastive Loss−i1∑N​log(pi​)−j∈C∑​log(1−pj​) 其中对比loss通过在原loss基础上添加对比loss即对比token间相似度的方式去解决生成式模型重复单调问题公式如下 Contrastive Loss − ∑ i 1 N log ⁡ ( p i ) − ∑ j ∈ C log ⁡ ( 1 − p j ) \text{Contrastive Loss} -\sum{i1}^{N} \log(pi) - \sum{j \in C} \log(1 - p_j) Contrastive Loss−i1∑N​log(pi​)−j∈C∑​log(1−pj​) 其中 ( \cos(\cdot) ) 就是余弦相似度下图给出了训练前后token间的相似度 对比训练前后token相似度 从图上可以明显看出token间相似度降低了token间相似度降低即不同token在高维空间表征分离能有效降低模型仅生成个别重复词或字的概率。 而对比搜索方法就是在decode阶段限制相似token生成的概率大大降低生成内容重复率和单调性。 Contrastive Search e x i / T I \text{Contrastive Search} \frac{e^{x_i / T}}{I} Contrastive SearchIexi​/T​ 其中第一项就是原模型的概率后面一项可以理解成一种惩罚当前token与历史token相似度较高时就降低当前token的概率。 对比loss和对比search在训练和推理两个阶段限制生成token间的相似度有效降低了模型对一些特别常见表达的依赖让模型尝试生成不一样的表达整体上提升模型的创造性。该方法仅能解决1.1节中阐述的前两种重复问题无法解决输入多次相同prompt输出单调性的问题 参考论文地址A Contrastive Framework for Neural Text Generation Github地址https://github.com/yxuansu/SimCTG Huggingface中model.generate已经包含此参数仅需设置penalty_alphaalpha0alpha1即可开启对比Search因子alpha。 3.3.5 Beam Search 思路Beam Search是对贪心策略一种改进。思路简单就是稍微放宽考察的范围。在每一个时间步不再只保留当前分数最高的1个输出而是保留num_beams个。当num_beams1时集束搜索Beam Search就退化成了贪心搜索。Beam Search虽然本质上并没有降低重复率的操作但是该策略确实在结果上优化了部分生成结果降低了一定的重复率。 下图是一个实际的例子每个时间步有ABCDE共5种可能的输出图中的num_beams2也就是说每个时间步都会保留到当前步为止条件概率最优的2个序列。 Beam Search搜索方式 Beam search理论上仅是为了解决贪婪搜索给到的答案仅局部最优而全局搜索又在时间复杂度上不可行而提出的折中算法并不能对大模型中的任何重复问题进行修正甚至有可能增大重复概率。但从翻译的测试实验结果来看它确实在一定程度上改变了模型Softmax后的分布情况优化了输出的结果所以在部分大模型任务上能抑制重复生成问题。 注Huggingface中model.generate中已经包含此参数仅需设置num_beams2即可开启集束搜索。 3.3.6 TopK sampling TopK通过对Softmax的输出结果logit中最大的K个token采样来选择输出的token该方法存在的问题是当概率分布很极端时即模型很确定下一个token时容易造成生成错误。以下图为例TopK采样会选择最大的K个token并通过logit值对K个token进行采样相比于贪心搜索增添了随机性相当于同样的输入多次经过TopK采样生成的结果大概率不会一样。 TopK采样是一种行之有效能简单暴力的解决1.1节中提出所有重复单调问题的方案之一当然它存在的最大问题是最后生成的句子存在狗屁不通现象并不能保证句子的通顺度以及对prompt的忠诚度。 Huggingface中model.generate中已经包含此参数需设置do_sampleTrue开启采样模式同时设置top_k值top_k值默认为50。 3.3.7 Nucleus sampler Nucleus sampler俗称TopP采样一种用于解决TopK采样问题的新方法该采样方式不限制K的数目而是通过Softmax后排序token的概率当概率大于P时停止相当于当模型很确定下一个token时可采样的K也会很少减少异常错误发生的概率。以下图为例TopP采样会不断选择logit中最大概率的token放入一个list中直到list中计算的总概率大于设置的TopP值后对list中的token概率进行重新计算最终根据计算出来的概率值对list中的token进行采样。 Nucleus sampler是对简单暴力的TopK采样修改后的方法也能解决1.1节中提出所有重复单调问题相比TopK该方法生成的句子通顺度以及对prompt的忠诚度更佳一般选择它而不选择TopK。 注Huggingface中model.generate中已经包含此参数需设置do_sampleTrue开启采样模式同时设置top_p值top_p值默认为1.0。 3.3.8 Temperature 生成模型中抽样包含随机性因此每次生成时相同的prompt可能会产生不同的输出。温度是用于调整随机程度的数字。 采样时如何选择温度? 较低的温度意味着较少的随机性温度为0将始终产生相同的输出。执行具有正确答案的任务对于总结类翻译类等具有明确答案的任务较低的温度小于1更合适。如果模型开始自我重复则表明温度设置过低。高温意味着更多的随机性这可以帮助模型给出更有创意的输出。如果模型开始偏离主题或给出无意义的输出则表明温度过高。温度调整公式如下 Temperature e x i / T I \text{Temperature} \frac{e^{x_i / T}}{I} TemperatureIexi​/T​ Temperature参数就是前面介绍repetition penalty中的T参数。 提高Temperature配合上文两种采样算法可以达到生成更激进创新性回答的需求但生成句子的稳定性不可控。 Huggingface中model.generate中已经包含此参数仅需设置temperature默认为1.0。 3.3.9 No repeat ngram size 该方法是一种最暴力抑制重复的方法通过限制设置的ngram不能出现重复如果重复就选概率次大的一个来强制模型不生成重复的token。 该功能一般都会开启来保证生成的句子不犯很离谱的连续重复问题。该方法仅能解决1.1节中阐述的前两种重复问题无法解决输入多次相同prompt输出单调性的问题 Huggingface中model.generate中已经包含此参数仅需设置no_repeat_ngram_sizeN即可。 3.3.10 重复率指标检测 在2.1节的表中列出了常见重复率监测指标seq-rep-Nuniq-seqrepwrep。通过这些指标的融合可以对重复生成的结果进行一定程度的监测并在监测到异常生成结果时通过加入特殊字符修改prompt表达等形式来重新生成结果。 通过我们的测试通过切分或加入特殊字符的方式确实能让本身异常的翻译结果恢复正常但潜在风险是翻译的语序可能会出现一定的问题。对其他领域生成结果的影响有待进一步探索 3.3.11 后处理和过滤 对生成的文本进行后处理和过滤去除重复的句子或短语以提高生成文本的质量和多样性。可以使用文本相似度计算方法或规则来检测和去除重复的文本。 3.3.12 人工干预和控制 对于关键任务或敏感场景可以引入人工干预和控制机制对生成的文本进行审查和筛选确保生成结果的准确性和多样性。 四、llama 系列问题 4.1 llama 输入句子长度理论上可以无限长吗 限制在训练数据。理论上rope的llama可以处理无限长度但实际上存在一些限制和挑战。下面是一些相关的考虑因素 计算资源生成长句子需要更多的计算资源包括内存和计算时间。由于LLMs通常是基于神经网络的模型计算长句子可能会导致内存不足或计算时间过长的问题。模型训练和推理训练和推理长句子可能会面临一些挑战。在训练阶段处理长句子可能会导致梯度消失或梯度爆炸的问题影响模型的收敛性和训练效果。在推理阶段生成长句子可能会增加模型的错误率和生成时间。上下文建模LLMs是基于上下文建模的模型长句子的上下文可能会更加复杂和深层。模型需要能够捕捉长句子中的语义和语法结构以生成准确和连贯的文本。 尽管存在这些挑战研究人员和工程师们已经在不断努力改进和优化LLMs以处理更长的句子。例如可以采用分块的方式处理长句子将其分成多个较短的片段进行处理。此外还可以通过增加计算资源、优化模型结构和参数设置以及使用更高效的推理算法来提高LLMs处理长句子的能力。 五、什么情况用Bert模型什么情况用LLaMA、ChatGLM类大模型咋选 Bert的模型由多层双向的Transformer编码器组成由12层组成768隐藏单元12个head总参数量110M约1.15亿参数量。NLU自然语言理解任务效果很好单卡GPU可以部署速度快V100GPU下1秒能处理2千条以上。 ChatGLM-6B, LLaMA-7B模型分别是60亿参数量和70亿参数量的大模型基本可以处理所有NLP任务效果好但大模型部署成本高需要大显存的GPU并且预测速度慢V100都需要1秒一条。 所以建议 NLU相关的任务用BERT模型能处理的很好如实体识别、信息抽取、文本分类没必要上大模型NLG任务纯中文任务用ChatGLM-6B需要处理中英文任务用chinese-alpaca-plus-7b-hf。 六、各个专业领域是否需要各自的大模型来服务 各个专业领域通常需要各自的大模型来服务原因如下 领域特定知识不同领域拥有各自特定的知识和术语需要针对该领域进行训练的大模型才能更好地理解和处理相关文本。例如在医学领域需要训练具有医学知识的大模型以更准确地理解和生成医学文本。语言风格和惯用语各个领域通常有自己独特的语言风格和惯用语这些特点对于模型的训练和生成都很重要。专门针对某个领域进行训练的大模型可以更好地掌握该领域的语言特点生成更符合该领域要求的文本。领域需求的差异不同领域对于文本处理的需求也有所差异。例如金融领域可能更关注数字和统计数据的处理而法律领域可能更关注法律条款和案例的解析。因此为了更好地满足不同领域的需求需要专门针对各个领域进行训练的大模型。数据稀缺性某些领域的数据可能相对较少无法充分训练通用的大模型。针对特定领域进行训练的大模型可以更好地利用该领域的数据提高模型的性能和效果。 尽管需要各自的大模型来服务不同领域但也可以共享一些通用的模型和技术。例如通用的大模型可以用于处理通用的文本任务而领域特定的模型可以在通用模型的基础上进行微调和定制以适应特定领域的需求。这样可以在满足领域需求的同时减少模型的重复训练和资源消耗。 七、如何让大模型处理更长的文本 动机 目前绝大多数大模型支持的token最大长度为2048因为序列长度直接影响Attention的计算复杂度太长了会影响训练速度。 让大模型处理更长的文本方法 LongChat 就两步 step1将新的长度压缩到原来2048长度上这样的好处是能复用原来的位置信息增加长度并没有破坏position的权重。比如从2048扩展到16384长度变为原来的8倍那么值为10000的position_id被压缩成10000/81250。step2用训练Vicuna的对话语料做微调超过16k的文本被截断。 详细参考https://kaiokendev.github.io/context position等比例缩放 既然有用那后续会不会有一种新的position构造的方式无论多长都可以归一到同样的尺度下只要position的相对位置保持不变就可以其实ALiBi的方法就是一个比较简单优雅的方式可以部分解决扩展长度的问题。 商业模型比如ChatGPT和Claude到底是怎么做的 这个目前都没有公开。首先语料是不缺的所以只能是结构上的变化。但是这两个商业模型规模都是100B这个量级的这么大的参数如果只增加序列长度而不做其他优化的话很难训练起来。目前有证据的方法如下 稀疏化GPT3的论文中曾提到有这方面的尝试。Google的周彦祺在一次分享中透露GPT-4用了MoE的技术(猜测是100B16E)所以应该有类似的方法来保证在序列变长的情况下仍然能高效的训练模型。Multi-Query AttentionGoogle的PaLMFalcon等模型都用到过通过权重共享来提升性能。 真正的出路可能还是Linear Attention 将Attention的复杂度从 ( O(N^2) ) 降低为 ( O(N) )。比如Linear Transformer和RWKV。其实关于变长序列的问题历史上现成的解决方案就是RNN通过信息传递来解决。Transformer的卖点就是Attention is All your Need丢弃了RNNRWKV敢于把RNN拿回来还是很有勇气非常好的一个工作。现在的Attention就有点像历史上的MLP每个节点之间都要建立关联而MLP之后涌现了大量新的结构所以Transformer是起点后续肯定会有更合理的结构来取代它。