ModaHub魔搭社区:向量数据库的工作原理

news2024/11/18 15:33:49

目录

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 重塑软件的时代,向量作为大模型理解世界的数据形式,也就促成新的重要基建:向量数据库。

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

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

相关文章

如何使用upupw搭建服务器,并映射外网访问

作为计算机行业从业人员,相信很多人都接触并使用过phpstudy等类似环境集成包,着对于upupw就比较好理解了。UPUPW绿色服务器平台是Windows下很有特色的一款免费服务器PHP套件,UPUPW PHP套件简化了PHP环境搭建步骤,一个压缩包解压到…

chatgpt赋能python:Python经典游戏:从命令行到桌面

Python经典游戏:从命令行到桌面 Python是一个热门的编程语言,尤其在编写游戏方面表现出色。Python允许开发人员使用简单的语法和丰富的库编写高效率的游戏。在这篇文章中,我们将介绍Python的一些经典游戏,包括简单的命令行游戏和…

GithubAction的使用-简单易懂

一、Github Action简介 github Action (工作流),简单理解就是自动化部署、测试。也就是之前人工手动部署变为现在由机器(服务器)自动部署、测试了。 二、对github Action(工作流)的使用 首先…

〖编程初学者的自我修养 - 满分面试篇①〗- 面试之前需要做的「长期准备工作」

简介:应 850 小伙伴要求, 无论你是迷茫的在校生还是已经就业的老司机,该专栏都值得你订阅,它会让你成就更好的自己!说明:该文属于 编程初学者的自我修养 专栏,购买任意白宝书体系化专栏可加入易…

SpringBoot 解决跨站脚本漏洞(XSS)问题

一、问题背景 使用 SpringBoot 的项目出现了跨站脚本漏洞&#xff08;XSS&#xff09;问题。 二、解决方案 步骤如下&#xff1a; 1、添加maven依赖 在 pom.xml 文件中&#xff0c;增加如下依赖&#xff1a; <dependency><groupId>org.apache.tomcat</group…

莫兰指数P值,Z值分析

仔细看完下面两个链接绝对可以明白。写的非常清晰。 白话空间统计之四&#xff1a;P值和Z得分&#xff08;中&#xff09; 白话空间统计之四&#xff1a;P值和Z得分&#xff08;下&#xff09; 个人理解&#xff1a;P值决定了数据有没有显著性&#xff0c;数据能不能用的问题…

什么是 CI/CD ?

说在开头 CI、CD 其实是三个概念&#xff0c;包含了一个 CI 和两个 CD&#xff0c;CI全称 Continuous Integration&#xff0c;表示持续集成&#xff0c;CD包含 Continuous Delivery和 Continuous Deployment&#xff0c;分别是持续交付和持续部署。这三个概念之间是有前后依赖…

chatgpt赋能python:Python如何等分区间

Python如何等分区间 Python是一种高级编程语言&#xff0c;经常用于数据分析和科学计算。在数据分析中&#xff0c;等分数据区间是常见的操作。本文将介绍Python如何等分区间&#xff0c;并提供一些实用的代码示例。 什么是等分区间 等分数据区间是将数据划分为几个大小相等…

网络编程的无冕之王-Netty入门和核心组件介绍

最近我在研究Netty&#xff0c;之前只是经常听说&#xff0c;并没有实际做过研究&#xff0c;为什么突然要好好研究一下它&#xff0c;主要是因为前段时间&#xff0c;我在看RocketMQ底层原理的时候发现它的底层的网络通信都是基于Netty&#xff0c;然后网上一查&#xff0c;果…

【软件设计师暴击考点】网络安全等杂项高频考点暴击系列

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;软件…

读发布!设计与部署稳定的分布式系统(第2版)笔记11_无限长的结果集

1. 无限长的结果集是导致响应缓慢的常见原因 1.1. 当违反稳态模式时&#xff0c;就可能产生无限长的结果集 1.2. 当调用方允许另一个系统支配调用时&#xff0c;就会出现一个无限长的结果集 2. 数据库突然返回500万行&#xff0c;而不是通常的100多行时会发生什么&#xff1…

密码找回流程绕过测试-业务安全测试实操(20)

密码找回流程绕过测试 测试原理和方法 很多网站的密码找回功能一般有以下几个步骤 (1) 用户输入找回密码的账号: (2) 校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单击链接进入密码重置页面,以此方式证明当前操作用户是账号主人;(3) 校验成功进入重置密…

重构项目的十大注意事项

文章目录 1. 确认重构的目的和范围2. 建立好重构计划3. 检查重构前的代码4. 测试重构后的代码5. 避免过度重构6. 保持团队成员沟通7. 使用重构工具8. 使用版本控制系统9. 持续监控重构进度10. 不断改进技能 1. 确认重构的目的和范围 在开始重构之前&#xff0c;需要明确重构的…

Spring(五)基于注解的自动装配

注解&#xff1a;和XML配置文件一样&#xff0c;注解本身并不能执行&#xff0c;注解本身仅仅只是做一个标记&#xff0c;具体的功能是框架检测到注解标记的位置&#xff0c;然后针对这个位置按照注解标记的功能来执行具体操作。 本质上&#xff1a;所以一切的操作都是java代码…

K8S调度器之污点和容忍

1. Taint和Toleration 节点亲和性&#xff0c;是pod的一种属性(偏好或硬性要求),它使pod被吸引到一类特定的节点。Taint则相反&#xff0c;它使节点能够排斥一类特定的pod。Taint和Toleration相互配合&#xff0c;可以用来避免pod被分配到不合适的节点上。每个节点上都可以应用…

阿里云ECS服务器vCPU什么意思?

阿里云ECS服务器vCPU和CPU是什么意思&#xff1f;CPU和vCPU有什么区别&#xff1f;一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定&#xff0c;CPU是中央处理器&#xff0c;一个CPU可以包含若干个物理核&#xff0c;通过超线程HT&#xff08;Hyper-Threading&am…

chatgpt赋能python:Python中如何合并相同key的元素?

Python 中如何合并相同 key 的元素&#xff1f; 在 Python 编程中&#xff0c;很多时候需要对列表或字典进行合并相同 key 的操作&#xff0c;这篇文章将介绍合并相同 key 的方法及应用。 什么是相同 key 合并&#xff1f; 相同 key 合并指的是将具有相同 key 的元素合并为一…

关于防火墙配置长连接的设置

长连接的使用场景 当业务中客户端和服务器长时间无数据交互&#xff0c;空闲时间超过1800秒&#xff0c;会话会因超时被清除。后续客户端没有重新发起连接&#xff0c;直接发送控制报文时导致数据不通。常见于数据库连接。 重点说明 以天为单位的会话超时需要开启长效会话比例…

考研高数考点总结

一.极限 1.函数的四性&#xff1a; 单调性、周期性、奇偶性、有界性&#xff1a; 周期性、奇偶性各记住一个结论。 有界性判定&#xff1a; 1.定义法&#xff1a;-M<绝对值<M2.函数性质&#xff1a;函数在闭区间上连续一定有界 闭区间连续》开区间连续加左端点右极限…

ML算法——最优化|凸优化随笔【机器学习】【端午节创作】

文章目录 数学预备知识1、最优化问题2、凸优化2.1、梯度下降2.2、牛顿法2.3、阻尼牛顿法2.4、拟牛顿法2.5、总结 数学预备知识 1、最优化问题 最优化问题指的是在给定条件下&#xff0c;找到一个目标函数的最优解&#xff0c;即找到能够使目标函数取得最大值或最小值的变量取…