开源大模型LLM大爆发,数据竞赛已开启!如何使用FuseLLM实现大语言模型的知识融合?

开源大模型LLM大爆发,数据竞赛已开启!如何使用FuseLLM实现大语言模型的知识融合?

在这里插入图片描述

现在大多数人都知道LLM是什么,以及可以做什么。

人们讨论着它的优缺点,畅想着它的未来,

向往着真正的AGI,又有点担忧自己的命运。

围绕开源与闭源的公开辩论也吸引了广泛的受众。

在这里插入图片描述

FuseLLM的知识融合技术在实现大语言模型方面具有重要作用:

  1. 性能提升:通过融合多个不同架构和功能的开源大语言模型,FuseLLM可以显著提高目标模型的性能。融合不同模型的知识可以增强模型在推理、常识和代码生成等任务上的表现,并帮助模型产生更准确、更优质的输出。

  2. 常识补充:大语言模型通常存在知识空缺的问题,即在某些领域或主题上缺乏相关知识。通过知识融合,FuseLLM可以从多个模型中融合各种常识,并使目标模型具备更全面和丰富的知识。

  3. 灵活性增强:FuseLLM的知识融合技术可以让用户根据需求和场景选择合适的模型进行融合。这增加了模型的灵活性,允许用户根据具体任务和数据的特点选择最适合的模型组合,从而提高模型的性能和适应性。

  4. 知识扩展:通过融合多个模型的知识,FuseLLM可以在目标模型中扩展各种领域和主题的知识。这有助于模型理解更广泛的语义和语境,并提供更准确和丰富的输出。

总之,FuseLLM的知识融合技术可以提升大语言模型的性能、补充常识、增强灵活性并扩展知识范围,从而使模型更加强大和全面。

融合多个不同架构和功能的开源大语言模型可提高目标模型的性能:

  1. 综合多种特征:不同的大语言模型可能在不同特征上具有优势,例如语法、语义、常识等。融合这些模型可以综合它们的特征,使目标模型能够从多个角度理解输入文本,并更准确地推理和生成输出。

  2. 弥补模型的不足:每个大语言模型都有其局限性,例如对特定主题或任务的知识不完整、对某些方面的理解不够准确等。通过融合多个模型,可以弥补各个模型的不足之处,提高目标模型在不同领域和任务上的性能。

  3. 提供多样性和鲁棒性:融合多个模型可以增加模型的多样性,使其能够适应不同类型的输入和任务。这样可以提高模型的鲁棒性,使其在面临新的、未见过的情况下仍能产生准确和可靠的结果。

  4. 结合不同推理策略:不同的大语言模型可能采用不同的推理策略,在处理复杂任务时具有不同的优势和劣势。通过融合多个模型,可以结合它们的推理策略,使目标模型能够在不同场景下灵活地选择和应用最合适的推理方法。

融合多个不同架构和功能的开源大语言模型可以综合特征、弥补不足、提供多样性和鲁棒性,并结合不同的推理策略,从而提高目标模型在各种任务和领域上的性能。

在这里插入图片描述

2023年的LLM开源社区都发生了什么?

如何训练大语言模型?

LLM的模型架构描述了具体实现和数学形状。模型是所有参数的列表,以及参数如何与输入交互。

目前,大多数高性能的LLM都是Transformer架构的变体。

LLM的训练数据集,包含训练模型所需的所有示例和文档。

大多数情况下是文本数据(自然语言、编程语言、或者其他可表达为文本的结构化数据)。

分词器(tokenizer)定义如何将训练数据集中的文本转换为数字(因为模型本质上是一个数学函数)。

文本被切分成称为tokens的子单元(可以是单词、子单词或字符)。

分词器的词汇量通常在32k到200k之间,而数据集的大小通常以它包含的tokens数量来衡量,当今的数据集可以达到几千亿到几万亿个tokens。

然后,使用超参数定义如何训练模型——每次迭代,参数应该改变多少?模型的更新速度应该有多快?

搞定这些后,剩下的就只需要:大量的算力,以及训练过程中进行监控。

训练的过程包括实例化架构(在硬件上创建矩阵),并使用超参数在训练数据集上运行训练算法。

最终得到的结果是一组模型权重,——大家讨论的大模型就是这个东西。

