由 Second State 开发的 run-llm.sh
脚本是一个命令行工具,用于让你快速在本地设备使用 CLI 和与 OpenAI 兼容的 API 服务器运行开源大型语言模型(LLMs)。这个命令行应用程序会自动下载并安装 WasmEdge runtime、模型文件以及用于推理的可移植 Wasm 应用程序。用户只需按照命令行提示选择所需的选项即可。
运行 run-llm.sh
bash <(curl -sSfL 'https://code.flows.network/webhook/iwYN1SdN3AmPgR5ao5Gt/run-llm.sh')
按照提示安装 WasmEdge Runtime 并下载你喜欢的开源大模型。然后,你将被询问是否希望通过命令行界面或通过 web 界面与模型进行交流。
-
命令行界面:只需留在终端。当你看到一个
[USER]
提示符,就可以提问了! -
Web UI:在安装本地 web 应用程序和本地 web 服务器(用 Rust 编写,并在 WasmEdge 中运行)后,你将被要求从浏览器打开 http://127.0.0.1:8080。
点击查看Web UI 视频
就是这样啦。
背后的机制
run-llm.sh
脚本使用可移植 Wasm 应用程序在 WasmEdge Runtime 中运行大语言模型。这些应用程序是可移植的,所以你可以简单地将 wasm 二进制文件复制到另一台具有不同 CPU 或 GPU 的设备上,它完全可以顺利运行。CLI 和基于 web 的聊天用户界面使用了不同的 wasm 应用程序。
命令行界面
llama-chat.wasm
应用程序为大语言模型提供了一个基于命令行的聊天界面。它是用简单的 Rust 编写的,你可以在这里找到其源代码。无论你使用什么设备,都可以按照以下方式下载 Wasm 应用程序。
curl -LO https://github.com/second-state/llama-utils/raw/main/chat/llama-chat.wasm
脚本使用以下命令来运行 Wasm 应用程序。-p
参数表示模型需要的聊天模板,用于格式化聊天消息。你可以在这里找到模型及其相应聊天模板名称的列表。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:llama-2-7b-chat.Q5_K_M.gguf llama-chat.wasm -p llama-2-chat
Web UI
llama-api-server.wasm
应用程序为大语言模型创建了一个支持基于 API 的或基于 web 的聊天界面的 web 服务器。它是用简单的 Rust 编写的,你可以在这里找到其源代码。无论你使用什么设备,都可以按照以下方式下载 Wasm 应用程序。
curl -LO https://github.com/second-state/llama-utils/raw/main/api-server/llama-api-server.wasm
脚本使用以下命令来运行 Wasm 应用程序。-p
参数表示模型需要的聊天模板,用于将聊天消息变成特定格式。可以在这里找到模型及其相应聊天模板名称的列表。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:llama-2-7b-chat.Q5_K_M.gguf llama-api-server.wasm -p llama-2-chat
技术栈
可以看到,run-llm.sh
应用程序是用 Rust 编写并编译为 Wasm,从而实现跨平台部署。它提供了一个强大的替代基于 Python 的 AI 推理的方案。这样,我们就不需要安装复杂的 Python 包或 C++ 工具链。
Rust 程序管理用户输入、跟踪对话历史、将文本转换为 LLM 的特定聊天模板,并使用 WASI NN API 运行推理操作。Rust 是 AGI 的语言。Rust + WasmEdge 堆栈提供了一个统一的云计算基础设施,从 IoT 设备到边缘云,再到本地服务器,再到公共云。主要好处如下。
- 轻量。总运行时大小为 30MB,与 Python 的 4GB 和 Ollama 的 350MB 相比。
- 快速。在 GPU 上实现全本机速度。
- 可移植。在不同 CPU、GPU 和操作系统上的单一跨平台二进制文件。
- 安全。在不受信任的设备上沙箱化和隔离执行。
- 轻松接入容器。在 Docker、containerd、Podman 和 Kubernetes 中得到支持。
- 与 OpenAI 兼容。无缝集成到 OpenAI 工具生态系统中,如 langchain、Llamaindex 和 flows.network。
无论你是开发者、研究人员还是 AI 爱好者,run-llm.sh
都提供了一种高效且易于访问的方式,让你在自己的设备上利用最先进的语言模型的强大能力。快来试试看吧!