一文讲明白初学者怎么入门大语言模型(LLM)?

news2024/10/11 18:17:52

关于如何入门LLM,大多数回答都提到了调用API、训练微调和应用。但是大模型更新迭代太快,这个月发布的大模型打榜成功,仅仅过了一个月就被其他模型超越。训练微调也已经不是难事,有大量开源的微调框架(llamafactory、firefly等),你只要懂部署,配置几个参数就能启动训练。甚至现在有大量云上项目,你根本不需要部署,直接上传数据,就能启动。

这我让想起来之前的算法工程师都被调侃成调参师,新出一个大模型,下载下来跑一遍,运行一遍AutoTokenizer.from_pretrained(model_path),对于自己理解和入门大模型没有任何意义。

对于初学者如何入门,我的建议是从一个开源大模型入手,全面了解它的运行原理以及如何应用。可以将大模型比作一辆车,我开车无需理解车是如何做的,但是车出问题了,了解原理能够帮我们快速找到其中的问题。

为了更好入门大模型,我建议按照以下顺序学习,分为编程基础准备、大模型原理理解和大模型应用三个部分。

一、编程基础准备

1.熟练Python编程语言

我一般使用numpy用于数据处理,matplotlib用于画图分析(比如分析位置编码、注意力矩阵),numpy很多函数与pytorch类似放后面讲,这里主要讲常用的matplotlib画图函数,学好matplotlib库有利于我们以可视化的角度去理解一些大模型原理。

  • plt.bar(x,y,width)

图片

举个例子,画直方图分析llama3 8B中参数分布情况,可以发现有2个峰值,分别是embedding层和最后输出logits层,两者参数量一致。

  • plt.plot(x,y,width)

在这里插入图片描述

举个例子,画点图分析llama3 8B中的位置编码RoPE。在同一位置m下,可以发现向量中的元素,在i比较小的时候变化较快,i较大的时候变化较慢。

  • plt.colorbar(x,y)

图片

举个例子,画热力图分析llama3 8B中的Attenion矩阵。我的intput为“The boy didn’t cross the street because he was too ”,要预测下一个词。观察第10行(分析注意力矩阵都是以行为单位)可以发现"he"这个toke与"boy"这个token关联度很高,而不是“street”这个token。

所以说画图很重要,深度学习本质上都是矩阵运算,单看数字看不出什么结论,需要结合画图等可视化工具分析。

2.熟悉pytorch等深度学习框架

目前主流大模型基本上都是用pytorch写的,pytorch语法太多了,下面介绍在LLM中常用的pytorch语法(排序不分先后)

(1).torch.nn.Embedding(num_embeddings, embedding_dim...)

其中num_embeddings代表词表的大小,embedding_dim代表词向量的维度。embedding.weight的size为[num_embeddings,embedding_dim]。举个例子,输入索引i,输出embedding.weight 的第 i 行。

(2).torch.matmul(x,y)x*ytorch.dot(x,y)torch.mul(x,y)之间的区别

其中torch.matmul(x,y)代表矩阵相乘torch.mul(x,y)x*y均代表矩阵对应元素相乘torch.dot(x,y)代表向量之间的点积

(3).torch.full(size, fill_value)

在这里插入图片描述

(4).torch.triu(x)

在这里插入图片描述

用于注意力机制中的mask计算

(5). torch.outer(x,y)

在这里插入图片描述

一般用于大模型位置编码计算中,比如正弦余弦位置编码、相对位置编码、 旋转位置编码等。

(6). torch.view_as_complex(x)

在这里插入图片描述

大模型位置编码有两种计算方法,一种是在实数域计算、一种是复数域计算。该函数一般用于复数域计算。

(7). torch.view_as``_real(x)

在这里插入图片描述

同上

(8). 弄清楚torch.reshape(input,shape)torch.view(input,shape)

我建议从内存分配的角度来理解reshape。无论一个张量 shape 怎么改变,它的分量在内存中的存储顺序也是不变的。

在这里插入图片描述

(9). 弄清楚torch.transpose(tensor,dim0,dim1)torch.permute(dim0, dim1, dim2, dim3)

两者均代表矩阵的转置,在二维的时候很容易想明白转置之后的情况,但是高维度的时候就糊涂了。举个例子:

在这里插入图片描述

上面这个三维数组例子,我定义为(batch,H,W),transpose(1,2)等效于长和宽转置。类似这样的例子我们已经练习过很多次了。

不过如何理解arr.transpose(0,1)?,batch和H维度转置没有物理含义。这需要借用矩阵stride概念来理解。

详解见:https://www.bilibili.com/video/BV1pN4y117rD

(10). torch.cattorch.stack的区别

(11). 以及一些常用的数学计算公式torch.rsqrttensor.powtorch.mean等等

二、大模型原理理解

整体要干什么?

简单来说通过基于Transformer架构预测下一个词出现的概率。就不放Attention is all you Need论文里的图了。我这里放一张llama3-8B的网络架构图。这个网络架构里的每一个模块,你都能手写出来,就算是大模型原理这一块入门了。

