From 10a9f9ec2fcffa10d3be1f9793c6e991d90e76ae Mon Sep 17 00:00:00 2001 From: jianjunz Date: Fri, 1 Mar 2024 06:54:29 +0800 Subject: [PATCH] WinML backend for wasi-nn (#7807) * Add WinML backend for wasi-nn. * Log execution time. * WinML backend supports execution target selection. ExecutionTarget::Gpu is mapped to LearningModelDeviceKind::DirectX. * Limit WinML backend on Windows only. * Move wasi-nn WinML example to new test infra. * Scale tensor data in test app. App knows input and target data range, so it's better to let app to handle scaling. * Remove old example for wasi-nn WinML backend. * Update image2tensor link. * Format code. * Upgrade image2tensor to 0.3.1. * Upgrade windows to 0.52.0 * Use tensor data as input for wasi-nn WinML backend test. To avoid involving too many external dependencies, input image is converted to tensor data offline. * Restore trailing new line for Cargo.toml. * Remove unnecessary features for windows crate. * Check input tensor types. Only FP32 is supported right now. Reject other tensor types. * Rename default model name to model.onnx. It aligns with openvino backend. prtest:full * Run nn_image_classification_winml only when winml is enabled. * vet: add trusted `windows` crate to lockfile * Fix wasi-nn tests when both openvino and winml are enabled. * Add check for WinML availability. * vet: reapply vet lock --------- Co-authored-by: Andrew Brown --- Cargo.lock | 70 +++++--- .../src/bin/nn_image_classification_winml.rs | 58 ++++++ crates/wasi-nn/Cargo.toml | 20 ++- crates/wasi-nn/src/backend/mod.rs | 17 +- crates/wasi-nn/src/backend/winml.rs | 170 ++++++++++++++++++ crates/wasi-nn/src/testing.rs | 55 +++++- crates/wasi-nn/tests/all.rs | 38 ++-- crates/wasi-nn/tests/fixtures/kitten.rgb | Bin 0 -> 602112 bytes supply-chain/imports.lock | 70 ++++++++ 9 files changed, 459 insertions(+), 39 deletions(-) create mode 100644 crates/test-programs/src/bin/nn_image_classification_winml.rs create mode 100644 crates/wasi-nn/src/backend/winml.rs create mode 100644 crates/wasi-nn/tests/fixtures/kitten.rgb diff --git a/Cargo.lock b/Cargo.lock index 83fd45e37565..29adcf7c3bec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1465,7 +1465,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.51.1", ] [[package]] @@ -3787,6 +3787,7 @@ dependencies = [ "wasi-common", "wasmtime", "wiggle", + "windows", ] [[package]] @@ -4046,6 +4047,25 @@ dependencies = [ "winch-test-macros", ] +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core 0.52.0", + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -4061,7 +4081,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -4075,17 +4095,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -4105,9 +4125,9 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" @@ -4117,9 +4137,9 @@ checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" @@ -4129,9 +4149,9 @@ checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" @@ -4141,9 +4161,9 @@ checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" @@ -4153,9 +4173,9 @@ checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" @@ -4165,9 +4185,9 @@ checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" @@ -4177,9 +4197,9 @@ checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" diff --git a/crates/test-programs/src/bin/nn_image_classification_winml.rs b/crates/test-programs/src/bin/nn_image_classification_winml.rs new file mode 100644 index 000000000000..6996ff25822c --- /dev/null +++ b/crates/test-programs/src/bin/nn_image_classification_winml.rs @@ -0,0 +1,58 @@ +use anyhow::Result; +use std::fs; +use std::time::Instant; +use wasi_nn::*; + +pub fn main() -> Result<()> { + // Graph is supposed to be preloaded by `nn-graph` argument. The path ends with "mobilenet". + let graph = + wasi_nn::GraphBuilder::new(wasi_nn::GraphEncoding::Onnx, wasi_nn::ExecutionTarget::CPU) + .build_from_cache("mobilenet") + .unwrap(); + + let mut context = graph.init_execution_context().unwrap(); + println!("Created an execution context."); + + // Convert image to tensor data. + let tensor_data = fs::read("fixture/kitten.rgb")?; + context + .set_input(0, TensorType::F32, &[1, 3, 224, 224], &tensor_data) + .unwrap(); + + // Execute the inference. + let before_compute = Instant::now(); + context.compute().unwrap(); + println!( + "Executed graph inference, took {} ms.", + before_compute.elapsed().as_millis() + ); + + // Retrieve the output. + let mut output_buffer = vec![0f32; 1000]; + context.get_output(0, &mut output_buffer[..]).unwrap(); + + let result = sort_results(&output_buffer); + println!("Found results, sorted top 5: {:?}", &result[..5]); + assert_eq!(result[0].0, 284); + Ok(()) +} + +// Sort the buffer of probabilities. The graph places the match probability for each class at the +// index for that class (e.g. the probability of class 42 is placed at buffer[42]). Here we convert +// to a wrapping InferenceResult and sort the results. It is unclear why the MobileNet output +// indices are "off by one" but the `.skip(1)` below seems necessary to get results that make sense +// (e.g. 763 = "revolver" vs 762 = "restaurant") +fn sort_results(buffer: &[f32]) -> Vec { + let mut results: Vec = buffer + .iter() + .skip(1) + .enumerate() + .map(|(c, p)| InferenceResult(c, *p)) + .collect(); + results.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + results +} + +// A wrapper for class ID and match probabilities. +#[derive(Debug, PartialEq)] +struct InferenceResult(usize, f32); diff --git a/crates/wasi-nn/Cargo.toml b/crates/wasi-nn/Cargo.toml index 4c8734eec9b7..2b3005e98d6b 100644 --- a/crates/wasi-nn/Cargo.toml +++ b/crates/wasi-nn/Cargo.toml @@ -24,8 +24,19 @@ wasmtime = { workspace = true, features = ["component-model", "runtime"] } # These dependencies are necessary for the wasi-nn implementation: tracing = { workspace = true } -openvino = { version = "0.6.0", features = ["runtime-linking"] } thiserror = { workspace = true } +openvino = { version = "0.6.0", features = [ + "runtime-linking", +], optional = true } + +[target.'cfg(windows)'.dependencies.windows] +version = "0.52" +features = [ + "AI_MachineLearning", + "Storage_Streams", + "Foundation_Collections", +] +optional = true [build-dependencies] walkdir = { workspace = true } @@ -35,3 +46,10 @@ cap-std = { workspace = true } test-programs-artifacts = { workspace = true } wasi-common = { workspace = true, features = ["sync"] } wasmtime = { workspace = true, features = ["cranelift"] } + +[features] +default = ["openvino"] +# openvino is available on all platforms, it requires openvino installed. +openvino = ["dep:openvino"] +# winml is only available on Windows 10 1809 and later. +winml = ["dep:windows"] diff --git a/crates/wasi-nn/src/backend/mod.rs b/crates/wasi-nn/src/backend/mod.rs index e55b94aa411d..4b50fb241eaf 100644 --- a/crates/wasi-nn/src/backend/mod.rs +++ b/crates/wasi-nn/src/backend/mod.rs @@ -2,9 +2,15 @@ //! this crate. The `Box` types returned by these interfaces allow //! implementations to maintain backend-specific state between calls. +#[cfg(feature = "openvino")] pub mod openvino; +#[cfg(feature = "winml")] +pub mod winml; +#[cfg(feature = "openvino")] use self::openvino::OpenvinoBackend; +#[cfg(feature = "winml")] +use self::winml::WinMLBackend; use crate::wit::types::{ExecutionTarget, GraphEncoding, Tensor}; use crate::{Backend, ExecutionContext, Graph}; use std::path::Path; @@ -13,7 +19,16 @@ use wiggle::GuestError; /// Return a list of all available backend frameworks. pub fn list() -> Vec { - vec![Backend::from(OpenvinoBackend::default())] + let mut backends = vec![]; + #[cfg(feature = "openvino")] + { + backends.push(Backend::from(OpenvinoBackend::default())); + } + #[cfg(feature = "winml")] + { + backends.push(Backend::from(WinMLBackend::default())); + } + backends } /// A [Backend] contains the necessary state to load [Graph]s. diff --git a/crates/wasi-nn/src/backend/winml.rs b/crates/wasi-nn/src/backend/winml.rs new file mode 100644 index 000000000000..5940b901e6b5 --- /dev/null +++ b/crates/wasi-nn/src/backend/winml.rs @@ -0,0 +1,170 @@ +//! Implements a `wasi-nn` [`BackendInner`] using WinML. + +use super::{BackendError, BackendExecutionContext, BackendFromDir, BackendGraph, BackendInner}; +use crate::wit::types::{ExecutionTarget, GraphEncoding, Tensor}; +use crate::{ExecutionContext, Graph}; +use std::{fs::File, io::Read, path::Path}; +use windows::core::{ComInterface, HSTRING}; +use windows::Storage::Streams::{ + DataWriter, InMemoryRandomAccessStream, RandomAccessStreamReference, +}; +use windows::AI::MachineLearning::{ + LearningModel, LearningModelBinding, LearningModelDevice, LearningModelDeviceKind, + LearningModelEvaluationResult, LearningModelSession, TensorFeatureDescriptor, TensorFloat, +}; + +#[derive(Default)] +pub struct WinMLBackend(); + +impl BackendInner for WinMLBackend { + fn encoding(&self) -> GraphEncoding { + GraphEncoding::Onnx + } + + fn load(&mut self, builders: &[&[u8]], target: ExecutionTarget) -> Result { + if builders.len() != 1 { + return Err(BackendError::InvalidNumberOfBuilders(1, builders.len()).into()); + } + + let model_stream = InMemoryRandomAccessStream::new()?; + let model_writer = DataWriter::CreateDataWriter(&model_stream)?; + model_writer.WriteBytes(&builders[0])?; + model_writer.StoreAsync()?; + model_writer.FlushAsync()?; + let model = LearningModel::LoadFromStream(&RandomAccessStreamReference::CreateFromStream( + &model_stream, + )?)?; + let device_kind = match target { + ExecutionTarget::Cpu => LearningModelDeviceKind::Cpu, + ExecutionTarget::Gpu => LearningModelDeviceKind::DirectX, + ExecutionTarget::Tpu => unimplemented!(), + }; + let graph = WinMLGraph { model, device_kind }; + + let box_: Box = Box::new(graph); + Ok(box_.into()) + } + + fn as_dir_loadable(&mut self) -> Option<&mut dyn BackendFromDir> { + Some(self) + } +} + +impl BackendFromDir for WinMLBackend { + fn load_from_dir( + &mut self, + path: &Path, + target: ExecutionTarget, + ) -> Result { + let model = read(&path.join("model.onnx"))?; + self.load(&[&model], target) + } +} + +struct WinMLGraph { + model: LearningModel, + device_kind: LearningModelDeviceKind, +} + +unsafe impl Send for WinMLGraph {} +unsafe impl Sync for WinMLGraph {} + +impl BackendGraph for WinMLGraph { + fn init_execution_context(&self) -> Result { + let device = LearningModelDevice::Create(self.device_kind.clone())?; + let session = LearningModelSession::CreateFromModelOnDevice(&self.model, &device)?; + let box_: Box = Box::new(WinMLExecutionContext::new(session)); + Ok(box_.into()) + } +} + +struct WinMLExecutionContext { + session: LearningModelSession, + binding: LearningModelBinding, + result: Option, +} + +impl WinMLExecutionContext { + fn new(session: LearningModelSession) -> Self { + Self { + binding: LearningModelBinding::CreateFromSession(&session).unwrap(), + session, + result: None, + } + } +} + +impl BackendExecutionContext for WinMLExecutionContext { + fn set_input(&mut self, index: u32, tensor: &Tensor) -> Result<(), BackendError> { + // TODO: Support other tensor types. Only FP32 is supported right now. + match tensor.tensor_type { + crate::wit::types::TensorType::Fp32 => {} + _ => unimplemented!(), + } + + let input = self.session.Model()?.InputFeatures()?.GetAt(index)?; + unsafe { + let data = std::slice::from_raw_parts( + tensor.data.as_ptr() as *const f32, + tensor.data.len() / 4, + ); + + self.binding.Bind( + &input.Name()?, + &TensorFloat::CreateFromArray( + &input.cast::()?.Shape()?, + data, + )?, + )?; + } + Ok(()) + } + + fn compute(&mut self) -> Result<(), BackendError> { + self.result = Some(self.session.Evaluate(&self.binding, &HSTRING::new())?); + Ok(()) + } + + fn get_output(&mut self, index: u32, destination: &mut [u8]) -> Result { + if self.result.is_none() { + return Err(BackendError::BackendAccess(anyhow::Error::msg( + "Output is not ready.", + ))); + } + let output_name = self.session.Model()?.OutputFeatures()?.GetAt(index)?; + let output_name_hstring = output_name.Name()?; + + // Print results. + let vector_view = self + .result + .as_ref() + .unwrap() + .Outputs()? + .Lookup(&output_name_hstring)? + .cast::()? + .GetAsVectorView()?; + let output: Vec = vector_view.into_iter().collect(); + unsafe { + destination.copy_from_slice(std::slice::from_raw_parts( + output.as_ptr() as *const u8, + output.len() * 4, + )); + } + + Ok(0) + } +} + +/// Read a file into a byte vector. +fn read(path: &Path) -> anyhow::Result> { + let mut file = File::open(path)?; + let mut buffer = vec![]; + file.read_to_end(&mut buffer)?; + Ok(buffer) +} + +impl From for BackendError { + fn from(e: windows::core::Error) -> Self { + BackendError::BackendAccess(anyhow::Error::new(e)) + } +} diff --git a/crates/wasi-nn/src/testing.rs b/crates/wasi-nn/src/testing.rs index b960335dc500..a9abdef5d3f9 100644 --- a/crates/wasi-nn/src/testing.rs +++ b/crates/wasi-nn/src/testing.rs @@ -3,10 +3,13 @@ //! //! This module checks: //! - that OpenVINO can be found in the environment +//! - that WinML is available //! - that some ML model artifacts can be downloaded and cached. use anyhow::{anyhow, Context, Result}; use std::{env, fs, path::Path, path::PathBuf, process::Command, sync::Mutex}; +#[cfg(feature = "winml")] +use windows::AI::MachineLearning::{LearningModelDevice, LearningModelDeviceKind}; /// Return the directory in which the test artifacts are stored. pub fn artifacts_dir() -> PathBuf { @@ -34,12 +37,21 @@ macro_rules! check_test { /// Return `Ok` if all checks pass. pub fn check() -> Result<()> { - check_openvino_is_installed()?; - check_openvino_artifacts_are_available()?; + #[cfg(feature = "openvino")] + { + check_openvino_is_installed()?; + check_openvino_artifacts_are_available()?; + } + #[cfg(feature = "winml")] + { + check_winml_is_available()?; + check_winml_artifacts_are_available()?; + } Ok(()) } /// Return `Ok` if we find a working OpenVINO installation. +#[cfg(feature = "openvino")] fn check_openvino_is_installed() -> Result<()> { match std::panic::catch_unwind(|| println!("> found openvino version: {}", openvino::version())) { @@ -48,6 +60,19 @@ fn check_openvino_is_installed() -> Result<()> { } } +#[cfg(feature = "winml")] +fn check_winml_is_available() -> Result<()> { + match std::panic::catch_unwind(|| { + println!( + "> WinML learning device is available: {:?}", + LearningModelDevice::Create(LearningModelDeviceKind::Default) + ) + }) { + Ok(_) => Ok(()), + Err(e) => Err(anyhow!("WinML learning device is not available: {:?}", e)), + } +} + /// Protect `check_openvino_artifacts_are_available` from concurrent access; /// when running tests in parallel, we want to avoid two threads attempting to /// create the same directory or download the same file. @@ -55,6 +80,7 @@ static ARTIFACTS: Mutex<()> = Mutex::new(()); /// Return `Ok` if we find the cached MobileNet test artifacts; this will /// download the artifacts if necessary. +#[cfg(feature = "openvino")] fn check_openvino_artifacts_are_available() -> Result<()> { let _exclusively_retrieve_artifacts = ARTIFACTS.lock().unwrap(); const BASE_URL: &str = @@ -80,6 +106,31 @@ fn check_openvino_artifacts_are_available() -> Result<()> { Ok(()) } +#[cfg(feature = "winml")] +fn check_winml_artifacts_are_available() -> Result<()> { + let _exclusively_retrieve_artifacts = ARTIFACTS.lock().unwrap(); + let artifacts_dir = artifacts_dir(); + if !artifacts_dir.is_dir() { + fs::create_dir(&artifacts_dir)?; + } + const MODEL_URL: &str="https://github.com/onnx/models/raw/5faef4c33eba0395177850e1e31c4a6a9e634c82/vision/classification/mobilenet/model/mobilenetv2-12.onnx"; + for (from, to) in [(MODEL_URL, "model.onnx")] { + let local_path = artifacts_dir.join(to); + if !local_path.is_file() { + download(&from, &local_path).with_context(|| "unable to retrieve test artifact")?; + } else { + println!("> using cached artifact: {}", local_path.display()) + } + } + // kitten.rgb is converted from https://github.com/microsoft/Windows-Machine-Learning/blob/master/SharedContent/media/kitten_224.png?raw=true. + let tensor_path = env::current_dir()? + .join("tests") + .join("fixtures") + .join("kitten.rgb"); + fs::copy(tensor_path, artifacts_dir.join("kitten.rgb"))?; + Ok(()) +} + /// Retrieve the bytes at the `from` URL and place them in the `to` file. fn download(from: &str, to: &Path) -> anyhow::Result<()> { let mut curl = Command::new("curl"); diff --git a/crates/wasi-nn/tests/all.rs b/crates/wasi-nn/tests/all.rs index 185daec9fbf5..2f8c6aa7d612 100644 --- a/crates/wasi-nn/tests/all.rs +++ b/crates/wasi-nn/tests/all.rs @@ -6,7 +6,7 @@ use test_programs_artifacts::*; use wasi_common::sync::{Dir, WasiCtxBuilder}; use wasi_common::WasiCtx; use wasmtime::{Config, Engine, Linker, Module, Store}; -use wasmtime_wasi_nn::{backend, testing, InMemoryRegistry, WasiNnCtx}; +use wasmtime_wasi_nn::{backend, testing, Backend, InMemoryRegistry, WasiNnCtx}; const PREOPENED_DIR_NAME: &str = "fixture"; @@ -22,10 +22,24 @@ fn run(path: &str, preload_model: bool) -> Result<()> { wasmtime_wasi_nn::witx::add_to_linker(&mut linker, |s: &mut Ctx| &mut s.wasi_nn)?; wasi_common::sync::add_to_linker(&mut linker, |s: &mut Ctx| &mut s.wasi)?; let module = Module::from_file(&engine, path)?; - let mut store = Store::new(&engine, Ctx::new(&testing::artifacts_dir(), preload_model)?); - let instance = linker.instantiate(&mut store, &module)?; - let start = instance.get_typed_func::<(), ()>(&mut store, "_start")?; - start.call(&mut store, ())?; + let mut backends = vec![]; + #[cfg(feature = "openvino")] + { + backends.push(Backend::from(backend::openvino::OpenvinoBackend::default())); + } + #[cfg(feature = "winml")] + { + backends.push(Backend::from(backend::winml::WinMLBackend::default())); + } + for backend in backends { + let mut store = Store::new( + &engine, + Ctx::new(&testing::artifacts_dir(), preload_model, backend)?, + ); + let instance = linker.instantiate(&mut store, &module)?; + let start = instance.get_typed_func::<(), ()>(&mut store, "_start")?; + start.call(&mut store, ())?; + } Ok(()) } @@ -35,7 +49,7 @@ struct Ctx { wasi_nn: WasiNnCtx, } impl Ctx { - fn new(preopen_dir: &Path, preload_model: bool) -> Result { + fn new(preopen_dir: &Path, preload_model: bool, mut backend: Backend) -> Result { // Create the WASI context. let preopen_dir = Dir::open_ambient_dir(preopen_dir, cap_std::ambient_authority())?; let mut builder = WasiCtxBuilder::new(); @@ -44,14 +58,12 @@ impl Ctx { .preopened_dir(preopen_dir, PREOPENED_DIR_NAME)?; let wasi = builder.build(); - // Create the wasi-nn context. - let mut openvino = backend::openvino::OpenvinoBackend::default(); let mut registry = InMemoryRegistry::new(); let mobilenet_dir = testing::artifacts_dir(); if preload_model { - registry.load(&mut openvino, &mobilenet_dir)?; + registry.load((backend).as_dir_loadable().unwrap(), &mobilenet_dir)?; } - let wasi_nn = WasiNnCtx::new([openvino.into()], registry.into()); + let wasi_nn = WasiNnCtx::new([backend.into()], registry.into()); Ok(Self { wasi, wasi_nn }) } @@ -90,3 +102,9 @@ fn nn_image_classification() { fn nn_image_classification_named() { run(NN_IMAGE_CLASSIFICATION_NAMED, true).unwrap() } + +#[cfg_attr(not(feature = "winml"), ignore)] +#[test] +fn nn_image_classification_winml() { + run(NN_IMAGE_CLASSIFICATION_WINML, true).unwrap() +} diff --git a/crates/wasi-nn/tests/fixtures/kitten.rgb b/crates/wasi-nn/tests/fixtures/kitten.rgb new file mode 100644 index 0000000000000000000000000000000000000000..d39e9f9e20cbbe0006b0fe42d1044287def2f933 GIT binary patch literal 602112 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 z