这组权重可以用来推理,对新的输入预测输出、生成文本等。

上面训练好的LLM也可以在之后通过微调(fine-tuning)来适应特定任务(尤其是对于开源模型)。

微调的过程是在不同的数据集(通常更专业、更小)上对模型进行额外的训练步骤,以针对特定应用程序进行优化。

比起从头开始训练一个大模型,微调的成本显然低得多——这也是开源LLM受到大家欢迎的原因之一。

从规模竞赛到数据竞赛

直到2022年初,机器学习的趋势是模型越大,性能就越好。

而且似乎模型的大小在超过某个阈值之后,能力会得到飞跃——有两个词语用来描述这个现象:emergent abilities和scaling laws 。

2022年发布的预训练开源模型大多遵循这种范式,下面举几个例子。

BLOOM(BigScience Large Open-science Open-access Multilingual Language Model)是BigScience发布的一系列模型,由Hugging Face与法国组织GENCI和IDRIS合作,涉及来自60个国家和250个机构的1000名研究人员。这些模型使用decoder-only transformers,并进行了微小的修改。

系列中最大的模型有176B参数,使用350B的训练数据集,包括46种人类语言和13种编程语言,是迄今为止最大的开源多语言模型。

OPT(Open Pre-trained Transformer)系列模型由Meta发布,遵循GPT-3论文的技巧(特定权重初始化、预归一化),对注意力机制(交替密集和局部带状注意力层)进行了一些更改。

这个系列中最大的模型为175B,在180B的数据上进行训练,数据主要来自书籍、社交、新闻、维基百科和互联网上的其他信息。

OPT的性能与GPT-3相当,使用编码优化来降低计算密集度。

GLM-130B(通用语言模型)由清华大学和Zhipu.AI发布。它使用完整的transformer架构,并进行了一些更改(使用DeepNorm进行层后归一化、旋转嵌入)。

GLM-130B是在400B个中英文互联网数据(The Pile、Wudao Corpora和其他中文语料库)的标记上训练的,它的性能也与GPT-3相当。

此外,还有一些更小或更专业的开源LLM,主要用于研究目的。

比如Meta发布的Galactica系列;EleutherAI发布的GPT-NeoX-20B等。

尽管看起来越大的模型效果越好,但运行起来也越昂贵。

在执行推理时,模型需要加载到内存中,而100B参数的模型通常需要220GB的内存。

在2022年3月,DeepMind发表了一篇论文,研究了在给定计算预算下,用于训练的数据量与模型参数的最佳比率是多少。

换句话说,如果你只有固定的一笔钱可以花在模型训练上,那么模型大小和训练数据量应该是多少?

作者发现,总体而言,应该把更多的资源分配给训练数据。

他们自己的例子是一个叫做Chinchilla的70B模型,使用1.4T的训练数据。

2023的开源LLM

模型爆发
2023年开始,一大波模型涌现出来,每个月、每周、甚至每天都会有新的模型发布:

2月的LLaMA(Meta)、4月的Pythia(Eleuther AI)、MPT(MosaicML)、 5月的X-GEN(Salesforce)和Falcon(TIIUAE)、7月的Llama 2(Meta)、9月的Qwen(阿里巴巴)和Mistral(Mistral.AI),11月的Yi(01-ai),12月的DeciLM(Deci)、Phi-2(微软) 和SOLAR(Upstage)。

在Meta AI的LLaMA系列中,研究人员的目标是训练一组不同大小的模型,能够在给定的预算下具有最佳性能。

他们首次明确提出不仅要考虑训练预算,还要考虑推理成本,从而在更小的模型大小上达到更高的性能(权衡是训练计算效率)。

Llama 1系列中最大的模型是在1.4T数据上训练的65B参数模型,而较小的模型(6 B和13B)是在1T数据上训练的。

小型13B LLaMA模型在大多数基准测试中都优于GPT-3,而最大的LLaMA模型到达了当时的SOTA。不过,LLaMA是以非商业许可发布的,限制了社区的应用。

之后,MosaicML发布了MPT模型,具有允许商业用途的许可证,以及训练组合的细节。第一个MPT模型为7B ,随后是6月份的30B版本,均使用1T英语和代码数据进行训练。

在此之前,模型的训练数据是公开的,不过之后的模型就不再提供任何关于训练的信息,——不过最起码权重是开源的。

