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