LLM加速——矩阵乘法

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

作者使用torchview解析模型,发现其能展示张量、模块、函数等节点及输入输出形状和边关系,支持MLP、BERT、Gemma、Llama 3.2。但torchview无法优化连续矩阵乘法(因d_input与d_hidden差异不大),也无法解析LlamaAttention等特殊模块。作者认为LoRA和反向传播中的Autograd值得探索,并反思自己想法过多、阅读不足。

🔎

延伸解读

torchview 的能力与局限

torchview 能解析推理和训练时的模型,支持 MLP、BERT、Gemma、Llama 3.2 等,并以张量、模块、函数为节点,展示输入输出形状和边关系。但它无法优化连续矩阵乘法,因为 d_input 与 d_hidden 差异不大;也无法解析 LlamaAttention 等特殊模块,只能依赖具体输入数据沿特定路径执行。

矩阵乘法优化的实际限制

文章指出,一般模型中连续矩阵乘法很少,唯一三连乘是 (matrix_input * W_q) * (matrix_input * W_k),但由于 d_input 和 d_hidden 差异不大,无法有效优化。这意味着矩阵乘法加速并非普遍适用,需要具体分析模块结构。

值得探索的方向

作者认为 LoRA 和反向传播中的 Autograd 值得探索。LoRA 作为 unsloth 博客中提到的技术,可能为矩阵乘法优化提供新思路;而 Autograd 在反向传播中的行为也可能隐藏优化机会。这些方向需要进一步研究。

作者反思:想法多而阅读少

作者总结道,失败表明自己总是想得太多而阅读不足,简单想法在多数情况下行不通。这提醒读者,在 LLM 加速领域,深入理解现有工作和工具限制比凭空构思更重要。

❓

Q&A

torchview 能解析哪些模型?

torchview 支持解析 MLP、BERT、Gemma 和 Llama 3.2 等模型,并且可以在推理和训练时使用。

torchview 在解析模型时能展示哪些信息?

torchview 能展示张量、模块(如 attention)、函数(如 nn.function)等节点,以及每个基本节点的输入输出形状和节点之间的边关系。

为什么 torchview 无法优化连续的矩阵乘法?

因为模型中唯一的三次连续矩阵乘法是 (matrix_input * W_q) * (matrix_input * W_k),但 d_input 和 d_hidden 差异不大,所以无法优化。

torchview 目前无法解析哪些模块?

torchview 目前无法解析特定模块,例如 LlamaAttention 等特殊模块。

作者认为还有哪些值得探索的优化方向?

作者认为 LoRA 和反向传播中的 Autograd 值得探索。

作者从这次尝试中得出了什么结论?

作者认为失败表明自己总是想得太多而阅读不足,简单的想法在大多数情况下行不通。

🏷️

标签

➡️

继续阅读