无处不在的对话模型
与2022年相比,2023年发布的几乎所有预训练模型都带有预训练版本和对话微调版本。

公众越来越多地使用这些聊天模型,并进行各种评估,还可以通过聊天的方式对模型进行微调。

指令微调(IFT)使用指令数据集,其中包含一组查询的提示和答案。这些数据集教会模型如何遵循指令,可以是人类的,也可以是LLM生成的。

使用LLM输出合成数据集,是完成指令和聊天微调的方法之一,通常被称为distillation ,表示从高性能模型中获取知识,来训练或微调较小的模型。

这两种方法都相对容易实现:只需要查找或生成相关数据集,然后使用与训练时相同的技术微调模型。

来自人类反馈的强化学习 (RLHF) 是一种特定方法,旨在调整模型预测的内容,与人类的喜好保持一致。

根据给定的提示,模型会生成几个可能的答案,人类对这些答案进行排名,排名用于训练所谓的偏好模型,然后使用偏好模型通过强化学习对语言模型进行微调。

这是一种成本高昂的方法,主要用于调整模型以实现安全目标。

人们之后开发了一种成本较低的变体,使用高质量的LLM对模型输出进行排名,称为来自AI反馈的强化学习 (RLAIF)。

直接偏好优化 (DPO) 是RLHF的另一种变体,但不需要训练和使用单独的偏好模型。

DPO利用人类或AI给出的排名数据集,通过查看其原始策略和最佳策略之间的差异,来直接更新模型。

这使得优化过程变得简单很多,同时实现了差不多的最终性能。

社区在做什么?
在2023年初,已经发布了一些用于教学或聊天微调的数据集。

比如在人类偏好方面,OpenAI的WebGPT数据集、Anthropic的HH-RLHF数据集和OpenAI的Summarize。

指令数据集的例子包括BigScience的Public Pool of Prompts、Google的FLAN 1和2、AllenAI的Natural Instructions、Self Instruct(由不同隶属关系的研究人员生成自动指令的框架)、SuperNatural指令(微调数据的专家创建的指令基准)、Unnatural指令等。

今年1月,中国研究人员发布了人类ChatGPT指令语料库 (HC3),包含各种问题的人类与模型答案。

3月,斯坦福大学开放了Alpaca模型,是第一个遵循指令的LLaMA模型 (7B),还包括相关的数据集(使用LLM生成的52K指令)。

LAION(一个非营利性开源实验室)发布了开放指令通才(OIG)数据集,该数据集有43M条指令,既有数据增强创建,也有从其他预先存在的数据源编译而来的指令。

同月,LMSYS组织(加州大学伯克利分校)发布了Vicuna,也是一个LLaMA微调(13B),这次使用的是聊天数据——用户与ChatGPT之间的对话,由用户自己在ShareGPT上公开分享。

4月,BAIR(伯克利人工智能研究实验室)发布了Koala,一个聊天微调的LLaMA模型,使用了之前的几个数据集(Alpaca、HH-RLHF、WebGPT、ShareGPT),

DataBricks发布了Dolly数据集,包含15K手动生成指令。

5月,清华大学发布了UltraChat,一个包含指令的1.5M对话数据集,以及UltraLLaMA,一个对该数据集的微调。

Microsoft随后发布了GPT4-LLM数据集,用于使用GPT4生成指令,

6月,Microsoft研究分享了一种新方法Orca,通过使用大型模型的推理痕迹来构建指令数据集(解释它们的分步推理),

——社区用这种方法创建了Open Orca数据集,有数百万个条目, 并被用于微调许多模型(Llama、Mistral等)。

8月,中国非营利组织OpenBMB发布了UltraLM(LLaMA的高性能聊天微调),

9月,他们发布了相关的偏好数据集UltraFeedback,这是一个由GPT4比较的输入反馈数据集(带有注释)。

另外,清华大学的一个学生团队发布了OpenChat,一个使用新的RL微调策略的LLaMA微调模型。

10月,Hugging Face发布了Zephyr,这是一款在UltraChat和UltraFeedback上使用DPO和AIF的Mistral微调,Lmsys发布了LMSYS-Chat-1M,是与25个LLM的真实用户对话。

11月,NVIDIA发布了HelpSteer,一个对齐微调数据集,根据几个标准提供提示、相关模型响应和所述答案的等级,而Microsoft Research发布了Orca-2模型,是一个在新的合成推理数据集上微调的Llama 2。

开发方式

合并:极致定制
在典型的开源方式中,社区的里程碑之一是模型或数据合并。

模型合并是一种将不同模型的权重融合到单个模型中的方法,以将每个模型的各自优势组合在一个统一的单个模型中。

最简单的方法之一,是对一组共享通用架构的模型的参数进行平均,——不过需要考虑更复杂的参数组合,例如确定哪些参数对给定任务的影响最大(加权平均),或者在合并时考虑模型之间的参数干扰(并列合并)。

这些技术允许任何人轻松生成模型组合,并且由于现在大多数模型都是同一架构的变体,因此变得特别容易。

这就是为什么一些 LLM 排行榜上的模型会有奇怪的名字(比如llama2-zephyr-orca-ultra——表示llama2和zephyr 模型的合并,在orca和ultra数据集上进行了微调) 。

PEFT:指尖的个性化
有时,你可能没有足够的内存加载整个模型,以对其进行微调。但事实上,微调时可以不需要使用整个模型。

采用参数高效微调(PEFT),首先固定住一部分的预训练模型的参数,然后在其上添加许多新参数,称为适配器。

然后,对任务进行微调的只是(轻量级)适配器权重,比原始模型要小得多。

量化:模型无处不在
性能良好的大模型在运行时需要大量的内存,比如一个30B参数的模型可能需要超过66G的RAM才能加载,大多数个人开发者都未必拥有足够的硬件资源。

一个解决方案就是量化,通过改变模型参数的精度来减小模型的大小。

在计算机中,数字以给定的精度(如float32、float16、int8等)存储。

精度既指示数字类型(是浮点数还是整数)又指示数字的存储量:float32将浮点数存储在32位的内存空间中。精度越高,数字占用的物理内存就越多。

因此,如果降低精度,则会减少每个模型参数占用的内存,从而减小模型大小,这也意味着可以减少计算的实际精度。

而这种精度的损失带来的性能下降,实际上非常有限。

从一种精度到另一种精度的方法有很多种,每种方案都有自己的优点和缺点。常用的方法包括bitsandbytes、GPTQ和AWQ。

FuseLLM:大语言模型的知识融合:

在这里插入图片描述

论文:KNOWLEDGE FUSION OF LARGE LANGUAGE MODELS
地址:https://arxiv.org/pdf/2401.10491.pdf
git: https://github.com/fanqiwan/FuseLLM

当进行LLM工作时,如果从头开始训练LLM可以生成具有不同功能和优势的模型,但这会带来巨大的成本,并可能导致冗余功能。或者使用一种具有成本效益和说服力的方法是将现有的预先训练的LLM合并到一个更有效的模型中。然而,由于已有LLM的架构各不相同,直接混合它们的权重是不切实际的。

在本文中,引入了LLM的知识融合概念,旨在将现有LLM的能力结合起来,并将其转移到单个LLM中。通过利用源LLM的生成分布,将其集体知识和独特优势外部化,从而有可能将目标模型的能力提升到任何单个源LLM之外。

动机
随着GPT和LlaMA系列等大型语言模型在各种自然语言处理任务中的不断成功,创建自己的LLM已成为企业的战略当务之急。然而,LLM开发的相关成本是天文数字。除了需要大量的训练数据、先进的技术、大量的计算资源和熟练的劳动力外,开发过程还对能源消耗和环境施加了巨大压力。

相关工作
Model Fusing: 模型融合的常见方法通常采用加权平均或多数投票来融合各种模型的预测。最近,有研究人员提出了一种集成框架,旨在利用多个开源LLM的不同优势。该框架首先采用成对比较方法来检测候选输出之间的细微区别。然后,它将排名靠前的候选人结合起来,产生更高的产出,利用它们的优势,同时减轻它们的弱点。虽然模型集成需要并行部署多个模型,但权重合并通常仅限于具有相同架构的模型。相反,本文提出的方法通过将多个LLM的知识和能力明确地转移到目标LLM,支持将多个具有不同架构的LLM融合。
Knowledge Distillation:知识蒸馏最初被提出用于模型压缩,包括在一个或多个教师模型的指导下训练学生模型。在NLP中已有较为广泛的应用。本文的方法与传统的知识蒸馏有显著的区别。首先,在传统的知识蒸馏中,学生模型通常被限制为比教师更小的尺寸。然而,在本文的场景中,目标模型的大小没有限制。其次,传统的知识蒸馏通常会导致学生模型在蒸馏后落后于教师的表现。相比之下,本文预计在融合之后,目标模型将超过任何源模型的性能。
方法

