edgeflowjs 0.1.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 +473 -0
- package/dist/backends/index.d.ts +13 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +32 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/onnx.d.ts +46 -0
- package/dist/backends/onnx.d.ts.map +1 -0
- package/dist/backends/onnx.js +249 -0
- package/dist/backends/onnx.js.map +1 -0
- package/dist/backends/wasm.d.ts +78 -0
- package/dist/backends/wasm.d.ts.map +1 -0
- package/dist/backends/wasm.js +358 -0
- package/dist/backends/wasm.js.map +1 -0
- package/dist/backends/webgpu.d.ts +143 -0
- package/dist/backends/webgpu.d.ts.map +1 -0
- package/dist/backends/webgpu.js +326 -0
- package/dist/backends/webgpu.js.map +1 -0
- package/dist/backends/webnn.d.ts +115 -0
- package/dist/backends/webnn.d.ts.map +1 -0
- package/dist/backends/webnn.js +202 -0
- package/dist/backends/webnn.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +234 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +554 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/runtime.d.ts +129 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +352 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scheduler.d.ts +118 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +600 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/tensor.d.ts +149 -0
- package/dist/core/tensor.d.ts.map +1 -0
- package/dist/core/tensor.js +719 -0
- package/dist/core/tensor.js.map +1 -0
- package/dist/core/types.d.ts +367 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +54 -0
- package/dist/core/types.js.map +1 -0
- package/dist/edgeflow.browser.js +5601 -0
- package/dist/edgeflow.browser.js.map +7 -0
- package/dist/edgeflow.browser.min.js +19 -0
- package/dist/edgeflow.browser.min.js.map +7 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/pipelines/base.d.ts +122 -0
- package/dist/pipelines/base.d.ts.map +1 -0
- package/dist/pipelines/base.js +155 -0
- package/dist/pipelines/base.js.map +1 -0
- package/dist/pipelines/feature-extraction.d.ts +68 -0
- package/dist/pipelines/feature-extraction.d.ts.map +1 -0
- package/dist/pipelines/feature-extraction.js +197 -0
- package/dist/pipelines/feature-extraction.js.map +1 -0
- package/dist/pipelines/image-classification.d.ts +61 -0
- package/dist/pipelines/image-classification.d.ts.map +1 -0
- package/dist/pipelines/image-classification.js +140 -0
- package/dist/pipelines/image-classification.js.map +1 -0
- package/dist/pipelines/index.d.ts +58 -0
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +72 -0
- package/dist/pipelines/index.js.map +1 -0
- package/dist/pipelines/text-classification.d.ts +71 -0
- package/dist/pipelines/text-classification.d.ts.map +1 -0
- package/dist/pipelines/text-classification.js +175 -0
- package/dist/pipelines/text-classification.js.map +1 -0
- package/dist/tools/index.d.ts +143 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +294 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/utils/cache.d.ts +162 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +443 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-loader.d.ts +107 -0
- package/dist/utils/model-loader.d.ts.map +1 -0
- package/dist/utils/model-loader.js +694 -0
- package/dist/utils/model-loader.js.map +1 -0
- package/dist/utils/preprocessor.d.ts +147 -0
- package/dist/utils/preprocessor.d.ts.map +1 -0
- package/dist/utils/preprocessor.js +423 -0
- package/dist/utils/preprocessor.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +140 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +397 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +87 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js
|
|
3
|
+
*
|
|
4
|
+
* Lightweight, high-performance browser ML inference framework
|
|
5
|
+
* with native concurrency support.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { pipeline } from 'edgeflow';
|
|
10
|
+
*
|
|
11
|
+
* // Create a sentiment analysis pipeline
|
|
12
|
+
* const sentiment = await pipeline('sentiment-analysis');
|
|
13
|
+
*
|
|
14
|
+
* // Run inference
|
|
15
|
+
* const result = await sentiment.run('I love this product!');
|
|
16
|
+
* console.log(result); // { label: 'positive', score: 0.98 }
|
|
17
|
+
*
|
|
18
|
+
* // Batch processing
|
|
19
|
+
* const results = await sentiment.run([
|
|
20
|
+
* 'This is amazing!',
|
|
21
|
+
* 'This is terrible.'
|
|
22
|
+
* ]);
|
|
23
|
+
*
|
|
24
|
+
* // Concurrent execution with different models
|
|
25
|
+
* const classifier = await pipeline('text-classification');
|
|
26
|
+
* const extractor = await pipeline('feature-extraction');
|
|
27
|
+
*
|
|
28
|
+
* const [classification, features] = await Promise.all([
|
|
29
|
+
* classifier.run('Sample text'),
|
|
30
|
+
* extractor.run('Sample text')
|
|
31
|
+
* ]);
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @packageDocumentation
|
|
35
|
+
*/
|
|
36
|
+
export type { DataType, TypedArray, Shape, Tensor, RuntimeType, RuntimeCapabilities, Runtime, ModelFormat, QuantizationType, ModelMetadata, ModelIOSpec, ModelLoadOptions, LoadedModel, TaskPriority, TaskStatus, InferenceTask, SchedulerOptions, MemoryStats, MemoryPoolConfig, PipelineTask, PipelineConfig, PipelineOptions, TokenizerConfig, TokenizedOutput, EventType, EdgeFlowEvent, EventListener, ErrorCode, } from './core/types.js';
|
|
37
|
+
export { EdgeFlowError, ErrorCodes } from './core/types.js';
|
|
38
|
+
export { EdgeFlowTensor, tensor, zeros, ones, full, random, randn, arange, linspace, eye, add, sub, mul, div, matmul, softmax, relu, sigmoid, tanh, sum, mean, argmax, concat, } from './core/tensor.js';
|
|
39
|
+
export { InferenceScheduler, getScheduler, setScheduler, configureScheduler, } from './core/scheduler.js';
|
|
40
|
+
export { MemoryManager, MemoryScope, ModelCache, withMemoryScope, withMemoryScopeSync, getMemoryManager, getMemoryStats, release, gc, } from './core/memory.js';
|
|
41
|
+
export { RuntimeManager, LoadedModelImpl, loadModel, loadModelFromBuffer, runInference, runBatchInference, getRuntimeManager, registerRuntime, getBestRuntime, getAvailableRuntimes, } from './core/runtime.js';
|
|
42
|
+
export { WebGPURuntime, createWebGPURuntime, WebNNRuntime, createWebNNRuntime, WASMRuntime, createWASMRuntime, registerAllBackends, } from './backends/index.js';
|
|
43
|
+
export { pipeline, createPipelines, BasePipeline, registerPipeline, getPipelineFactory, SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS, type PipelineResult, type TextClassificationResult, type FeatureExtractionResult, type ImageClassificationResult, type ObjectDetectionResult, TextClassificationPipeline, SentimentAnalysisPipeline, FeatureExtractionPipeline, ImageClassificationPipeline, createTextClassificationPipeline, createSentimentAnalysisPipeline, createFeatureExtractionPipeline, createImageClassificationPipeline, type PipelineFactoryOptions, type TextClassificationOptions, type FeatureExtractionOptions, type ImageClassificationOptions, type ImageInput, } from './pipelines/index.js';
|
|
44
|
+
export { Tokenizer, createBasicTokenizer, loadTokenizer, type TokenizerModel, type TokenizerOptions, ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor, type ImagePreprocessorOptions, type AudioPreprocessorOptions, type TextPreprocessorOptions, Cache, InferenceCache, ModelDownloadCache, createCache, type CacheStrategy, type CacheOptions, type CacheStats, loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, type DownloadProgress, type ModelLoaderOptions, type PreloadOptions, } from './utils/index.js';
|
|
45
|
+
export { quantize, type QuantizationOptions, type QuantizationResult, prune, type PruningOptions, type PruningResult, analyzeModel, type ModelAnalysis, benchmark, type BenchmarkOptions, type BenchmarkResult, exportModel, } from './tools/index.js';
|
|
46
|
+
/**
|
|
47
|
+
* Check if edgeFlow is supported in the current environment
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSupported(): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Get the best available runtime type
|
|
52
|
+
*/
|
|
53
|
+
export declare function getBestRuntimeType(): Promise<RuntimeType | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Preload models for faster subsequent loading
|
|
56
|
+
*/
|
|
57
|
+
export declare function preload(models: string[]): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* edgeFlow.js version
|
|
60
|
+
*/
|
|
61
|
+
export declare const VERSION = "0.1.0";
|
|
62
|
+
/**
|
|
63
|
+
* Get framework info
|
|
64
|
+
*/
|
|
65
|
+
export declare function getInfo(): Promise<{
|
|
66
|
+
version: string;
|
|
67
|
+
runtimes: Record<RuntimeType, boolean>;
|
|
68
|
+
features: string[];
|
|
69
|
+
}>;
|
|
70
|
+
import { RuntimeType } from './core/types.js';
|
|
71
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAOH,YAAY,EAEV,QAAQ,EACR,UAAU,EACV,KAAK,EACL,MAAM,EAGN,WAAW,EACX,mBAAmB,EACnB,OAAO,EAGP,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EAGX,YAAY,EACZ,UAAU,EACV,aAAa,EACb,gBAAgB,EAGhB,WAAW,EACX,gBAAgB,EAGhB,YAAY,EACZ,cAAc,EACd,eAAe,EAGf,eAAe,EACf,eAAe,EAGf,SAAS,EACT,aAAa,EACb,aAAa,EAGb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EACL,cAAc,EACd,MAAM,EACN,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,GACP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,EAAE,GACH,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,cAAc,EACd,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAEL,QAAQ,EACR,eAAe,EAGf,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAGlB,gBAAgB,EAChB,cAAc,EACd,eAAe,EAGf,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAG1B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAG3B,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EAGjC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,UAAU,GAChB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAEL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAGrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAG5B,KAAK,EACL,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EAGf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAEL,QAAQ,EACR,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAGvB,KAAK,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAGlB,YAAY,EACZ,KAAK,aAAa,EAGlB,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAGpB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAM1B;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAGpD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,IAAI,CAAC,CAWf;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC,CAmBD;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js
|
|
3
|
+
*
|
|
4
|
+
* Lightweight, high-performance browser ML inference framework
|
|
5
|
+
* with native concurrency support.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { pipeline } from 'edgeflow';
|
|
10
|
+
*
|
|
11
|
+
* // Create a sentiment analysis pipeline
|
|
12
|
+
* const sentiment = await pipeline('sentiment-analysis');
|
|
13
|
+
*
|
|
14
|
+
* // Run inference
|
|
15
|
+
* const result = await sentiment.run('I love this product!');
|
|
16
|
+
* console.log(result); // { label: 'positive', score: 0.98 }
|
|
17
|
+
*
|
|
18
|
+
* // Batch processing
|
|
19
|
+
* const results = await sentiment.run([
|
|
20
|
+
* 'This is amazing!',
|
|
21
|
+
* 'This is terrible.'
|
|
22
|
+
* ]);
|
|
23
|
+
*
|
|
24
|
+
* // Concurrent execution with different models
|
|
25
|
+
* const classifier = await pipeline('text-classification');
|
|
26
|
+
* const extractor = await pipeline('feature-extraction');
|
|
27
|
+
*
|
|
28
|
+
* const [classification, features] = await Promise.all([
|
|
29
|
+
* classifier.run('Sample text'),
|
|
30
|
+
* extractor.run('Sample text')
|
|
31
|
+
* ]);
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @packageDocumentation
|
|
35
|
+
*/
|
|
36
|
+
// Error class
|
|
37
|
+
export { EdgeFlowError, ErrorCodes } from './core/types.js';
|
|
38
|
+
// Tensor operations
|
|
39
|
+
export { EdgeFlowTensor, tensor, zeros, ones, full, random, randn, arange, linspace, eye, add, sub, mul, div, matmul, softmax, relu, sigmoid, tanh, sum, mean, argmax, concat, } from './core/tensor.js';
|
|
40
|
+
// Scheduler
|
|
41
|
+
export { InferenceScheduler, getScheduler, setScheduler, configureScheduler, } from './core/scheduler.js';
|
|
42
|
+
// Memory management
|
|
43
|
+
export { MemoryManager, MemoryScope, ModelCache, withMemoryScope, withMemoryScopeSync, getMemoryManager, getMemoryStats, release, gc, } from './core/memory.js';
|
|
44
|
+
// Runtime management
|
|
45
|
+
export { RuntimeManager, LoadedModelImpl, loadModel, loadModelFromBuffer, runInference, runBatchInference, getRuntimeManager, registerRuntime, getBestRuntime, getAvailableRuntimes, } from './core/runtime.js';
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Backend Exports
|
|
48
|
+
// ============================================================================
|
|
49
|
+
export { WebGPURuntime, createWebGPURuntime, WebNNRuntime, createWebNNRuntime, WASMRuntime, createWASMRuntime, registerAllBackends, } from './backends/index.js';
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Pipeline Exports
|
|
52
|
+
// ============================================================================
|
|
53
|
+
export {
|
|
54
|
+
// Factory function
|
|
55
|
+
pipeline, createPipelines,
|
|
56
|
+
// Base classes
|
|
57
|
+
BasePipeline, registerPipeline, getPipelineFactory,
|
|
58
|
+
// Labels
|
|
59
|
+
SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS,
|
|
60
|
+
// Pipelines
|
|
61
|
+
TextClassificationPipeline, SentimentAnalysisPipeline, FeatureExtractionPipeline, ImageClassificationPipeline,
|
|
62
|
+
// Factory functions
|
|
63
|
+
createTextClassificationPipeline, createSentimentAnalysisPipeline, createFeatureExtractionPipeline, createImageClassificationPipeline, } from './pipelines/index.js';
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Utility Exports
|
|
66
|
+
// ============================================================================
|
|
67
|
+
export {
|
|
68
|
+
// Tokenizer
|
|
69
|
+
Tokenizer, createBasicTokenizer, loadTokenizer,
|
|
70
|
+
// Preprocessor
|
|
71
|
+
ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor,
|
|
72
|
+
// Cache
|
|
73
|
+
Cache, InferenceCache, ModelDownloadCache, createCache,
|
|
74
|
+
// Model Loader (Preloading, Sharding, Resume, Caching)
|
|
75
|
+
loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, } from './utils/index.js';
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// Tools Exports
|
|
78
|
+
// ============================================================================
|
|
79
|
+
export {
|
|
80
|
+
// Quantization
|
|
81
|
+
quantize,
|
|
82
|
+
// Pruning
|
|
83
|
+
prune,
|
|
84
|
+
// Analysis
|
|
85
|
+
analyzeModel,
|
|
86
|
+
// Benchmarking
|
|
87
|
+
benchmark,
|
|
88
|
+
// Export
|
|
89
|
+
exportModel, } from './tools/index.js';
|
|
90
|
+
// ============================================================================
|
|
91
|
+
// Convenience Functions
|
|
92
|
+
// ============================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Check if edgeFlow is supported in the current environment
|
|
95
|
+
*/
|
|
96
|
+
export async function isSupported() {
|
|
97
|
+
const runtimes = await getAvailableRuntimes();
|
|
98
|
+
return Array.from(runtimes.values()).some(v => v);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the best available runtime type
|
|
102
|
+
*/
|
|
103
|
+
export async function getBestRuntimeType() {
|
|
104
|
+
const runtimes = await getAvailableRuntimes();
|
|
105
|
+
if (runtimes.get('webgpu'))
|
|
106
|
+
return 'webgpu';
|
|
107
|
+
if (runtimes.get('webnn'))
|
|
108
|
+
return 'webnn';
|
|
109
|
+
if (runtimes.get('wasm'))
|
|
110
|
+
return 'wasm';
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Preload models for faster subsequent loading
|
|
115
|
+
*/
|
|
116
|
+
export async function preload(models) {
|
|
117
|
+
const cache = new ModelDownloadCache();
|
|
118
|
+
await Promise.all(models.map(async (url) => {
|
|
119
|
+
if (!(await cache.get(url))) {
|
|
120
|
+
const response = await fetch(url);
|
|
121
|
+
if (response.ok) {
|
|
122
|
+
await cache.put(url, response);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Version Info
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* edgeFlow.js version
|
|
132
|
+
*/
|
|
133
|
+
export const VERSION = '0.1.0';
|
|
134
|
+
/**
|
|
135
|
+
* Get framework info
|
|
136
|
+
*/
|
|
137
|
+
export async function getInfo() {
|
|
138
|
+
const runtimes = await getAvailableRuntimes();
|
|
139
|
+
return {
|
|
140
|
+
version: VERSION,
|
|
141
|
+
runtimes: {
|
|
142
|
+
webgpu: runtimes.get('webgpu') ?? false,
|
|
143
|
+
webnn: runtimes.get('webnn') ?? false,
|
|
144
|
+
wasm: runtimes.get('wasm') ?? false,
|
|
145
|
+
auto: true,
|
|
146
|
+
},
|
|
147
|
+
features: [
|
|
148
|
+
'concurrent-execution',
|
|
149
|
+
'batch-processing',
|
|
150
|
+
'memory-management',
|
|
151
|
+
'model-caching',
|
|
152
|
+
'quantization',
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
import { getAvailableRuntimes } from './core/runtime.js';
|
|
157
|
+
import { ModelDownloadCache } from './utils/cache.js';
|
|
158
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Base Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Base class and utilities for all pipeline implementations.
|
|
5
|
+
*/
|
|
6
|
+
import { LoadedModel, PipelineConfig, PipelineOptions, PipelineTask } from '../core/types.js';
|
|
7
|
+
import { EdgeFlowTensor } from '../core/tensor.js';
|
|
8
|
+
import { ModelCache } from '../core/memory.js';
|
|
9
|
+
import { ModelDownloadCache } from '../utils/cache.js';
|
|
10
|
+
/**
|
|
11
|
+
* Pipeline result base interface
|
|
12
|
+
*/
|
|
13
|
+
export interface PipelineResult {
|
|
14
|
+
/** Processing time in milliseconds */
|
|
15
|
+
processingTime?: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Text classification result
|
|
19
|
+
*/
|
|
20
|
+
export interface TextClassificationResult extends PipelineResult {
|
|
21
|
+
label: string;
|
|
22
|
+
score: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Feature extraction result
|
|
26
|
+
*/
|
|
27
|
+
export interface FeatureExtractionResult extends PipelineResult {
|
|
28
|
+
embeddings: number[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Image classification result
|
|
32
|
+
*/
|
|
33
|
+
export interface ImageClassificationResult extends PipelineResult {
|
|
34
|
+
label: string;
|
|
35
|
+
score: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Object detection result
|
|
39
|
+
*/
|
|
40
|
+
export interface ObjectDetectionResult extends PipelineResult {
|
|
41
|
+
label: string;
|
|
42
|
+
score: number;
|
|
43
|
+
box: {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* BasePipeline - Abstract base class for all pipelines
|
|
52
|
+
*/
|
|
53
|
+
export declare abstract class BasePipeline<TInput, TOutput extends PipelineResult | PipelineResult[]> {
|
|
54
|
+
protected model: LoadedModel | null;
|
|
55
|
+
protected readonly config: PipelineConfig;
|
|
56
|
+
protected readonly modelCache: ModelCache;
|
|
57
|
+
protected readonly downloadCache: ModelDownloadCache;
|
|
58
|
+
protected isReady: boolean;
|
|
59
|
+
constructor(config: PipelineConfig);
|
|
60
|
+
/**
|
|
61
|
+
* Initialize the pipeline (load model)
|
|
62
|
+
*/
|
|
63
|
+
initialize(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Load model with caching
|
|
66
|
+
*/
|
|
67
|
+
protected loadModelWithCache(modelPath: string): Promise<LoadedModel>;
|
|
68
|
+
/**
|
|
69
|
+
* Run inference (single input)
|
|
70
|
+
*/
|
|
71
|
+
run(input: TInput, options?: PipelineOptions): Promise<TOutput>;
|
|
72
|
+
/**
|
|
73
|
+
* Run batch inference
|
|
74
|
+
*/
|
|
75
|
+
runBatch(inputs: TInput[], options?: PipelineOptions): Promise<TOutput[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Preprocess input - must be implemented by subclasses
|
|
78
|
+
*/
|
|
79
|
+
protected abstract preprocess(input: TInput): Promise<EdgeFlowTensor[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Postprocess output - must be implemented by subclasses
|
|
82
|
+
*/
|
|
83
|
+
protected abstract postprocess(outputs: EdgeFlowTensor[], options?: PipelineOptions): Promise<TOutput>;
|
|
84
|
+
/**
|
|
85
|
+
* Get the task type
|
|
86
|
+
*/
|
|
87
|
+
get task(): PipelineTask;
|
|
88
|
+
/**
|
|
89
|
+
* Check if pipeline is ready
|
|
90
|
+
*/
|
|
91
|
+
get ready(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Dispose the pipeline
|
|
94
|
+
*/
|
|
95
|
+
dispose(): void;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Pipeline factory function type
|
|
99
|
+
*/
|
|
100
|
+
type PipelineFactory = (config: PipelineConfig) => BasePipeline<any, any>;
|
|
101
|
+
/**
|
|
102
|
+
* Register a pipeline factory
|
|
103
|
+
*/
|
|
104
|
+
export declare function registerPipeline(task: PipelineTask, factory: PipelineFactory): void;
|
|
105
|
+
/**
|
|
106
|
+
* Get a pipeline factory
|
|
107
|
+
*/
|
|
108
|
+
export declare function getPipelineFactory(task: PipelineTask): PipelineFactory | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* Common sentiment labels
|
|
111
|
+
*/
|
|
112
|
+
export declare const SENTIMENT_LABELS: string[];
|
|
113
|
+
/**
|
|
114
|
+
* Common emotion labels
|
|
115
|
+
*/
|
|
116
|
+
export declare const EMOTION_LABELS: string[];
|
|
117
|
+
/**
|
|
118
|
+
* ImageNet top-10 labels (for demo)
|
|
119
|
+
*/
|
|
120
|
+
export declare const IMAGENET_LABELS: string[];
|
|
121
|
+
export {};
|
|
122
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/pipelines/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Base Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Base class and utilities for all pipeline implementations.
|
|
5
|
+
*/
|
|
6
|
+
import { loadModel, runInference } from '../core/runtime.js';
|
|
7
|
+
import { ModelCache } from '../core/memory.js';
|
|
8
|
+
import { ModelDownloadCache } from '../utils/cache.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Base Pipeline Class
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* BasePipeline - Abstract base class for all pipelines
|
|
14
|
+
*/
|
|
15
|
+
export class BasePipeline {
|
|
16
|
+
model = null;
|
|
17
|
+
config;
|
|
18
|
+
modelCache;
|
|
19
|
+
downloadCache;
|
|
20
|
+
isReady = false;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.modelCache = new ModelCache();
|
|
24
|
+
this.downloadCache = new ModelDownloadCache();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the pipeline (load model)
|
|
28
|
+
*/
|
|
29
|
+
async initialize() {
|
|
30
|
+
if (this.isReady && this.model)
|
|
31
|
+
return;
|
|
32
|
+
// Check model cache first
|
|
33
|
+
const cachedModel = this.modelCache.get(this.config.model);
|
|
34
|
+
if (cachedModel) {
|
|
35
|
+
this.model = cachedModel;
|
|
36
|
+
this.isReady = true;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Load model
|
|
40
|
+
this.model = await this.loadModelWithCache(this.config.model);
|
|
41
|
+
this.isReady = true;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Load model with caching
|
|
45
|
+
*/
|
|
46
|
+
async loadModelWithCache(modelPath) {
|
|
47
|
+
// Try download cache first
|
|
48
|
+
const cachedResponse = await this.downloadCache.get(modelPath);
|
|
49
|
+
if (cachedResponse) {
|
|
50
|
+
// Use cached data
|
|
51
|
+
}
|
|
52
|
+
// Download and cache (or use mock for now)
|
|
53
|
+
try {
|
|
54
|
+
const response = await fetch(modelPath);
|
|
55
|
+
if (response.ok) {
|
|
56
|
+
// Cache the response
|
|
57
|
+
await this.downloadCache.put(modelPath, response.clone());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Ignore fetch errors for demo
|
|
62
|
+
}
|
|
63
|
+
// Load into runtime
|
|
64
|
+
return loadModel(modelPath, {
|
|
65
|
+
runtime: this.config.runtime,
|
|
66
|
+
quantization: this.config.quantization,
|
|
67
|
+
cache: this.config.cache,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Run inference (single input)
|
|
72
|
+
*/
|
|
73
|
+
async run(input, options) {
|
|
74
|
+
await this.initialize();
|
|
75
|
+
const startTime = performance.now();
|
|
76
|
+
// Preprocess
|
|
77
|
+
const preprocessed = await this.preprocess(input);
|
|
78
|
+
// Run inference
|
|
79
|
+
const outputs = await runInference(this.model, preprocessed);
|
|
80
|
+
// Postprocess
|
|
81
|
+
const result = await this.postprocess(outputs, options);
|
|
82
|
+
if (result && typeof result === 'object' && 'processingTime' in result) {
|
|
83
|
+
result.processingTime = performance.now() - startTime;
|
|
84
|
+
}
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Run batch inference
|
|
89
|
+
*/
|
|
90
|
+
async runBatch(inputs, options) {
|
|
91
|
+
await this.initialize();
|
|
92
|
+
// Process all inputs
|
|
93
|
+
const results = await Promise.all(inputs.map(input => this.run(input, options)));
|
|
94
|
+
return results;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the task type
|
|
98
|
+
*/
|
|
99
|
+
get task() {
|
|
100
|
+
return this.config.task;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Check if pipeline is ready
|
|
104
|
+
*/
|
|
105
|
+
get ready() {
|
|
106
|
+
return this.isReady;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Dispose the pipeline
|
|
110
|
+
*/
|
|
111
|
+
dispose() {
|
|
112
|
+
if (this.model) {
|
|
113
|
+
this.model.dispose();
|
|
114
|
+
this.model = null;
|
|
115
|
+
}
|
|
116
|
+
this.isReady = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Registered pipeline factories
|
|
121
|
+
*/
|
|
122
|
+
const pipelineFactories = new Map();
|
|
123
|
+
/**
|
|
124
|
+
* Register a pipeline factory
|
|
125
|
+
*/
|
|
126
|
+
export function registerPipeline(task, factory) {
|
|
127
|
+
pipelineFactories.set(task, factory);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Get a pipeline factory
|
|
131
|
+
*/
|
|
132
|
+
export function getPipelineFactory(task) {
|
|
133
|
+
return pipelineFactories.get(task);
|
|
134
|
+
}
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Default Label Maps
|
|
137
|
+
// ============================================================================
|
|
138
|
+
/**
|
|
139
|
+
* Common sentiment labels
|
|
140
|
+
*/
|
|
141
|
+
export const SENTIMENT_LABELS = ['negative', 'positive'];
|
|
142
|
+
/**
|
|
143
|
+
* Common emotion labels
|
|
144
|
+
*/
|
|
145
|
+
export const EMOTION_LABELS = [
|
|
146
|
+
'anger', 'disgust', 'fear', 'joy', 'sadness', 'surprise', 'neutral'
|
|
147
|
+
];
|
|
148
|
+
/**
|
|
149
|
+
* ImageNet top-10 labels (for demo)
|
|
150
|
+
*/
|
|
151
|
+
export const IMAGENET_LABELS = [
|
|
152
|
+
'tench', 'goldfish', 'great white shark', 'tiger shark', 'hammerhead',
|
|
153
|
+
'electric ray', 'stingray', 'cock', 'hen', 'ostrich'
|
|
154
|
+
];
|
|
155
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/pipelines/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Feature Extraction Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Extract embeddings/features from text, images, or other data.
|
|
5
|
+
*/
|
|
6
|
+
import { PipelineConfig, PipelineOptions } from '../core/types.js';
|
|
7
|
+
import { EdgeFlowTensor } from '../core/tensor.js';
|
|
8
|
+
import { BasePipeline, FeatureExtractionResult } from './base.js';
|
|
9
|
+
/**
|
|
10
|
+
* Feature extraction options
|
|
11
|
+
*/
|
|
12
|
+
export interface FeatureExtractionOptions extends PipelineOptions {
|
|
13
|
+
/** Pooling strategy */
|
|
14
|
+
pooling?: 'mean' | 'max' | 'cls' | 'none';
|
|
15
|
+
/** Normalize embeddings */
|
|
16
|
+
normalize?: boolean;
|
|
17
|
+
/** Output dimension (for dimension reduction) */
|
|
18
|
+
outputDim?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* FeatureExtractionPipeline - Extract embeddings from text
|
|
22
|
+
*/
|
|
23
|
+
export declare class FeatureExtractionPipeline extends BasePipeline<string | string[], FeatureExtractionResult | FeatureExtractionResult[]> {
|
|
24
|
+
private tokenizer;
|
|
25
|
+
private embeddingDim;
|
|
26
|
+
constructor(config: PipelineConfig, embeddingDim?: number);
|
|
27
|
+
/**
|
|
28
|
+
* Initialize pipeline
|
|
29
|
+
*/
|
|
30
|
+
initialize(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Run feature extraction
|
|
33
|
+
*/
|
|
34
|
+
run(input: string | string[], options?: FeatureExtractionOptions): Promise<FeatureExtractionResult | FeatureExtractionResult[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Preprocess text input
|
|
37
|
+
*/
|
|
38
|
+
protected preprocess(input: string | string[]): Promise<EdgeFlowTensor[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Run model inference
|
|
41
|
+
*/
|
|
42
|
+
private runInference;
|
|
43
|
+
/**
|
|
44
|
+
* Postprocess model outputs
|
|
45
|
+
*/
|
|
46
|
+
protected postprocess(outputs: EdgeFlowTensor[], options?: FeatureExtractionOptions): Promise<FeatureExtractionResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Extract CLS token embedding
|
|
49
|
+
*/
|
|
50
|
+
private extractCLSEmbedding;
|
|
51
|
+
/**
|
|
52
|
+
* Mean pooling over sequence
|
|
53
|
+
*/
|
|
54
|
+
private meanPooling;
|
|
55
|
+
/**
|
|
56
|
+
* Max pooling over sequence
|
|
57
|
+
*/
|
|
58
|
+
private maxPooling;
|
|
59
|
+
/**
|
|
60
|
+
* L2 normalize vector
|
|
61
|
+
*/
|
|
62
|
+
private normalizeVector;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create feature extraction pipeline
|
|
66
|
+
*/
|
|
67
|
+
export declare function createFeatureExtractionPipeline(config?: Partial<PipelineConfig>): FeatureExtractionPipeline;
|
|
68
|
+
//# sourceMappingURL=feature-extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-extraction.d.ts","sourceRoot":"","sources":["../../src/pipelines/feature-extraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,YAAY,EACZ,uBAAuB,EAExB,MAAM,WAAW,CAAC;AAMnB;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,2BAA2B;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,MAAM,GAAG,MAAM,EAAE,EACjB,uBAAuB,GAAG,uBAAuB,EAAE,CACpD;IACC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,cAAc,EAAE,YAAY,GAAE,MAAY;IAK9D;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;OAEG;IACY,GAAG,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;IA8B/D;;OAEG;cACsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAwBxF;;OAEG;YACW,YAAY;IAoB1B;;OAEG;cACsB,WAAW,CAClC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,CAAC;IA4CnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACH,OAAO,CAAC,eAAe;CAWxB;AAMD;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,yBAAyB,CAQ3B"}
|