From 1300ab0b9c107843fff0bae10ee3972c3f9460a8 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Sun, 30 Nov 2025 16:07:38 +0100 Subject: [PATCH 1/8] suppress console.error while creating InferenceSession --- src/backends/onnx.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index b5923a596..8f682fca1 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -149,10 +149,19 @@ let webInitChain = Promise.resolve(); * @returns {Promise} The ONNX inference session. */ export async function createInferenceSession(buffer_or_path, session_options, session_config) { - const load = () => InferenceSession.create(buffer_or_path, session_options); - const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); - session.config = session_config; - return session; + // Temporarily suppress console.error from WASM module warnings + const originalConsoleError = console.error; + console.error = () => {}; + + try { + const load = () => InferenceSession.create(buffer_or_path, session_options); + const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); + session.config = session_config; + return session; + } finally { + // Restore console.error + console.error = originalConsoleError; + } } /** From 712230d9ed85c1b0f7c5d781454f9b81565337d9 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Sun, 30 Nov 2025 16:24:40 +0100 Subject: [PATCH 2/8] changed console suppress if not one of the misslieading errors --- src/backends/onnx.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index 8f682fca1..e72eb5fa9 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -151,7 +151,13 @@ let webInitChain = Promise.resolve(); export async function createInferenceSession(buffer_or_path, session_options, session_config) { // Temporarily suppress console.error from WASM module warnings const originalConsoleError = console.error; - console.error = () => {}; + console.error = (...e) => { + const errorMessage = e[0]; + if(errorMessage.includes('LogEarlyWarning') || errorMessage.includes('VerifyEachNodeIsAssignedToAnEp')){ + return; + } + originalConsoleError(...e); + }; try { const load = () => InferenceSession.create(buffer_or_path, session_options); From ffe11a23ff05b2b4f903c8c0ac0af805ad270138 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Tue, 2 Dec 2025 11:15:18 +0100 Subject: [PATCH 3/8] set default logSeverityLevel and also match the ONNX_WEB.env.logLevel --- src/backends/onnx.js | 31 ++++++++++++------------------- src/models.js | 2 ++ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index e72eb5fa9..9eb8d953c 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -149,25 +149,18 @@ let webInitChain = Promise.resolve(); * @returns {Promise} The ONNX inference session. */ export async function createInferenceSession(buffer_or_path, session_options, session_config) { - // Temporarily suppress console.error from WASM module warnings - const originalConsoleError = console.error; - console.error = (...e) => { - const errorMessage = e[0]; - if(errorMessage.includes('LogEarlyWarning') || errorMessage.includes('VerifyEachNodeIsAssignedToAnEp')){ - return; - } - originalConsoleError(...e); - }; - - try { - const load = () => InferenceSession.create(buffer_or_path, session_options); - const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); - session.config = session_config; - return session; - } finally { - // Restore console.error - console.error = originalConsoleError; - } + + /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ + const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; + /** @type 0|1|2|3|4 */ + const logSeverityLevel= (typeof session_options.logSeverityLevel !== 'number' || session_options.logSeverityLevel < 0 || session_options.logSeverityLevel > 4) ? 4 : session_options.logSeverityLevel; + + ONNX_WEB.env.logLevel = LOG_LEVELS[logSeverityLevel]; + + const load = () => InferenceSession.create(buffer_or_path, { ...session_options, logSeverityLevel }); + const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); + session.config = session_config; + return session; } /** diff --git a/src/models.js b/src/models.js index fc3eed8ef..c77c488ec 100644 --- a/src/models.js +++ b/src/models.js @@ -241,6 +241,8 @@ async function getSession(pretrained_model_name_or_path, fileName, options, is_d // Overwrite `executionProviders` if not specified session_options.executionProviders ??= executionProviders; + // Set `logSeverityLevel` to 4 (fatal) if not specified + session_options.logSeverityLevel ??= 4; // Overwrite `freeDimensionOverrides` if specified in config and not set in session options const free_dimension_overrides = custom_config.free_dimension_overrides; From 9c41c3e93bdd3af51a449b4e2846d1b3cd9771f0 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Tue, 2 Dec 2025 11:22:31 +0100 Subject: [PATCH 4/8] indentation --- src/backends/onnx.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index 9eb8d953c..f76de6c1a 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -150,17 +150,17 @@ let webInitChain = Promise.resolve(); */ export async function createInferenceSession(buffer_or_path, session_options, session_config) { - /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ - const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; - /** @type 0|1|2|3|4 */ - const logSeverityLevel= (typeof session_options.logSeverityLevel !== 'number' || session_options.logSeverityLevel < 0 || session_options.logSeverityLevel > 4) ? 4 : session_options.logSeverityLevel; + /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ + const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; + /** @type 0|1|2|3|4 */ + const logSeverityLevel= (typeof session_options.logSeverityLevel !== 'number' || session_options.logSeverityLevel < 0 || session_options.logSeverityLevel > 4) ? 4 : session_options.logSeverityLevel; - ONNX_WEB.env.logLevel = LOG_LEVELS[logSeverityLevel]; + ONNX_WEB.env.logLevel = LOG_LEVELS[logSeverityLevel]; - const load = () => InferenceSession.create(buffer_or_path, { ...session_options, logSeverityLevel }); - const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); - session.config = session_config; - return session; + const load = () => InferenceSession.create(buffer_or_path, { ...session_options, logSeverityLevel }); + const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); + session.config = session_config; + return session; } /** From 0bf295fff747f59894ff3cae4097537d0fd60b38 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Tue, 2 Dec 2025 11:27:24 +0100 Subject: [PATCH 5/8] small fix --- src/backends/onnx.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index f76de6c1a..ffc7c81b7 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -157,7 +157,9 @@ export async function createInferenceSession(buffer_or_path, session_options, se ONNX_WEB.env.logLevel = LOG_LEVELS[logSeverityLevel]; - const load = () => InferenceSession.create(buffer_or_path, { ...session_options, logSeverityLevel }); + session_options = { ...session_options, logSeverityLevel }; + + const load = () => InferenceSession.create(buffer_or_path, session_options); const session = await (IS_WEB_ENV ? (webInitChain = webInitChain.then(load)) : load()); session.config = session_config; return session; From 7d7b770a62a87c5955b94505d1a39289cd0b7377 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Tue, 2 Dec 2025 15:14:59 +0100 Subject: [PATCH 6/8] some clean-up --- src/backends/onnx.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index ffc7c81b7..fdb080b4f 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -153,7 +153,12 @@ export async function createInferenceSession(buffer_or_path, session_options, se /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; /** @type 0|1|2|3|4 */ - const logSeverityLevel= (typeof session_options.logSeverityLevel !== 'number' || session_options.logSeverityLevel < 0 || session_options.logSeverityLevel > 4) ? 4 : session_options.logSeverityLevel; + const logSeverityLevel = + typeof session_options.logSeverityLevel !== 'number' || + session_options.logSeverityLevel < 0 || + session_options.logSeverityLevel > 4 + ? 4 + : session_options.logSeverityLevel; ONNX_WEB.env.logLevel = LOG_LEVELS[logSeverityLevel]; From 6c0c0c054cb49180b7cd683fb0b1e05eb48ee5a3 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Wed, 3 Dec 2025 11:15:41 +0100 Subject: [PATCH 7/8] Apply suggestions from code review Co-authored-by: Joshua Lochner --- src/backends/onnx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index fdb080b4f..e6377d2f4 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -152,7 +152,7 @@ export async function createInferenceSession(buffer_or_path, session_options, se /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; - /** @type 0|1|2|3|4 */ + /** @type {0|1|2|3|4} */ const logSeverityLevel = typeof session_options.logSeverityLevel !== 'number' || session_options.logSeverityLevel < 0 || From dfaf024bf864ab37725849eb07bb437d7d7b1094 Mon Sep 17 00:00:00 2001 From: Nico Martin Date: Wed, 3 Dec 2025 11:40:40 +0100 Subject: [PATCH 8/8] added LOG_LEVELS to the top of the file --- src/backends/onnx.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/backends/onnx.js b/src/backends/onnx.js index e6377d2f4..b15a3e8a8 100644 --- a/src/backends/onnx.js +++ b/src/backends/onnx.js @@ -46,6 +46,9 @@ const DEVICE_TO_EXECUTION_PROVIDER_MAPPING = Object.freeze({ 'webnn-cpu': { name: 'webnn', deviceType: 'cpu' }, // WebNN CPU }); +/** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ +const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; + /** * The list of supported devices, sorted by priority/performance. * @type {import("../utils/devices.js").DeviceType[]} @@ -150,8 +153,6 @@ let webInitChain = Promise.resolve(); */ export async function createInferenceSession(buffer_or_path, session_options, session_config) { - /** @type {Array<'verbose' | 'info' | 'warning' | 'error' | 'fatal'>} */ - const LOG_LEVELS = ['verbose', 'info', 'warning', 'error', 'fatal']; /** @type {0|1|2|3|4} */ const logSeverityLevel = typeof session_options.logSeverityLevel !== 'number' ||