模型架构

在这里插入图片描述

上图展示了传统模型融合技术和本文的LLM知识融合方法(FUSELLM)的对比。不同的动物图标代表不同的LLM。FUSELLM能将多个LLM外部知识融合,并将它们的能力转移到目标LLM。LLM融合的主要目标是将嵌入多个源LLM中的集体知识外部化,并将其能力集成到目标LLM中。

在这里插入图片描述

上表展示了FuseLLM的算法过程,其主要实现细节依赖于token对齐和具体的融合策略。

实验
实验设置
数据集:MiniPile包含22个域中的大约100万个文档和1.8亿个token,占Llama-2的2万亿个训练标记中的不到0.1%。
融合函数:对于融合函数,本文使用最小化交叉熵。同时使用其他的替代融合函数进行消融实验。
训练细节:使用128的批量大小和配备8个NVIDIA A100 GPU的单个节点上的最大长度为2048来训练Llama-2 7B的目标LLM,每个节点有40GB的内存。训练框架是基于Huggingface Transformers实现的,并使用FlashAttention加速。本文的模型使用AdamW优化器进行优化,β1=0.9,β2=0.95,梯度裁剪设置为1.0,权重衰减为0.1。采用余弦学习率,最大学习率为1e-5,预热率为0.008。
评估:本文在三个基准上评估FuseLLM,这三个基准代表了LLM的不同核心功能,即跨越推理、常识和代码生成。

实验结果
在这里插入图片描述

上表展示了与BBH上的基线方法相比,FuseLLM的总体结果。可以观察到:

三个源LLM在27个 BBH 任务中表现出不同的性能,Llama-2通常优于其他任务。
在使用紧凑多样的语料库进行持续训练后,与Llama-2相比,Llama-2 CLM显示出1.86%的相对改进,尽管这种改进在任务之间相对温和且不一致。
平均而言,FuseLLM在所有27个任务中比原始Llama-2的平均相对性能增益为5.16%。在特定任务中,FuseLLM实现的增强是显着的。
在像Dick Languages这样的任务中,简单的连续预训练会导致性能下降,FuseLLM利用单个源LLM的组合优势来恢复性能改进。
FuseLLM偶尔会在几何形状和单词排序等任务上表现出性能下降,这可以归因于两个原因。首先,除了Llama-2之外,其他源LLM在这些任务上表现不佳,影响了融合结果。其次,连续训练数据集和下游任务之间的相关性导致性能下降。
在这里插入图片描述

上表展示了FuseLLM和Common Sense (CS)基准上基线方法的零样本性能。结果表明:

FuseLLM在所有五个任务中始终优于基线,与Llama-2相比,相对性能提1.25%。相比之下,Llama-2 CLM 表现出边际改进,与Llama-2相比,相对增强只有0.16%。
在具有挑战性的ARC-challenge(2.40%)和OpenBookQA(2.71%)任务中观察到Llama-2到FuseLLM的实质性改进,突出了FuseLLM在利用集体知识来解决复杂问题方面的有效性。

在这里插入图片描述

对于代码生成评估,FuseLLM在 MultiPL-E(ME)基准上的零样本性能如上表所示。观察到:

FuseLLM在10个任务中的9个上优于Llama-2,在特定编程语言(如R)的分数显着提高,从4.97增加到5.84。
与Llama-2相比,OpenLLaMA和MPT在代码生成任务中都表现出显着的性能,FuseLLM的融合结果平均性能增益为6.36%,远高于Llama-2 CLM中观察到的1.37%的改进。
融合概率分布
本文研究了从多个LLM获得的融合概率分布的有效性,并跟踪了训练过程中性能改进的趋势。

在这里插入图片描述
上图显示了Llama-2 CLM和FuseLLM在BBH上不同规模的训练数据下的few-shot CoT性能的比较。结果表明:

