ggml:通过 jart 重写 CPU 的 silu 和 softmax
2024-05-15
该文章讨论了在llama.cpp项目中,jart 提交了一个拉取请求,重写了 CPU 的 silu 和 softmax 函数。重写的函数使用了llamafile的矢量化expf()函数,相比之前的短[65536]查找表,可以更准确地计算 softmax 和 silu。新函数支持 aarch64 和 sse2+,最坏情况下的舍入误差为 2 ulp。作者还编写了 avx2 和 avx512 实现,但与 sse2+fma 相比,它们没有提供太多优势,代码复杂性也不值得。在 AMD Ryzen 9 5950X 和 M2 Ultra 上,SOFT_MAX 比主分支快约 1.5 倍,包含 AVX2 后优势增加到 1.9 倍,znver4 上包含 avx512 后优势高达 2.1 倍。
52