RetNet
一
二
三
Chinese_LLaMA2
Chinese_LLaMA2目前有一种很多人认同的观点:预训练学知识,指令微调学格式,强化学习对齐人类偏好,LIMA等论文算是这一观点的证据。(LIMA: Less Is More for Alignment这篇文章是Meta的一篇工作,作者提出了一个假设,即”大模型绝大部分知识已经在预训练阶段学习到了,因此我们只需要很少一部分精选的instructions去tuning模型,就能使得模型产生高质量的内容“,如标题所说less is more。在实验部分,作者在LLaMA-65B模型上仅仅使用1000个精心挑选的Instructions进行tuning,甚至也不用进行强化学习RLHF训练,就能达到GPT-4的效果。但是这一切的前提是预训练的大模型的参数量要足够大,预训练的数据量要足够多,像The False Promise of Imitating Proprietary LLMs这篇工作中指出的,13B的llama+100k的instruction tuning是不够的。)
为了更好地学习大语言模型,本人参考chinese-llama-alpaca-2项目,基于llama-2-7B模 ...
LLaMa2
LLAMA2:预训练+SFT+RLHF详解(官方)及对话指令SFT+LORA全流程记录(自己)
LLAMA2 训练流程:
先经过自监督学习训练,得到llama2基座模型
再经过SFT再有标签的数据上进行有监督学习训练
再进行RLHF,其中使用拒绝采样和PPO算法
在RLHF流程中,使用到由用户偏好数据训练得到的两个RM,对RLHF的模型评判,反馈训练
Pretraining预训练阶段需要大量的数据,数据的量级往往是nT级别,通过预训练可以让模型学习到大量的知识。
训练数据LLAMA2以LLAMA1中描述的预训练方法为基础,采用了optimized auto-regressive transformer。但是做了以下优化:1、进行了更鲁棒的数据清洗。2、更新了数据,使得总token数增加了40%(两万亿)。3、将上下文长度翻倍,并使用了grouped-query attention(GQA)来提高大模型推理的可扩展性。对比如下图所示:
关于GQA:在Transformer的decoder中每一个timestep都要将之前一个timestep的k,v保存到cache中,这就是KV C ...
LLM_inference_optimze
大模型推理优化方法整理
优化技术
优化原理
硬件升级
硬件的性能和特性对于模型推理速度和效率有着重要影响,通过硬件升级,大语言模型可以实现更高的推理速度。
子图融合技术
子图融合通过将计算图中的一系列操作合并为更大的操作,减少计算和内存开销,以提高推理性能。它通过优化计算流程来加速模型推理。
模型压缩技术
模型压缩技术包括稀疏化、参数剪枝、量化、知识蒸馏等方法,通过减小模型的尺寸和计算量,提高模型在推理阶段的速度和资源效率。
并行化技术
并行化技术包括数据并行化、模型并行化、管道并行等方法,利用多核 CPU、多个 GPU 或其他硬件资源,同时处理多个数据样本或模型部分,以提高推理效率。
Transformer 结构优化
Transformer 结构优化通过对 Transformer 模型的各个组件(如注意力机制、前馈网络等)进行优化,减少计算量、参数数量和内存开销,以加速推理。
动态批处理
动态批处理技术根据输入数据的长度和特性自适应地调整批处理大小,以提高计算资源的利用率,适应不同输入情况,从而提高推理性能。
硬件升级NVIDIA H100 PCIe ...
MedicalGPT_Text_Matching
医疗GPT中基于向量数据库的文本匹配任务现在在构建基于大语言模型的医疗GPT,为了一定程度上缓解幻觉问题,决定将大量医学指南存入向量数据库,然后对用户query进行embedding后送入数据库进行查询。因此这部分内容本质上来讲是一个文本匹配任务,于是本周对该任务进行了一点探索,总结成这篇博文。
文本匹配模型范式在文本匹配任务中,一般有两种范式:Representation-based和Interaction-based。Representation-based method也称双塔式模型或孪生网络,就是用一个编码器分别给两个文本编码出句向量,然后把两个向量融合送入一个浅层的分类器;Interaction-based method也就是交互式模型,就是把两个文本一起输入进编码器,在编码的过程中让它们相互交换信息,再得到最终结果。如下图:
两种方法各有优缺点:
双塔式:优点是速度会快很多,一般来说候选的句子都是已经计算好embedding的,然后直接用query的embedding跟候选embedding去计算相似度就好,计算相似度要比送入模型里面进行推理要快很多。Represent ...
ErnieHealth_CBLUE
Building Chinese Biomedical Language Models via Multi-Level Text Discrimination模型相关模型采用了ELECTRA模型的生成器-判别器架构,其中生成器被用于构造预训练信号,判别器被用作最终的目标编码器,不同点在于ELECTRA仅采用token级别的二分类来训练判别器,而该模型使用(i)更具信息量的token级别判别和(ii)序列级别判别来进行训练。模型的整体架构如下所示:
生成器生成器是一个通过MLM方法(完形填空)训练的transformer编码器。首先对于某个输入序列,生成器会先随机的生成一组位置,并将这些位置上的字符替换掉(80%替换为[MASK],10%替换成其他token,10%不变),然后被送入transformer编码器,生成上下文表示,接着使用softmax预测这些位置上原本的字符。生成器的loss是所有被替换位置的原始字符预测概率的负对数之和,因为生成器的目标是生成最能以假乱真的篡改文本。
判别器判别器也是一个transformer,它进行了两个级别的文本判别——token-level和se ...
LangChain-ChatGLM
LangChain-ChatGLM以 LLM 为基础的知识问答系统构建方法,其整体的流程如下图所示:
在整个流程中,核心在于:
将用户问题和本地知识进行 Embedding,通过向量相似度(Vector Similarity)实现召回;
通过 LLM 对用户问题进行意图识别;并对原始答案加工整合。
ChatGLM2-6BChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性:
更强大的性能:基于 ChatGLM 初代模型的开发经验,开发人员全面升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,评测结果显示,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同大小开源模型中具有较强的竞争力。
更长的上下文:基于 Flash ...
Milvus_LangChain
MilvusMilvus 是一个用于向量(Vector)存储和检索的特殊数据库,由国内的创业公司 Zilliz 开发。
所谓向量,可以看作一个长度为 N 的元组。很多 AI/ML 系统(例如推荐系统、图片相似度检测等)都有类似的需求:这些系统首先将海量数据集经过特征提取得到很多向量,使用时给定一个向量,从数据集向量中快速检索出和它最“相似”的 K 个向量。相似度的定义有多种,最常见的有余弦距离、欧几里得距离等。
为了做到这一点,最容易想到的方法就是让给定向量和所有数据库中的向量依次做比较,但显然这个做法太慢了。RDBMS 中有索引的概念,那我们能不能为向量的相似度也建立索引呢?当然是可以的!
这个问题称为向量相似度检索(vector similarity search),Facebook 开源的 Faiss 就是这样一个 C++ library,它内置了多种索引,例如 IVF_FLAT、IVF_FQ8、IVF_PQ 等(这些算法不是本文的重点)。Milvus 基于 Faiss 开发,Milvus 添加了存储组件,使之成为一个完整的数据库产品(而不仅是个 libaray),同 ...
SelfCheckGPT_Neural Path Hunter
SELFCHECKGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models大语言模型会产生幻觉并输出虚假的内容,这对于我们的医疗GPT是需要尽量杜绝的。现有的检查方法要么需要访问输出概率分布,要么需要通过单独的、复杂的接口访问外部数据库。因此在这项工作中,作者提出了一种简单的,基于采样的方法,可以以零资源的方式对黑盒模型进行事实性检查,而不需要外部数据库。其基本思想是:如果LLMs了解给定的概念,那么采样的响应应当是相似的,并且包含一致的事实信息。然而,对于幻觉的内容,随机抽样到的响应可能会彼此矛盾。
以往方法以往的工作中,大家主要从不确定性角度分析了幻觉现象产生的原因:在预训练和微调阶段,假如某个知识被多次提及,那么模型就可以记住这个知识,并在推理阶段输出具有极高可能性以及极小熵的token;相反的,如果某个知识未曾提及,那么模型就要从一个更加平坦的概率分布中采样出结果,这样的结果具有很高的不确定性,极有可能包含幻觉内容。基于这样的分析,就有了以往工作中常用的灰盒 ...
HaluEval A Large-Scale Hallucination Evaluation Benchmark for Large Language Model
HaluEval benchmark大型语言模型容易生成幻觉,即与源内容相冲突或无法通过事实知识进行验证的内容。为了了解LLM倾向于产生何种类型、何种程度的幻觉,作者构建了一个用于评估LLM在识别幻觉方面性能的大规模语言模型幻觉评估(HaluEval)benchmark,这是一个包含大量生成的、经人工注释的幻觉样本的集合。HaluEval包含35000个样本,其中一些是幻觉样本另一些是正常样本;此外,其中5000个是用户query和ChatGPT的问答对,另外30000个是任务特定的样本,包括QA、KGD以及summarization三种任务,每种任务各10000个样本。
数据集的构建有两种方式:自动生成和人类标注。两种方法的示意图如下图所示:
自动生成生成流程包含两步:多样性幻觉采样以及高质量幻觉过滤。
在多样性幻觉采样过程中,作者使用了两种方法来生成幻觉样本,第一种方法是直接输入one-pass指令(如下图)到ChatGPT中来生成幻觉回答。第二种方法是使用对话形式的指令(类似于ChatGPT的prompt creator用法),让ChatGPT逐步学习指令的某一部分,并确保其正 ...