与Llama-2 CLM相比,FuseLLM将精确匹配精度提高了2.5%,并在0.52亿个token内实现了Llama-2 CLM的最佳性能。
与Llama-2 CLM所需的15.7亿token相比,这意味着token需求减少了3.9倍。
这些结果表明,从LLM导出的概率分布包含比原始文本序列更容易学习的知识,加速了优化过程。

实现过程分析
本文还对FuseLLM的关键元素进行分析包括:源LLM的数量、token对齐标准以及融合函数的选择。

在这里插入图片描述
源LLM的数量:上表给出了融合不同数量LLM的结果。随着模型数量从1增加到3,FuseLLM的性能有了明显的改进。在BBH中观察到持续的性能改进。而在CS或ME中,当融合两个模型时,优势更加突出。这一现象可能归因于三个模型在BBH中的各种任务上的性能差异很大,而CS或ME在任务上的表现差异相对较小。

在这里插入图片描述

token对齐标准:在LLM的融合过程中,确保来自多个模型的令牌和词汇表的正确对齐至关重要。上表对两种对齐标准进行了比较。很明显,所提出的基于最小编辑距离的MinED方法始终优于EM方法。后者依赖于精确匹配。导致的性能增强是由于MinED能够放松EM的约束,因为在同一序列中由不同的标记器分离的标记通常表现出微小的差异。
在这里插入图片描述
融合函数:最小交叉熵的分布矩阵和基于交叉熵的分配矩阵的加权平均。两种融合函数的比较如上表所示。在所有基准测试中,带有MinCE的FuseLLM始终优于AvgCE。这可归因于AvgCE中使用的直接加权求和所引入的失真,这可能会削弱单个LLM的独特优势。

知识融合vs.知识蒸馏

在这里插入图片描述

知识蒸馏技术也可以用来增强LLM的能力,但FuseLLM由于两个不同的方面而脱颖而出,本文从Llama-2 13B 中提取概率分布,并应用传统的知识蒸馏方法将其能力转移到Llama-2 7B中。如上表所示:

蒸馏模型在所有基准测试中都优于原始的Llama2 7B,证明了知识蒸馏的有效性。
与FuseLLM相比,Llama-2 KD实现的改进相对适中。这表明FuseLLM 通过通过连续训练集成三个具有不同架构的7B模型来实现的卓越性能超过了简单地从单个13B模型中提取知识的好处。

知识融合vs.集成/合并
本文进行了实验,模拟多个LLM来自同一个基本模型,但在不同的语料库上进行训练的场景。
在这里插入图片描述

上表结果中观察到,在使用10亿个token进行训练后,原始LLM的能力会转移到每个特定领域的LLM,导致其他领域的性能下降。虽然所有的融合技术都可以集成不同模型的优势,但FuseLLM在三个领域中始终实现最低的困惑程度。这突出了它比集合和权重合并方法更有效地利用集体知识的潜力。

总结
在这项研究中,探索了LLM的知识融合领域,以创建一个统一的模型,将多个结构不同的LLM的能力和独特优势相结合。并介绍了一种新的方法:FuseLLM,它利用这些源LLM的生成分布来外部化它们的知识,并将它们用于目标LLM的持续训练。一系列实验证明了FuseLLM相对于单个源LLM的优越性,并建立了基线。LLM融合领域成为一种更有前景的探索途径,特别是考虑到了LLM的不同结构和大量模型大小。

使用FuseLLM实现大语言模型的知识融合,可以参考以下资料:

  1. FuseLLM的GitHub页面:在GitHub上发布了FuseLLM-7B模型,并且提供了代码、模型权重和评估结果。你可以在这里找到相关的信息和实现细节。链接

  2. FuseLLM的论文:FuseLLM的论文介绍了如何通过融合多个不同架构和功能的开源大语言模型,提高目标模型在推理、常识和代码生成等方面的性能。论文中给出了代码、模型权重和数据的链接。链接

  3. FuseLLM的arXiv页面:这是FuseLLM论文的arXiv版本,提供了更详细的描述和解释。你可以在这里获取论文的最新版本和相关信息。链接

  4. FuseChat的arXiv页面:这是对FuseLLM框架的扩展,实现了聊天型大语言模型的知识融合。该论文介绍了如何将FuseLLM框架扩展到聊天模型中,进一步提升性能和灵活性。链接

