Llamafile 四个月的进展

当 Mozilla 的创新团队首次推出llamafile 项目,我们对开源 AI 开发者们立即给出的积极反馈感到兴奋。它已成为 Mozilla 在 GitHub 上最受欢迎的三个项目之一,吸引了众多贡献者,收到了一些优秀的 PR,并且在我们的Discord 服务器上建立了不断增长的社区。

在整个过程中,主要开发者和项目远景者Justine Tunney一直致力于对项目进行各种各样的根本性改进。就在昨晚,Justine发布了 llamafile 的 v0.8 版本,该版本不仅支持最新的开放模型,还对 CPU 推理进行了许多重大的性能改进。

由于 Justine 的努力,如今 llamafile 成为在自己的硬件上运行各种开源大型语言模型最简单且最快的方式。亲身体验:使用 llamafile,您可以将 Meta 最近发布的LLaMA 3 模型(与同类尺寸中最好的模型相媲美)运行在日常使用的 Macbook 上。

我们是如何做到的?为了解释这一点,让我们回顾一下,讲述自 v0.1 以来发生的所有变化。

tinyBLAS:为 NVIDIA 和 AMD 实现 GPU 支持的民主化

llamafile 建立在如今声名远扬的llama.cpp项目之上。llama.cpp 通过 cuBLAS 线性代数库支持 NVIDIA 处理器的 GPU 加速推理,但这需要用户安装 NVIDIA 的 CUDA SDK。我们对这一事实感到不安,因为它与我们项目的目标相冲突,即构建一个完全开源且透明的 AI 堆栈,任何人都可以在商品硬件上运行它。此外,在某些系统上正确设置 CUDA 可能非常困难。必须有更好的方法。

在社区的帮助下(这里要感谢@ahgamut@mrdomino!),我们创建了自己的解决方案:它被称为 tinyBLAS,是 llamafile 的全新高效线性代数库。tinyBLAS 使得 NVIDIA 加速对 llamafile 用户来说变得简单无缝。在 Windows 上,您甚至不需要安装 CUDA;您只需要可能已经安装的显示驱动程序即可。

但 tinyBLAS 不仅仅局限于 NVIDIA:它还支持 AMD GPU。这不是一件容易的事。尽管 AMD 在当今的 GPU 市场中占据着 20% 的份额,但糟糕的软件和驱动程序支持使他们在机器学习领域一直处于次要地位。这很可惜,因为 AMD 的 GPU 提供高性能、价格竞争力强,而且广泛可用。

llamafile 的目标之一是实现对开源 AI 技术的访问民主化,这意味着让 AMD 参与进来。这就是我们所做的事情:使用 llamafile 的 tinyBLAS,您现在可以轻松充分利用您的 AMD GPU 来加速本地推理。此外,与 CUDA 一样,如果您是 Windows 用户,您甚至不需要安装 AMD 的 ROCm SDK。

所有这一切意味着,对于许多用户来说,llamafile 会自动使用您的 GPU,无需您进行任何操作或几乎无需任何操作。

CPU 性能提升,实现更快的本地 AI

在 Mozilla,我们对“本地 AI”的前景非常感兴趣,在本地 AI 中,AI 模型和应用程序直接在最终用户硬件上运行,而不是在云端。本地 AI 令人兴奋,因为它开辟了更多用户对这些系统的控制,以及为用户提供更高隐私和安全性的可能性。

但许多消费级设备缺乏推理任务通常所需的顶级 GPU。在这方面,llama.cpp 改变了游戏规则,因为它使本地推理不仅在 GPU 上,而且在 CPU 上也成为可能,并且具有可用的性能。

Justine 最近在 llamafile 上的工作将这一技术水平提升到了新的高度。如她在该主题上的详细博客文章中所述,通过编写 84 个新的矩阵乘法内核,她能够将 llamafile 的提示评估性能提高惊人的 10 倍,相比于我们之前的版本。这是在将本地 AI 在消费级硬件上实现可行化方面向前迈出的重要且有影响力的步骤。

这项工作也是我们对开源 AI 社区的承诺的绝佳例证。在完成这项工作后,我们立即提交了一个 PR,将这些性能改进上游到 llama.cpp。这只是我们贡献回 llama.cpp 的众多增强功能中的最新一个,我们计划继续这种做法。

树莓派性能提升

说到消费级硬件,很少有像我们心爱的树莓派一样既有趣又朴实的例子。以白菜价,您将获得运行 Linux 的功能齐全的计算机,并拥有足够多的计算能力来满足典型的桌面使用需求。它是一个令人印象深刻的软件包,但在历史上,它并不被认为是 AI 应用的可行平台。

