edgeflowjs 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +200 -66
- package/dist/backends/index.d.ts +9 -2
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +13 -13
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/onnx.d.ts +11 -4
- package/dist/backends/onnx.d.ts.map +1 -1
- package/dist/backends/onnx.js +97 -78
- package/dist/backends/onnx.js.map +1 -1
- package/dist/backends/transformers-adapter.d.ts +99 -0
- package/dist/backends/transformers-adapter.d.ts.map +1 -0
- package/dist/backends/transformers-adapter.js +171 -0
- package/dist/backends/transformers-adapter.js.map +1 -0
- package/dist/backends/webgpu.d.ts +7 -5
- package/dist/backends/webgpu.d.ts.map +1 -1
- package/dist/backends/webgpu.js +7 -5
- package/dist/backends/webgpu.js.map +1 -1
- package/dist/backends/webnn.d.ts +6 -5
- package/dist/backends/webnn.d.ts.map +1 -1
- package/dist/backends/webnn.js +6 -5
- package/dist/backends/webnn.js.map +1 -1
- package/dist/core/composer.d.ts +118 -0
- package/dist/core/composer.d.ts.map +1 -0
- package/dist/core/composer.js +163 -0
- package/dist/core/composer.js.map +1 -0
- package/dist/core/device-profiler.d.ts +75 -0
- package/dist/core/device-profiler.d.ts.map +1 -0
- package/dist/core/device-profiler.js +131 -0
- package/dist/core/device-profiler.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory.d.ts +22 -2
- package/dist/core/memory.d.ts.map +1 -1
- package/dist/core/memory.js +49 -13
- package/dist/core/memory.js.map +1 -1
- package/dist/core/plugin.d.ts +100 -0
- package/dist/core/plugin.d.ts.map +1 -0
- package/dist/core/plugin.js +106 -0
- package/dist/core/plugin.js.map +1 -0
- package/dist/core/runtime.d.ts +4 -0
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +18 -0
- package/dist/core/runtime.js.map +1 -1
- package/dist/core/scheduler.d.ts +17 -0
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js +101 -3
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/types.d.ts +14 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/worker.d.ts +202 -0
- package/dist/core/worker.d.ts.map +1 -0
- package/dist/core/worker.js +477 -0
- package/dist/core/worker.js.map +1 -0
- package/dist/edgeflow.browser.js +9770 -4383
- package/dist/edgeflow.browser.js.map +4 -4
- package/dist/edgeflow.browser.min.js +435 -5
- package/dist/edgeflow.browser.min.js.map +4 -4
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -10
- package/dist/index.js.map +1 -1
- package/dist/pipelines/automatic-speech-recognition.d.ts +63 -0
- package/dist/pipelines/automatic-speech-recognition.d.ts.map +1 -0
- package/dist/pipelines/automatic-speech-recognition.js +269 -0
- package/dist/pipelines/automatic-speech-recognition.js.map +1 -0
- package/dist/pipelines/base.d.ts +6 -1
- package/dist/pipelines/base.d.ts.map +1 -1
- package/dist/pipelines/base.js +12 -2
- package/dist/pipelines/base.js.map +1 -1
- package/dist/pipelines/feature-extraction.d.ts +5 -40
- package/dist/pipelines/feature-extraction.d.ts.map +1 -1
- package/dist/pipelines/feature-extraction.js +44 -63
- package/dist/pipelines/feature-extraction.js.map +1 -1
- package/dist/pipelines/image-classification.d.ts +4 -36
- package/dist/pipelines/image-classification.d.ts.map +1 -1
- package/dist/pipelines/image-classification.js +22 -60
- package/dist/pipelines/image-classification.js.map +1 -1
- package/dist/pipelines/image-segmentation.d.ts +221 -0
- package/dist/pipelines/image-segmentation.d.ts.map +1 -0
- package/dist/pipelines/image-segmentation.js +535 -0
- package/dist/pipelines/image-segmentation.js.map +1 -0
- package/dist/pipelines/index.d.ts +18 -0
- package/dist/pipelines/index.d.ts.map +1 -1
- package/dist/pipelines/index.js +51 -2
- package/dist/pipelines/index.js.map +1 -1
- package/dist/pipelines/object-detection.d.ts +44 -0
- package/dist/pipelines/object-detection.d.ts.map +1 -0
- package/dist/pipelines/object-detection.js +218 -0
- package/dist/pipelines/object-detection.js.map +1 -0
- package/dist/pipelines/question-answering.d.ts +41 -0
- package/dist/pipelines/question-answering.d.ts.map +1 -0
- package/dist/pipelines/question-answering.js +164 -0
- package/dist/pipelines/question-answering.js.map +1 -0
- package/dist/pipelines/text-classification.d.ts +3 -39
- package/dist/pipelines/text-classification.d.ts.map +1 -1
- package/dist/pipelines/text-classification.js +29 -67
- package/dist/pipelines/text-classification.js.map +1 -1
- package/dist/pipelines/text-generation.d.ts +281 -0
- package/dist/pipelines/text-generation.d.ts.map +1 -0
- package/dist/pipelines/text-generation.js +766 -0
- package/dist/pipelines/text-generation.js.map +1 -0
- package/dist/pipelines/zero-shot-classification.d.ts +45 -0
- package/dist/pipelines/zero-shot-classification.d.ts.map +1 -0
- package/dist/pipelines/zero-shot-classification.js +140 -0
- package/dist/pipelines/zero-shot-classification.js.map +1 -0
- package/dist/tools/benchmark.d.ts +92 -0
- package/dist/tools/benchmark.d.ts.map +1 -0
- package/dist/tools/benchmark.js +213 -0
- package/dist/tools/benchmark.js.map +1 -0
- package/dist/tools/debugger.d.ts +258 -0
- package/dist/tools/debugger.d.ts.map +1 -0
- package/dist/tools/debugger.js +624 -0
- package/dist/tools/debugger.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +16 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/monitor.d.ts +284 -0
- package/dist/tools/monitor.d.ts.map +1 -0
- package/dist/tools/monitor.js +921 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/quantization.d.ts +235 -0
- package/dist/tools/quantization.d.ts.map +1 -0
- package/dist/tools/quantization.js +830 -0
- package/dist/tools/quantization.js.map +1 -0
- package/dist/utils/hub.d.ts +162 -0
- package/dist/utils/hub.d.ts.map +1 -0
- package/dist/utils/hub.js +311 -0
- package/dist/utils/hub.js.map +1 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/model-loader.d.ts.map +1 -1
- package/dist/utils/model-loader.js +106 -30
- package/dist/utils/model-loader.js.map +1 -1
- package/dist/utils/offline.d.ts +147 -0
- package/dist/utils/offline.d.ts.map +1 -0
- package/dist/utils/offline.js +405 -0
- package/dist/utils/offline.js.map +1 -0
- package/dist/utils/preprocessor.d.ts +82 -6
- package/dist/utils/preprocessor.d.ts.map +1 -1
- package/dist/utils/preprocessor.js +278 -21
- package/dist/utils/preprocessor.js.map +1 -1
- package/dist/utils/tokenizer.d.ts +197 -72
- package/dist/utils/tokenizer.d.ts.map +1 -1
- package/dist/utils/tokenizer.js +558 -274
- package/dist/utils/tokenizer.js.map +1 -1
- package/package.json +26 -11
package/dist/backends/webgpu.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* edgeFlow.js - WebGPU Backend
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* **Status: Planned** - This is a skeleton implementation that initializes
|
|
5
|
+
* WebGPU and creates compute pipelines but does not perform real model
|
|
6
|
+
* inference. For GPU-accelerated inference, use the ONNX Runtime backend
|
|
7
|
+
* which supports WebGPU via its execution providers.
|
|
8
|
+
*
|
|
9
|
+
* This backend is intended for future custom WebGPU compute shader
|
|
10
|
+
* implementations that bypass ONNX Runtime for specialized ops.
|
|
9
11
|
*/
|
|
10
12
|
import { EdgeFlowError, ErrorCodes, } from '../core/types.js';
|
|
11
13
|
import { LoadedModelImpl } from '../core/runtime.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpu.js","sourceRoot":"","sources":["../../src/backends/webgpu.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webgpu.js","sourceRoot":"","sources":["../../src/backends/webgpu.ts"],"names":[],"mappings":"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"}
|
package/dist/backends/webnn.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* edgeFlow.js - WebNN Backend
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* **Status: Planned** - This is a skeleton implementation that initializes
|
|
5
|
+
* a WebNN context but does not perform real model inference or graph building.
|
|
6
|
+
* For hardware-accelerated inference, use the ONNX Runtime backend which
|
|
7
|
+
* supports WebNN via its execution providers when available.
|
|
8
|
+
*
|
|
9
|
+
* This backend is intended for future native WebNN graph building support.
|
|
9
10
|
*/
|
|
10
11
|
import { Runtime, RuntimeType, RuntimeCapabilities, LoadedModel, ModelLoadOptions, Tensor } from '../core/types.js';
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webnn.d.ts","sourceRoot":"","sources":["../../src/backends/webnn.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webnn.d.ts","sourceRoot":"","sources":["../../src/backends/webnn.ts"],"names":[],"mappings":"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"}
|
package/dist/backends/webnn.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* edgeFlow.js - WebNN Backend
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* **Status: Planned** - This is a skeleton implementation that initializes
|
|
5
|
+
* a WebNN context but does not perform real model inference or graph building.
|
|
6
|
+
* For hardware-accelerated inference, use the ONNX Runtime backend which
|
|
7
|
+
* supports WebNN via its execution providers when available.
|
|
8
|
+
*
|
|
9
|
+
* This backend is intended for future native WebNN graph building support.
|
|
9
10
|
*/
|
|
10
11
|
import { EdgeFlowError, ErrorCodes, } from '../core/types.js';
|
|
11
12
|
import { LoadedModelImpl } from '../core/runtime.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webnn.js","sourceRoot":"","sources":["../../src/backends/webnn.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"webnn.js","sourceRoot":"","sources":["../../src/backends/webnn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Pipeline Composer
|
|
3
|
+
*
|
|
4
|
+
* Chain multiple pipelines together to build complex multi-model workflows.
|
|
5
|
+
* Each stage's output is transformed and fed as input to the next stage.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { compose } from 'edgeflowjs';
|
|
10
|
+
*
|
|
11
|
+
* const speechTranslator = compose([
|
|
12
|
+
* { task: 'automatic-speech-recognition' },
|
|
13
|
+
* { task: 'translation', options: { srcLang: 'en', tgtLang: 'zh' } },
|
|
14
|
+
* ]);
|
|
15
|
+
*
|
|
16
|
+
* const result = await speechTranslator.run(audioBlob);
|
|
17
|
+
* // result.stages = [asrResult, translationResult]
|
|
18
|
+
* // result.output = final translation text
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { type PipelineFactoryOptions } from '../pipelines/index.js';
|
|
22
|
+
import type { PipelineTask } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* A single stage in a composed pipeline.
|
|
25
|
+
*/
|
|
26
|
+
export interface CompositionStage {
|
|
27
|
+
/** The pipeline task to run */
|
|
28
|
+
task: PipelineTask | (string & {});
|
|
29
|
+
/** Model override for this stage */
|
|
30
|
+
model?: string;
|
|
31
|
+
/** Extra options forwarded to `pipeline()` */
|
|
32
|
+
options?: PipelineFactoryOptions;
|
|
33
|
+
/**
|
|
34
|
+
* Optional transform applied to the previous stage's output before it is
|
|
35
|
+
* passed as input to this stage. If omitted, the raw output is forwarded.
|
|
36
|
+
*/
|
|
37
|
+
transform?: (previousOutput: unknown) => unknown;
|
|
38
|
+
/**
|
|
39
|
+
* Options forwarded to the pipeline's `run()` call.
|
|
40
|
+
*/
|
|
41
|
+
runOptions?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Result from running a composed pipeline.
|
|
45
|
+
*/
|
|
46
|
+
export interface CompositionResult {
|
|
47
|
+
/** The final output from the last stage */
|
|
48
|
+
output: unknown;
|
|
49
|
+
/** Intermediate results for every stage (index-aligned with stages) */
|
|
50
|
+
stages: unknown[];
|
|
51
|
+
/** Total wall-clock time in milliseconds */
|
|
52
|
+
totalTime: number;
|
|
53
|
+
/** Per-stage timing */
|
|
54
|
+
stageTimes: number[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A composed (chained) pipeline.
|
|
58
|
+
*/
|
|
59
|
+
export interface ComposedPipeline {
|
|
60
|
+
/** Execute the full chain with the given initial input */
|
|
61
|
+
run(input: unknown): Promise<CompositionResult>;
|
|
62
|
+
/** Dispose all underlying pipeline instances */
|
|
63
|
+
dispose(): void;
|
|
64
|
+
/** Number of stages */
|
|
65
|
+
readonly length: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Compose multiple pipeline stages into a single sequential chain.
|
|
69
|
+
*
|
|
70
|
+
* The output of each stage is fed as the input to the next stage. Use the
|
|
71
|
+
* optional `transform` hook in a stage to reshape data between stages.
|
|
72
|
+
*
|
|
73
|
+
* All pipelines are lazily initialised on the first `run()` call and cached
|
|
74
|
+
* for subsequent calls.
|
|
75
|
+
*
|
|
76
|
+
* @param stages - Ordered list of pipeline stages
|
|
77
|
+
* @returns A composed pipeline that can be run end-to-end
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const ocrPipeline = compose([
|
|
82
|
+
* { task: 'image-to-text' },
|
|
83
|
+
* {
|
|
84
|
+
* task: 'text-classification',
|
|
85
|
+
* transform: (ocrResult: any) => ocrResult.text,
|
|
86
|
+
* },
|
|
87
|
+
* ]);
|
|
88
|
+
*
|
|
89
|
+
* const { output, stages, totalTime } = await ocrPipeline.run(imageElement);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function compose(stages: CompositionStage[]): ComposedPipeline;
|
|
93
|
+
/**
|
|
94
|
+
* Run stages in parallel (fan-out) and collect all results.
|
|
95
|
+
*
|
|
96
|
+
* Unlike `compose` (which is sequential), `parallel` runs every stage
|
|
97
|
+
* independently with the same input and returns an array of results.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const analyzer = parallel([
|
|
102
|
+
* { task: 'text-classification' },
|
|
103
|
+
* { task: 'feature-extraction' },
|
|
104
|
+
* { task: 'zero-shot-classification',
|
|
105
|
+
* transform: (text) => ({ text, candidateLabels: ['news', 'sports'] }) },
|
|
106
|
+
* ]);
|
|
107
|
+
*
|
|
108
|
+
* const results = await analyzer.run('Breaking: team wins championship');
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function parallel(stages: CompositionStage[]): {
|
|
112
|
+
run(input: unknown): Promise<{
|
|
113
|
+
outputs: unknown[];
|
|
114
|
+
totalTime: number;
|
|
115
|
+
}>;
|
|
116
|
+
dispose(): void;
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/core/composer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAY,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,IAAI,EAAE,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACnC,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC;IACjD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,uEAAuE;IACvE,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChD,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAAC;IAChB,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAqEpE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,gBAAgB,EAAE,GACzB;IACD,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,OAAO,IAAI,IAAI,CAAC;CACjB,CAgDA"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Pipeline Composer
|
|
3
|
+
*
|
|
4
|
+
* Chain multiple pipelines together to build complex multi-model workflows.
|
|
5
|
+
* Each stage's output is transformed and fed as input to the next stage.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { compose } from 'edgeflowjs';
|
|
10
|
+
*
|
|
11
|
+
* const speechTranslator = compose([
|
|
12
|
+
* { task: 'automatic-speech-recognition' },
|
|
13
|
+
* { task: 'translation', options: { srcLang: 'en', tgtLang: 'zh' } },
|
|
14
|
+
* ]);
|
|
15
|
+
*
|
|
16
|
+
* const result = await speechTranslator.run(audioBlob);
|
|
17
|
+
* // result.stages = [asrResult, translationResult]
|
|
18
|
+
* // result.output = final translation text
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { pipeline } from '../pipelines/index.js';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Implementation
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Compose multiple pipeline stages into a single sequential chain.
|
|
27
|
+
*
|
|
28
|
+
* The output of each stage is fed as the input to the next stage. Use the
|
|
29
|
+
* optional `transform` hook in a stage to reshape data between stages.
|
|
30
|
+
*
|
|
31
|
+
* All pipelines are lazily initialised on the first `run()` call and cached
|
|
32
|
+
* for subsequent calls.
|
|
33
|
+
*
|
|
34
|
+
* @param stages - Ordered list of pipeline stages
|
|
35
|
+
* @returns A composed pipeline that can be run end-to-end
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const ocrPipeline = compose([
|
|
40
|
+
* { task: 'image-to-text' },
|
|
41
|
+
* {
|
|
42
|
+
* task: 'text-classification',
|
|
43
|
+
* transform: (ocrResult: any) => ocrResult.text,
|
|
44
|
+
* },
|
|
45
|
+
* ]);
|
|
46
|
+
*
|
|
47
|
+
* const { output, stages, totalTime } = await ocrPipeline.run(imageElement);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function compose(stages) {
|
|
51
|
+
if (stages.length === 0) {
|
|
52
|
+
throw new Error('[edgeFlow.js] compose() requires at least one stage');
|
|
53
|
+
}
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
let pipelineInstances = null;
|
|
56
|
+
async function ensureInitialised() {
|
|
57
|
+
if (pipelineInstances)
|
|
58
|
+
return pipelineInstances;
|
|
59
|
+
pipelineInstances = await Promise.all(stages.map((stage) => pipeline(stage.task, {
|
|
60
|
+
model: stage.model,
|
|
61
|
+
...stage.options,
|
|
62
|
+
})));
|
|
63
|
+
return pipelineInstances;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
get length() {
|
|
67
|
+
return stages.length;
|
|
68
|
+
},
|
|
69
|
+
async run(input) {
|
|
70
|
+
const instances = await ensureInitialised();
|
|
71
|
+
const stageResults = [];
|
|
72
|
+
const stageTimes = [];
|
|
73
|
+
let current = input;
|
|
74
|
+
const wallStart = performance.now();
|
|
75
|
+
for (let i = 0; i < stages.length; i++) {
|
|
76
|
+
const stage = stages[i];
|
|
77
|
+
const inst = instances[i];
|
|
78
|
+
// Apply transform from previous stage output if provided
|
|
79
|
+
if (stage.transform) {
|
|
80
|
+
current = stage.transform(current);
|
|
81
|
+
}
|
|
82
|
+
const t0 = performance.now();
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
|
+
current = await inst.run(current, stage.runOptions);
|
|
85
|
+
stageTimes.push(performance.now() - t0);
|
|
86
|
+
stageResults.push(current);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
output: current,
|
|
90
|
+
stages: stageResults,
|
|
91
|
+
totalTime: performance.now() - wallStart,
|
|
92
|
+
stageTimes,
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
dispose() {
|
|
96
|
+
if (pipelineInstances) {
|
|
97
|
+
for (const inst of pipelineInstances) {
|
|
98
|
+
if (inst && typeof inst.dispose === 'function') {
|
|
99
|
+
inst.dispose();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
pipelineInstances = null;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Run stages in parallel (fan-out) and collect all results.
|
|
109
|
+
*
|
|
110
|
+
* Unlike `compose` (which is sequential), `parallel` runs every stage
|
|
111
|
+
* independently with the same input and returns an array of results.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const analyzer = parallel([
|
|
116
|
+
* { task: 'text-classification' },
|
|
117
|
+
* { task: 'feature-extraction' },
|
|
118
|
+
* { task: 'zero-shot-classification',
|
|
119
|
+
* transform: (text) => ({ text, candidateLabels: ['news', 'sports'] }) },
|
|
120
|
+
* ]);
|
|
121
|
+
*
|
|
122
|
+
* const results = await analyzer.run('Breaking: team wins championship');
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export function parallel(stages) {
|
|
126
|
+
if (stages.length === 0) {
|
|
127
|
+
throw new Error('[edgeFlow.js] parallel() requires at least one stage');
|
|
128
|
+
}
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
+
let pipelineInstances = null;
|
|
131
|
+
async function ensureInitialised() {
|
|
132
|
+
if (pipelineInstances)
|
|
133
|
+
return pipelineInstances;
|
|
134
|
+
pipelineInstances = await Promise.all(stages.map((s) => pipeline(s.task, {
|
|
135
|
+
model: s.model,
|
|
136
|
+
...s.options,
|
|
137
|
+
})));
|
|
138
|
+
return pipelineInstances;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
async run(input) {
|
|
142
|
+
const instances = await ensureInitialised();
|
|
143
|
+
const t0 = performance.now();
|
|
144
|
+
const outputs = await Promise.all(stages.map((stage, i) => {
|
|
145
|
+
const stageInput = stage.transform ? stage.transform(input) : input;
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
147
|
+
return instances[i].run(stageInput, stage.runOptions);
|
|
148
|
+
}));
|
|
149
|
+
return { outputs, totalTime: performance.now() - t0 };
|
|
150
|
+
},
|
|
151
|
+
dispose() {
|
|
152
|
+
if (pipelineInstances) {
|
|
153
|
+
for (const inst of pipelineInstances) {
|
|
154
|
+
if (inst && typeof inst.dispose === 'function') {
|
|
155
|
+
inst.dispose();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
pipelineInstances = null;
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/core/composer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAA+B,MAAM,uBAAuB,CAAC;AAsD9E,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,MAA0B;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,8DAA8D;IAC9D,IAAI,iBAAiB,GAAiB,IAAI,CAAC;IAE3C,KAAK,UAAU,iBAAiB;QAC9B,IAAI,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QAEhD,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,QAAQ,CAAC,KAAK,CAAC,IAAsC,EAAE;YACrD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,KAAK,CAAC,OAAO;SACjB,CAAC,CACH,CACF,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,IAAI,MAAM;YACR,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAc;YACtB,MAAM,SAAS,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAc,EAAE,CAAC;YACnC,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;gBAE3B,yDAAyD;gBACzD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpB,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;gBAED,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC7B,8DAA8D;gBAC9D,OAAO,GAAG,MAAO,IAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC7D,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;gBACxC,UAAU;aACX,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,iBAAiB,EAAE,CAAC;gBACtB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;oBACrC,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;wBAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,QAAQ,CACtB,MAA0B;IAK1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,8DAA8D;IAC9D,IAAI,iBAAiB,GAAiB,IAAI,CAAC;IAE3C,KAAK,UAAU,iBAAiB;QAC9B,IAAI,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QAChD,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACf,QAAQ,CAAC,CAAC,CAAC,IAAsC,EAAE;YACjD,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,CAAC,CAAC,OAAO;SACb,CAAC,CACH,CACF,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,KAAc;YACtB,MAAM,SAAS,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAE7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBACtB,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACpE,8DAA8D;gBAC9D,OAAQ,SAAS,CAAC,CAAC,CAAS,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC,CAAC,CACH,CAAC;YAEF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;QACxD,CAAC;QAED,OAAO;YACL,IAAI,iBAAiB,EAAE,CAAC;gBACtB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;oBACrC,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;wBAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,iBAAiB,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Device Profiler
|
|
3
|
+
*
|
|
4
|
+
* Automatically profiles the current device and recommends optimal model
|
|
5
|
+
* variants (quantization level, batch size, execution provider).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { getDeviceProfile, recommendQuantization } from 'edgeflowjs';
|
|
10
|
+
*
|
|
11
|
+
* const profile = await getDeviceProfile();
|
|
12
|
+
* console.log(profile.tier); // 'high' | 'medium' | 'low'
|
|
13
|
+
*
|
|
14
|
+
* const quant = recommendQuantization(profile);
|
|
15
|
+
* console.log(quant); // 'fp16' | 'int8' | 'int4'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { QuantizationType } from './types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Device capability tier.
|
|
21
|
+
*/
|
|
22
|
+
export type DeviceTier = 'high' | 'medium' | 'low';
|
|
23
|
+
/**
|
|
24
|
+
* Profiled device information.
|
|
25
|
+
*/
|
|
26
|
+
export interface DeviceProfile {
|
|
27
|
+
/** Capability tier */
|
|
28
|
+
tier: DeviceTier;
|
|
29
|
+
/** Number of logical CPU cores */
|
|
30
|
+
cores: number;
|
|
31
|
+
/** Device memory in GiB (navigator.deviceMemory, may be null) */
|
|
32
|
+
memoryGiB: number | null;
|
|
33
|
+
/** Whether WebGPU is available */
|
|
34
|
+
webgpu: boolean;
|
|
35
|
+
/** Whether WebNN is available */
|
|
36
|
+
webnn: boolean;
|
|
37
|
+
/** Recommended max batch size */
|
|
38
|
+
recommendedBatchSize: number;
|
|
39
|
+
/** Recommended concurrency limit */
|
|
40
|
+
recommendedConcurrency: number;
|
|
41
|
+
/** Whether the device is mobile */
|
|
42
|
+
mobile: boolean;
|
|
43
|
+
/** Raw GPU adapter info (if WebGPU available) */
|
|
44
|
+
gpuInfo?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Model variant recommendation.
|
|
48
|
+
*/
|
|
49
|
+
export interface ModelRecommendation {
|
|
50
|
+
/** Recommended quantization */
|
|
51
|
+
quantization: QuantizationType;
|
|
52
|
+
/** Recommended execution provider */
|
|
53
|
+
executionProvider: 'webgpu' | 'wasm';
|
|
54
|
+
/** Recommended batch size */
|
|
55
|
+
batchSize: number;
|
|
56
|
+
/** Whether to enable worker-based inference */
|
|
57
|
+
useWorker: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Profile the current device. Results are cached after the first call.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getDeviceProfile(): Promise<DeviceProfile>;
|
|
63
|
+
/**
|
|
64
|
+
* Recommend the best quantization level for the current device.
|
|
65
|
+
*/
|
|
66
|
+
export declare function recommendQuantization(profile: DeviceProfile): QuantizationType;
|
|
67
|
+
/**
|
|
68
|
+
* Get full model variant recommendations for the current device.
|
|
69
|
+
*/
|
|
70
|
+
export declare function recommendModelVariant(): Promise<ModelRecommendation>;
|
|
71
|
+
/**
|
|
72
|
+
* Reset the cached profile (useful for testing).
|
|
73
|
+
*/
|
|
74
|
+
export declare function resetDeviceProfile(): void;
|
|
75
|
+
//# sourceMappingURL=device-profiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-profiler.d.ts","sourceRoot":"","sources":["../../src/core/device-profiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,iCAAiC;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oCAAoC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mCAAmC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,qCAAqC;IACrC,iBAAiB,EAAE,QAAQ,GAAG,MAAM,CAAC;IACrC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;CACpB;AAQD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAiF/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAI9E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAS1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Device Profiler
|
|
3
|
+
*
|
|
4
|
+
* Automatically profiles the current device and recommends optimal model
|
|
5
|
+
* variants (quantization level, batch size, execution provider).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { getDeviceProfile, recommendQuantization } from 'edgeflowjs';
|
|
10
|
+
*
|
|
11
|
+
* const profile = await getDeviceProfile();
|
|
12
|
+
* console.log(profile.tier); // 'high' | 'medium' | 'low'
|
|
13
|
+
*
|
|
14
|
+
* const quant = recommendQuantization(profile);
|
|
15
|
+
* console.log(quant); // 'fp16' | 'int8' | 'int4'
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Profiling
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
let cachedProfile = null;
|
|
22
|
+
/**
|
|
23
|
+
* Profile the current device. Results are cached after the first call.
|
|
24
|
+
*/
|
|
25
|
+
export async function getDeviceProfile() {
|
|
26
|
+
if (cachedProfile)
|
|
27
|
+
return cachedProfile;
|
|
28
|
+
const cores = typeof navigator !== 'undefined'
|
|
29
|
+
? navigator.hardwareConcurrency ?? 2
|
|
30
|
+
: 2;
|
|
31
|
+
const memoryGiB = typeof navigator !== 'undefined' && 'deviceMemory' in navigator
|
|
32
|
+
? navigator.deviceMemory ?? null
|
|
33
|
+
: null;
|
|
34
|
+
const mobile = typeof navigator !== 'undefined'
|
|
35
|
+
? /Android|iPhone|iPad|iPod|Mobile/i.test(navigator.userAgent)
|
|
36
|
+
: false;
|
|
37
|
+
let webgpu = false;
|
|
38
|
+
let gpuInfo;
|
|
39
|
+
if (typeof navigator !== 'undefined' && 'gpu' in navigator) {
|
|
40
|
+
try {
|
|
41
|
+
const adapter = await navigator.gpu.requestAdapter();
|
|
42
|
+
webgpu = adapter != null;
|
|
43
|
+
if (adapter && typeof adapter === 'object') {
|
|
44
|
+
try {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
const info = adapter['info'];
|
|
47
|
+
if (info) {
|
|
48
|
+
gpuInfo = `${info['vendor'] ?? ''} ${info['architecture'] ?? ''}`.trim() || undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// info not available
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// WebGPU not available
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
let webnn = false;
|
|
61
|
+
if (typeof navigator !== 'undefined' && 'ml' in navigator) {
|
|
62
|
+
try {
|
|
63
|
+
const ml = navigator.ml;
|
|
64
|
+
if (ml) {
|
|
65
|
+
const ctx = await ml.createContext();
|
|
66
|
+
webnn = ctx != null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// WebNN not available
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Determine tier
|
|
74
|
+
let tier;
|
|
75
|
+
if (webgpu && cores >= 8 && (memoryGiB === null || memoryGiB >= 8)) {
|
|
76
|
+
tier = 'high';
|
|
77
|
+
}
|
|
78
|
+
else if (cores >= 4 && (memoryGiB === null || memoryGiB >= 4)) {
|
|
79
|
+
tier = 'medium';
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
tier = 'low';
|
|
83
|
+
}
|
|
84
|
+
// Mobile devices get capped even if specs look good
|
|
85
|
+
if (mobile && tier === 'high') {
|
|
86
|
+
tier = 'medium';
|
|
87
|
+
}
|
|
88
|
+
const recommendedBatchSize = tier === 'high' ? 32 : tier === 'medium' ? 8 : 1;
|
|
89
|
+
const recommendedConcurrency = tier === 'high' ? 4 : tier === 'medium' ? 2 : 1;
|
|
90
|
+
cachedProfile = {
|
|
91
|
+
tier,
|
|
92
|
+
cores,
|
|
93
|
+
memoryGiB,
|
|
94
|
+
webgpu,
|
|
95
|
+
webnn,
|
|
96
|
+
recommendedBatchSize,
|
|
97
|
+
recommendedConcurrency,
|
|
98
|
+
mobile,
|
|
99
|
+
gpuInfo,
|
|
100
|
+
};
|
|
101
|
+
return cachedProfile;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Recommend the best quantization level for the current device.
|
|
105
|
+
*/
|
|
106
|
+
export function recommendQuantization(profile) {
|
|
107
|
+
if (profile.tier === 'high' && profile.webgpu)
|
|
108
|
+
return 'float16';
|
|
109
|
+
if (profile.tier === 'medium')
|
|
110
|
+
return 'int8';
|
|
111
|
+
return 'int8'; // low-tier: most aggressive
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get full model variant recommendations for the current device.
|
|
115
|
+
*/
|
|
116
|
+
export async function recommendModelVariant() {
|
|
117
|
+
const profile = await getDeviceProfile();
|
|
118
|
+
return {
|
|
119
|
+
quantization: recommendQuantization(profile),
|
|
120
|
+
executionProvider: profile.webgpu ? 'webgpu' : 'wasm',
|
|
121
|
+
batchSize: profile.recommendedBatchSize,
|
|
122
|
+
useWorker: profile.cores >= 4,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Reset the cached profile (useful for testing).
|
|
127
|
+
*/
|
|
128
|
+
export function resetDeviceProfile() {
|
|
129
|
+
cachedProfile = null;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=device-profiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-profiler.js","sourceRoot":"","sources":["../../src/core/device-profiler.ts"],"names":[],"mappings":"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"}
|