坏了,我的RTX 3090 GPU在对我唱歌!

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达a2416738d90639c4ecc8fb986dbc1168.jpeg

机器之心编辑部

这你敢信?!

在一个昏暗的机箱里,一台 RTX 3090 GPU「唱」着经典英语儿歌《一闪一闪亮晶晶》(Twinkle,Twinkle,Little Star)的旋律。

这不是灵异事件,也不是科幻电影,而是一位 AI 科学家在「整活」。

这位科学家名叫 Vrushank Desai。据他介绍,机箱中的旋律是由 GPU 的电感线圈发出来的。GPU 如何发出这种声音,别急,Desai 在 X 上给出了解释。

20ff434403a4829bb9b55c22db9ff6f4.png

事情的起因是这样的,今年年初,Desai 花了几个月的时间学习 GPU 编程,并尝试优化《Diffusion Policy》论文中的推理。在此过程中,Desai 将去噪 U-Net 的推理时间提高到 Pytorch eager 模式的约 3.4 倍、Pytorch compile 模式的 2.65 倍。

不过这次尝试让 Desai 印象最深的事情,当属这个意外发现,即 RTX 3090 GPU「唱」起了《一闪一闪亮晶晶》。

虽然这个发现和扩散推理毫无关系,但在 Desai 看来,却是最有趣的事情。Desai 在 X 上激动的表示:「我能够让 RTX 3090 电感线圈使用内核(GPU 编程)在正确的频率下调节功耗来播放《一闪一闪亮晶晶》。

每次内核启动都会触发 GPU 的 DC-DC 降压电感中的涌流。由电流变化引起的洛伦兹力使线圈轻微移动,如果进一步控制内核发射频率,使线圈震荡,就能把噪音控制在可听到的范围内。」

不幸的是,Desai 不能让设备发出低于 2000Hz 的声音,因此《一闪一闪亮晶晶》音符都向上移动了好几个八度。

进一步的,Desai 在博客中详细描述了自己发现 RTX 3090 发出声音的过程,我们接着往下看。

Desai 表示,在 GPU 中,电压调节模块(VRM)负责将输入功率的 12V 电压降至约 1V,以驱动 GPU 核上的晶体管,要求是 VRM 输出的电压必须非常纯净。

VRM 利用复杂的电力电子技术可以提供这种纯净的输出,其中一部分转换过程涉及电感器,这些电感器本质上充当低通滤波器。当 GPU 核的负载发生显著波动时,这些电感器会产生快速振荡的磁场(与电流变化率 dI/dT 成正比),进而诱发洛伦兹力,使线圈振动。这种现象就是导致 GPU 线圈噪音的原因。

然而,这一发现,并不能让 GPU 唱歌。接着,Desai 发现了一个有趣的现象,即与运行 CUDA 图形或自定义内核相比,Pytorch Eager 模式会导致更响的 GPU 线圈噪音 ——Desai 表示甚至能听到代码运行的声音!

这个发现让 Desai 感到非常困惑,因为 nvidia-smi 显示加速模式比 Eager 模式多消耗约 40W 的功率,通常来说更高的负载会产生更大的噪音。Desai 推测这可能是因为 Eager 模式在内核启动之间有更长的延迟,导致 GPU 核心负载的变化更大,从而在 GPU 的电感器中产生更强的磁场振荡。

为了测试这一点,Desai 编写了一个内核,该内核可以从全局内存中执行大量加载,这是一项非常耗能的操作,并改变内核启动之间的持续时间,Desai 发现确实可以通过这种方式控制线圈噪音!

Desai 开始沉迷于这个发现,即让 GPU 线圈发声的能力,并编写了一个内核程序来演奏特定的音符,因而用 RTX 3090 演奏《一闪一闪亮晶晶》的曲子诞生了。不幸的是,发出的声音无法达到较低的频率,所以所有音符都被提高了好几个八度。

想要让自己的 GPU 唱歌的小伙伴可以参考以下代码:

代码地址:https://github.com/vdesai2014/inference-optimization-blog-post/tree/main/part-9/gpu-piano

看到这,很多网友纷纷叫好:

80985238456f7fc1a6f7ee37ae9573ed.png

扩散策略推理优化

让 RTX 3090 演奏《一闪一闪亮晶晶》只是 Desai 在研究过程中的一次意外发现。博客中,Desai 用了大量篇幅介绍了自己年初以来几个月的学习经历,通过尝试优化扩散策略的推理过程来学习 GPU 编程。

6015cdedff5546975dd0d4037bc2d1b1.png

博客地址:https://www.vrushankdes.ai/diffusion-inference-optimization

Desai 介绍了如何优化扩散策略,Desai 表示 GPU 具有内存层次结构,其范围从大容量、低带宽、高延迟(全局内存)到低容量、高带宽、低延迟。芯片中执行实际计算的部分(FP32 / INT8 单元、张量核等)比比特从内存存储移动到计算电路的速度快得多。

