GPU、AI、CUDA

news2024/12/23 7:13:44

文章目录

  • 1.千层面
    • 多层
  • 2. CPU与GPU架构差异
  • 3.大规模矩阵操作
  • 4.专为并行计算设计的库

1.千层面

神经网络的本质是千层面,由一层一层的线性代数方程组成,每个方程都表示一段数据与另一段数据相关的可能性

神经网络的每一次层可以看作是一次线性代数变换,然后接上一个非线性激活函数。每一层都对输入数据进行变换
线性变换,每层中的线性代数方程是矩阵乘法的形式:
z = W·x + b
W 是权重矩阵,x 是输入, b 是偏置向量, z 是线性变换

最后一层的输出通常表示与输入数据某个目标输出之间的“可能性”或“概率”。

多层

每一层的输出作为下一层的输入,使得数据逐步被加工或提取,每个链接都有一个权重,权重是通过训练来调整的。训练的过程是通过大量的数据,让网络中的权重调整到最优,使得模型能够很好地拟合输入与输出的关系

2. CPU与GPU架构差异

CPU在于处理复杂多样性的任务,每个核心都有复杂的控制逻辑、缓存层次结构、分支预测、流水线等,高性能核心较少(例如4-16个)。CPU擅长处理复杂的顺序任务,你一台计算机类型多样的应用都靠它执行。每个核心设计用来处理复杂的任务,主要以多线程和多进程的方式来实现,因此它可以执行高度复杂的任务,但它不适合处理大规模简单的数值运算。

相比之下,GPU就是为了简单大规模的数值计算任务而设计的,有成千上万个较小的处理核心,处理大规模的简单但相似的计算任务,例如神经网络中的矩阵运算和张量运算。因此控制逻辑简单,不需要对复杂指令的支持,它的重点在于提供更多的核心,实现同时执行大量的简单任务。这种设计使得GPU非常擅长进行大量简单的运算任务,正如神经网络中的矩阵运算。

在这里插入图片描述

GPU设计之初就是为了处理大量的数值计算任务(最初是用于图形渲染),显存带宽非常高,它可以迅速地从显存中加载大量的数据并用于并行计算。

因此在神经网络中进行类似的数值密集运算时,GPU具有天然优势。

3.大规模矩阵操作

神经网络的计算过程,包括前向传播和反向传播,本质上就是一系列的大规模矩阵乘法、卷积运算和张量操作。这些计算在GPU上的并行处理能力下,可以显著加速。举个例子:

我们可以用一个生活中的类比来解释。
假设我们现在要完成一项任务,用手电筒照亮1000个物品,检查它们的状态。你只有4个人(CPU的4个核心)。每个人只能同时检查一个物品。

CPU怎么做?
这4个人中的每个人一次只能处理一个物品,所以他们要逐一去检查物品。
比如,第1个人从物品1到物品250检查,第2个人检查物品251到500……其他两个人负责剩下的部分。

因为每个人一次只能处理一个物品,所以他们必须按顺序去检查这些物品,即使大家分配了不同的部分,还是得一个接一个地完成。

这种情况下,虽然4个人比1个人做得快,但他们仍然无法同时处理所有物品。换句话说,每个人处理的任务是按顺序来的,因为他们能同时处理的任务有限。处理完一个,再去处理下一个。

在CPU中,少量的核心(比如4个核心)就像这4个人一样,每个核心只能处理一部分任务,并且需要按顺序去处理。如果你有非常多的任务(比如1000个),每个核心只能一次处理一个任务,所以每次只能同时处理4个任务,其他任务要等前面的任务处理完了才能进行。

如果换成GPU,你突然有了1000个人,每个人同时检查一个物品。所有人同时开始工作,每个物品在同一时间都被检查完了。你不需要等待每个物品按顺序完成,而是所有的任务同时完成。

在GPU中,有成千上万个核心,它们就像这1000个人,可以同时进行处理。每个核心负责处理任务的一小部分,所有任务可以在同一时间并行进行。所以GPU可以同时处理大量任务,这就是为什么它在大规模计算任务(如神经网络中的矩阵运算)中比CPU更快

4.专为并行计算设计的库

CUDA,Computer Unified Device Architecure
cuDNN,CUDA Deep Neural Network Library

