#machine-learning #neural-network #wasm-bindings #llm #wasi-nn

wasmedge-wasi-nn

针对 wasi-nn 的高级别 Rust 绑定,具有 LLM 扩展

3 个不稳定版本

0.8.0 2024年7月1日
0.7.1 2024年4月23日
0.7.0 2024年3月4日

#77WebAssembly

Download history 457/week @ 2024-05-04 393/week @ 2024-05-11 786/week @ 2024-05-18 608/week @ 2024-05-25 861/week @ 2024-06-01 713/week @ 2024-06-08 846/week @ 2024-06-15 808/week @ 2024-06-22 1155/week @ 2024-06-29 867/week @ 2024-07-06 900/week @ 2024-07-13 1523/week @ 2024-07-20 817/week @ 2024-07-27 598/week @ 2024-08-03 730/week @ 2024-08-10 589/week @ 2024-08-17

2,991 每月下载量
用于 llama-core

Apache-2.0

46KB
1K SLoC

wasi-nn 的 Rust 绑定,具有 LLM 扩展

此包受 wasi-nn 包的启发,但增加了对 LLM 的支持。


此包包含对 wasi-nn 系统调用的 Rust 高级别绑定。它在目的上类似于 WASI 绑定,但此包提供从 WebAssembly 访问系统机器学习功能的可选方法。

注意:这些绑定是实验性的(自行承担风险)且受 wasi-nn 规范上游更改的影响。

使用

  1. 在您的 Cargo.toml 中依赖此 crate

    [dependencies]
    wasmedge-wasi-nn = "0.7.1"
    
  2. 在您的应用程序中使用 wasi-nn API,例如

    use wasi_nn;
    let graph = GraphBuilder::new(GraphEncoding::TensorflowLite, ExecutionTarget::CPU)
        .build_from_files([model_path])?;
    let mut ctx = graph.init_execution_context()?;
    ctx.set_input(0, TensorType::F32, &input_dims, &input_buffer)?;
    ctx.compute()?;
    let output_num_bytes = ctx.get_output(0, &mut output_buffer)?;
    
  3. 将应用程序编译成 WebAssembly

    cargo build --target=wasm32-wasi
    
  4. 在支持 wasi-nn 的运行时中运行生成的 WebAssembly,例如 WasmtimeWasmEdge

构建

要从源代码构建此 crate,请使用:cargo build --target wasm32-wasi.

生成

此 crate 包含由 witx-bindgen 生成的代码 (src/generated.rs)。要重新生成此代码,请运行以下脚本

$ scripts/regenerate-bindings-from-witx.sh

示例

示例展示了如何从 Rust 程序中使用 wasi-nn。

许可

此项目采用 Apache 2.0 许可证。有关详细信息,请参阅 LICENSE

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交给本项目的内容将按上述方式许可,不附加任何额外条款或条件。

依赖项

约280–740KB
约17K SLoC