建议学习网络架构的时候带着问题去学习,不要局限于矩阵中的元素怎么乘,pytorch语法只是工具,真正需要做的是思考为什么这样做以及背后的数学含义。下面分享一下我亲身学习大模型原理中思考的一些问题,希望对大家有帮助。

在这里插入图片描述

1.自注意力机制的理解

  • 了解单头注意力机制,什么是K矩阵、V矩阵和Q矩阵,以及如下公式为什么要除

  • 分析为什么在注意力机制中要加入mask?

  • 分析attention is all you need这篇文章中的多头注意力机制(MHA),分析为什么要多头?单头注意力机制为什么不行?

  • 分析为什么要搞Grouped-query Attention(GQA),它相比MHA的好处在哪里?以及应用在哪些方面。

上面四点弄明白,对于注意力机制差不多算入门了。

2.位置编码的理解

  • Transformer架构为什么需要位置编码?它解决了常规NLP网络架构中的什么问题
  • 绝对位置编码和相对位置编码,他们各有什么优点和缺点
  • 为什么现在大模型都在用旋转位置编码RoPE?它在实数域和复数域的实现方式是怎样的?RoPE的缺点有哪些?顺带可以了解下最新的上下文位置编码CoPE。
  • 大模型为什么有Long-Context问题以及如何利用位置编码去解决长文本问题?

3.前馈网络(feed forwad)的理解

  • 为什么需要前馈网络?
  • 为什么llama3要使用SwiGLU?

4.归一化(normalization )

  • 为什么需要归一化?
  • batch normalization 、layer normalization有什么区别?为什么语言模型用layer normalization,不去用batch normalization?
  • 详细理解layer normalization中RMS Norm,分析其相比常规layer normalization的优势。

5.推理

  • 本质上每次推理都是一次吐一个字?如何加速推理?可以去了解KV Cache。
  • 句子长度参差不齐,batch推理如何补齐长度?
  • 如果最后大模型输出logits取最大值,那么大模型生成式能力从何体现?这就需要去了解temperaturetop p参数

三、大模型应用

1.微调训练

  • 大模型训练分为预训练、指令微调和人类反馈强化学习。大模型训练对于硬件要求高,平民玩家没卡,建议去了解Lora、QLora等高效微调算法。
  • 了解llamfactory、Firefly等大模型微调框架,自己做个数据集,在大模型的基础上微调子任务。
  • 如果有卡,可以尝试多卡多机跑跑模型,因为我也没什么卡,所以没法给出建议。

2.RAG

  • 思考为什么要RAG?RAG和Long Context之间是什么关系?
  • RAG分为知识库构建、知识检索和智能问答,从零实现一个最简单的RAG。教程见https://zhuanlan.zhihu.com/p/696872562
  • 在最简单RAG的基础上,学一学FaissMilvus等向量数据库,优化RAG中涉及的检索、知识存储
  • 学一学成熟的RAG框架ragflow

3.Agent

  • 从零手写一个Agent框架,见

    https://github.com/KMnO4-zx/TinyAgent

  • 学一学成熟的Agent框架langchaindify

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上 AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享 出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

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

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

相关文章

工业物联网关-系统说明

系统介绍 如下图所示,网关采集终端数据,经解析,运算,组成网络报文后上送云端服务器。从下而上分别是设备数据采集层,数据缓存计算层,云端对接层。主要功能模块包括虚拟产品、设备管理,数据缓存…

2024大模型新书《大模型基础》教材发布,开源!

我已将这本大模型资料 免费分享 出来,需要的小伙伴可以扫取。 浙江大学DAILY实验室毛玉仁研究员、高云君教授领衔撰写的《大模型基础》教材第一版付梓。本教材为开源教材,旨在为对大语言模型感兴趣的读者系统地讲解相关基础知识、介绍前沿技术。作者团…

【LLM大模型】RAG早已经过时,RAG-Fusion正当时

人工智能和自然语言处理正在以惊人的速度发展,现在比以往任何时候都更需要更好、更可靠的信息获取途径和使用方式。正如我们现在所面对的,传统系统往往难以结合丰富的上下文以最相关的方式回答我们的提问。以谷歌为例,通常需要进行多次搜索才…

性价比之王!三角型(单体式)电动采光排烟天窗

三角型(单体式)电动采光排烟天窗是一种在厂房、仓库等大型建筑屋顶上常用的通风、采光和排烟设备。一、基本概念 三角型(单体式)电动采光排烟天窗是指其窗扇与安装面形成一定角度(通常为30),整体呈“三角”形状,并通过电动装置实现开合的采光排烟天窗&am…

7. BBP 控制板首次运行步骤说明

7.1. 概述 BBP 控制板在硬件焊接安装完成之后, 就可以通过烧写器将控制程序烧写到控制板的 MCU 上, 此步骤与通常的stm32单片机程序烧写完全一致。 烧写完成在程序能够正常运行后, 还需要执行至少一次机载参数初始化工作. 在后续调试及开发过程中, 如果参数系统内容未发生改变…

让你一看就懂,Javascript的原型和原型链

