Web LLM:将LLM聊天机器人带到浏览器

如果你可以在浏览器中本地运行LLMs和LLM聊天机器人,那不是很酷吗?让我们了解更多关于Web LLM项目的信息,这是朝这个方向迈出的有趣一步

基于LLM的聊天机器人通过前端可访问,涉及大量昂贵的API调用到服务器端。但是,如果我们可以让LLM完全在浏览器中运行——利用底层系统的计算能力,这样,客户端就可以完全使用LLM的全部功能,而不必担心服务器可用性、基础设施等问题。Web LLM是旨在实现这一目标的项目。

让我们更深入地了解Web LLM的驱动因素和构建这样一个项目的挑战。我们还将看到Web LLM的优点和局限性。

什么是Web LLM?

Web LLM是一个项目,使用WebGPU和WebAssembly等技术,使LLM和LLM应用程序可以完全在浏览器中运行。使用Web LLM,您可以通过WebGPU利用底层系统的GPU在浏览器中运行LLM聊天机器人。

它使用Apache TVM项目的编译器堆栈,并使用最近发布的WebGPU。除了3D图形渲染等功能外,WebGPU API还支持通用GPU计算(GPGPU计算)。

构建Web LLM的挑战

由于Web LLM完全在客户端运行而没有任何推理服务器,因此与该项目相关的挑战包括:

  • 大型语言模型使用Python框架进行深度学习,这些框架也原生支持利用GPU进行张量操作。
  • 在构建Web LLM以在浏览器中完全运行时,我们将无法使用相同的Python框架。必须探索能够在Web上运行LLMs的替代技术栈,同时仍使用Python进行开发。
  • 运行LLM应用通常需要大型推理服务器,但当一切都在客户端——在浏览器中运行时,我们不能再使用大型推理服务器。
  • 需要对模型的权重进行智能压缩,以使其适合可用内存。

Web LLM如何工作?

Web LLM项目使用底层系统的GPU和硬件功能在浏览器中运行大型语言模型。机器学习编译的过程通过利用TVM Unity和一系列优化将LLMs的功能嵌入到浏览器端。

该系统是用Python开发的,并在Web上使用TVM运行时。这种移植到Web浏览器的方式是通过运行一系列优化来实现的。

LLM的功能首先被烘焙到TVM中的IRModule中。对IRModule中的函数运行几个转换以获取优化和可运行的代码。TensorIR是用于优化具有张量计算的程序的编译器抽象。此外,使用INT-4量化来压缩模型的权重。并且使用TypeScript和emscripten,LLVM编译器将C和C ++代码转换为WebAssembly,从而实现了TVM运行时。

要尝试Web LLM,您需要拥有最新版本的Chrome或Chrome Canary。在撰写本文时,Web LLM支持Vicuna和LLaMa LLMs。

第一次运行模型时,加载模型需要一段时间。由于缓存在第一次运行后完成,因此后续运行速度快且开销最小。

Web LLM的优点和局限性

让我们总结一下Web LLM的优点和局限性。

优点

除了探索Python、WebAssembly和其他技术栈的协同作用外,Web LLM还具有以下优点:

  • 在浏览器中运行LLMs的主要优点是隐私。由于在这种面向隐私的设计中完全消除了服务器端,因此我们不再需要担心数据的使用。由于Web LLM利用底层系统的GPU的计算能力,我们不必担心数据到达恶意实体。
  • 我们可以为日常活动构建个人AI助手。因此,Web LLM项目提供了高度的个性化
  • Web LLM的另一个优点是降低成本。我们不再需要昂贵的API调用和推理服务器,而Web LLM使用底层系统的GPU和处理能力。因此,以较低的成本运行Web LLM是可能的。

限制

以下是 Web LLM 的一些限制:

  • 尽管 Web LLM 缓解了输入敏感信息的担忧,但仍然容易受到浏览器攻击。
  • 有进一步的改进空间,可以增加对多语言模型和浏览器的支持。目前,该功能仅在 Chrome Canary 和最新版本的 Chrome 中可用。将其扩展到更多受支持的浏览器集合将会很有帮助。
  • 由于浏览器运行的鲁棒性检查,使用 WebGPU 的 Web LLM 没有 GPU 运行时的本机性能。您可以选择禁用运行鲁棒性检查的标志,以提高性能。

结论

我们试图了解 Web LLM 的工作原理。您可以尝试在浏览器中运行它,甚至可以在本地部署它。考虑在浏览器中玩弄模型,并检查将其集成到您的日常工作流程中时其效果如何。如果您感兴趣,还可以查看 MLC-LLM 项目,该项目使您可以在任何设备上本地运行 LLM,包括笔记本电脑和 iPhone。

参考和进一步阅读

[1] WebGPU API,MDN Web Docs

[2] TensorIR:自动张量化程序优化的抽象

[3] MLC-LLM Bala Priya C 是来自印度的开发人员和技术作家。她喜欢在数学、编程、数据科学和内容创作的交叉点上工作。她感兴趣和擅长的领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正在通过撰写教程、指南、观点文章等来学习并与开发者社区分享她的知识。