分类目录归档:自然语言处理(NLP)

DeepSeek技术分析


Deepseek-LLM (V1-V3)系列

V1模型重点在于保障效果的前提下,探索低成本算法,在低成本情况下做Scaling Laws实验,打牢基础。延用LLAMA 2 稠密(Dense)模型的架构,使用2万亿Token的中英数据来做超参数和模型大小/数据配比的Scaling Laws实验,后训练阶段使用SFT和DPO算法,在多个维度超越LLaMa2 70B。

V2模型的模型参数比V1模型翻了3.5倍,训练数据量比V1多了4倍,基于论文H800用时推测预训练算力成本只增加一倍。训练效率提升主要是依靠MoE (Mixture-of-Experts)架构,为什么要从Dense架构变为MoE架构,

Read more

RAG优化浅谈


检索模块的调优

值得强调的是,检索模块才是RAG模块调优空间最大的部分,而并非大模型本身,尤其是项目的前期,毕竟“查的准”是大模型最终能吐出正确结果的前提条件,一旦结果查的不对,大模型预测的结果可能还不如不进行RAG,这点是应该能从大量的case分析中得发现的,早期的RAG项目,经验上大概有80%+的问题来源于检索,此时,优化检索的结果,让查询能查的准,就变得非常重要。 那么,检索模块的调优,能有哪些呢?这点其实在早期的搜索领域已经非常丰富的经验了(别只惦记着那个向量召回了),这里提供几个常用的思路:

  • 构造意图识别模块,可以是分类模型、词典,甚至是知识库检索的时候加一个阈值都可以,一方面对知

Read more

大模型 SFT 经验分享


大模型 SFT 经验分享

一、为什么大模型需要SFT?

微调作为一种技术手段,是在已具备广泛知识基础的大型预训练语言模型上,利用针对性的数据集实施额外的训练过程,旨在使模型更精准地契合特定任务需求或深入某一专业领域。微调的核心目标在于实现知识的精细化灌输与指令系统的精确匹配。当前实践中,微调通常采用以下几种策略:

二、大模型 SFT 有哪些方法?

大模型的SFT(Supervised Fine-Tuning)方式主要包括以下几种:

1.全参数微调(Full Parameter Fine Tuning):全参数微调涉及对模型的所有权重进行调整,以使其完全适应特定领域或任务。这种方法适用于拥有大量

Read more

LLM之LangChain(一)—— 六大核心模块简要汇总


2023年是LLM(大语言模型)的元年,在这一年底座大模型,微调大模型,部署大模型并驾齐驱,发展的如火如荼。然而,目前的大模型并非完美,上下文窗口有限,幻觉问题等等问题,而各大厂商的大模型的API接口、数据格式和工具难以统一,而像LangChain和LlamaIndex这样的大模型应用框架解决了大模型“最后1公里”。 之前我对LangChain比较零散的使用过,本文将对LangChain的六大核心模块中重要概念进行罗列,希望可以给读者一个更清晰更全面的应用指导。六大核心模块,如下图所示:

LangChain六大模块

一、Model I/O

1.1 模型包装器

LLM主要分为续写

Read more

ChatGLM系列模型架构


1.ChatGLM

1.1 背景

主流的预训练框架主要有三种:

autoregressive自回归模型(AR模型):代表作GPT。本质上是一个left-to-right的语言模型。通常用于生成式任务,在长文本生成方面取得了巨大的成功,比如自然语言生成(NLG)领域的任务:摘要、翻译或抽象问答。当扩展到十亿级别参数时,表现出了少样本学习能力。缺点是单向注意力机制,在NLU任务中,无法完全捕捉上下文的依赖关系。

autoencoding自编码模型(AE模型):代表作BERT。是通过某个降噪目标(比如MLM)训练的双向文本编码器。编码器会产出适用于NLU任务的上下文表示,但无法直接用于文本生成。

e

Read more

LLM预训练之RLHF(一):RLHF及其变种


在ChatGPT引领的大型语言模型时代,国内外的大模型呈现爆发式发展,尤其是以年初的LLaMA模型为首的开源大模型和最近百川智能的baichuan模型,但无一例外,都使用了「基于人类反馈的强化学习」(RLHF)来提升语言模型的性能,并在模型重注入了人类的偏好,以提高模型的有用性和安全性。不过RLHF也早已更新换代,我们以如下目录进行详细讲述RLHF及其变种:

  1. LLM的经典预训练Pipeline

  2. Llama 2中的RLHF

  3. RLHF替代方案

一、LLM的经典预训练Pipeline

目前基于Transformer decoder的LLM,比如ChatGPT、LLaMA、baichuan等

Read more

LLM指令微调综述


指令微调(IT)是提高大型语言模型(LLM)能力和可控性的关键技术。其本质是指在由(INSTRUCTION, OUTPUT)对组成的数据集上以监督的方式进一步训练LLM的过程,它弥合了LLM的下一个词预测目标与用户让LLM遵循人类指令的目标之间的差距。这篇文章对现有研究进行了系统的回顾、包括IT的一般方法、IT数据集的构建、IT模型的训练、以及不同模式,领域和应用的应用。

论文:Instruction Tuning for Large Language Models: A Survey地址:https://arxiv.org/pdf/2308.10792.pdf

背景

近年来LLMs取得了显著

Read more

开源模型对比


最近流行大模型对比

模型 训练数据 训练数据量 模型参数量 词表大小
LLaMA 以英语为主的拉丁语系,不包含中日韩文 1T/1.4T tokens 7B、13B、33B、65B 32000
ChatGLM-6B 中英双语,中英文比例为1:1 1T tokens 6B 130528
Bloom 46种自然语言和13种编程语言,包含中文 350B tokens 560M、1.1B、1.7B、3B、7.1B、176B 250880
模型 模型结构 位置编码 激活函数 layer norm
LLaMA Casual decoder RoPE SwiGLU Pre

Read more

ChatGPT分析


最近ChatGPT火出圈了,它和前阵子的Stable Diffusion(AIGC)一样成为社交媒体上人们津津乐道的话题。“ChatGPT要取代谷歌搜索了?”“ChatGPT要让程序员失业了吗?”……类似的标题又一次刺激了我们的神经。作为一名码农,我对后一个标题其实是嗤之以鼻的。无论ChatGPT是用了什么样的“魔法”,仅从目前展现的能力来看,它学会的顶多就是熟练使用编程语言的API,去实现某个函数完成人类给定的特定小任务。在真实的项目场景下,程序员通常要接过一个含糊不清的需求,梳理其中的每个细节直至形成逻辑闭环,再将其抽象成一个个特定任务并实现功能,现有AI至多能帮上最后一个小阶段;更别提真

Read more

NLP中的对抗训练


对抗训练本质是为了提高模型的鲁棒性,一般情况下在传统训练的基础上,添加了对抗训练是可以进一步提升效果的,在比赛打榜、调参时是非常重要的一个trick。对抗训练在CV领域内非常常用,那么在NLP领域如何使用呢?本文简单总结几种常用的对抗训练方法。

对抗训练旨在对原始输入样本x上施加扰动 r,得到对抗样本后用其进行训练:

公式理解: 最大化扰动:挑选一个能使得模型产生更大损失(梯度较大)的扰动量,作为攻击; 最小化损失:根据最大的扰动量,添加到输入样本后,朝着最小化含有扰动的损失(梯度下降)方向更新参数;

这个被构造出来的“对抗样本”并不能具体对应到某个单词,因此,反过来在推理阶段是没有办法通过

Read more