以上是一些关于FuseLLM知识融合技术的参考资料。你可以详细阅读这些资料,了解如何使用FuseLLM实现大语言模型的知识融合。

使用FuseLLM实现大语言模型的知识融合,可以参考以下步骤:

  1. 下载FuseLLM代码和模型权重:你可以在FuseLLM的GitHub页面(链接)上找到相关的代码和模型权重。下载并保存到本地。

  2. 安装依赖环境:根据FuseLLM的README文件中的说明,安装所需的依赖环境。这可能包括Python版本、PyTorch等。确保你的环境满足要求。

  3. 准备数据:根据你的应用场景,准备适当的数据集。数据集可以是文本数据、常识知识库等。

  4. 运行FuseLLM:使用下载的FuseLLM代码,根据README文件中的示例,加载和融合不同的开源大语言模型。你可以根据需要选择不同的模型进行融合,以提高目标模型的性能。确保按照示例中的说明设置模型的路径、权重等。

  5. 进行知识融合:使用FuseLLM框架,将不同模型的知识融合到目标模型中。这可以包括特征融合、权重融合、推理策略融合等。根据你的需求和应用场景,进行相应的知识融合操作。

  6. 评估和优化:对融合后的模型进行评估,看看是否达到了预期的性能提升。根据评估结果,优化融合策略和参数设置,进一步提高模型的性能。

请注意,以上步骤仅为一般指导,具体实现可能因应用场景和需求而有所差异。建议你参考FuseLLM的文档和示例来获取更详细和具体的指导。

以下是一些可用于知识融合的开源大语言模型:

  1. FuseLLM: 这是一个基于ICLR’2024的研究项目,用于知识融合的大语言模型。

  2. Awesome Multimodal Large Language Models: 这个项目收集了最新的关于多模态大语言模型的论文、数据集和评估方法。

  3. Large Language Models: 这个项目提供了关于大语言模型的笔记本和学习资源。

  4. LargeLanguageModelsProjects: 这个项目包含了一些大语言模型的实际应用项目。

这些开源项目都提供了丰富的资源和代码,可以用于知识融合和相关的研究工作。

参考资料:

https://huggingface.co/blog/2023-in-llms

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415282.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NOIP 2008 普及组初赛试题及解析

