九州酷游「中国」官方网站

+025-57260171
诚信驱动,稳健前行:九州酷游「中国」官方网站市场瞬息万变,而诚信始终是不可动摇的基石。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!

你的位置: 首页 > 九州资讯 > 行业动态

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!

2023-12-05 03:42:13

  重点是,团队直接放出了代码以及详细“教程”。还是简笔画版的那种,特别好理解。

  我们不把它看作是库或者框架,更希望大家能把它当成个例子,根据自己的需求“复制粘贴”。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图1)

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图2)

  开发团队一开始使用简单的PyTorch来实现,但效果不佳(25.5 tok/s):

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图3)

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图4)

  可以想象这样一个场景,GPU是一个庞大的工厂(拥有大量可用的算力),而CPU则是一个小推车,来回为工厂“供货”。

  因此,开发团队建议给GPU更多的工作量,或者说一次性给它更大“块”的任务来处理。

九州酷游 九州酷游ku 体育%2Fdingyue.ws.126.net%2F2023%2F1202%2F4f73ea13j00s50zna004rc000hs007sm.jpg&thumbnail=660x2147483647&quality=80&type=jpg />

  效果立竿见影,性能直接提升了4倍,从25 tok/s提高到107 tok/s:

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图6)

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图7)

  重新审视上面的方程式,团队发现虽然实际上不能改变模型参数量,也不能改变GPU的内存带宽(至少在不花更多钱的情况下),但可以改变存储每个参数所用的字节数。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图8)

  这意味着,虽然无法改变模型的大小或者升级硬件来提高性能,但可以通过减少存储模型参数所需的数据量来提高效率。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图9)

  采用int8权重量化减少了内存负载,进一步提升了性能(157.4 tok/s):

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图10)

  使用量化后还有0-一个问题:要生成100个token,必须加载(或调用)模型权重100次。频繁加载模型权重也会导致效率低下。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图11)

  乍一看,好像没有什么解决的法子,因为在自回归生成模式中存在着严格的序列依赖关系。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图12)

  再来打个比方,想象有一个资深工程师Verity,他在技术决策上总是正确,但编写代码的速度相对较慢。

  同时,还有一个初级工程师Drake,和Verity相反,不擅长技术决策,但编写代码的速度更快、成本也更低。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图13)

  方法很简单,先让Drake编写代码,并在此过程中做出技术决策。接下来,将代码交给Veri九州酷游 九州酷游ku 体育ty进行审查,不对的地方就让Drake重做。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图14)

  在Transformer模型推理中,大型的验证模型即为Verity角色,Drake则是一个更小的、能更快生成文本的草稿模型。

  开发团队使用草稿模型生成8个token,然后使用验证模型并行处理,丢弃不匹配的部分。

  值得一提的是,推测性解码不会改变输出的质量。只要使用草稿模型生成token+验证这些token所需的时间少于单独生成这些token所需的时间,这种方法就是有效的。

  而且使用原生PyTorch实现这种技术实际上非常简单,整个实现过程只需要大约50行原生PyTorch代码。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图15)

  由于AMD也支持Triton和ile后端,因此之前在Nvidia GPU上应用的所有优化也可以在AMD GPU上重新应用。

  到目前为止,研发团队一直都是在单个GPU上提速。但其实很多情况下是可以使用多个GPU的。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图16)

  在选择并行处理策略时,需要在多个设备上分割一个token的处理过程,所以需要使用张量并行性。

  而PyTorch也提供了用于张量并行性的底层工具,可以与ile结合使用。

  然而,即使没有更高级别的API,添加张量并行性也很容易,150行代码即可实现,且不需要对模型进行任何改变。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图17)

  之前提到的所有优化都可以与张量并行性相结合。将这些优化结合起来,能够以55 tokens/s的速度为Llama-70B提供int8量化。

九州酷游PyTorch造大模型“加速包”不到1000行代码提速10倍!(图18)

  最后总结成果,忽略量化,仅用766行代码(model.py 244行代码,generate.py 371行代码,tp.py 151行代码),就实现了快速推理、推测性解码和张量并行性。

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  某大V曾耐克,怒骂耐克脑残粉贱不贱呐”,如今给耐克做广告

  首发版车型预售23.7777万元,一汽-大众ID.7 VIZZION将于12月上市

  华为Mate 60系列仍然紧俏,经销商挺过煎熬:“我觉得我要满血复活了”

  凯拉·沃尔什在失误和赛后崩溃后,对英格兰球星玛丽·厄普斯的情况进行了更新

  埃里克·滕哈赫的曼联未来已经决定,安东尼·马蒂尔和马库斯·拉什福德成为中心舞台

  Surface Laptop Go 3体验:性能升级 轻巧机身续航给力

  43.5 万元起,特斯拉 Cybertruck 终于交付,马斯克当初说的都实现了吗?

地址:南京市溧水区明觉工业区  电话:025-57260171  手机:025-57260171
Copyright © 2020-2023 九州·酷游集团有限公司 版权所有 ICP备案编:苏ICP备2020050793号