llama.cpp 是使用纯 C/C++ 实现的大语言模型(LLM)推理框架,内部大量使用其衍生项目 ggml 进行张量运算,对计算性能要求较高。近日,PLCT 实验室的实习生 xctan 为 ggml 的 Q4_0_8_8 量化方式的矩阵乘法算子增加了优化后的 RISC-V Vector 1.0 支持,取得了显著的性能提升。
源码地址:
https://github.com/ggerganov/llama.cpp/pull/10029在 SpacemiT K1(8 核,RVV 1.0,VLEN 256)上,测试了新算子在运行 llama 3B 模型时的性能表现,如下图所示:图中表格各项测试的第一行为本次添加的优化算子,与优化前的编译器自动向量化相比,最高可以提升 350% 的性能,对比另一种 RVV 实现也最高有 77.2% 的提升。不过值得注意的是,图中展示的较旧的编译器版本对 RVV 的自动向量化支持并不完善,生成的向量化代码在 SpacemiT K1 上的运行效率较低,也在一定程度上影响了性能;而人工编写的优化代码使用了 RISC-V Vector 内联函数来直接指导编译器生成对应的向量操作指令。后续,PLCT 实验室将持续完善 llama.cpp RVV 1.0 的支持,并计划支持 xtheadvector,敬请期待。