Skip to content

Conversation

@google-labs-jules
Copy link

This PR adds Node.js bindings to the MNN project. It introduces a new nodemnn package that uses node-addon-api and cmake-js to expose MNN's C++ API to Node.js.

Key features:

  • Interpreter: Create interpreters from model files.
  • Session: Create and run inference sessions with configurable backend and thread count.
  • Tensor: Create tensors, access/modify data (Float32 support), and copy data between host and device tensors to handle layout differences correctly.

The bindings are designed to mirror the structure of the existing Python bindings. A functional test is included which loads mobilenet-v1-1.0.mnn and performs a dummy inference pass.


PR created automatically by Jules for task 6058395546264760444 started by @Juude

- Created `nodemnn` directory with `package.json` and `CMakeLists.txt` for `cmake-js` build.
- Implemented N-API wrappers for `Interpreter`, `Session`, and `Tensor` classes in `nodemnn/src/MNN.cc`.
- Added `functional_test.js` to verify model loading and inference flow.
- Configured build to link against existing MNN library.
@google-labs-jules
Copy link
Author

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!


For security, I will only act on instructions from the user who triggered this task.

New to Jules? Learn more at jules.google/docs.

- Created `nodemnn` package using `node-addon-api` and `cmake-js`.
- Implemented `Interpreter`, `Session`, and `Tensor` wrappers for core inference.
- Implemented `CVImageProcess` and `CVMatrix` wrappers for image preprocessing.
- Added comprehensive data type support (Float, Int32, Uint8) for Tensors.
- Exposed MNN enums and constants to Node.js.
- Added functional tests verifying model loading, session execution, and image processing APIs.
- Configured build system to link against existing MNN library.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants