安装
可以将WasmEdge运行时安装在任何通用Linux和MacOS平台上。如果使用Windows 10或Fedora/Red Hat Linux系统,您可以使用它们的默认包管理器进行安装。
通用的Linux和MacOS平台
安装WasmEdge的最简单方法是运行以下命令。需确保系统中应该安装了git。
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash查看install.sh中的内容,install.sh的主要功能是确保系统上存在Python3解释器并执行一个Python安装脚本https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.py。
因此也可以直接下载install.py,并执行下面的命令进行安装:
python3 install.pyWasmEdge默认被安装在$HOME/.wasmedge目录中。
运行以下命令以使已安装的二进制文件在当前会话中可用。
source $HOME/.wasmedge/envwasmedge --version
wasmedge version 0.14.1
(plugin "wasi_logging") version 0.1.0.0安装特定版本的 WasmEdge
WasmEdge 安装程序脚本默认会安装最新的官方发布版本。 你可以通过使用 -v 参数来安装特定版本的 WasmEdge,包括预发布版本或旧版本。如下所示:
VERSION=0.14.1
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- -v $VERSION安装的内容
WasmEdge默认被安装在$HOME/.wasmedge目录中。安装完成后会有以下目录和文件:
tree ~/.wasmedge
├── bin
│ ├── wasmedge
│ └── wasmedgec
├── env
├── include
│ └── wasmedge
│ ├── enum_configure.h
│ ├── enum_errcode.h
│ ├── enum.inc
│ ├── enum_types.h
│ ├── int128.h
│ ├── version.h
│ └── wasmedge.h
├── lib
│ ├── libwasmedge.so -> libwasmedge.so.0
│ ├── libwasmedge.so.0 -> libwasmedge.so.0.1.0
│ └── libwasmedge.so.0.1.0
└── pluginbin目录中包含WasmEdge运行时可执行文件。wasmedge工具是标准的WasmEdge运行时,可以通过命令行使用它。- 运行一个WASM文件:
wasmedge --dir .:. app.wasm
- 运行一个WASM文件:
wasmedgec工具是提前(AOT)编译器,用于将.wasm文件编译成本机的.so文件(在MacOS上则编译成.dylib,在 Windows上则编译成.dll,或编译成在各平台上通用的.wasm格式)。wasmedge可以执行编译后的文件。
lib目录包含WasmEdge共享库和依赖库。这对于WasmEdge SDK在主机应用程序中启动WasmEdge程序和函数很有用。include目录包含WasmEdge头文件。这对于WasmEdge SDK很有用。plugin目录包含WasmEdge插件。这些是WasmEdge SDK 的可加载扩展,在运行WasmEdge CLI时会自动加载。
安装WasmEdge及插件
WasmEdge插件是预构建的原生模块,为WasmEdge运行时提供额外的功能。要将插件与运行时一起安装,可以在安装程序中传递--plugins参数。例如,以下命令将wasi_nn-ggml插件安装到WasmEdge运行时,以启用 LLM(大语言模型)推理。
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugins wasi_nn-ggml或
python3 install.py --plugins wasi_nn-ggml要安装多个插件,可以使用 –plugins 选项传递插件列表。例如,以下命令安装wasi_logging和wasi_nn-ggml插件。wasi_logging插件允许 Rustlog::LogAPI 编译成Wasm并运行在 WasmEdge。
curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- --plugins wasi_logging wasi_nn-ggml安装程序从 GitHub 上的 WasmEdge 版本下载插件文件,解压缩它们,然后将它们复制到~/.wasmedge/plugin/文件夹。
注意
WASI-NN相关的插件都是独占的。用户只能安装一个 WASI-NN 后端。 从 WasmEdge 0.14.1开始,WASI-Logging插件被捆绑到WasmEdge共享库中,不需要单独安装。 有些插件需要依赖项。请按照注释列中的指南安装依赖项。
以下链接中是WasmEdge官方发布的插件。用户可以通过安装程序的--plugins选项参数轻松安装它们。
卸载
使用下面的指令卸载 WasmEdge:
bash <(curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/uninstall.sh)注意
如果wasmedge可执行文件的父文件夹包含.wasmedge,则该文件夹也会被删除。例如,脚本会一并删除默认的$HOME/.wasmedge文件夹。
安装插件的依赖项
GGML Dependencies
WasmEdge从0.13.5开始的安装程序将自动检测CUDA。如果检测到CUDA,安装程序将始终尝试安装WASI-NN GGML插件的CUDA版本。
如果CPU是机器上唯一可用的硬件,安装程序将安装OpenBLAS版本的插件。
sudo apt update && apt install -y libopenblas-devWASI-NN
WASI-NN是WebAssembly System Interface for Neural Networks 的缩写,是一个允许在 WebAssembly(Wasm)中运行神经网络推理的接口。它通过提供一套标准化的 API,使开发者能够在各种平台和设备上使用 WebAssembly 来部署机器学习模型,而不依赖于特定的硬件或系统架构。
WASI-NN 主要提供以下功能:
- 加载模型:可以将训练好的机器学习模型加载到 WebAssembly 环境中。
- 执行推理:支持在 WebAssembly 环境中执行神经网络推理,处理输入数据并返回推理结果。
- 支持多种框架:WASI-NN 旨在支持多种机器学习框架(如 TensorFlow、ONNX 等)的模型。
它的主要优势在于跨平台兼容性,借助 WebAssembly 的轻量级和高效性,WASI-NN 可以在不同的设备和操作系统中高效运行神经网络模型,特别是在边缘设备或 Web 环境中。
WasmEdge支持多种WASI-NN的后端。
- ggml后端:支持 Ubuntu 20.04 以上、macOS (M1 和 M2) 和 GPU (NVIDIA)。
- PyTorch 后端:支持 Ubuntu 20.04 以上 和 manylinux2014_x86_64。
- OpenVINO™ 后端:支持 Ubuntu 20.04 以上。
- TensorFlow-Lite 后端:支持 Ubuntu 20.04 以上,manylinux2014_x86_64 和 manylinux2014_aarch64。
PyTorch Dependencies
WASI-NN插件与PyTorch后端依赖于libtorch C++ 库来执行 AI/ML 计算。需要安装PyTorch 1.8.2 LTS 依赖项才能使其正常工作。
export PYTORCH_VERSION="1.8.2"
# For the Ubuntu 20.04 or above, use the libtorch with cxx11 abi.
export PYTORCH_ABI="libtorch-cxx11-abi"
# For the manylinux2014, please use the without cxx11 abi version:
# export PYTORCH_ABI="libtorch"
curl -s -L -O --remote-name-all https://download.pytorch.org/libtorch/lts/1.8/cpu/${PYTORCH_ABI}-shared-with-deps-${PYTORCH_VERSION}%2Bcpu.zip
unzip -q "${PYTORCH_ABI}-shared-with-deps-${PYTORCH_VERSION}%2Bcpu.zip"
rm -f "${PYTORCH_ABI}-shared-with-deps-${PYTORCH_VERSION}%2Bcpu.zip"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(pwd)/libtorch/lib注意
对于 Ubuntu 20.04 或更高版本,WasmEdge 安装程序将安装 Ubuntu 版本的 WasmEdge 及其插件。对于其他系统,WasmEdge 安装程序将安装 manylinux2014 版本,您应该获得没有 cxx11-abi 的 libtorch。
开始使用WasmEdge
如何运行独立的 WASM 应用程序
Hello world示例是一个独立的Rust应用程序,可以通过WasmEdge CLI执行。它的源代码和构建说明在这里可以找到。 从这里下载 hello.wasm 文件,或者运行以下命令:
下载hello.wasm文件:
wget https://github.com/second-state/rust-examples/releases/latest/download/hello.wasm使用wasmedge命令运行程序:
wasmedge hello.wasm
Hello WasmEdge!使用AoT编译器wasmedgec获得更好的性能:
wasmedgec hello.wasm hello_aot.wasm
wasmedge hello_aot.wasm
Hello WasmEdge!如何运行HTTP服务器
这个示例是一个用Rust编写的独立 HTTP 服务器。它演示了Rust + WasmEdge作为微服务的轻量级堆栈。它的源代码和构建说明在这里可以找到。
下载server.wasm文件:
wget https://github.com/second-state/rust-examples/releases/latest/download/server.wasm使用wasmedge命令运行程序:
wasmedge server.wasm
Listening on http://0.0.0.0:8080在另一个终端窗口中,执行以下操作:
curl http://localhost:8080/
Try POSTing data to /echo such as: `curl localhost:8080/echo -XPOST -d 'hello world'`
curl http://localhost:8080/echo -X POST -d "Hello WasmEdge"
Hello WasmEdge如何运行一个基于JavaScript的服务器
这个示例是一个独立的HTTP服务器,使用Node.js API用JavaScript编写的。它演示了WasmEdge作为Node.js应用程序的轻量级运行时。其源代码可在此处获取。
下载wasmedge_quickjs.wasm文件:
wget https://github.com/second-state/wasmedge-quickjs/releases/download/v0.5.0-alpha/wasmedge_quickjs.wasm下载modules.zip文件:
wget https://github.com/second-state/wasmedge-quickjs/releases/download/v0.5.0-alpha/modules.zip将modules.zip文件解压缩到当前目录到./modules/中:
unzip modules.zip下载server.js文件:
wget https://raw.githubusercontent.com/second-state/wasmedge-quickjs/main/example_js/docker_wasm/server/server.js使用wasmedge命令运行程序:
wasmedge --dir .:. wasmedge_quickjs.wasm server.js
listen 8080 ...在另一个终端窗口中,执行以下操作:
curl http://localhost:8080/echo -X POST -d "Hello WasmEdge"
Hello WasmEdge