这导致 GPU 工作负载变得受内存限制 —— 与计算相关的比特从内存移动到计算所需的时间比实际执行计算所需的时间更长。

Desai 认为近年来计算每秒可以执行的浮点运算次数与内存存储可以提供的浮点数之间的差距越来越大。对于 Desai 研究的扩散策略推理优化工作来说,几乎所有的速度提升都来自优化内存访问模式以实现更好的内存利用率。

下图表明,与内存存储(绿色)相比,FP32 计算单元 / 张量核(红色)的速度快得多。

a2316fcf78fc6fc71dc4e8ca22b326b6.gif

全局内存访问如此慢是有物理原因的。全局内存将位(bits)存储在 DRAM 单元中,而该单元由一个电容器和一个晶体管(控制电容访问)组成。每次访问都需要对行缓冲区预充电以达到中性线电压,将需要访问的行连接到行缓冲区,选择要读取的正确的列,并将数据传输到总线。

所有这些步骤需要花费大量时间来执行。因此,最有效的 GPU 性能优化手段之一是从全局内存加载数据时访问连续存储器地址。

DRAM 的物理结构是其发挥作用的原因。由于每次访问一行需要将该行所有的位拉入到行缓冲区,因此同时访问彼此相邻的多个位是高效的做法。

DRAM 的优点是,虽然速度相对较慢,但成本低并且易于密集封装,毕竟只需要一个电容器和一个晶体管。

如下为一个 DRAM 单元的 SEM(扫描电子显微镜)图像。在存储器中存储一个 FP16 GPT-4 实例需要大约 30 万亿个这样的单元。Desai 感叹,从事硅硬件设计和制造的人是真正的魔法师。

eee764a0de41f304fa9f196c570050fb.png

相反,GPU 线程寄存器、L1/L2 内存使用 SRAM 进行存储。SRAM 单元由 6 - 晶体管触发器电路组成,并且由于这里涉及到的唯一电容是晶体管栅极,因此访问数据的速度变快了很多。

但是,SRAM 也有缺点,它的芯片面积和制造复杂性导致了更高的成本。下面的 SEM 图像为一个 FinFET SRAM 单元。

0809e0ee55b2f989a6340df9b0683f9a.png

实际上,当有人听到「CUDA 内核」这个词时,并没有任何硬件可以映射成这个人可能想到的东西。CPU 领域的内核要比 FP32 ALU 更加强大,大致对应了英伟达 GPU 的「CUDA 内核」。

因此,为了好玩,我们可以试着猜测有多少个晶体管被分配给了一个 RTX 3090 CUDA 内核,它与 AMD Ryzen 7950X CPU 的比较结果见下表。

0bdebb66d89811adf2ef716a4bec3324.png

为了记录自己的学习过程,Desai 撰写的博客文章得到了 AI 大牛 Andrej Karpathy 的好评。

2fd0fc3ba3233a5b41d6f11f41eb0eac.png

Karpathy 表示,这篇文章读起来很棒,依据他个人经验,在 AI 研究中,你不仅在与物理规律作斗争,同时也在与 nvidia 编译器和堆栈作斗争,即使在使用了很多技巧之后,我们仍然无法在许多内核上实现超过约 80-90% 的内存带宽,而你原本可能会天真地认为这些内核应该接近 100%,而且这个问题的复杂性非常深。

看似一项平常的研究,Desai 却收到了意外惊喜,看来一些有趣而伟大的创造,似乎都在不经意间诞生。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
内容概要:《2025年机器身份安全现状报告》揭示了机器身份安全在全球企业中的重要性和面临的挑战。随着云计算、AI和微服务的发展,机器身份数量已远超人类身份,成为现代网络安全的核心。然而,管理这些身份变得越来越复杂,许多组织缺乏统一的管理策略。77%的安全领导者认为每个未发现的机器身份都是潜在的风险点,50%的组织在过去一年中经历了与机器身份相关的安全事件,导致应用发布延迟、客户体验受损和数据泄露等问题。AI的兴起进一步加剧了这一问题,81%的安全领导者认为机器身份将是保护AI未来的关键。此外,证书相关故障频发,自动化管理仍不足,量子计算的威胁也逐渐显现。面对这些挑战,组织需要建立全面的机器身份安全计划,重点加强自动化、可见性和加密灵活性。 适合人群:从事信息安全、IT管理和技术架构规划的专业人士,尤其是关注机器身份管理和云原生环境安全的从业者。 使用场景及目标:①理解机器身份在现代企业安全架构中的关键作用;②识别当前机器身份管理中存在的主要风险和挑战;③探讨如何通过自动化、可见性和加密灵活性来提升机器身份安全管理的有效性;④为制定或优化企业机器身份安全策略提供参考。 其他说明:此报告基于对全球1,200名安全领导者的调查,强调了机器身份安全的重要性及其在未来几年内可能面临的复杂变化。报告呼吁各组织应重视并积极应对这些挑战,以确保业务连续性和数据安全。
基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库),含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设计与实现(含程序源码和数据库)基于python+django校园智能点餐管理系统设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值