Skip to content

Commit e8000c4

Browse files
authored
fix: worker model loading by preserving use_external_data_format defaults (#138)
* fix: worker model loading by preserving use_external_data_format defaults * example: update app to use web worker for all models * chore: bump version
1 parent 5bf69e3 commit e8000c4

File tree

5 files changed

+35
-7
lines changed

5 files changed

+35
-7
lines changed

.changeset/hungry-areas-strive.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@browser-ai/transformers-js": patch
3+
---
4+
5+
fix: worker model loading by preserving use_external_data_format defaults

examples/next-hybrid/app/transformers-js/util/models-config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ export const MODELS: ModelConfig[] = [
2626
name: "Granite 4.0 350M (Tool calling)",
2727
device: "webgpu",
2828
dtype: "fp16",
29-
supportsWorker: false,
29+
supportsWorker: true,
3030
},
3131
{
3232
id: "onnx-community/LFM2-1.2B-Tool-ONNX",
3333
name: "LFM2 1.2B-Tool",
3434
device: "webgpu",
3535
dtype: "fp16",
36-
supportsWorker: false,
36+
supportsWorker: true,
3737
},
3838
{
3939
id: "HuggingFaceTB/SmolVLM-256M-Instruct",

packages/vercel/transformers-js/src/chat/transformers-js-language-model.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ export interface TransformersJSModelSettings extends Pick<
5353
PretrainedModelOptions,
5454
"device" | "dtype"
5555
> {
56+
/**
57+
* Optional ONNX external data format toggle.
58+
* Keep undefined to use Transformers.js defaults.
59+
*/
60+
use_external_data_format?: boolean;
5661
/**
5762
* Progress callback for model initialization
5863
*/
@@ -281,8 +286,14 @@ export class TransformersJSLanguageModel implements LanguageModelV3 {
281286
onInitProgress?: DownloadProgressCallback,
282287
): Promise<void> {
283288
try {
284-
const { isVisionModel, device, dtype, localModelPath, cacheDir } =
285-
this.config;
289+
const {
290+
isVisionModel,
291+
device,
292+
dtype,
293+
localModelPath,
294+
cacheDir,
295+
use_external_data_format,
296+
} = this.config;
286297

287298
// Configure transformers.js environment settings
288299
if (localModelPath) {
@@ -309,6 +320,9 @@ export class TransformersJSLanguageModel implements LanguageModelV3 {
309320
AutoModelForVision2Seq.from_pretrained(this.modelId, {
310321
dtype: resolvedDtype,
311322
device: resolvedDevice,
323+
...(use_external_data_format !== undefined
324+
? { use_external_data_format }
325+
: {}),
312326
progress_callback,
313327
}),
314328
]);
@@ -322,6 +336,9 @@ export class TransformersJSLanguageModel implements LanguageModelV3 {
322336
AutoModelForCausalLM.from_pretrained(this.modelId, {
323337
dtype: resolvedDtype,
324338
device: resolvedDevice,
339+
...(use_external_data_format !== undefined
340+
? { use_external_data_format }
341+
: {}),
325342
progress_callback,
326343
}),
327344
]);
@@ -771,6 +788,7 @@ export class TransformersJSLanguageModel implements LanguageModelV3 {
771788
modelId: this.modelId,
772789
dtype: this.config.dtype,
773790
device: this.config.device,
791+
use_external_data_format: this.config.use_external_data_format,
774792
isVisionModel: this.config.isVisionModel,
775793
},
776794
});

packages/vercel/transformers-js/src/chat/transformers-js-worker-handler.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class ModelManager {
5454
modelId,
5555
dtype = "auto",
5656
device = "auto",
57-
use_external_data_format = false,
57+
use_external_data_format,
5858
isVisionModel = false,
5959
} = config;
6060

@@ -93,7 +93,9 @@ class ModelManager {
9393
AutoModelForCausalLM.from_pretrained(modelId, {
9494
dtype: options.dtype,
9595
device: options.device,
96-
use_external_data_format: options.use_external_data_format,
96+
...(options.use_external_data_format !== undefined
97+
? { use_external_data_format: options.use_external_data_format }
98+
: {}),
9799
progress_callback: options.progressCallback,
98100
}),
99101
]);
@@ -116,7 +118,9 @@ class ModelManager {
116118
AutoModelForVision2Seq.from_pretrained(modelId, {
117119
dtype: options.dtype || "fp32",
118120
device: options.device || "webgpu",
119-
use_external_data_format: options.use_external_data_format,
121+
...(options.use_external_data_format !== undefined
122+
? { use_external_data_format: options.use_external_data_format }
123+
: {}),
120124
progress_callback: options.progressCallback,
121125
}),
122126
]);

packages/vercel/transformers-js/src/chat/transformers-js-worker-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export interface WorkerLoadData {
2727
modelId?: string;
2828
dtype?: PretrainedModelOptions["dtype"];
2929
device?: PretrainedModelOptions["device"];
30+
use_external_data_format?: boolean;
3031
isVisionModel?: boolean;
3132
}
3233

0 commit comments

Comments
 (0)