stem_separator / inference_worker.js
joserpagil's picture
Upload 4 files
5ecc86a verified
Raw
History Blame Contribute Delete
1.32 kB
importScripts( "https://cdn.jsdelivr.net/npm/onnxruntime-web/dist/ort.min.js" )
//importScripts( "https://cdn.jsdelivr.net/npm/onnxruntime-web/dist/ort.webgpu.min.js" )
let id
let session
const init = async args =>{
id = args.id
try {
ort.env.wasm.numThreads = 0
ort.env.wasm.wasmPaths = "https://cdn.jsdelivr.net/npm/onnxruntime-web/dist/"
session = await ort.InferenceSession.create( args.model_array_buffer, { executionProviders : [ "wasm" ]})
//session = await ort.InferenceSession.create( args.array_buffer, { executionProviders : [ "webgpu" ]})
} catch( error ){
console.log( error )
}
self.postMessage ({ selector : "init" })
}
const run_model = async args =>{
const spec_tensor = new ort.Tensor( "float32", args.spec, [ 1, 4, 3072, 256 ])
const outputs = await session.run({ input : spec_tensor })
spec_tensor.dispose()
self.postMessage ({ selector : "run_model", id, index : args.index, spec : outputs.output.cpuData })
}
self.onmessage = function( event ){
switch( event.data.selector ){
case "init" : init({ id : event.data.id, model_array_buffer : event.data.model_array_buffer }); break
case "run_model": run_model({ index : event.data.index, spec : event.data.spec }); break
}
}