CUDA是NVIDIA开发的并行计算框架,让开发者能够直接使用 GPU 来进行计算,可以将计算任务从 CPU 移到 GPU 上,为开发者提供了编程接口,允许用C++或PYTHON写代码控制GPU的计算资源。可以把耗时的计算任务放到GPU上执行。如果有一段矩阵相乘的运算,通过CUDA编程,将这些矩阵的每个元素的计算分配给GPU的不同核心,GPU会同时计算所有元素

cuDNN基于CUDA的专门用于深度学习的库,提供了高度优化的神经网络的运算功能,虽然可以用CUDA编程,但是cuDNN进行了优化,集成在主流深度学习框架(如TensorFlow、PyTorch)中,框架会自动调用cuDNN来加速深度学习中的核心计算,这样你无需自己编写复杂的代码,就能够充分利用GPU的计算能力

CUDA 帮助你管理和使用 GPU 的资源,是一个广义的并行计算框架,它可以用来编写各种类型的高性能计算任务(不仅限于深度学习)。任何需要大量计算的应用都可以利用 CUDA 来在 GPU 上加速,比如图像处理、物理仿真等。cuDNN 是基于 CUDA 之上的一个库,它专门为深度学习中的常见操作做了优化。仅用于深度学习任务。

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

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

相关文章

泰勒图 ——基于相关性与标准差的多模型评价指标可视化比较-XGBoost、sklearn

1、基于相关性与标准差的多模型评价指标可视化比较 # 数据读取并分割 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split plt.rcParams[font.family] = Times New Roman plt.rcParams[axes.unic…

工单管理系统功能解析,企业运营效率提升利器

工单管理系统如ZohoDesk提供工单生成分配、跟踪、数据分析、客户服务管理及移动兼容等功能,提升效率、增强服务、便于监管和降低成本,是现代企业信息化建设的重要部分。 一. 工单管理系统一般有哪些功能 1. 工单生成与分配 工单管理系统的基础功能是创…

Webstorm 中对 Node.js 后端项目进行断点调试

首先,肯定需要有一个启动服务器的命令脚本。 然后,写一个 debug 的配置: 然后,debug 模式 启动项目和 启动调试服务: 最后,发送请求,即可调试: 这几个关键按钮含义: 重启…

8.数据结构与算法-双向链表

双向链表的结构定义 从第二个指针找到下一个元素 从第一个指针找到上一个元素 双向循环列表 从第二个指针找到下一个元素,第二个指针可以往前循环找到链表开头 从第一个指针找到上一个元素,第一个指针可以往前循环昭侯链表结尾 双向链表的插入 双向链…

NLP:BERT的介绍并使用该模型计算文本相似度

