自然语言处理
文章平均质量分 90
曼城周杰伦
行走在路上的AI工程师
展开
-
自然语言处理: 第三十一章RAG2.0
冻结模型RAG:这些在整个行业中随处可见,它们只是概念验证(POC)。半冻结模型RAG:应用智能检索器,并试图使它们以某种方式适应。不修改LLM只是操作检索器并将它们与最终输出结合。完全可训练的RAG:端到端训练相当困难,但如果做得正确,可以提供最佳性能。但是肯定非常消耗资源。原创 2024-05-06 11:19:36 · 955 阅读 · 0 评论 -
自然语言处理: RAT = CoT + RAG
Retrieval Augmented Thoughts (RAT) 是一种协同思维链 (CoT) 和检索增强生成 (RAG) 的 AI 提示策略,助力解决具有挑战性的长任务推理和生成。原创 2024-04-29 15:00:00 · 1024 阅读 · 0 评论 -
自然语言处理: 第三十章Hugging face使用指南之——trainer
原文连接:最近在用HF的transformer库自己做训练,所以用着了transformers.Trainer,这里记录下用法。原创 2024-04-29 10:00:00 · 756 阅读 · 0 评论 -
自然语言处理: 第二十九章免费的GPT网站
由于在国内,导致gpt访问很多地方不稳定。本文主要是为了给大家介绍几个白嫖GPT好用的网站,具体网址可以通过标题访问。原创 2024-04-23 19:30:00 · 2220 阅读 · 0 评论 -
自然语言处理: 第二十八章大模型基底之llama3
LLaMa系列一直是人们关注的焦点,Meta在4月18日发布了其最新大型语言模型 LLaMA 3。该模型将被集成到其虚拟助手Meta AI中。Meta自称8B和70B的LLaMA 3是当今 8B 和 70B 参数规模的最佳模型,并在推理、代码生成和指令跟踪方面有了很大进步。(对LLaMa系列有兴趣的可以看看我上一篇博客第二十一章大模型基底之llama1以及第二十二章大模型基底之llama2Llama 3 的词汇量从 Llama 128,256 的 2 个令牌增加到 32,000 个令牌。原创 2024-04-23 14:19:10 · 1383 阅读 · 0 评论 -
自然语言处理: 第二十七章LLM训练超参数
LLM微调的超参大致有如下内容,在本文中,我们针对这些参数进行解释。原创 2024-04-15 14:59:15 · 719 阅读 · 0 评论 -
自然语言处理: 第二十六章大模型基底之Mistral 8x7B
本文意在一文深度剖析Mistral 8X7B的关键改进点。Mistral AI是一个由DeepMind和Meta的三位前员工在巴黎共同创立的AI公司。其在23年9.月推出的第一个基座大模型Mistral 7B一经推出就吊打当时同参数量的任何开源7B模型,甚至在当时所有评估基准中均胜过了最好的13B参数模型-Llama 2 - 13B,并在推理、数学和代码生成方面超越了Llama 34B。更令人激动人心的是,同年12月份Mistral AI 就迅速推出了混合专家模型。原创 2024-04-15 10:00:00 · 1546 阅读 · 0 评论 -
自然语言处理: 第二十三章大模型基底之Mistral 7B
Mistral 7B作为Mistral AI公司推出的第一个基座大模型,也有很多地方借鉴了LLaMa2的闪光点也采用了GQA(分组查询注意力) 以及RoPE(旋转位置编码)–(目前似乎是标配了)。在此基础上,为了踩在LLaMa2的肩膀上更进一步,Mistral AI 使用了SWA(滑动窗口注意力机制)进一步解决了长本文的问题,如图1所示Mistral 7B的文本长度已经达到了32K(LLaMa2只有4K).图1. Mistral 7B 模型参数。原创 2024-04-08 10:00:00 · 1195 阅读 · 0 评论 -
自然语言处理: 第二十二章大模型基底之llama2
在LLaMa1的基础之上有兴趣的可以看看我上一篇博客自然语言处理: 第二十一章大模型基底之llama1。Meta 又继续推出了LLaMa2, 其分别由3个不同大小的权重模型分别是:7B,13B以及70B的版本。● 在LLaMa1的基础上,继续增加了40%的预训练数据。主要是清理了一些隐私数据和知识增强从而提高数据质量● 继续在每个block输入层中使用RMSNorm● 继续使用RoPE位置编码图1. LLaMa2网络结构原创 2024-04-04 10:00:00 · 1097 阅读 · 2 评论 -
自然语言处理:大模型LLM论文整理
LLMs 千面郎君 地址:https://github.com/km1994/LLMs_interview_notes。NLP 百面百搭 地址:https://github.com/km1994/NLP-Interview-Notes。NLP论文学习笔记:https://github.com/km1994/nlp_paper_study。推荐系统论文学习笔记:https://github.com/km1994/RS_paper_study。原创 2024-03-31 14:01:32 · 381 阅读 · 0 评论 -
自然语言处理: 第二十五章 LLM 预训练监督微调阶段 tricks
预训练和微调分别是大模型进行通用知识学习和领域自适应知识的迁移学习的过程。本文通过结合本人和一些“炼丹大神”的经验介绍微调和预训练的一些经验。原创 2024-03-31 11:08:11 · 492 阅读 · 0 评论 -
自然语言处理: 第二十四章 为什么在NLP领域中普遍用LayerNorm 而不是BatchNorm?
前面讲了架构, 其中有一个层归一化layerNorm结构,最近在看不同的大模型结构中也发现会对其优化。但是似乎在CV领域貌似批次归一化BN层用的也很多,那么这两个归一化层到底有什么区别呢?为何在NLP领域几乎都是LN层,而不用BN层呢?一、What is Normalization?Normalization:规范化或标准化,就是把输入数据X,在输送给神经元之前先对其进行平移和伸缩变换,将X的分布规范化成在固定区间范围的标准分布。原创 2024-03-30 17:42:33 · 938 阅读 · 0 评论 -
自然语言处理: 第二十一章大模型基底之llama1
LLaMA可以说是目前开源届最强的基底模型之一,有无数的商用版本是将其作为基底模型来做后续扩展或者说商用的,截至到24年3月目前META已经推出了LLaMA1 & LLaMA2 两个版本,接下来两期我会分别介绍这两个大基底模型之间的两点以及意义。本文关注LLaMA1的技术亮点,其推出了4个不同参数大小的模型分别是: 7B , 13B , 33B & 65B。在大部分的任务上,LLaMA-13B强于GPT-3(175B)。原创 2024-03-30 17:40:54 · 1060 阅读 · 0 评论 -
自然语言处理: 第二十章Dify本地部署
项目地址: difyDify 是一个 LLM 应用开发平台,已经有超过 10 万个应用基于 Dify.AI 构建。它融合了 Backend as Service 和 LLMOps 的理念,涵盖了构建生成式 AI 原生应用所需的核心技术栈,包括一个内置 RAG 引擎。使用 Dify,你可以基于任何模型自部署类似 Assistants API 和 GPTs 的能力。本地成功部署后,就可以在此基础上配置自己专属的RAG 和 agent了。建议使用linux或者macos系统,windows系统部署下,有的功能会有原创 2024-03-28 11:05:58 · 1593 阅读 · 0 评论 -
自然语言处理: 第十九章LoRA&QLoRA微调技巧
本篇文章是由位来自威斯康星大学麦迪逊分校的统计学助理教授Sebastian Raschka,也是人工智能平台Lightning AI的LLM研究员,进行了成百上千次关于LoRA的实验。他的实验日记为我们提供了宝贵的见解,包括如何节省内存、选择最佳配置等问题。他的研究回答了一些关键问题,例如是否应该用SGD取代AdamW,使用调度器的潜在价值,以及如何调整LoRA的超参数。原创 2024-03-25 14:00:00 · 1232 阅读 · 0 评论 -
自然语言处理: 第十八章微调技术之QLoRA
QLoRA是来自华盛顿大学的Tim Dettmers大神提出的模型量化算法,应用于LLM训练,降低显存需求,其足以在单个48GB显存的GPU上对LLAMA 65B进行微调,同时能保持16位全量微调的效果。1. 新定义了一种4位标准浮点数NF4(Normal Float4)的最优数据类型2. 双重量化,对普通参数和量化常数分别量化,进一步减少缓存占用3. 分页优化器(page optimizer),在显存过高时以部分内存替代显存。原创 2024-03-25 10:00:00 · 2235 阅读 · 0 评论 -
自然语言处理: 第十七章RAG的评估技术RAGAS
项目地址:上一篇文章主要介绍了,感兴趣的可以回顾下,本篇文章主要是介绍RAG技术的主流评估方法。原创 2024-03-18 12:29:39 · 1092 阅读 · 0 评论 -
自然语言处理: 第十六章RAG的优化技术
简单来说就是由LLM驱动根据不同的query 去选择索引的数据库,或者根据query 的语义相似度去配置不同的prompt。原创 2024-03-18 10:00:00 · 963 阅读 · 0 评论 -
自然语言处理: 第十五章RAG(Retrieval Augmented Generation)
论文地址:本篇文章主要是介绍Retrieval Augmented Generation下文简称RAG技术的实现原理和代码实现以及大体的改进思路(持续更新)。原创 2024-03-12 22:23:32 · 1163 阅读 · 0 评论 -
自然语言处理: 第十四章P-tuing系列之P-tuning V2
项目地址: P-Tuning论文地址: [2110.07602] P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks (arxiv.org)在上一篇第十三章P-tuing系列之P-tuning V1-CSDN博客 简单的介绍了P-tuning V1的核心思想,其核心思想主要是通过构造训练一个少量参数的prompt-encoder(lstm+mlp) 构建无真实语义信息的原创 2024-03-11 00:00:00 · 957 阅读 · 0 评论 -
自然语言处理: 第十三章P-tuing系列之P-tuning V1
项目地址: P-Tuning论文地址: [2103.10385] GPT Understands, Too (arxiv.org)正如果上一节介绍LoRA(自然语言处理: 第十二章LoRA解读_lora自然英语处理-CSDN博客)一样,本次介绍的在21年由清华团推提出来的 P-Tuning V1系列也属于PEFT(参数高效微调系列)里的一种,其核心思想就是利用在下游任务中前置添加若干个可更新参数的虚拟[tokens] 所构成的模板prompt 再输入到文本中(不同于BERT添加额外的编码器层或者任务头),从原创 2024-03-05 00:58:15 · 878 阅读 · 0 评论 -
自然语言处理: 第十四章Xinference部署
项目地址: Xorbitsai/inference正如同Xorbits Inference(Xinference)官网介绍是一个性能强大且功能全面的分布式推理框架。可用于大语言模型(LLM),语音识别模型,多模态模型等各种模型的推理。通过 Xorbits Inference,你可以轻松地一键部署你自己的模型或内置的前沿开源模型。无论你是研究者,开发者,或是数据科学家,都可以通过 Xorbits Inference 与最前沿的 AI 模型,发掘更多可能。介绍这个项目主要是为了后面在dify能够快速部署接入AP原创 2024-02-27 17:48:10 · 1599 阅读 · 0 评论 -
自然语言处理: 第十二章LoRA解读
首先看看摘要部分,作者提出如果要对GPT-3 175B参数的模型进行全量微调的成本太高了,因此lora应运而生,其主要原理就是冻结原模型的权重并且在transformer结构中注入可训练的低秩分解矩阵(其实就是做了一个低秩矩阵分解),其在Adam下的效果可以看到训练参数降低了10000倍,GPU内存节省了3倍,并且训练的效果在多个模型上都能达到全量微调的匹配的效果,除此之外,在Pytorch上集成了LoRA的包,以方便开发者使用这么看还是非常牛逼的。下面让我们来跟着论文一起走进lora的世界。原创 2023-09-11 08:00:00 · 304 阅读 · 0 评论 -
自然语言处理: 第十章GPT的API使用
所以,不同的输入会导致不同的输出(其实由于chatgpt最终生成的答案是beam_search 以及随机采样的机制,所以同样的输入也有可能得到不同的输出),换句话说GPT的使用上线完全取决于使用者的天花板。这几个shot的如同下文一样,Zero-shot(顿悟) 这种在训练的时候并没有特定的去训练一些下游任务,比如说中英互译,但是在预训练完了之后,这些大模型在看过大量的文本之后就突然顿悟了,这种没有经过特殊的学习而具备的能力就是Zero-shot。可以看到加入了prompt后,GPT的就不胡乱输出内容了。原创 2023-08-28 08:00:00 · 1165 阅读 · 1 评论 -
自然语言处理: 第十一章BERT(Bidirectional Encoder Representation from Transformers)
或者随机的用某个字去代替这个字,然后将mask后的句子全部输入给BERT,BERT是一个seq2seq的架构,它能输出一个等长的向量,然后将mask的位置输出的字与原本盖住的字得到loss,最后去做梯度下降,这个就是MLM任务的基本原理. 以BERT为代表的encoder-only的架构的预训练都是以MLM类似填空题为主的,区别于GPT的问答机制。除了上面说的类似BERT 的MLM方法去预训练一个decoder-only的架构, 也能根据类似的方法去预训练Encoder - decoder的架构。原创 2023-09-04 08:00:00 · 115 阅读 · 0 评论 -
自然语言处理: 第九章DeepSpeed的实践
这两个训练功能,EMA 和混合训练,常常被其他的开源框架所忽略,因为它们并不会妨碍训练的进行。然而,根据 InstructGPT,EMA 通常比传统的最终训练模型提供更好的响应质量,而混合训练可以帮助模型保持预训练基准解决能力。因此,我们为用户提供这些功能,以便充分获得 InstructGPT 中描述的训练体验,并争取更高的模型质量。DeepSpees正如它官网介绍的一样,它为深度学习模型提供了一站式的快速以及大规模的训练及推理框架,能在尽可能利用你手中的算力去作深度学习的应用。原创 2023-08-21 08:52:14 · 173 阅读 · 0 评论 -
自然语言处理: 第八章chatGPT的搭建
OPENAI使用的是RLHF(Reinforcement Learning human feedback),简单的理解就是他在训练的时候引入了人类的打分机制,由于GPT生成模型其每次对于同样的问题回答都不一样,而人类根据GPT的回答进行打分,然后将这个分数去训练一个回归判分模型,训练完成之后这个打分模型能根据GPT的回答自动打分。拥有了这个打分模型之后,就可以在instructGPT模型不断生成答案,通过训练好的打分模型去打分,得到的分数再去优化instructGPT 使得优化后的GPT的得分越来越高。原创 2023-08-14 10:00:00 · 1910 阅读 · 0 评论 -
自然语言处理: 第七章GPT的搭建
大模型的使用方法如下: 分解成pre-train 和fine-tuning ,其中pre-train是收集大量的高质量的文本(或者其他多模态的输入)去让模型拥有文本理解的泛化能力,而fine-tuing则是对应各自的下游任务将pre-train好的model在下游任务中作微调,从而适应不同的任务头。因此,GPT的生成式预训练如,内容如下: 输入是上文,输出是下文,并且是单向的decoder结构,所以相比于传统的transformer结构,GPT结构更加的轻量了。原创 2023-08-09 21:33:11 · 2410 阅读 · 0 评论 -
自然语言处理: 第六章Transformer- 现代大模型的基石
解码器也是由N层解码器层深度叠加实现的,其中与编码器层结构类似,但是添加了几个特别的点是编解码多头注意力 , 这里比较好理解就是因为在解码器得到自己的自注意力后,需要与编码器的输出做注意力整合, 除此之外还有一个后续位置掩码。序列生成任务中,解码器的每个实践步都依赖于前面已经生成的部分序列,在解码器中,生成的自注意力由于每次生成的内容不能关注到后续位置的注意力,换句话说就是为了防止解码器在生成当前位置实过度依赖未来的信息。由于深度学习里都是以batch为单位的作为训练的,所以需要把所有的句子都利用。原创 2023-08-04 19:07:56 · 1250 阅读 · 0 评论 -
自然语言处理: 第五章Attention注意力机制
Attention(来自2017年google发表的),顾名思义是注意力机制,字面意思就是你所关注的东西,比如我们看到一个非常非常的故事的时候,但是其实我们一般能用5W2H就能很好的归纳这个故事,所以我们在复述或者归纳一段文字的时候,我们肯定有我们所关注的点,这些关注的点就是我们的注意力,而类似How 或者when 这种不同的形式就成为了Attention里的多头的机制。原创 2023-07-18 21:47:59 · 389 阅读 · 0 评论 -
自然语言处理: 第四章Seq2Seq
开始之前,首先提出一个问题,电脑是怎么识别人类的命令的,首先人们通过输入代码(编码) ,带入输入给计算机然后再经过处理(解码)得到最终的命令。所以可以看到这其实是一个编码 + 解码的过程。可以看到首先我们将初始的信息通过编码,得到涵盖全局的信息的特征然后再经过解码器去解码从而最终得到需要得到的信息,所以借鉴于Seq2Seq模型就借鉴于这个结构出现了。原创 2023-07-02 14:17:12 · 790 阅读 · 0 评论 -
自然语言处理: 第三章NPLM(Neural Probabilistic Language Mode)
定义NPLM模型, 这里定义了一个比较简单的隐藏层为N层的LSTM 以及 GRU 网络 , 其中batch_first 设置为true的话,输出的tensor的格式为(batch , seq , feature) 反之则为输出的tensor的格式为(seq, batch , feature)。其次, voc_size的意思是词表大小, embedding_size是嵌入层的大小 , n_hidden 代表的是隐藏层的大小 , num_layers 代表的是RNN网络的层数。做inference。原创 2023-06-19 11:06:21 · 1752 阅读 · 1 评论 -
自然语言处理: 第二章Word2Vec
而在One-Hot的基础上,Word2Vec 是一种分布式表达字/词的方式,其是以一种能够刻画语义之间相似度并且纬度较低的稠密向量表示。如下图,利用Word2vec的表示的话,其在特征空间拥有相似语义的向量,距离更加接近或者说相似度更高,并且赋予了向量语义的信息, 比如 : 爸爸 - 儿子 ≈ 妈妈 - 女儿。那么Word2vec如何实现的呢?原创 2023-06-15 21:44:27 · 999 阅读 · 0 评论 -
自然语言处理: 第一章N-Gram
语言模型在wiki的定义是。原创 2023-06-08 22:58:44 · 688 阅读 · 0 评论