2024 年你应该选择哪个开源大模型?

自2017年发表的论文《Attention Is All You Need》发明了Transformer架构以来,自然语言处理(NLP)取得了巨大的进展。随着2022年11月ChatGPT的发布,大型语言模型(LLM)引起了广泛关注。

你是否想在自己的用例中使用LLM,但又不想为每次使用付费?

本文将帮助你了解2024年LLM的现状,并帮助你决定选择哪种开源模型用于自己的用例。

Transformer 模型

不深入细节的话,最初的Transformer架构分为两个相互关联的部分:左侧的编码器和右侧的解码器。

编码器的任务是将输入词编码成深度向量表示。解码器的任务是生成新的词。

首先,需要将输入句子进行分词,也就是说,将单词(字符串)映射为标记(数字)。例如,单词“the”可以映射为标记342。

然后,这些标记会被转换为高维嵌入向量。在这个高维向量空间中,类似的词嵌入彼此接近。因此,我们的标记数字342被编码为一个512维的向量。

位置编码被添加到嵌入向量中,以保持句子中单词的顺序。这对自注意机制非常重要。注意力层捕捉句子中单词之间的关系。例如,句子中的动词属于主语。

最终,解码器为我们字典中的每一个标记生成输出概率值。因此,在解码器的每次迭代中,我们可以选择最有可能的下一个单词。

技术交流

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2040。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2040,备注:技术交流+CSDN

LLM的演变:当前的先进状态

Yang等人记录了现代LLM的演变过程,将模型按其架构选择以及是否开源进行分类,绘制成树状图【2】。欲了解最新版本,请访问https://github.com/JingfengYang/LLMsPracticalGuide。

自2021年以来,新的LLM大多是仅解码器的LLM。虽然微软发布了许多编码器-解码器模型,但大多数其他公司专注于仅解码器模型。

解码器仅LLM(例如,GPT-4)也被称为自回归语言模型。它们通过预测给定输入的下一个单词来进行预训练。解码器仅LLM最适合文本生成任务。


编码器-解码器模型也被称为序列到序列模型。在预训练期间,给定文本中的一些单词会被掩盖,模型必须预测被掩盖的单词。理论上,编码器-解码器LLM最适合于翻译、文本摘要和生成式问答等任务。

最近的开源模型

我已经在下表中编制了最近的一些开源Transformer模型的摘要信息。

所有这些LLM都可以下载并在本地使用。其中大部分都可以在Hugging Face的Transformers API上找到。

例如,如果你想要一个聊天机器人来回答问题,你应该选择一个已经针对指令进行了调优并且模型大小适合你的硬件的模型。

还有一些特定领域的模型,比如“Galactica”,它是在科学知识上训练的,还有“Code Llama Python”,它专门针对Python代码进行了训练。

模型大小

模型的参数数量和量化确定了模型的大小,这是使用LLM的主要限制。

一个软盘可视化存储LLM模型参数所需的内存
使用LLM时,我们必须将模型放入内存中。使用32位浮点数(FP32),1个参数需要4字节的RAM。

使用16位量化(BFLOAT16或FP16),我们可以将1个参数的内存减少到2字节。

使用8位整数(INT8),我们需要1个字节的RAM来存储1个参数。

因此,将1亿个LLM参数存储在内存中,需要约4GB的内存用于32位完整精度,2GB用于16位半精度,以及1GB用于8位精度。

例如,我的GeForce 2060显卡有6 GB的内存,可以容纳约15亿个参数@32位,或30亿个参数@16位,或60亿个参数@8位。

然而,仅加载CUDA核心就可能消耗1-2GB的内存。因此,在实践中,你不能仅用参数填满整个GPU内存。

训练LLM需要更多的GPU RAM,因为优化器状态、梯度和前向激活需要额外的内存。

选择LLM时,请查看你的GPU有多少GB的内存,然后选择一个合适的模型。使用1B参数=2GB@16位或1GB@8位作为估算标准。

结论

如果你想在自己的用例中使用LLM,但又不想为商业模型付费,你可以使用现有的开源LLM。

由于LLM仍然相对较新并且不断改进,你可能应该使用最近发布的模型。

如果可能的话,使用已经针对你特定下游任务进行了微调的模型。例如,对于问答提示,使用一个指令模型。如果不存在这样的模型,你可能需要自己微调一个基础模型。

