开源LLMs导览:工作原理、顶级LLM列表对比

2024-02-23 06:28

本文主要是介绍开源LLMs导览:工作原理、顶级LLM列表对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 一、开源 LLM 是什么意思?
  • 二、开源LLM如何工作?
    • 2.1 预训练
    • 2.2 代币化
    • 2.3 开源LLM的微调
    • 2.4 输入编码
    • 2.5 训练与优化
    • 2.6 推理
  • 三、开源LLM对组织的好处
    • 3.1 增强的数据安全和隐私
    • 3.2 节约成本
    • 3.3 减少供应商依赖性
    • 3.4 代码透明度
  • 四、哪种LLM模式最好?
    • 4.1 BERT
    • 4.2 LLaMA (Large Language Model Meta AI)
    • 4.3 Vicuna
    • 4.5 BLOOM
    • 4.6 FALCON-40B
  • 五、最后的想法
  • 参考

在当今快节奏的全球商业环境中,组织不断寻找创新的解决方案来提高运营效率并获得相对于竞争对手的竞争优势。其中一项在商业界备受关注的技术是开源大语言模型(LLM)。LLM已成为强大的工具,可以轻松改变我们与现代技术交互和处理各种任务的方式。

根据 Cutter Consortium 最近的一项调查,全球大约 34% 的组织计划将LLM纳入其运营中。[1] 这是相当令人印象深刻的,特别是当您考虑到领先科技巨头之外的许多组织几乎没有使用大型语言模型的经验时。人们对LLM(尤其是开源LLM)的浓厚兴趣是因为这些模型可以理解和生成类似人类的文本、回答问题以及执行各种其他语言处理任务。

这篇文章将深入回顾什么是开源大型语言模型、它们如何工作,以及当今可用的顶级LLM列表。

一、开源 LLM 是什么意思?

大型语言模型(LLM)基本上是指一种先进的人工智能(AI)模型,使用大量数据(主要来自互联网)进行训练,以理解和生成类似人类的文本。LLM依靠变压器模型架构等深度学习技术来处理和分析语言模式。这样,大型语言模型就能够使用自注意力机制来理解和识别各种单词和概念之间的关系。[2]

一般来说,大型语言模型(LLM)有两种类型:开源和封闭/专有。[3] 与 ChatGPT、Bard 和 GPT-3 等封闭式 LLM 不同,开源 LLM 公开其训练数据集、源代码、模型架构和权重。

这意味着任何人都可以访问、利用、修改和分发开源LLM。LLM的可访问性、可用性和透明度有助于促进人工智能 (AI) 系统的可重复性和去中心化。

二、开源LLM如何工作?

了解开源大型语言模型的工作原理对于利用其力量至关重要。也就是说,这里是有关它们如何工作的分步指南:

2.1 预训练

如上所述,开源LLM需要大量数据进行培训。事实上,大多数最先进的LLM都是使用不同的数据源进行培训的,例如书籍、网站、文章和互联网上的其他书面内容。

开源LLM通常会接受预训练,他们会接触各种未标记的文本数据。在此期间,这些模型学习预测句子中的屏蔽词,这使它们能够理解语法、语义、上下文表示和句法。这个过程可能需要几天甚至几周的时间。

2.2 代币化

在预训练期间,使用分词器对文本输入进行分词。在此阶段,文本输入被分成称为标记的较小单元。令牌可以小到单个字符,也可以长到整个单词。标记化背后的主要思想是让开源LLM能够有效地处理不常见的单词、字符和短语。通常为每个令牌分配一个唯一的数字 ID 以供后续处理。

2.3 开源LLM的微调

一旦开源LLM接受了大型数据集的培训,它就会针对特定任务进行微调。此过程涉及在较小的特定于任务的数据集上训练开源 LLM,以帮助调整其参数来执行各种任务,例如情感分析、语言翻译和文本摘要。当模型被微调时,其权重和偏差会根据所使用的特定于任务的数据集进行更新。

2.4 输入编码

在微调过程中,会对输入文本进行编码,以帮助保留各种单词和句子之间的上下文和关系。这样,机器将能够理解和识别任何给定文本中的模式以及句子的上下文。

然后,将 SEP(用于单独的文本段)和 CLS(用于分类)等特殊标记添加到编码输入中。值得注意的是,输入序列被切割成固定长度以确保样品处理的一致性。

2.5 训练与优化

在开源LLM经过微调并配备分类头后,它会在标记数据集上接受进一步的训练。该训练过程包括通过 LLM 前向传递编码文本输入、根据输入数据计算输出层的值,以及反向传播以最小化损失并使模型更加准确。在此阶段,您可以使用任何所需的优化技术,包括 RMSprop、Adam 和随机梯度下降 (SGD)。[4]

2.6 推理

使用开源大型语言模型时,您向其提供输入文本,它通过按顺序预测下一个标记来生成文本输出。此过程称为推理,可以实时执行。推理很重要,因为它们允许模型根据输入提示生成更相关和更合适的输出文本。


三、开源LLM对组织的好处

这些工具为组织提供了多种好处,包括:

3.1 增强的数据安全和隐私

开源LLM实施策略为组织提供了在自己的基础设施(本地或私有云设置)上部署模型的选项。这使组织能够完全控制其数据,并确保敏感信息保留在组织中。

3.2 节约成本

一般来说,这些LLM比闭源/专有LLM便宜得多。这主要是因为使用开源LLM需要支付许可费用。

3.3 减少供应商依赖性

当使用闭源/专有LLM时,用户越来越依赖于某一供应商的更新、持续维护和支持。然而,通过采用开源LLM,用户可以轻松地从社区贡献中受益,并依赖多个供应商的支持和更新。

3.4 代码透明度

开源LLM因其底层代码的透明度而闻名。因此,用户可以更轻松地了解某个模型的工作原理并在将其集成到现有系统之前验证其功能。


四、哪种LLM模式最好?

以下是组织可用于其数据科学和机器学习 (ML) 项目的顶级LLM精选列表:

在这里插入图片描述

4.1 BERT

BERT 是由 Google 创建的开源LLM,通常用于各种自然语言处理任务。它还可用于生成嵌入来训练其他模型。Tie LLM 的模型大小约为 3.4 亿个参数,使用庞大且多样化的数据集进行训练,该数据集包含来自维基百科、BookCorpus 和互联网其他来源的超过 33 亿个单词。

4.2 LLaMA (Large Language Model Meta AI)

LLaMA 是由 Microsoft 和 Meta AI 开发的开源LLM,其推理代码可在 GPL-3 许可下使用。[5] 这意味着用户可以研究 LLaMA 的架构并使用推理代码来运行模型,甚至生成文本输出。用户还可以对现有代码进行更改或改进并与其他用户共享。

除了理解和生成文本之外,LLaMA 还可以理解图像,这使其可用于许多多模式任务。目前,这个开源 LLM 具有三种主要模型大小,分别接受 7、13 和 700 亿个参数的训练。

4.3 Vicuna

Vicuna 是由流行的人工智能研究组织 Large Model Systems (LMSys) 开发的最先进的开源大型语言模型。这个经过微调的 LLM 基于 ShareGPT,并且表现出与 Google 的 Bard 和 OpenAI 的 ChatGPT 等闭源 LLM 相当的性能。

4.5 BLOOM

BLOOM 是 BigScience 开发的尖端多语言开源LLM。该模型使用类似于 GPT-3.5 的架构构建,非常适合促进科学合作和突破。BLOOM 拥有约 1760 亿个参数的庞大模型,在规模方面超过了许多LLM。BLOOM 的一些最佳功能包括文化敏感性、包容性语言、多语言能力和道德沟通。

4.6 FALCON-40B

Falcon-40B 是技术创新研究所的创意,根据 Apache 2.0 许可证发布,允许商业用途。顾名思义,Falcon-40B 拥有令人印象深刻的模型规模,包含 400 亿个参数,并已在 RefinedWeb 数据集的 10000 亿个 token 上进行了训练。该模型的工作原理是预测序列中的下一个单词,预计将彻底改变多项自然语言处理任务。

五、最后的想法

开源大型语言模型有可能重塑和彻底改变人工智能驱动的组织。通过鼓励透明度、协作和道德发展,开源LLM有能力建立一个更具包容性和创新性的人工智能社区。

此外,它们的适应性、多功能性和经济性使它们成为没有预算从头开始训练自己模型的组织的绝佳选择。


参考

[1] Cutter.com. Enterprises Are Keen on Adopting LLMs, But Issues Exist. URL: https://www.cutter.com/article/enterprises-are-keen-adopting-large-language-models-issues-exist. Accessed September 14, 2023
[2] Medium.com. Attention Networks: A Simple Way To Understand Self Attention. URL: https://medium.com/@geetkal67/attention-networks-a-simple-way-to-understand-self-attention-f5fb363c736d. Accessed September 14, 2023
[3] Medium.com. Types of Open Source LLMs. URL: bit.ly/3Rv3wnC. Accessed September 14, 2023
[4] Analyticsvidhya.com. Comprehensive guide on Deep Learning Optimizers. URL: https://www.analyticsvidhya.com/blog/2021/10/a-comprehensive-guide-on-deep-learning-optimizers/, Accessed September 14, 2023
[5] Fossa.com. Open Source Software Licenses 101. URL: https://bit.ly/3Ru6ybB. Accessed September 14, 2023

这篇关于开源LLMs导览:工作原理、顶级LLM列表对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/737776

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2