transformers.js icon indicating copy to clipboard operation
transformers.js copied to clipboard

Error: Module did not self-register: '/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/onnxruntime_binding.node'

Open rajeshlatlong opened this issue 1 year ago • 11 comments

System Info

@xenova/transformers": "^2.15.0", node js, Ubuntu 20.04 LTS

Environment/Platform

  • [ ] Website/web-app
  • [ ] Browser extension
  • [X] Server-side (e.g., Node.js, Deno, Bun)
  • [ ] Desktop app (e.g., Electron)
  • [ ] Other (e.g., VSCode extension)

Description

Facing issue for me when using transformer js as

const TransformersApi = Function('return import("@xenova/transformers")')();
 const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;

Its working fine when request comes to my application for the first time. I am executing this code as a worker in node js application. But when next request comes to my application its giving error for me as Error: Module did not self-register: '/server/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/onnxruntime_binding.node'. at Module._extensions..node (/server/lib/internal/modules/cjs/loader.js:1340:18) at Module.load (/home/server/lib/internal/modules/cjs/loader.js:1119:32) at Module._load (/home/server/lib/internal/modules/cjs/loader.js:960:12) at Module.require (/home/server/lib/internal/modules/cjs/loader.js:1143:19) at require (/home/server/lib/internal/modules/cjs/helpers.js:110:18) at Object.<anonymous> (/home/server/node_modules/onnxruntime-node/dist/binding.js:9:1) at Module._compile (/home/server/lib/internal/modules/cjs/loader.js:1256:14) at Module._extensions..js (/home/server/lib/internal/modules/cjs/loader.js:1310:10) at Module.load (/home/server/lib/internal/modules/cjs/loader.js:1119:32) at Module._load (node:internal/modules/cjs/loader:960:12) {code: 'ERR_DLOPEN_FAILED', stack: 'Error: Module did not self-register: '/home/r…oad (node:internal/modules/cjs/loader:960:12)', message: 'Module did not self-register: '/home/…napi-v3/linux/x64/onnxruntime_binding.node'.'} How to resolve this issue ? Giving stackoverflow link post https://stackoverflow.com/q/78178187/2853298

Reproduction

const TransformersApi = Function('return import("@xenova/transformers")')();
 const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;

rajeshlatlong avatar Mar 18 '24 09:03 rajeshlatlong

const { parentPort, workerData } = require("worker_threads");
const TransformersApi = Function('return import("@xenova/transformers")')();
async function createVectors() {
  try {
    const { CLIPVisionModelWithProjection, RawImage, AutoProcessor } = await TransformersApi;
    const imageProcessor = await AutoProcessor.from_pretrained('Xenova/clip-vit-base-patch16');
    const visionModel = await CLIPVisionModelWithProjection.from_pretrained('Xenova/clip-vit-base-patch16');

    const { TGApiMessageList } = workerData;

    console.log("=======workerData======", workerData);

    // get image embedding:
    for (var i = 0; i < TGApiMessageList.length; i++) {
      let image = await RawImage.fromBlob(TGApiMessageList[i].imageBlob);
      let imageInputs = await imageProcessor(image);
      let { image_embeds } = await visionModel(imageInputs);
      TGApiMessageList[i]["imageEmbed"] = image_embeds.data;
      console.log('-------Vector Embeddings-------');
      console.log(TGApiMessageList[i]["imageEmbed"]);
    }
 // sending message back to the main thread
    parentPort.postMessage({ done: true, TGApiMessageList: TGApiMessageList });
  } catch (error) {
    console.log(error);
  }
}
createVectors();`
```
This is the complete worker file I am using to create vectors.

rajeshlatlong avatar Mar 19 '24 12:03 rajeshlatlong

https://stackoverflow.com/questions/78178187/error-module-did-not-self-register-node-modules-onnxruntime-node-bin-napi-v3/78247951#78247951

JavascriptMick avatar Aug 02 '24 09:08 JavascriptMick