NOIP 2008 普及组初赛试题及解析 一. 单项选择题 (共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。二. 问题求解(共2题,每题5分,共计10分)三. 阅读程序写结果(…

【JavaScript】手写 Promise(Promise\A+测试)

手写Promise-Promise\A测试 接下来咱们来测试一下手写Promise的代码能否通过Promise\A测试 Promise\A规范: Promise\A是社区推出的规范,其实最早Promise也是社区推出并实现的,旨在规范Promise的实现,里面约定了: 状态必须是:pending,fulfilled,rejectedthen方法的详细实现细…

ElasticSearch之suggester API

写在前面 当我们在使用搜索引擎进行的查询到时候,如果是输入错误的话,搜索引擎会给出一些搜索建议,如下: 在es中也提供了类似的功能,叫做suggester API。 1:原理和种类 原理是将查询的信息分为很多个词…

微服务Springcloud智慧工地APP源码 AI人工智能识别 支持多工地使用

目录 一、现状描述 二、行业难点 APP端功能 一、项目人员 二、视频监控 三、危大工程 四、绿色施工 五、安全隐患 AI智能识别 环境监测 实名制管理 智慧监测 智慧工地全套解决方案 一、现状描述 建筑工程建设具有明显的生产规模大宗性与生产场所固定性的特点。建…

Springboot+vue图书管理系统(小白)

图书管理系统 简介:一个最简约的图书管理系统,适用于小白用来练手 前端:VueElementUIechars 后端:SpringbootMybatisMySQL 功能模块: 信息管理:公告信息 操作日志 用户管理:用户信息 图书…

【NTN 卫星通信】基于NTN和TN的Inter-PLMN海事应用场景

1 场景概述 NTN和TN联合组网的场景,可以有多种应用方式,以下用例描述了同时使用多个卫星PLMN和一个地面5G PLMN的海事场景。 MNO-G是一家成熟的卫星PLMN运营商,运营着几颗GEO卫星。MNO-L是一个相对较新的卫星PLMN运营商,操作LEO卫…

Android布局优化之include、merge、ViewStub的使用,零基础入门android

面试了一位工作12年的程序员, 这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发。没有具体的技术点。 说实话我很期待这位老哥的面试,于是让人事邀…

STM32 Cubemx配置SPI编程(使用Flash模块)

文章目录 前言一、W25Q64模块介绍二、STM32Cubemx配置SPI三、SPI HAL库操作函数分析3.1查询方式3.2中断方式 四、Flash时序分析1.读器件ID指令2.写使能3.擦除扇区4.页编程5.读数据6.读状态寄存器 五、Flash驱动程序编写1.代码编写测试 总结 前言 本篇文章来为大家讲解一下Flas…

华为云项目部署

前端部署 将dist文件夹下的内容拷贝到/usr/local/nginx/html下 #启动脚本是在 # /usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #停止 /usr/local/nginx/sbin/nginx -s stop #重载 /usr/local/nginx/sbin/nginx -s rel…

【基于React实现共享单车管理系统】—项目简介(一)

【基于React实现共享单车管理系统】—项目简介(一) 一、项目整体架构

springboot227旅游管理系统

springboot旅游管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游管理系统就是在这样的大环境下诞生,其可以帮助使用者在…

结合CMD文件,将变量写到ROM和Falsh中

结合CMD文件,将变量写到ROM和Falsh中 RAM是一种易失性存储器,它用于临时存储计算机程序和数据。当计算机关闭或断电时,RAM中的数据将丢失。RAM具有很快的读写速度,但容量有限。 Flash是一种非易失性存储器,它可以长期存储数据而不会丢失。Flash存储器通常用于存储操作系统…

K8S部署postgresql

(作者:陈玓玏) 一、前置条件 已部署k8s,服务端版本为1.21.14 二、部署postgresql 拉取镜像,docker pull postgres,不指定版本,自动从docker hub拉取最新版本;配置configmap&…

Redis的高性能之道

前言:做码农这么多年,我也读过很多开源软件或者框架的源码,在我看来,Redis是我看过写得最优美、最像一件艺术品的软件,正如Redis之父自己说的那样,他宁愿以一个糟糕的艺术家身份而不是一名好程序员被别人记…

每日OJ题_牛客DD1 连续最大和(IO型OJ)

目录 牛客DD1 连续最大和 解析代码 牛客DD1 连续最大和 连续最大和_牛客题霸_牛客网 解析代码 #include <climits> #include <iostream> #include <vector> using namespace std; int main() {int n 0;cin >> n;vector<int> arr(n);for (in…

TypeScript学习

TypeScript 是一种基于 JavaScript 构建的强类型编程语言。 ts不是js的替代只是为了大型项目更好的扩展&#xff0c;微软编写的一个强类型的脚本。 ts中对参数&#xff0c;变量&#xff0c;返回值 都有限制&#xff0c;不像js那么随意&#xff0c;类的定义也更严格&#xff0…

vscode右键菜单栏功能说明

本文主要介绍在vscode中的python代码文件中&#xff0c;单击鼠标右键出现的菜单栏功能。部分功能可能与安装插件相关&#xff0c;主要用于个人查阅。 单击右键菜单栏如下&#xff1a; GO to xx类型命令 “Go to Definition”、“Go to Declaration”、"Go to Type Defin…

数据结构(C语言)代码实现(十)——链队列循环队列

目录 参考资料 链队列的实现 LinkQueue.h LinkQueue.cpp 测试函数test.cpp 测试结果 循环队列的实现&#xff08;最小操作子集&#xff09; 完整代码 测试结果 参考资料 数据结构严蔚敏版 链队列的实现 LinkQueue.h #pragma once #include <cstdio> #incl…

springboot之jdbc、druid、mybatis

springboot整合jdbc spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.52.3:3306/mybatis?useUnicodetrue&characterEncodingutf-8&serverTimezoneUTCusername: rootpassword: root<?xml version"1.0" encodi…

SpringBoot+Vue全栈开发-刘老师教编程(b站)(三)

vue框架快速上手 1.导入vue的脚本文件 2.声明要被vue所控制的DOM区域 3.创建vue的实例对象 1.基本用法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&…