1. BERT 1.1 Transformer Transformer架构是一种基于自注意力机制(self-attention)的神经网络架构,它代替了以前流行的循环神经网络和长短期记忆网络,已经应用到多个自然语言处理方向。   Transformer架构由两个主要部分组成:编码器(Encod…

uniapp中实现评分组件,多用于购买商品后,对商品进行评价等场景

前言 uni-rate是uniapp框架中提供的一个评分组件。它可以用于用户评价、打分等场景。uni-rate组件可以根据设定的星星总数,展示用户评分的效果,用户可以通过点击星星或滑动星星的方式进行评分。同时,uni-rate组件也支持自定义星星图标、星星…

关于CSS Grid布局

关于CSS Grid布局 实际效果参考 参考代码 <template><view class"baseInfo"><up-image class"cover" height"160rpx" width"120rpx" :src"bookInfo.cover"><template #error><view style"…

疾风大模型气象,基于气象数据打造可视化平台

引言 随着气象数据的广泛应用&#xff0c;越来越多的行业依赖天气预报与气候分析来做出决策。从农业、航空、能源到物流&#xff0c;气象信息无时不刻影响着各行各业的运作。然而&#xff0c;气象数据本身复杂且多样&#xff0c;如何将这些数据转化为直观、易于理解的图形和信…

MetaJUI v0.4 遇到的一些问题及解决办法记录

1、Unity3d 版本 2022.3.29f1。 2、MetaJUI v0.4 的下载&#xff0c;https://download.csdn.net/download/xingchengaiwei/89334848 3、将MetaJUI v0.4解压&#xff0c;用Unity3d 打开项目&#xff0c;会出现如下问题&#xff0c;按照图中提示操作即可。 4、打开工程后会出现…

第三人称射击游戏人物瞄准仰角的控制方案

这个功能有多种方案实现&#xff0c;总体可以分为两类&#xff1a; 1.改变腰的旋转&#xff1b; 2.改变手臂和头的旋转&#xff1b; 其中方案1&#xff1a; 只要转动腰一个骨骼&#xff0c;比较简单&#xff1b; 但是因为腰以上的部分都不动&#xff0c;第三人称比较僵硬&…

tk.mapper框架使用

说明&#xff1a;tk.mapper是一款DAO框架&#xff0c;也是基于Mybatis的&#xff0c;个人感觉&#xff0c;他是基于MyBatis和MyBatis-plus、MyBatis-Flex之间的过渡框架——能调用DAO的API&#xff0c;不手写SQL&#xff0c;但功能没有后面这两款框架多。本文介绍tk.mapper框架…

PyInstaller打包并设置图标

PyInstaller 是一个用于将 Python 代码打包成独立可执行文件的工具。如果你的 Python 代码中使用了一些资源文件&#xff08;如图片、音频、配置文件等&#xff09;&#xff0c;那么你需要将这些资源文件一起打包到可执行文件中&#xff0c;以便在运行时能够访问这些资源。 以…

STM32新建工程-基于库函数

一、创建一个新工程 我这里选择STM32F103C8的型号&#xff0c;然后点击OK。 keil5里面的小助手&#xff0c;暂时不用&#xff0c;叉掉 二、为工程添加文件和路径 在工程模板中还需要添加启动文件、系统头文件、系统时钟文件&#xff0c;创建一个文件夹start&#xff0c;将下面…

【韩顺平Java笔记】第5章:程序控制结构

文章目录 102. 回顾上一章节103. 顺序控制103.1 顺序控制 104. 单分支使用104.1 分支控制 if-else 介绍104.2 单分支 105. 单分支流程图106. 双分支使用107. 双分支流程图108. 双分支练习题109. 多分支使用109.1 多分支的流程图 110. 多分支练习1111. 多分支练习2112. 嵌套分支…

Fibonacci数列最小步数

1.题目&#xff1a; 2.解析&#xff1a; 让a,b,c回滚构造斐波那契数列 &#xff1a;ab, bc, cab; 输入的数 n小于c,在b,c之间&#xff0c;只要 n1 或者 n-1&#xff08;贪心思想&#xff1a;n只加一或者只减一&#xff09; 最后再求n-b,c-n的最小值&#xff0c;获得最小步数 …

《Linux从小白到高手》理论篇(八):Linux的进程管理详解

本篇将介绍Linux的进程管理相关知识&#xff0c;并将深入介绍Linux的进程间相互通信。 进程就是运行中的程序&#xff0c;一个运行着的程序&#xff0c;可能有多个进程。 比如Oracle DB&#xff0c;启动Oracle实例服务后&#xff0c;就会有多个进程。 Linux进程分类 在 Linux…

csp-j模拟一补题报告

前言 又要开始写补题报告了&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; &#xff08;“关于二进制中1的个数的研究”这篇文章可能会延期&#xff09; 第一题 题目 交替出场 (alter.cpp/c) 问题描述 给定一个字符串&#xff0c…

DC00024基于ssm实验室预约管理系统java web项目web教师预约jsp预约管理系统

1、项目功能演示 DC00024基于web实验室预约管理系统ssm教室预约实验室预约管理系统java web项目MySQL 2、项目功能描述 基于ssm实验室预约管理系统分为用户和系统管理员两个角色。 2.1 系统管理员 1、系统登录 2、用户管理&#xff1a;修改个人信息、修改个人密码、教师管理…

Forrester 报告揭示 2024 年十大云市场趋势:AI 与边缘计算融合带来机遇与挑战

云计算de小白 Forrester 在其“2024 年十大云计算趋势”报告中表示&#xff1a;“2024 年&#xff0c;基于云端的 AI 产品的市场采用和普及度将达到高潮。” Forrester 表示&#xff1a;“企业用户已经投资了微软 M365 Copilot 等人工智能服务作为提高生产力的工具&#xff0…

2024新淘宝镜像地址下载【vue-cli】

需要先安装NodeJS&#xff0c;然后再安装Vue-cli NodeJS下载 nodejs下载&#xff0c;直接搜官网 网址&#xff1a;https://nodejs.org/zh-cn LTS为长期稳定版本&#xff1a; 安装过程 只需要配置一下安装目录&#xff0c;其他都点下一步next 注意安装目录无中文无空格 验证…