it编程 > 硬件开发 > arm开发

Llama提速500%!谷歌美女程序员手搓矩阵乘法内核

66人参与 2024-08-05 arm开发

谷歌的美女程序员,将llama的推理速度提高了500%!

近日,天才程序员justine tunney发推表示自己更新了llamafile的代码,

图片

她重写了84个新的矩阵乘法内核,使得llamafile可以更快地读取提示和图像。

与llama.cpp相比,新的llamafile在cpu上的推理速度提升了30%到500%。

图片

其中,armv8.2+(如rpi 5)、intel(如alderlake)和avx512(如zen 4)计算机的改进最为显著。

另外,对于适合l2缓存的矩阵,新的内核比mkl快2倍!

图片

justine tunney表示:负责mkl的大家,你们有事做了!

毕竟,由微软,英特尔,ti,amd,hpe,oracle,huawei,facebook,arm和national science foundation资助的blis,作为最强大的开源blas,输了就太没面子了!

跨平台的「羊驼」

llamafile作为一个本地llm项目,诞生于去年11月,由justine tunney与mozilla团队合作开发。

他们使用cosmopolitan libc,将llama.cpp打包为一个跨平台的单个二进制文件,让「羊驼」可以在基于amd64和arm64的六个操作系统上运行。

而且在gpu短缺的情况下,llamafile可以不需要昂贵的cuda内核,——家里的旧cpu,只要性能还行,再加一点ram就足够了,很好地保护了大家的钱包。

图片

项目地址:https://github.com/mozilla-ocho/llamafile/releases

llamafile代码可以在github上找到,使用c++编写的,没有外部依赖,可以在linux、macos、windows、freebsd,甚至serenityos上编译。

而且,justine tunney并没有就此止步。她已经在努力支持新的数据格式,比如fp16和bf16,以进一步减少内存占用,——她甚至在raspberry pi上成功运行了tinyllama!

性能提升

老惠普

justine tunney最开始尝试llm时,用的是下面这台简陋的hp主机,运行alpine,机械硬盘、慢速ram、avx2处理器、没有 gpu。

图片

hp intel® core™ i9-9900 ($439) w/ 2200 mt/s ram

出于对llama.cpp的喜爱,justine tunney与人合作为其引入了mmap()支持,使得权重可以立即加载,只使用原来一半的ram。

之后,justine又花了很长的时间来优化代码,让我来看一下改进后的效果:

图片

在skylake上,llamafile实现了2倍的加速,llama.cpp也获得了50%的性能提升。

到目前为止,justine为q8_0、f16、q4_1、q4_0和f32数据类型编写了优化的内核。

树莓派

最新版的树莓派不仅提升了主频,还引入了对armv8.2 dotprod 和fp16算术isa的支持,仅这两个功能就让llama.cpp在f16权重上实现了10倍性能提升。

图片

因为树莓派的两个cpu都有32个矢量寄存器,justine使用为avx512编写的内核,使推理速度又提高了2倍。

图片

不过值得注意的是,新的armv8.2 fp16 isa可能会引入比平时更多的错误,因为它会导致llamafile使用fp16。因此,q8_0权重实际上的效果更好,因为它使用dotprod isa。

游戏主机

在alderlake cpu上,justine将float16的性能提高了五倍。

图片

与armv8.2不同,alderlake能够在不引入舍入错误的情况下做到这一点,因为内核在内部使用float32计算类型。

另外让人吃惊的是,当涉及到小工作负载时,这个芯片甚至能够在cuda开始之前就完成任务。

图片

苹果

mac studio,作为llama.cpp开发人员最关心的硬件平台,想要在这里提升性能比较困难。

图片

另一个问题则是苹果自身的封闭环境:

m2 ultra将ram dimm放在了cpu内部,使得token生成等受延迟限制的操作速度更快,因为cpu不再需要打「长途电话」了。

图片

我们可以看到,与便宜得多的英特尔计算机相比,m2 ultra仅通过arm isa暴露了30%的计算能力。

如果开发者想访问更多内容,则需要通过苹果的专有框架,例如metal和accelerate。

amd

虽然llamafile非常关心帮助缺乏gpu的人,但也为另外1%的人提供了一流的体验。

图片

amd ryzen threadripper pro 7995wx,通过花费10,000美元左右,你会得到96个基于zen4架构的avx512内核。

尽管价格只有m2 ultra的两倍,但7995wx x86 isa提供的原始计算能力是m2 ultra arm isa的7倍,token生成速度几乎相同,这可能要归功于384m的l3缓存。

图片

通过justine的优化,现在可以在zen4上以2.8倍的速度运行llama。

天才程序员

图片

justine tunney出生于1984年,14岁就开始帮别的黑客开发软件,当时的绰号是「oogle」。

我们来浅浅地看一下她这些年的一些工作:

redbean

一个web服务器,神奇的是可以跨平台在6种操作系统上运行!

图片

这可不是java那种叠了一层虚拟机的机制,justine开发了一种叫做ape(acctually portable executbale)的文件格式,可以在任何x86-64的操作系统上执行。

「一次编译,处处运行」——java:嗯?这不是我吗?

cosmopolitan libc

为了能够跨平台调用外部程序,比如c标准库,justine直接手搓了一个libc,在各种平台上实现了所有需要的核心操作:

图片

看一下上面的工作量,实在是太炸裂了,而且一般人就算想肝,没有实力也是不可能的。

sectorlisp

仅有512个字节,最小的lisp实现,可通过bios引导启动:

图片

除了上面这几个,还有诸如blinkenlights、rosehub等天才项目,这里不再一一列举。

对于这番成就,有网友感叹道:

图片

对于之前提到的mmap工作,网友评价:「有fabrice bellard之风」。

2012年,justine tunney开始在谷歌工作,并负责了一些知名项目的关键部分。

图片

比如大名鼎鼎的tensorflow,tunney为这个项目做出了许多贡献,包括用于存储数据的摘要系统。

bazel是谷歌从make演变而来的pb级构建系统,tunney的主要贡献是下载器代码部分,用于自动化运营商级公共工件传输。

图片

nomulus是一项用于管理顶级域名的服务,是谷歌的第一个开源生产服务。tunney负责为其编写注册表数据托管系统。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习ai大模型,能够解决你们学习中的困难。

我已将重要的ai大模型资料包括市面上ai大模型各大白皮书、agi大模型系统学习路线、ai大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、agi大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习ai大模型。

在这里插入图片描述

二、ai大模型视频教程

在这里插入图片描述

三、ai大模型各大学习书籍

在这里插入图片描述

四、ai大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习ai大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习ai大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握ai大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习ai大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习ai大模型是一项有前景且值得投入的时间和精力的重要选择。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Docker面试题

08-06

最全docker--高级篇

08-06

趁着阿里云还没收费,多用用小雅吧 --xiaoya杂谈

08-06

一文讲解HarmonyOS 应用开发者高级认证考试从注册到考试全流程

08-06

初识HarmonyOS

08-06

HarmonyOS应用开发者基础认证

08-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论