分享
奇绩大模型日报(4月 13-14日)
输入“/”快速插入内容
奇绩大模型日报(4月 13-14日)
推特
Mistral-22B-v0.2 发布,使用8倍以上的训练数据,在处理用户查询方面明显更好
贡献人:
用户8534
用户8534
https://x.com/mejia_petit/status/1779131534269673556
Mistral-22B-v0.2 现已发布🎉🎉!在各方面都有重大改进!使用8倍以上的训练数据,该模型在处理用户查询方面明显更好!在这里试用一下吧!
在我们发布 Mistral-22b-v0.1 仅仅两天后,我们很高兴地推出我们精心打造的实验模型 Mistral-22b-v.02。这个模型是将所有专家的平等知识提炼到一个单一、密集的22b模型中的结晶。这个模型不是一个单一训练的专家,而是一个压缩的MOE模型,将其转化为一个密集的22b模式。这是第一个可行的MOE到密集模型的转换。
v0.2 比 v0.1 训练的数据多了8倍!
50%
50%
Karpathy llm.c更新:从比PyTorch慢4.2倍提升到只慢2倍
贡献人:
用户8534
用户8534
https://x.com/karpathy/status/1778988957713477778
一些新的CUDA黑客朋友加入了这项工作,现在llm.c只比PyTorch(fp32,前向传递)慢2倍,而4天前还慢4.2倍。最大的改进是:
•
在矩阵乘法中使用TF32(NVIDIA TensorFLoat-32)而不是FP32。这是从Ampere+开始的GPU中的一种新的数学模式。这是一个非常好的、几乎免费的优化,通过在张量核心上运行矩阵乘法,同时将尾数截断到只有10位(浮点数的最低有效19位会丢失),以牺牲一点精度来换取大幅提高性能。因此,输入、输出和内部累加保持在fp32中,但乘法的精度较低。相当于PyTorch的
torch.set_float32_matmul_precision('high')
。
•
调用cuBLASLt API而不是cuBLAS进行sGEMM(fp32矩阵乘法),因为这允许你将偏置融合到矩阵乘法中,并消除了对单独的add_bias内核的需求,从而避免了对全局内存进行一次愚蠢的往返只为了一次加法。
•
一个更高效的注意力内核,它使用1)cooperative_groups reduction,看起来更简洁,我也是最近才了解到的(CUDA PMP书中没有涉及到...);2)flash attention中使用的在线softmax算法;3)融合的注意力缩放因子乘法;4)"内置"的自回归掩码边界。(非常感谢GitHub上的ademeure、ngc92和lancerts编写/帮助这些内核!)
最后,ChatGPT创建了这个惊人的图表来说明我们的进展。4天前我们慢了4.6倍,今天我们只慢了2倍。所以我们即将超过PyTorch。
现在(就我个人而言)将专注于反向传递,这样我们就有了完整的CUDA训练循环。
50%
50%
18小时后的更新:降到26.2ms/迭代,与PyTorch完全相同。只用大约2,000行C代码就能比PyTorch更快地训练LLM,这似乎触手可及
https://x.com/karpathy/status/1779272336186978707
非常有趣的更新,大约18个小时后:
llm.c现在已经降到26.2ms/迭代,与PyTorch(tf32前向传递)完全匹配。我们发现了一个错误,即我们错误地在fp32数学模式下调用了cuBLAS🤦♂️。ademeure为非常长的行(最后一层logits中每行50,257个元素)贡献了一个更优化的softmax内核。
但乐趣并没有停止,因为我们还有很多锦囊妙计。我们的注意力内核是朴素的注意力,而不是flash attention,并且实现了(非常大的)前注意力和后注意力矩阵,大小为(B, NH, T, T),它还进行了不必要的往返,内部有尚未融合的GeLU非线性和置换/反置换。我们还没有尝试更多的优化,例如CUDA图、无损可压缩内存(?)等。
所以更新后的图表看起来很乐观:D,只用大约2,000行C代码就能比PyTorch更快地训练LLM,这似乎触手可及。让我们开始反向传递吧。
50%
50%
PyTorch的复仇,大约20%的加速
https://x.com/karpathy/status/1779354343013269929
PYTORCH的复仇
开个玩笑:)
来自PyTorch团队的@cHHillee 非常友好地帮助改进了PyTorch的基准测试,方法是:1)升级到每夜版,2)直接使用"复合"F.sdpa(缩放点积注意力)层,并打开一个torch编译标志:
TORCHINDUCTOR_COORDINATE_DESCENT_TUNING=1
由于使用了略有不同的GPU(A100 80GB,具有更高的内存带宽),所以数字有一些差异,但是:
llm.c: 23.026892
PyTorch 2.2: 22.408ms
PyTorch nightly: 21.090ms
PyTorch nightly + F.sdpa: 19.224ms
PyTorch nightly + F.sdpa + coordinate descent tuning torch inductor flag: 18.809ms
50%
50%