diff --git a/packages/transformers/src/backends/onnx.js b/packages/transformers/src/backends/onnx.js index 13b1a7482..6fcf1526b 100644 --- a/packages/transformers/src/backends/onnx.js +++ b/packages/transformers/src/backends/onnx.js @@ -177,6 +177,20 @@ export function deviceToExecutionProviders(device = null) { throw new Error(`Unsupported device: "${device}". Should be one of: ${supportedDevices.join(', ')}.`); } +/** + * Get the list of supported devices for the current platform, sorted by + * priority/performance (best first, CPU/WASM last). + * + * This is the same ordering used internally when `device` is set to `"auto"`. + * Returns a shallow copy so callers can mutate or iterate without affecting + * library internals. + * + * @returns {import("../utils/devices.js").DeviceType[]} The supported devices. + */ +export function getSupportedDevices() { + return /** @type {import("../utils/devices.js").DeviceType[]} */ ([...supportedDevices]); +} + /** * Currently, Transformers.js doesn't support simultaneous loading of sessions in WASM/WebGPU. * For this reason, we need to chain the loading calls. diff --git a/packages/transformers/src/transformers.js b/packages/transformers/src/transformers.js index ef01569ef..30cf667d2 100644 --- a/packages/transformers/src/transformers.js +++ b/packages/transformers/src/transformers.js @@ -55,6 +55,9 @@ export { random } from './utils/random.js'; export { DynamicCache } from './cache_utils.js'; +// Device utilities +export { deviceToExecutionProviders, getSupportedDevices } from './backends/onnx.js'; + // Cache and file management export { ModelRegistry } from './utils/model_registry/ModelRegistry.js';