继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

在CPU上运行大型语言模型:BitNet.cpp vs Llama.cpp

德玛西亚99
关注TA
已关注
手记 443
粉丝 92
获赞 559
选择哪个框架在CPU上运行大型LLM模型?

图片由Liam Briese来自Unsplash

微软的BitNet.cpp现已发布,用于在本地系统中运行1位LLM(出自论文《1位LLM的时代》),让100B规模的LLM能在最小的硬件上运行。同样领先的Llama.cpp也试图通过不使用GPU来运行LLM来实现类似的目标。

那么你应该用哪个架构比较好呢?

在这篇文章里,我们会谈到这个话题。首先,如果你还没有看过BitNet.cpp的内容,可以往下看。

什么是只有1位的LLM(大型语言模型)?

1-bit 大型语言模型,简称 LLM,是一种大型语言模型,它们采用三值表示法来表示参数,这些参数中的每个权重可以取 -1、0 或 1 中的一个值。这种做法大大降低了内存需求和计算成本,同时保持了与传统全精度模型相媲美的性能,从而能够在更弱的硬件上部署。请在下方详细了解 1-bit LLM:

Llama.cpp 是 Georgi Gerganov 开发的一个开源 C++ 库,实现了 Meta AI 的 LLaMA 架构的功能,能够在各种硬件平台上高效运行推理。它让开发人员能在消费级硬件上本地运行大型语言模型。

BitNet.cpp 还是 llama.cpp 为什么这么重要呢?

运行一个较大的语言模型(LLM)通常需要大量的GPU内存,这往往超出了许多开发者的负担。例如,具有10亿参数的模型可能需要16到24GB的GPU内存,而更大的模型则需要更多内存。

这些框架通过采用能够显著降低内存需求的技术解决了这个问题。通过将模型转换为较低精度的格式,它们使得强大的AI应用程序可以在标准硬件上运行,而不需要大量的GPU资源。这种可访问性使得较小的团队和个人开发者可以更轻松地尝试先进的AI技术。最终,BitNet.cpp和Llama.cpp让AI更加普及和实用,适用于更广泛的场合。

对比

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

  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 由微软与专注于高效大语言模型部署的学术机构共同开发,而 Llama.cpp 是来自 Meta AI 的 LLaMA 模型家族的社区驱动项目。
  6. 支持的模型: BitNet.cpp 支持特定的1位模型,如 BitNet b1.58(目前只有3个),而Llama.cpp 支持更广泛的模型,包括 LLaMA 系列的各种配置版本。
  7. 其他重要标准: BitNet.cpp 与传统框架相比,最多可节省高达82%的能耗,适用于资源受限的环境。相比之下,Llama.cpp 更注重性能,能效方面则略逊一筹。

总的来说,BitNet.cpp 在各个方面(除了少数几点)都比 Llama.cpp 更优秀,因此它是一个重大的游戏规则改变者。

但是,正如作者提到的,BitNet.cpp 是基于 Llama.cpp 框架的,因此可以看作是 Llama.cpp 的升级版,支持 1 位 LLM。

你可以探索下面的框架内容

GitHub - microsoft/BitNet: 用于 1-bit 大型语言模型的官方推断框架。欢迎在 GitHub 上为 microsoft/BitNet 项目贡献代码。
GitHub - ggerganov/llama.cpp: 用 C/C++ 实现的大规模语言模型推理。只需在 GitHub 上创建一个账户即可参与 ggerganov/llama.cpp 项目的开发。
结论:你应该选哪个?

最终,无论是 BitNet.cpp 还是 Llama.cpp,它们都有各自的亮点,但选择取决于你的需求。如果你需要顶级的速度、内存效率和大型语言模型的节能特性,BitNet.cpp 显然是赢家——它就像给 Llama.cpp 增加了1位魔法的重大改进。另一方面,如果你需要更广泛的模型支持、更简单的设置过程和一个活跃的社区,Llama.cpp 仍然是一款非常不错的选择。

如果你想要在硬件资源有限的情况下最大限度地发挥潜力,并且不想在GPU上花费太多钱,BitNet.cpp可能就是你的首选。但是如果你需要更大的灵活性,或者是初学者希望用一个可靠框架,Llama.cpp会更适合你。

总之,尝试两者,看看哪种更适合你,然后选择一个。不管选择哪一种,你都将进入在日常硬件上运行大型语言模型的未来——不用高端GPU!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP