用 Rust + Wasm 轻松跨设备运行 OpenChat-3.5-GGUF
OpenChat-3.5 模型是一个 7B 大型语言模型 (LLM),采用名为 C-RLFT 的独特策略进行了微调,该策略的灵感来自于离线强化学习。 这种方法允许模型在没有偏好标签的情况下从混合质量的数据中学习,使其性能可以与复杂的 ChatGPT 模型相媲美。
OpenChat-3.5-7B 模型于 2023 年 11 月 1 日发布,据说在各种基准测试中都超越了 ChatGPT。本文我们将讲解
如何在自己的设备上运行 OpenChat-3.5
为OpenChat-3.5 创建一个兼容 OpenAI 的 API 服务
我们将使用 Rust + Wasm 技术栈开发和部署此模型的应用程序。不需要安装复杂的 Python 包或 C++ 工具链!了解我们选择这个技术栈的原因[1]。
步骤1:通过以下命令行安装 WasmEdge[2]。
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugin wasi_nn-ggml
步骤2: 下载模型 GGUF文件.[3] 由于模型的大小为几个 GB,下载可能需要一定时间。
[curl -LO https://huggingface.co/second-state/OpenChat-3.5-GGUF/blob/main/OpenChat-3.5.Q5_K_M.gguf](https://huggingface.co/second-state/OpenChat-3.5-GGUF/blob/main/openchat_3.5.Q5_K_M.gguf "curl -LO https://huggingface.co/second-state/OpenChat-3.5-GGUF/blob/main/OpenChat-3.5.Q5_K_M.gguf")
步骤3:下载用于聊天应用的跨平台可移植 Wasm 文件。该应用程序让你能用命令行与模型聊天,它的 Rust 源代码在这里[4]。
curl -LO https://github.com/second-state/llama-utils/raw/main/chat/llama-chat.wasm
就是这样。可以通过输入以下命令在终端与模型进行聊天。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:openchat_3.5.Q5_K_M.gguf llama-chat.wasm -p openchat -r '<|end_of_turn|>'
可移植 Wasm 应用程序会自动利用设备上的硬件加速器(如 GPU)。
在我M1 32G 内存的 Mac 上,速度约为每秒处理 21.02 个 token。
[USER]:
What's the capital of France?
[ASSISTANT]:
The capital of France is Paris.
[USER]:
what about Norway?
[ASSISTANT]:
The capital of Norway is Oslo.
[USER]:
I have two apples, each costing 5 dollars. What is the total cost of these apples?
[ASSISTANT]:
The total cost of the two apples is 10 dollars.
[USER]:
What if I have 3 apples?
[ASSISTANT]:
If you have 3 apples, each costing 5 dollars, the total cost of the apples is 15 dollars.
与 OpenAI 兼容的 Web API 允许该模型与大量 LLM 工具和代理框架(如 flows.network、LangChain 和 LlamaIndex)一起工作。
下载一个 API 服务器应用程序。它也是一个跨平台可移植的 Wasm 应用程序,可以在各种不同 CPU 和 GPU 设备上运行。
curl -LO https://github.com/second-state/llama-utils/raw/main/api-server/llama-api-server.wasm
然后,下载聊天机器人 Web UI,以通过聊天机器人 UI 与模型进行交互。
curl -LO https://github.com/second-state/chatbot-ui/releases/download/v0.1.0/chatbot-ui.tar.gz
tar xzf chatbot-ui.tar.gz
rm chatbot-ui.tar.gz
接下来,使用以下命令行启动模型的 API 服务器。 然后,打开浏览器访问 http://localhost:8080[5] 开始聊天!
wasmedge --dir .:. --nn-preload default:GGML:AUTO:openchat_3.5.Q5_K_M.gguf llama-api-server.wasm -p openchat -r '<|end_of_turn|>'
还可以从另一个终端使用 curl 与 API 服务器交互。
curl -X POST http://localhost:8080/v1/chat/completions \
-H 'accept:application/json' \
-H 'Content-Type: application/json' \
-d '{"messages":[{"role":"system", "content": "You are a helpful assistant."}, {"role":"user", "content": "What's the capital of Paris"}], "model":"OpenChat 3.5"}'
就这样。WasmEdge 是运行 LLM 应用程序最简单、最快速、最安全的方式[6]。尝试一下吧!
加入 WasmEdge Discord[7] 提问和分享见解。如果在运行这个模型时有任何问题,请访问 second-state/llama-utils[8] 提 issue,或预约 demo[9]。
[1]
了解我们选择这个技术栈的原因: https://www.secondstate.io/articles/fast-llm-inference/
[2]
WasmEdge: https://github.com/WasmEdge/WasmEdge
[3]
模型 GGUF文件.: https://huggingface.co/second-state/OpenChat-3.5-GGUF/tree/main
[4]
这里: https://github.com/second-state/llama-utils/tree/main/chat
[5]
http://localhost:8080: http://localhost:8080/
[6]
运行 LLM 应用程序最简单、最快速、最安全的方式: https://www.secondstate.io/articles/fast-llm-inference/
[7]
WasmEdge Discord: https://discord.com/invite/U4B5sFTkFc
[8]
second-state/llama-utils: https://github.com/second-state/llama-utils/
[9]
demo: https://code.flows.network/webhook/vvAtEBUk6QMhVVLuw7IU
Akira631 2023-02-19
学术Fun 2024-07-13