自己的话: 你是否看过很多关于javascript的原型,和原型链的技术文章?但是看完后仍然是一头雾水? 没关系,希望我的这一篇文章,能让你一看就懂。 原型和原型链是JavaScript实现继承和共享属性的重要机制。…

零样本主题驱动图像生成新方法!EZIGen:在保持灵活性的同时保留主题身份!

今天给大家介绍一个零样本主题驱动图像生成方法EZIGen,它会从你提供的主体图像中提取出重要特征,就像是给图像做一个“身份识别”,确保生成的新图像能够保留主体的独特特征。接下来,EZIGen会根据你输入的文本提示,生成…

怎么高效恢复硬盘和u盘里的数据:全面指南

在数字时代,数据已成为我们生活与工作中不可或缺的一部分。无论是个人珍贵的照片、视频,还是企业至关重要的文档、项目资料,一旦硬盘或U盘中的数据丢失,都可能带来不可估量的损失。幸运的是,随着技术的发展&#xff0c…

.Net基础1

.NET框架 项目结构 Connected Services是第三方服务MVC框架appsettings.json配置文件Program.cs控制台应用程序Properties里的json文件是配置启动方式 1. 基本开发 出现这个bug是因为防火墙没有把浏览器加入白名单,可以暂时先用http启动代替 第一步创建控制器&am…

希亦超声波清洗机是智商税吗?百元级超声波清洗机旗舰机皇真相大揭秘!

在深入探讨这个问题之前,我们先来了解一下超声波清洗机的工作原理。超声波清洗机利用高频振动波,通过液体介质传递能量,产生无数微小的气泡。这些气泡在压力作用下迅速闭合,形成强大的冲击波,能够深入清洁物品表面难以…

苹果秋季盛典:iPhone 16系列引领未来科技潮流

9月10日,苹果公司在众人瞩目中举办了2024年的秋季特别活动,发布了备受期待的iPhone 16系列。 尽管网络发布会已经持续了一整年,但熬夜观看的果粉们仍然热情不减,因为每一次苹果的新品发布都代表着科技界的一次重大飞跃。 iPhone …

汽车销量预测系统

项目介绍 此项目服务于汽车经销商、汽车生产商,旨在成为用于使企业充分了解消费者诉求,预见市场未来的需求量和可能存在的销售变化趋势,合理规划产能,正确制定生产计划,实施以销定产的生产策略的交流平台,…

应对专利过期的有效方法与补救措施

专利作为创新成果的重要保护手段,在一定期限内为所有者提供了独家的权利。然而,当专利过期时,情况会变得较为复杂,需要采取不同的应对方法,以下将分别针对忘记缴纳年费以及保护期限届满这两种常见情况进行要点解析。 一…

100V调光芯片SL8701 支持PWM/模拟调光 无频闪 多路共阳 高辉度65536级

一、产品概述 SL8701是一款内置100V MOS的降压型高调光比LED恒流驱动芯片,专为智能调光调色照明研发设计。它支持多种调光方式,包括PWM调光、模拟调光等,能够实现高调光比,满足不同场景的照明需求。 二、主要特点 高效降压&…

银行流水获取方式(二)

银行流水获取方式 摘要: 本文探讨了银行流水在企业财务管理中的重要性及其获取方式。银行流水是企业财务活动的关键记录,涵盖了所有资金流动情况,对日常运营、财务管理、税务申报和审计至关重要。企业通过核对银行流水确保账务准确性&#…

软测实验:熟悉功能测试工具

实验背景:理解自动化测试原理和方法,熟悉功能测试工具的使用。 实验目的: 熟悉功能测试工具的基本使用方法熟悉功能测试的基本流程能够根据测试结果撰写测试报告 一、测试需求 自动化测试原理是通过使用自动化测试工具和脚本来模拟人工测…

python 共享内存(注册、写入、读取)

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from UI.ui_shareMmap import Ui_ShareMServiceDlg # 导入UI类 import mmapclass QMainDialog(QDialog, Ui_ShareMServiceDlg): # 修改点(UI类)def __init__(self, parentNone):…

数据库文档编写流程

在一个系统中新增一个模块,通常不是一个人能够独立完成的。这需要多个团队甚至两个组的共同合作。例如,如果我们想在设备管理系统中添加一个IT资产管理模块,领导不会简单地说:“喂,你给我加一个IT资产管理模块。”直接…

如何做独立站将产品卖到国外?从零开始打造你的全球电商帝国

近年来,跨境电商发展迅猛,为卖家提供了广阔的市场空间。相比于传统跨境电商平台模式,独立站模式拥有更大的自主权和灵活性,卖家可以打造专属的品牌形象,并根据自身需求定制营销策略。 如果你也想通过独立站将产品卖到…

在培训考试小程序页面弹出半屏的弹窗交互实践

如果在页面内进行复杂的界面设计(如在页面内弹出半屏的弹窗、在页面内加载一个全屏的子页面等),用户进行返回操作会直接离开当前页面,不符合用户预期,预期应为关闭当前弹出的组件。 为此提供“假页”容器组件page-con…