最后,查看模型参数的数量,并将其与硬件中的RAM量进行比较,以确定是否可能加载此模型。

用通俗易懂的方式讲解系列

  • 重磅来袭!《大模型面试宝典》(2024版) 发布!

  • 重磅来袭!《大模型实战宝典》(2024版) 发布!

  • 用通俗易懂的方式讲解:不用再找了,这是大模型最全的面试题库

  • 用通俗易懂的方式讲解:这是我见过的最适合大模型小白的 PyTorch 中文课程

  • 用通俗易懂的方式讲解:一文讲透最热的大模型开发框架 LangChain

  • 用通俗易懂的方式讲解:基于 LangChain + ChatGLM搭建知识本地库

  • 用通俗易懂的方式讲解:基于大模型的知识问答系统全面总结

  • 用通俗易懂的方式讲解:ChatGLM3 基础模型多轮对话微调

  • 用通俗易懂的方式讲解:最火的大模型训练框架 DeepSpeed 详解来了

  • 用通俗易懂的方式讲解:这应该是最全的大模型训练与微调关键技术梳理

  • 用通俗易懂的方式讲解:Stable Diffusion 微调及推理优化实践指南

  • 用通俗易懂的方式讲解:大模型训练过程概述

  • 用通俗易懂的方式讲解:专补大模型短板的RAG

  • 用通俗易懂的方式讲解:大模型LLM Agent在 Text2SQL 应用上的实践

  • 用通俗易懂的方式讲解:大模型 LLM RAG在 Text2SQL 上的应用实践

  • 用通俗易懂的方式讲解:大模型微调方法总结

  • 用通俗易懂的方式讲解:涨知识了,这篇大模型 LangChain 框架与使用示例太棒了

  • 用通俗易懂的方式讲解:掌握大模型这些优化技术,优雅地进行大模型的训练和推理!

  • 用通俗易懂的方式讲解:九大最热门的开源大模型 Agent 框架来了

参考资料

  • [1] A. Vaswani et al., Attention Is All You Need (2017), arXiv:1706.03762
  • [2] J. Yang et al., Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond (2023), arXiv:2304.13712
  • [3] Hugging Face Documentation, Anatomy of Model’s Operations (2024)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过Zerossl给IP申请免费SSL证书, 实现https ip访问

参考通过Zerossl给IP申请免费SSL证书 | LogDicthttps://www.logdict.com/archives/tong-guo-zerosslgei-ipshen-qing-mian-fei-sslzheng-shu

授权调用: 介绍 Transformers 智能体 2.0

简要概述 我们推出了 Transformers 智能体 2.0! ⇒ 🎁 在现有智能体类型的基础上,我们新增了两种能够 根据历史观察解决复杂任务的智能体。 ⇒ 💡 我们致力于让代码 清晰、模块化,并确保最终提示和工具等通用属性透明化…

关于指针和数组的一些经典笔试题解析

前言 大家好,本篇博客将为大家展示一些曾经考过的关于指针的经典笔试题,里面有些题目的难度还是不小的,所以希望大家可以认真理解;如果你点开了本篇博客,麻烦各位大佬一键三连,多多支持,感谢&a…

Aws CodeCommit代码仓储库

1 创建IAM用户 IAM创建admin用户,增加AWSCodeCommitFullAccess权限 2 创建存储库 CodePipeline -> CodeCommit -> 存储库 创建存储库 3 SSH 1) window环境 3.1.1 上载SSH公有秘钥 生成SSH秘钥ID 3.1.2 编辑本地 ~/.ssh 目录中名为“config”的 SSH 配置文…

JRT连接希森美康出图

上一篇用JRT连设备实现了比较有难度的Sebia绘图设备和TCP模式连接。这次连接最常见的检验设备(西森美康),读文件和图上传出图。 视频演示 结果格式 通道对应 接口设置 接口处理实现,JRT设备连接全部采用CMD驱动方式实现&am…

The First项目报告:解读去中心化衍生品交易所AVEO

2023 年12月8日凌晨,Solana 生态 MEV 基础设施开发商 Jito Labs 开放了 JTO 空投申领窗口,JTO 的价格在开盘短暂震荡后迅速攀高,一度触及 4.94 美元。 JTO 是加密社区这两日关注的热门标的,而在这场讨论中,除 Solana …

springboot 集成 es--未完结

