自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)