现在不再是了。llamafile 现在已针对最新模型(树莓派 5)进行了优化,结果是许多小型 LLM——例如 Rocket-3B(下载)、TinyLLaMA-1.5B(下载)和 Phi-2(下载)——在如今最便宜的计算机之一上以可用的速度运行。我们已经看到提示评估速度在某些情况下高达每秒 80 个 token

跟上最新模型

开放模型领域的进步速度惊人地快。在过去的几个月里,数百个模型已通过微调发布或更新。在此过程中,模型性能不断提高,模型尺寸不断减小的趋势非常明显。

llama.cpp 项目一直在出色地跟上所有这些新模型,经常在这些模型发布后的几天内推出对新架构和模型功能的支持。

就我们而言,我们一直将 llamafile 与 llama.cpp 密切同步,以便我们能够支持所有相同的模型。鉴于这两个项目的复杂性,这并非易事,因此我们很幸运有 Justine 来处理此事。

今天,由于她的努力,您可以使用 llamafile 使用最新且最强大的开放模型。例如,我们能够在 Meta 最新的 LLaMA 3 模型——8B-Instruct70B-Instruct——发布后的第一天内推出 llamafiles。在昨天的 0.8 版本中,llamafile 还能够运行 Grok、Mixtral 8x22B 和 Command-R。

创建自己的 llamafiles

自从 llamafile 发布的那一天起,人们就一直希望能够创建自己的 llamafiles。以前,这需要多个步骤,但现在,您可以通过一条命令来完成,例如:

llamafile-convert [model.gguf]

只需片刻,这就会生成一个“model.llamafile”文件,该文件可以立即使用。感谢社区成员@chan1012为我们贡献了这一有用的改进。

在相关的进展中,Hugging Face 最近在其模型中心添加了对 llamafile 的官方支持。这意味着您现在可以搜索和过滤 Hugging Face 上由开源社区其他人创建和发布的 llamafile 文件。

OpenAI 兼容 API 服务器

由于 llamafile 是基于 llama.cpp 构建的,因此它继承了该项目的服务器组件,该组件提供 OpenAI 兼容的 API 端点。这使构建在 OpenAI 之上的开发人员能够切换到使用开源模型。我们在 Mozilla 非常希望支持这种未来:开源 AI 成为集中式、封闭式商业产品的可行替代方案。

虽然开源模型尚未完全媲美封闭模型的功能,但它们正在迅速发展。我们相信,简化现有代码的迁移以针对开源模型执行将增加需求并进一步推动这一进展。

在过去的几个月里,我们投入了精力来扩展这些端点,以提高功能并改善兼容性。如今,llamafile 可以作为各种用例中 OpenAI 的直接替代品。

我们希望进一步扩展我们 API 服务器的功能,并且我们渴望了解开发人员的需求。什么阻碍了您使用开源模型?您需要哪些功能、能力或工具?告诉我们!

与其他开源 AI 项目的集成

最后,看到 llamafile 被独立开发者采用并集成到领先的开源 AI 项目(如 Open Interpreter)中,我们感到非常高兴。特别感谢我们自己的 Kate Silverstein,她完成了为 LangChainLlamaIndex 添加 llamafile 支持的 PR(很快将发布 AutoGPT)。

如果您是开源 AI 项目的维护者或贡献者,并且您认为该项目可以从 llamafile 集成中受益,请告诉我们如何提供帮助

加入我们!

llamafile 项目才刚刚起步,它也仅仅是 Mozilla 为开源 AI 社区做出贡献和参与的重大新举措的第一步。我们很快就会分享更多有关此举措的信息,但现在,我邀请您加入我们,参与 llamafile 项目!

与 Mozilla 的 llamafile 团队以及整个 llamafile 社区联系的最佳场所是我们的 Discord 服务器,该服务器设有专门用于 llamafile 的频道。当然,您也可以随时通过我们的 GitHub 代码库提交您的增强请求、问题和 PR。

希望您能加入我们。接下来的几个月对 llamafile 和开源 AI 本身来说,将比过去几个月更加有趣和充满意外。

 

关于 Stephen Hood

Stephen 在 Mozilla Builders 领导开源 AI 项目(包括 llamafile)。他之前曾管理社交书签先驱 del.icio.us;共同创办了 Storium、Blockboard 和 FairSpin;并在雅虎搜索和 BEA WebLogic 工作过。

Stephen Hood 的更多文章…