基于es7.10.x版本 一、前提知识 常见的两种方式:spring boot提供的API 和 ES 官方提供的API ES官方: RestHighLevelClient: 适用于复杂、更细粒度控制的Elasticsearch 操作 spring boot: ElasticsearchRestTemplate&#xff1a…

AI智能体研发之路-模型篇(四):一文入门pytorch开发

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…

C++ | Leetcode C++题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int numDistinct(string s, string t) {int m s.length(), n t.length();if (m < n) {return 0;}vector<vector<unsigned long long>> dp(m 1, vector<unsigned long long>(n 1));for (i…

[docker] docker 安全知识 - 镜像,port registry

[docker] docker 安全知识 - 镜像&#xff0c;port & registry 这是第一篇&#xff0c;安全部分还有一篇笔记就记完了 说实话&#xff0c;看完了要学的这些东西&#xff0c;感觉大多数安全问题都可以通过验证登录的合法性去解决 镜像 镜像的问题还是比较多的&#xff0…

Mybatis——入门

新建 idea 准备 数据库 create table user(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,phone varchar(11) comment 手机号 ) comment 用…

C语言 | Leetcode C语言题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; struct Node* connect(struct Node* root) {if (root NULL) {return root;}// 从根节点开始struct Node* leftmost root;while (leftmost->left ! NULL) {// 遍历这一层节点组织成的链表&#xff0c;为下一层的节点更新 next 指针stru…

调整GIF图大小的方法是什么?分享4个

调整GIF图大小的方法是什么&#xff1f;在数字化时代&#xff0c;GIF以其独特的动图魅力&#xff0c;成为了网络交流中不可或缺的一部分。无论是社交媒体、博客文章还是工作汇报&#xff0c;一个恰到好处的GIF图往往能有效吸引观众的注意&#xff0c;传递信息&#xff0c;但过大…

File类.Java

一、File类 1&#xff0c;概述&#x1f3c0;&#x1f3c0;&#x1f3c0; &#xff08;1&#xff09; java.io.File类&#xff1a;文件和文件目录路径的抽象表示形式&#xff0c;与平台无关 &#xff08;2&#xff09; File类中涉及到关于文件或文件目录的创建、删除、重命…

Golang | Leetcode Golang题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; func numDistinct(s, t string) int {m, n : len(s), len(t)if m < n {return 0}dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)dp[i][n] 1}for i : m - 1; i > 0; i-- {for j : n - 1; j > 0; j-- {if s[i] …

Linux基础 (十一):进程间通信

Linux进程间通信&#xff08;Inter-Process Communication, IPC&#xff09;是指在不同进程之间交换数据或信息的机制。由于进程间不能直接共享内存&#xff0c;Linux 提供了多种 IPC 机制来实现进程间的通信。主要为&#xff1a;管道、信号量、共享内存、消息队列、套接字。 目…

halcon 传统缺陷检测

一、电路检测 算子解释 dyn_threshold *dyn_threshold 利用局部阈值分割图像*OrigImage (input_object)&#xff1a;原始图像*ThresholdImage (input_object)&#xff1a;处理后图像&#xff08;一般采用滤波处理&#xff09;*RegionDynThresh (output_object)&#xff1…

操作系统 - 文件管理

文件管理 考纲内容 文件 文件的基本概念&#xff1b;文件元数据和索引节点(inode) 文件的操作&#xff1a;建立&#xff0c;删除&#xff0c;打开&#xff0c;关闭&#xff0c;读&#xff0c;写 文件的保护&#xff1b;文件的逻辑结构&#xff1b;文件的物理结构目录 目录的基…

英语学习笔记24——Give me/us/him/her/them some ...

Give me/us/him/her/them some … 给我/我们/他/她/他们一些…… 词汇 Vocabulary desk n. 课桌&#xff08;有书桌堂&#xff09;&#xff0c;写字台 复数&#xff1a;desks 搭配&#xff1a;desk mate 同桌    构成&#xff1a;desk mate 桌子上的伙伴 同桌    cl…

[Algorithm][动态规划][简单多状态DP问题][买卖股票的最佳时机 III][买卖股票的最佳时机 Ⅳ]详细讲解

目录 1.买卖股票的最佳时机 III1.题目链接2.算法原理详解3.代码实现 2.买卖股票的最佳时机 IV1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机 III 1.题目链接 买卖股票的最佳时机 III 2.算法原理详解 注意&#xff1a;本题为了便于初始化&#xff0c;有较多细节服…