Warp Scheduler 如何通过 Verilog 实现
本文主要介绍如何通过 Verilog 设计一个简单的 Warp Scheduler,Warp Scheduler 是 GPU 中用来调度 Warp、 发射指令的模块。
Warp 概念
Warp 可以理解为 一组线程(比如 32 个)。正常情况下,Warp 内的所有线程会执行同一条指令。那么我们为什么需要 Warp 呢?首先,管...
本文主要介绍如何通过 Verilog 设计一个简单的 Warp Scheduler,Warp Scheduler 是 GPU 中用来调度 Warp、 发射指令的模块。
Warp 可以理解为 一组线程(比如 32 个)。正常情况下,Warp 内的所有线程会执行同一条指令。那么我们为什么需要 Warp 呢?首先,管...
本文主要介绍 MiniMind 的代码解析,是该系列的第二篇文章。”minimind 是一个著名的开源项目。它没有使用各种高度抽象的接口,为我们展示了训练一个语言模型的细节(没有让细节被隐藏在各种第三方库之下)。因此,它也是入门 LLM 的一个很好的开源项目。 这篇文章解析了部分 minimind 的代码,并给出了...
本文是 miniGPU 系列的第二篇文章,介绍我们设计的 TensorCore。TensorCore 的主要作用是 在一个周期内实现 FMA 运算。也就是一个乘加运算($D=AB+C$),我们的设计中,TensorCore 处理的是 $4\times 4$ 的矩阵;另一个比较重要的特性是,TensorCore 可以进行混合精度运算。
MuZero 是一种强化学习算法,在大名鼎鼎的 AlphaZero 的基础上有一定的突破与改进。MuZero 主要有预测三个函数:
我们首先介绍一些符号,$o^k$ 代表第 k 步观察到的状态,$r^k$ 代表预测第 k 步获得的即时奖励,$s^k$ 代表第 k 步的隐藏状态,$a^k$ 代表...
本文基于 IEEE754 标准,介绍计算机实现 FP32(32 位浮点数)加法、乘法运算的过程,并提供一份 Verilog 实现,因为我并没有仔细推敲,所以我提供的代码可能效率不够高、简洁,仅作参考。
在 IEEE754 标准下,32 个比特位被拆分为 符号位(1bit)、指数位(8bit...
我们大部分时候通过 SSH 远程连接服务器,在命令行中输入指令实现操作。 如果你曾经尝试过在服务器上执行 类似 plt.show() 的命令的话,那么你应该知道,图形窗口是无法显示的,为了能够方便便捷地编程,我们希望在本机可以看到这些图形窗口。 这就需要用到 SSH X11 转发了。本文将介绍如何在 VSCode 上配置 X11 转发。
minimind 是一个著名的开源项目。它没有使用各种高度抽象的接口,为我们展示了训练一个语言模型的细节(没有让细节被隐藏在各种第三方库之下)。因此,它也是入门 LLM 的一个很好的开源项目。 这篇文章解析了部分 minimind 的代码,并给出了一些运行结果,帮助对 Pytorch 不熟悉的人快速上手 minimind。
本文介绍扩散模型,从最经典的 DDPM 到 一些改进工作,从 实施步骤 到 一些总括性的理论。
扩散模型从自然界中的扩散过程获得灵感,正向的扩散过程是一种 熵增过程,会损失一部分信息量。
将扩散过程和图片生成联系起来是十分天才的想法,为了更好地理解扩散模型,我们需要一些先验知识。 i)时间跨度足够长的扩散过程...