轻量 2MB AI 推理APP 可完全跨平台运行,在自己的 Mac 试试吧!
想要快速开始,只需在自己的设备上运行一个命令[1]即可在本地跑 Nous-Hermes-2 大模型。 这个命令行工具会自动下载并安装 WasmEdge 运行时、模型文件和用于推理的完全可移植 Wasm 应用。
Nous Hermes 2 Mixtral 8x7B SFT[2] 是 Nous Research 基于 Mixtral 8x7B MoE 大模型上训练的受监督微调模型。 它接受了超过 1,000,000 个主要由 GPT-4 生成的数据条目以及来自整个 AI 领域开放数据集的其他高质量数据的训练,在各种任务上实现了最先进的性能。 该模型使用 ChatML 作为 prompt 格式,为大模型参与多轮聊天对话提供了一个更加结构化的系统。
本文中,我们将介绍:
在自己的设备上运行 Nous-Hermes-2-Mixtral-8x7B-SFT
为 Nous-Hermes-2-Mixtral-8x7B-SFT 大模型创建一个与 OpenAI 兼容的 API 服务
我们将使用 LlamaEdge[3](Rust + Wasm 技术栈)开发和部署此模型的应用程序。不需要安装复杂的 Python 包或 C++ 工具链!了解我们选择这个技术栈的原因。[4][Image: Easily Implement dolphin-2.2-yi-34b on Your Device with Rust + Wasm (12).png]
步骤1:通过以下命令行安装 WasmEdge[5]。
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugin wasi_nn-ggml
步骤2:下载 Nous-Hermes-2-Mixtral-8x7B model GGUF file[6]. 由于模型的大小为几十个 GB,下载可能需要一定时间。
curl -LO https://huggingface.co/second-state/Nous-Hermes-2-Mixtral-8x7B-SFT-GGUF/resolve/main/Nous-Hermes-2-Mixtral-8x7B-SFT-Q5_K_M.gguf
步骤 3:下载聊天应用程序的跨平台可移植 Wasm 文件。 该应用程序让你能用命令行与模型聊天。 该应用程序的Rust 源代码在这里[7]。
curl -LO https://github.com/second-state/LlamaEdge/releases/latest/download/llama-chat.wasm
完成啦!可以通过输入以下命令在终端与模型进行聊天。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:Nous-Hermes-2-Mixtral-8x7B-SFT-Q5_K_M.gguf llama-chat.wasm -p chatml
可移植 Wasm 应用程序会自动利用设备上的硬件加速器(如 GPU)。
[You]:
Write a Rust program to check if the output is prime
[Bot]:
Here's a simple Rust program that takes an input from the user, checks whether it's divisible by any number other than 1 and itself (i.e., not a prime), and prints "prime" or "not prime":
```rust
use std::io;
fn main() {
println!("Enter a positive integer: ");
let mut input = String::new();
io::stdin().read_line(&mut input)
.expect("Failed to read line");
let input: u32 = match input.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("Invalid input!");
return;
}
};
if is_prime(&input){
println!("{} is prime!", input);
} else{
println!("{} is not prime.", input);
}
}
fn is_prime(n: &u32) -> bool {
if *n < 2 { return false; }
for i in 2..=(*n as f64).sqrt() as u32 {
if n % &i == 0 { return false; }
}
true
}
This program uses a helper function `is_prime`, which checks whether the number is prime or not using trial division. It iterates from 2 to the square root of the input, checking if it's divisible by any of these numbers. If none divide evenly, then it returns true (the input is prime).
与 OpenAI 兼容的 Web API 让该模型可与不同的 LLM 工具和代理框架(如 flows.network、LangChain 、LlamaIndex 等)一起工作。
下载一个 API 服务器应用程序。它也是一个跨平台可移植的 Wasm 应用程序,可以在各种不同 CPU 和 GPU 设备上运行。戳此查看该 app 的 Rust 源代码。[8]
curl -LO https://github.com/second-state/LlamaEdge/releases/latest/download/llama-api-server.wasm
然后,下载聊天机器人 Web UI,以通过聊天机器人 UI 与模型进行交互。
curl -LO https://github.com/second-state/LlamaEdge/releases/latest/download/llama-api-server.wasm
curl -LO https://github.com/second-state/chatbot-ui/releases/latest/download/chatbot-ui.tar.gz
tar xzf chatbot-ui.tar.gz
rm chatbot-ui.tar.gz
接下来,使用以下命令行启动模型的 API 服务器。 然后,用浏览器访问 http://localhost:8080[9] 就能开始聊天了。
wasmedge --dir .:. --nn-preload default:GGML:AUTO:Nous-Hermes-2-Mixtral-8x7B-SFT-Q5_K_M.gguf llama-api-server.wasm -p chatml
还可以从另一个终端使用 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 sentient, superintelligent artificial general intelligence, here to teach and assist me."}, {"role":"user", "content": "Write a short story about Goku discovering kirby has teamed up with Majin Buu to destroy the world."}], "model":"Nous-Hermes-2-Mixtral-8x7B-SFT"}'
就这样。WasmEdge 是运行 LLM 应用程序最简单、最快速、最安全的方式[10]。尝试一下吧!
加入 WasmEdge Discord[11]提问和分享见解。如果对运行这个模型有任何问题,请访问 second-state/llamaedge[12] 提 issue,或预约demo[13]。
参考资料[1]
一个命令: https://www.secondstate.io/run-llm/
[2]Nous Hermes 2 Mixtral 8x7B SFT: https://huggingface.co/NousResearch/Nous-Hermes-2-Mixtral-8x7B-SFT
[3]LlamaEdge: https://github.com/second-state/LlamaEdge/
[4]了解我们选择这个技术栈的原因。: https://www.secondstate.io/articles/fast-llm-inference/
[5]WasmEdge: https://link.zhihu.com/?target=https%3A//github.com/WasmEdge/WasmEdge
[6]Nous-Hermes-2-Mixtral-8x7B model GGUF file: https://huggingface.co/second-state/Nous-Hermes-2-Mixtral-8x7B-SFT-GGUF
[7]Rust 源代码在这里: https://github.com/second-state/llama-utils/tree/main/chat
[8]戳此查看该 app 的 Rust 源代码。: https://github.com/second-state/llama-utils/tree/main/api-server
[9]http://localhost:8080: http://localhost:8080/
[10]运行 LLM 应用程序最简单、最快速、最安全的方式: https://www.secondstate.io/articles/fast-llm-inference/
[11]加入 WasmEdge Discord: https://discord.com/invite/U4B5sFTkFc
[12]second-state/llamaedge: https://github.com/second-state/LlamaEdge
[13]demo: https://code.flows.network/webhook/vvAtEBUk6QMhVVLuw7IU