BitNet.cpp vs Llama.cpp:在CPU上运行LLM

在CPU上运行大型LLMs,选择哪种框架?

Photo by Liam Briese on Unsplash

BitNet.cpp由微软发布,可在本地系统中运行1位LLMs(取自论文:1位LLMs时代),使100B LLMs可以在最小硬件上运行。作为该领域的王者,Llama.cpp也尝试通过消除使用GPU来运行LLMs来实现类似的目标。

那么您应该使用哪种框架呢?

在这篇文章中我们会谈到这个。作为一个入门,如果你还没看过BitNet.cpp的话,你可以在下面查看。

何为1比特LLMs?

1比特LLMs是一种大型语言模型,利用三进制表示其参数,使每个权重可以取三个值中的一个:-1、0或1。这种方法显著减少了内存要求和计算成本,同时保持了与传统全精度模型相当的性能,使其能够部署在性能较低的硬件上。请在下面详细探索1比特LLMs。

关于Llama.cpp,它是由Georgi Gerganov开发的开源C++库,实现了LLaMA(Meta AI)架构,可在各种硬件平台上进行高效推理。 它允许开发人员在消费级硬件上本地运行大型语言模型。

但是为什么BitNet.cpp或Llama.cpp这样重要呢?

运行一个体面的大型语言模型(LLM)通常需要庞大的GPU内存,往往超出许多开发人员的能力范围。例如,一个10亿参数模型可能需要16到24 GB的GPU内存,而更大的模型需求更多。

这些框架通过使用显著减少内存需求的技术来解决这个问题。通过将模型转换为较低精度格式,它们使强大的人工智能应用程序可以在标准硬件上运行,无需大量的GPU资源。这种可访问性使得较小的团队和个人开发人员可以尝试高级人工智能技术。最终,BitNet.cpp 和 Llama.cpp 使得人工智能在更广泛的应用范围内更具包容性和实用性。

比较

我们将在多个方面比较这些框架

  1. 速度优化:BitNet.cpp 在速度方面表现出色,达到了与人类阅读相媲美的速度(每秒5-7个标记)。Llama.cpp 在性能方面有所提升,但通常落后于BitNet,特别是在低位量化场景下。
  2. 内存优化:BitNet.cpp通过使用1位和三元参数表示显著减少内存,Llama.cpp支持量化但未达到相同效率水平。
  3. CPU 适用性:这两个框架在 CPU 上运行效率高,但 BitNet.cpp 特别针对 CPU 推理进行了优化,相对于 Llama.cpp 在不同架构上表现出更好的性能。
  4. 易用性:Llama.cpp通常更加用户友好,并拥有更广泛的社区支持,使开发者更容易实现。而BitNet.cpp虽然功能强大,但可能需要对低位架构有更深入的理解。
  5. 开发者团队: BitNet.cpp 由微软和学术机构开发,专注于高效的LLM部署,而Llama.cpp 是由Meta AI的LLaMA模型系列社区驱动的。
  6. 支持的模型:BitNet.cpp支持特定的1位模型,如BitNet b1.58(目前只有3种),而Llama.cpp支持更多范围的模型,包括LLaMA系列的各种配置。
  7. 其他重要标准:与传统框架相比,BitNet.cpp 可将能源消耗降低高达82%,适用于资源受限环境。相比之下, Llama.cpp 注重性能,但并未像能源效率那样着重关注。

总的来说,与Llama.cpp相比,BitNet.cpp在各方面看起来都更好(除了少数几点),因此是一个重要的游戏改变者。

但是,正如作者所提到的,BitNet.cpp是基于Llama.cpp框架的,因此可以被视为具有对1比特LLM的支持的Llama.cpp的升级版本。

你可以探索下面的框架

结论: 你应该选择哪个?

在一天结束时,BitNet.cpp和Llama.cpp都有自己的优点,但选择取决于你的需求。如果你需要一流的速度、内存效率和为大型LLM节省能源,BitNet.cpp显然是最佳选择 — 就像给Llama.cpp进行了严重的1位魔术升级一样。另一方面,如果你想要更广泛的模型支持、更容易的设置以及活跃的社区,Llama.cpp仍然是一个可靠的选择。

如果您想要在最小硬件上推动可能性的边界,而又不想在GPU上花费太多,那么BitNet.cpp是一个不错的选择。但是,如果您需要灵活性,或者刚刚起步,想要一个经过验证的框架,那么Llama.cpp会让您感觉宾至如归。

底线:两者都试试,看看哪个适合您的需求,然后做出选择。无论如何,您都将迈入在日常硬件上运行的LLM的未来 - 无需高端GPU!

2024-10-21 04:10:54 AI中文站翻译自原文