ngxson/wllama

WebAssembly binding for llama.cpp - Enabling on-browser LLM inference

解决的问题

wllama 提供了一种直接在网页浏览器中运行大型语言模型 (LLM) 的方法,无需后端服务器或专用 GPU。它通过提供 WebAssembly (Wasm) 绑定,架起了强大的 C++ 实现 llama.cpp 与网页应用程序之间的桥梁。

运作原理

该项目将 llama.cpp 编译为 WebAssembly,允许浏览器执行模型的推理逻辑。它支持多种执行路径:

  • WebGPU: 将模型层卸载至 GPU,以获得显著更快的性能。
  • Wasm SIMD: 在 GPU 不可用时,使用 SIMD 指令在 CPU 上执行推理,以提高效率。
  • Web Workers: 在后台线程中执行推理,确保浏览器用户界面在生成过程中保持响应且不会冻结。

为了处理大型模型文件,wllama 可以加载分割成较小块的模型,这绕过了浏览器的内存限制 (ArrayBuffer 限制) 并实现了并行下载。

目标对象

希望使用 TypeScript 或 JavaScript 将本地、私有且无服务器的 LLM 功能集成到前端应用程序中的网页开发人员。

特色亮点

  • 兼容 OpenAI 的 API: 为已经熟悉 OpenAI 请求/响应格式的用户简化了集成流程。
  • 硬件加速: 同时支持 WebGPU 和 Wasm SIMD 以优化性能。
  • 多模态能力: 支持图像和音频文件输入,适用于多模态模型。
  • 工具调用: 使模型能够与外部工具交互。
  • 并行模型加载: 能够并行分割和加载大型 GGUF 模型,以提高速度并绕过 2GB 文件大小限制。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • Dispatch