[SJTU-IPADS/PowerInfer]请问和llama.cpp 相比有什么优化的地方吗?因为我看大部分代码都是和他重合的

2024-06-21 719 views
1

虽然有点冒犯,但是如题

回答

0

感谢您对我们项目的关注。实际上,我们的工作基于llama.cpp进行了扩展,这也导致了代码的重合。我们非常感谢llama.cpp提供的优秀、易于修改的代码架构。在此基础上,为了实现神经元粒度的划分,我们对模型加载方式进行了改进,并提供了相关的稀疏算子。此外,我们还增强了对CPU和GPU算子的并行处理能力。总的来说,我们并不倾向于从头开始构建整个系统;llama.cpp已经为我们奠定了坚实的代码基础。

2

请问 powerInfo 是基于哪个版本的 llama.cpp 做扩展的?原始的外层接口是否有修改?和 llama-cpp-python是否兼容?

5

完全不兼容 需要ReLU化的模型

3

接口层面应该是可以兼容的,模型不一致不影响不影响接口层面的。

4

对于4090 的推理速度我存在质疑。不可能会少于10t/s(注意这是CPU推理的速度) image基于llama.cpp拉出的是只适配cpu的,你可以拉出最新的llama.cpp 已经适配了这个问题。 再次对比下速度。

3

建议您按照我们的论文复现一下相关实验,对比powerinfer和llama.cpp在Falcon的性能。 如果发现任何问题,欢迎带着您的数据和我们讨论,谢谢。

1

PowerInfer 利用了MLP中两个Linear层参数活跃度的高局部性,挺有创新性的,性能也很赞!

只是目前PowerInfer 需要限定模型MLP中的激活函数使用 ReLU。 原始的LLAMA模型使用的是SwiGLU,所以PowerInfer暂时不支持原始的LLAMA模型,需要将模型中的SwiGLU替换成ReLU。 请问我的理解对吗? 另外,简单替换激活函数之后,如果没有重新训练或者微调,模型推理的准确度怎么样? PowerInfer 需要限定使用ReLU的原因是什么呢? 对于其他激活函数,有观察到MLP中参数活跃度的高局部性吗?