https://www.youtube.com/watch?v=qRLyoP8zOyQ

YouTube AI Channels 新闻

摘要

一篇介绍如何编写自定义CUDA内核以突破深度学习框架瓶颈的技术文章/书籍摘要,涵盖从基础到优化的完整路径。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/21 13:59

TL;DR: 本书教你编写自定义CUDA内核,以在深度学习工作负载中突破框架瓶颈,通过控制内存、并行度和硬件特性实现极致性能。 ## CUDA在深度学习中的角色 大语言模型消耗着惊人的计算预算。将训练时间从数周缩短至数天,或将推理延迟从数秒压缩到毫秒,往往取决于GPU效率。CUDA是连接PyTorch简洁抽象与执行具体运算的硅片之间的桥梁。 PyTorch让GPU加速变得出奇简单:将模型移到cuda,运行代码,网络便如虎添翼。对于许多任务,这已经足够。但若某个自定义操作成为管道的瓶颈,或者嵌入式系统需要严格的实时推理,框架可能无法提供足够的控制。 CUDA是NVIDIA的编程模型,用于在GPU上运行代码。PyTorch底层就使用了CUDA;本书教你亲自编写底层GPU代码,然后可选地将其集成回熟悉的框架中。 ## 何时需要自定义CUDA 大多数情况下,自定义CUDA并不必要。cuBLAS、cuDNN和框架后端已经很好地覆盖了常见场景。当工作负载超出这些路径时,自定义CUDA才变得有价值: - 新的注意力模式 - 百万token上下文 - 机器人学延迟限制 - 融合操作 - 自定义量化 - 新颖的架构 其共通点在于对操作、硬件、内存、延迟和吞吐量的控制。 ## CUDA基础:主机、设备与内存层级 CUDA从两个协作的世界开始。**主机**是CPU和系统内存,主程序在此控制应用程序。**设备**是GPU及其显存,数千个更简单的工作单元在此执行并行算术。 CPU擅长复杂逻辑;GPU擅长跨大量数据元素的吞吐。由于主机和设备内存是分离的,CUDA程序需要显式地移动数据:分配GPU内存,将输入复制到设备,启动内核,并将结果复制回来。 **内核**是一个GPU函数,在众多线程上启动。你编写一个线程处理一份数据的逻辑;CUDA启动数千个副本,每个都有各自的索引。关键模式是“相同操作,不同数据。” 并行工作仍需尊重内存层级: - **全局内存**容量大但相对较慢 - **L2缓存**缓冲设备范围的流量 - **共享内存**和**L1**在每个流式多处理器内更小更快 - **寄存器**极小且直接存取 快速的CUDA尽可能将数据保留在快速层级中。矩阵乘法展示了这一点的重要性:一个朴素的内核可能反复从全局内存读取相同输入。优化版本在共享内存中缓存重复使用的值,从而大幅减少流量。有时最快的算法拥有最GPU友好的内存模式,而非最少的算术操作。 ## 并行计算与深度学习 GPU并非自动获胜。小规模问题、低算术强度和不规则的控制流可能输给CPU执行,因为传输成本、启动开销或线程束分歧压过了收益。知道何时并行化无助于事也是工作的一部分。 深度学习非常适合CUDA,因为它建立在大量数组上的重复操作之上:矩阵乘法、非线性函数、卷积、梯度、和注意力点积。有些互相独立;另一些需要规约。无论如何,深度学习会产生许多可以同时计算的输出元素。 CUDA始于2007年,而2012年的AlexNet证明了神经网络可以围绕GPU并行性来设计。 ## 从朴素到优化:性能层次 最初的CUDA内核通常会比PyTorch慢。这在意料之中。框架会调用优化过的库,而一个朴素内核可能从慢速内存读取数据并错过明显的优化机会。朴素的CUDA是起点,而非终点。 后续的层次逐渐构建: 1. **内存与计算优化**:减少全局内存访问,利用共享内存 2. **张量核心**:利用硬件专用单元加速矩阵运算 3. **内核融合**:合并多个操作以减少启动开销和内存带宽 4. **量化**:降低精度以提升吞吐量 5. **分布式计算**:多GPU扩展 每一层都针对一个瓶颈,改进叠加带来更高的吞吐量、更好的内存效率、更低的训练成本和更低的延迟。 单GPU技能是基础。多GPU工作增加了通信层级,其中机器内部的链接比机器之间的链接更快。随着设备增加,低效率会成倍放大,因此单GPU的经验可直接应用于分布式系统。 ## CUDA生态系统与前置要求 CUDA是一个生态系统:CUDA C++、cuBLAS、cuDNN、CUTLASS、Thrust、工具套件、驱动,等等。本书聚焦于CUDA C++,因为底层模型能教你性能推理,即使更高级的库执行具体工作。 开始前,你需要: - 一块NVIDIA GPU - nvcc - 用nvidia-smi检查的驱动 - Python - 基础C语言 - 熟悉PyTorch - 以及足够进行矩阵乘法的线性代数知识。 ## 路线图 全书路线图从第一个内核开始,逐步深入: - 第一个CUDA内核 - 神经网络构建模块(激活函数、卷积、矩阵乘法) - 完整的训练流程 - Transformer推理 - 性能剖析与优化 - 张量核心和Flash Attention - 量化技术 - 多GPU系统 最根本的要求是好奇心和毅力。一旦自定义内核带来第一次真正的加速,CUDA就不再是隐藏的机制,而成为你可塑的工具。 --- Source: https://www.youtube.com/watch?v=qRLyoP8zOyQ

相似文章

@snowboat84: https://x.com/snowboat84/status/2061962883651731602

X AI KOLs Timeline

本文是AI工程全景系列的上篇,从历史角度梳理了GPU从游戏显卡到AI加速器的演化、CUDA的豪赌、谷歌TPU的独立路径,以及英伟达为何最终胜出,详细剖析了芯片、供应链、网络、电力等AI基础设施的底层逻辑。