目录
1. 为什么需要向量数据库
1)CPU 工作原理
2)GPU 工作原理
3)二者的差异
4)总结
5)大模型的工作原理
学习
推理
1. 为什么需要向量数据库
向量数据库这一概念随着黄仁勋的演讲火爆了之后,不少的创业者以及厂商们开始纷纷投入此类项目的研发。
在研发之际,需要明白一个道理:我们为什么在大模型时代需要向量数据库,为了证实这个概念在这里给大家科普三个非常关键的知识点,帮助大家了解我们为什么在大模型时代需要向量数据库。
1)CPU 工作原理
中央处理器(Central Processing Unit,简称 CPU)是一块由超大规模集成电路组成的运算和控制核心,主要功能是运行指令和处理数据。包括逻辑运算、算术运算、控制逻辑、时钟信号、内存读写、寄存器、缓存。
运算逻辑。CPU 内部有一组运算逻辑单元 ( ALU ) , 用于执行各种逻辑运算和算术运算。ALU 可以执行加、减、乘、除等基本操作,还可以执行各种复杂的操作,如排序、查找等。
控制逻辑。控制逻辑用于控制 CPU 的执行流程。它可以根据程序的需要,控制 CPU 执行不同的指令。控制逻辑还包括中断控制器和时序控制器等组件。
时钟信号。CPU 内部有一个时钟信号,用于控制 CPU 的执行速度。时钟信号以固定的频率发送,每个时钟周期被划分为多个阶段,每个阶段用于执行不同的操作。
内存读写。CPU 可以从内存中读取数据和指令,也可以向内存中写入数据和指令。CPU 通过地址总线和数据总线来与内存进行通信。
寄存器。CPU 内部有一组寄存器,用于存储临时数据和指令。寄存器是 CPU 内部的逻辑单元,可以像内存一样读取和写入。
缓存。CPU 内部还有缓存,用于存储较快的数据和指令。缓存可以加速 CPU 的执行,提高计算机的性能。
CPU 的工作原理是通过基础的指令来完成复杂的运算逻辑,但是弊端在于 CPU 中大部分晶体管主要用于构建控制电路(象分支预测等)和 Cache,只有少部分的晶体管来完成实际的运算工作。
2)GPU 工作原理
在 GPU 出现以前,显卡和 CPU 的关系有点像 " 主仆 "。简单地说这时的显卡就是画笔,根据各种有 CPU 发出的指令和数据进行着色,材质的填充、渲染、输出等。
随着计算机的普及较早的娱乐用的都是【集成显卡】,由于大部分坐标处理的工作及光影特效需要由 CPU 亲自处理,占用了 CPU 太多的运算时间,从而造成整体画面不能非常流畅地表现出来。
例如:渲染一个复杂的三维场景,需要在一秒内处理几千万个三角形顶点和光栅化几十亿的像素。
CPU 进行各种光影运算的速度变得越来越慢,更多多边形以及特效的应用榨干了几乎所有的 CPU 性能。
于是 GPU 产生了 NVIDIA 公司在 1999 年 8 月 31 日发布 GeForce 256 图形处理芯片时首先提出 GPU 的概念。
GPU 为了高效率的处理执行矩阵运算,从而配置了大量的处理核心并行 + 专一的思路并行矩阵运算。
简而言之,GPU 的图形处理会已流水线完成如下的工作:
顶点处理。这阶段 GPU 读取描述 3D 图形外观的顶点数据并根据顶点数据确定 3D 图形的形状及位置关系,建立起 3D 图形的骨架。在支持 DX 系列规格的 GPU 中,这些工作由硬件实现的 Vertex Shader(定点着色器)完成。
光栅化计算。显示器实际显示的图像是由像素组成的,我们需要将上面生成的图形上的点和线通过一定的算法转换到相应的像素点。把一个矢量图形转换为一系列像素点的过程就称为光栅化。例如,一条数学表示的斜线段,最终被转化成阶梯状的连续像素点。
纹理帖图。顶点单元生成的多边形只构成了 3D 物体的轮廓,而纹理映射(texture mapping)工作完成对多变形表面的帖图。通俗的说,就是将多边形的表面贴上相应的图片,从而生成 " 真实 " 的图形。TMU(Texture mapping unit)即是用来完成此项工作。
像素处理。这阶段(在对每个像素进行光栅化处理期间)GPU 完成对像素的计算和处理,从而确定每个像素的最终属性。在支持 DX8 和 DX9 规格的 GPU 中,这些工作由硬件实现的 Pixel Shader(像素着色器)完成。
最终输出。由 ROP(光栅化引擎)最终完成像素的输出,1 帧渲染完毕后,被送到显存帧缓冲区。
GPU 的工作通俗的来说就是完成 3D 图形的生成,将图形映射到相应的像素点上,对每个像素进行计算确定最终颜色并完成输出。
3)二者的差异
多线程机制
GPU 的执行速度很快,但是当运行从内存中获取纹理数据这样的指令时(由于内存访问是瓶颈,此操作比较缓慢),整个流水线便出现长时间停顿。在 CPU 内部,使用多级 Cache 来提高访问内存的速度。GPU 中也使用 Cache,不过 Cache 命中率不高,只用 Cache 解决不了这个问题。
所以,为了保持流水线保持忙碌,GPU 的设计者使用了多线程机制 ( multi-threading ) 。当像素着色器针对某个像素的线程 A 遇到存取纹理的指令时,GPU 会马上切换到另外一个线程 B,对另一个像素进行处理。等到纹理从内存中取回时,可再切换到线程 A。
4)总结
从设计目的,工作原理,任务执行效率,应用领域来看二者的区别简单做一个总结。
设计目的:CPU 的设计目的是处理数据和执行指令,主要用于计算和控制计算机的运行。GPU 的设计目的是处理图形和视频数据,主要用于游戏、视频处理和科学计算等领域。
工作原理:CPU 和 GPU 的工作原理不同。CPU 是基于逻辑运算和算术运算的处理器,主要依靠内部缓存和寄存器来存储和处理数据。GPU 则是基于图形渲染和计算的处理器,主要依靠内部图形缓存和寄存器来存储和处理数据。
执行效率:在执行效率方面,CPU 往往比 GPU 更快。因为 CPU 的设计目的是处理大量数据和执行复杂计算,所以它的内部缓存和寄存器容量较大,可以同时处理多个数据。而 GPU 的设计目的是处理图形和视频数据,所以它的图形缓存和寄存器容量较大,更适合处理单个数据。
应用领域:CPU 主要用于计算和控制计算机的运行,如办公文档处理、网页浏览和简单游戏等。GPU 主要用于图形和视频处理,如游戏、视频渲染和科学计算等。
GPU 对比 CPU 就相当于是为了完成某件事情单独训练了一个特种兵团,而 CPU 是单兵作战所有 GPU 完成的又快又好。
现在 CPU 的技术进步正在慢于摩尔定律,而 GPU(视频卡上的图形处理器)的运行速度已超过摩尔定律,每 6 个月其性能加倍。
5)大模型的工作原理
科普完 CPU 与 GPU 接下来我们看一下,什么的大模型的工作原理,其实逻辑非常的简单只分为两个模块【学习】+【推理】。
学习
首先进入一个生活场景,人的大脑在看见任何物体时首先要:眼睛看到先感知,分析这个过程传给大脑处理成像识别,然后大脑给出相应的指令,将大脑的工作过程抽象成一个盒子,接受输入完成任务后输出结果这个过程就是模型。
所以现在的人工智能网络结果都是在模拟人工神经网络方法。
假设我们以 4 层网络模型为例子来进行一个数字识别的模拟实验。
假设一个手写数字 9 是由 28*28 的像素组成的,将其作为输入层展开,中间需要加上两层中间层来完成模型架构的设计最后一层为输出层。
该模型的计算原理是关键,首先在输入层的每个节点都会作为输入对每个输入都会 经过一次计算。
模型中的节点越多参数也就越多模型也就越复杂,所以参数数量 = 模型规模。
在模型训练时需要大量的多模态数据收集通过反复调整模型的参数来让模型进行反复的推理和学习,以便在输入数据时产生的差距 越来越小最后达到准确的状态。
推理
到这里大家不禁会有一个疑问产生:模型为什么会越推理误差越小?这便运用到了数学中的向量,通过将数据分批次进行向量化的方式来进行模型训练之后每批计算结束,调整一次参数,经过多次调整模型就会准确的推理出所需要的信息了。
至此到这里大家应该都明白了大模型以及,GPU、CPU 的工作原理。
到这里想必大家应该理解了为什么 ChatGpt 需要用 GPU 来训练了,因为从原理上来讲无论是游戏还是 AI 都是不断通过 GPU 来运算向量坐标来完成的。
案例如下图,大家可以看到这个紫色的图形模态元素想要移动,实际上就是通过各个三角形的色块来进行坐标向量移动实现的,这背后需要大量的公式运算逻辑:
所以在 GPU 的架构下多矩阵的计算也让在游戏领域中大放异彩。反观 AI 的发展思路,神经网络的计算基础也同样是矩阵的乘法运算引入 GPU 作为训练引擎应对深度神经网络巨大的计算量就再合适不过了。
GPU 目前已经发展成了专门的 Transformer 引擎,这种应用的行为也加快了 AI 行业的发展和爆发,也让 GPU 自身成了算力的动力源泉。
移动互联网时代,JSON 文档作为支撑大规模灵活数据存储的通用格式,推动了 MongoDB 的流行;而在 AI 重塑软件的时代,向量作为大模型理解世界的数据形式,也就促成新的重要基建:向量数据库。