LLM加速——矩阵乘法
内容提要
作者使用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 值得探索。
作者从这次尝试中得出了什么结论?
作者认为失败表明自己总是想得太多而阅读不足,简单的想法在大多数情况下行不通。