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

谷歌的美女程序员,将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就足够了,很好地维护了大家的钱包。

名目地址:​ ​​ ​

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。

虽然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」。

咱们来浅浅地看一下她这些年的一些上班:

一个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担任为其编写注册表数据托管系统。

原文链接:​ ​​ ​

您可能还会对下面的文章感兴趣: