@litert-lm/core 0.17.0 → 0.17.1
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/dist/conversation_config.d.ts +11 -7
- package/dist/conversation_config.d.ts.map +1 -1
- package/dist/conversation_config.js +26 -1
- package/dist/conversation_config.js.map +1 -1
- package/dist/embedding_engine.d.ts +51 -0
- package/dist/embedding_engine.d.ts.map +1 -0
- package/dist/embedding_engine.js +198 -0
- package/dist/embedding_engine.js.map +1 -0
- package/dist/embedding_engine_settings.d.ts +39 -0
- package/dist/embedding_engine_settings.d.ts.map +1 -0
- package/dist/embedding_engine_settings.js +35 -0
- package/dist/embedding_engine_settings.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/litertlm_web.js +1 -1
- package/dist/stream_utils.d.ts +25 -0
- package/dist/stream_utils.d.ts.map +1 -0
- package/dist/stream_utils.js +95 -0
- package/dist/stream_utils.js.map +1 -0
- package/dist/testing/fakes.js +1 -1
- package/dist/testing/fakes.js.map +1 -1
- package/dist/wasm_binding_types.d.ts +94 -0
- package/dist/wasm_binding_types.d.ts.map +1 -1
- package/dist/wasm_binding_types.js +8 -0
- package/dist/wasm_binding_types.js.map +1 -1
- package/package.json +3 -2
- package/wasm/litertlm_wasm_asyncify_internal.js +350 -325
- package/wasm/litertlm_wasm_asyncify_internal.wasm +0 -0
- package/wasm/litertlm_wasm_compat_asyncify_internal.js +351 -326
- package/wasm/litertlm_wasm_compat_asyncify_internal.wasm +0 -0
- package/wasm/litertlm_wasm_compat_internal.js +31 -9
- package/wasm/litertlm_wasm_compat_internal.wasm +0 -0
- package/wasm/litertlm_wasm_internal.js +31 -9
- package/wasm/litertlm_wasm_internal.wasm +0 -0
|
@@ -61,23 +61,27 @@ export interface TextContentPart {
|
|
|
61
61
|
text: string;
|
|
62
62
|
[key: string]: JsonValue | undefined;
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Supported MIME types for image input.
|
|
66
|
+
*/
|
|
67
|
+
export declare const SUPPORTED_IMAGE_MIME_TYPES: ReadonlySet<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Supported MIME types for audio input.
|
|
70
|
+
*/
|
|
71
|
+
export declare const SUPPORTED_AUDIO_MIME_TYPES: ReadonlySet<string>;
|
|
64
72
|
/**
|
|
65
73
|
* Image content part of a message.
|
|
66
|
-
*
|
|
67
|
-
* This is a placeholder. Images are not supported in JS yet.
|
|
68
74
|
*/
|
|
69
75
|
export interface ImageContentPart {
|
|
70
76
|
type: 'image';
|
|
71
|
-
|
|
77
|
+
data: Uint8Array | ArrayBuffer | string | Blob;
|
|
72
78
|
}
|
|
73
79
|
/**
|
|
74
80
|
* Audio content part of a message.
|
|
75
|
-
*
|
|
76
|
-
* This is a placeholder. Audio is not supported in JS yet.
|
|
77
81
|
*/
|
|
78
82
|
export interface AudioContentPart {
|
|
79
83
|
type: 'audio';
|
|
80
|
-
|
|
84
|
+
data: Uint8Array | ArrayBuffer | string | Blob;
|
|
81
85
|
}
|
|
82
86
|
/**
|
|
83
87
|
* Video content part of a message.
|
|
@@ -123,7 +127,7 @@ export declare interface Message {
|
|
|
123
127
|
content?: string | ContentPart[];
|
|
124
128
|
channels?: Record<string, string>;
|
|
125
129
|
tool_calls?: ToolCall[];
|
|
126
|
-
[key: string]: JsonValue | undefined;
|
|
130
|
+
[key: string]: JsonValue | ContentPart[] | undefined;
|
|
127
131
|
}
|
|
128
132
|
/**
|
|
129
133
|
* Types that can be used as a Message in the conversation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_config.d.ts","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAC,OAAO,GAAC,QAAQ,GAAC,QAAQ,GAAC,SAAS,GAAC,SAAS,GAAC,MAAM,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,YAAY;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,mBAAmB,GAAC,SAAS,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,mBAAmB,GAAC,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAC,gBAAgB,GAAC,gBAAgB,GACvE,gBAAgB,GAAC,gBAAgB,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED
|
|
1
|
+
{"version":3,"file":"conversation_config.d.ts","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,5 +13,30 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Supported MIME types for image input.
|
|
18
|
+
*/
|
|
19
|
+
export const SUPPORTED_IMAGE_MIME_TYPES = new Set([
|
|
20
|
+
'image/jpeg',
|
|
21
|
+
'image/png',
|
|
22
|
+
'image/bmp',
|
|
23
|
+
'image/gif',
|
|
24
|
+
'image/x-tga',
|
|
25
|
+
'image/vnd.adobe.photoshop',
|
|
26
|
+
'image/vnd.radiance',
|
|
27
|
+
'image/x-portable-pixmap',
|
|
28
|
+
'image/x-portable-graymap',
|
|
29
|
+
]);
|
|
30
|
+
/**
|
|
31
|
+
* Supported MIME types for audio input.
|
|
32
|
+
*/
|
|
33
|
+
export const SUPPORTED_AUDIO_MIME_TYPES = new Set([
|
|
34
|
+
'audio/wav',
|
|
35
|
+
'audio/x-wav',
|
|
36
|
+
'audio/wave',
|
|
37
|
+
'audio/mp3',
|
|
38
|
+
'audio/mpeg',
|
|
39
|
+
'audio/flac',
|
|
40
|
+
'audio/x-flac',
|
|
41
|
+
]);
|
|
17
42
|
//# sourceMappingURL=conversation_config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation_config.js","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
1
|
+
{"version":3,"file":"conversation_config.js","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0DH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IACrE,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,2BAA2B;IAC3B,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IACrE,WAAW;IACX,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;CACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ContentPart, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES } from './conversation_config.js';
|
|
17
|
+
import { EmbeddingEngineSettings } from './embedding_engine_settings.js';
|
|
18
|
+
import { Deletable, EmbeddingOptions, InputOverflowStrategy } from './wasm_binding_types.js';
|
|
19
|
+
export { type EmbeddingOptions, InputOverflowStrategy, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES, };
|
|
20
|
+
/**
|
|
21
|
+
* A single input part to the embedding engine.
|
|
22
|
+
*/
|
|
23
|
+
export type SingleEmbeddingInput = string | ContentPart | Blob;
|
|
24
|
+
/**
|
|
25
|
+
* An input or sequence of inputs to compute an embedding for.
|
|
26
|
+
*/
|
|
27
|
+
export type EmbeddingInput = SingleEmbeddingInput | SingleEmbeddingInput[];
|
|
28
|
+
/**
|
|
29
|
+
* Result of an embedding computation.
|
|
30
|
+
*/
|
|
31
|
+
export interface EmbeddingResponse {
|
|
32
|
+
embedding: number[];
|
|
33
|
+
inputLength: number;
|
|
34
|
+
truncatedLength?: number;
|
|
35
|
+
numChunks: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* LiteRT-LM Embedding Engine
|
|
39
|
+
*/
|
|
40
|
+
export declare class EmbeddingEngine implements Deletable {
|
|
41
|
+
private readonly engine;
|
|
42
|
+
private readonly deleteCallback;
|
|
43
|
+
readonly settings: EmbeddingEngineSettings;
|
|
44
|
+
private readonly mutex;
|
|
45
|
+
private constructor();
|
|
46
|
+
static create(settings: EmbeddingEngineSettings): Promise<EmbeddingEngine>;
|
|
47
|
+
computeEmbedding(input: EmbeddingInput, options?: EmbeddingOptions): Promise<EmbeddingResponse>;
|
|
48
|
+
computeEmbeddingBatch(inputs: EmbeddingInput[], options?: EmbeddingOptions): Promise<EmbeddingResponse[]>;
|
|
49
|
+
delete(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=embedding_engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding_engine.d.ts","sourceRoot":"","sources":["../src/embedding_engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAC,WAAW,EAAE,0BAA0B,EAAE,0BAA0B,EAAC,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAC,uBAAuB,EAA6D,MAAM,gCAAgC,CAAC;AAKnI,OAAO,EAAU,SAAS,EAAkG,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAGpM,OAAO,EACL,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,GAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6DD;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAK3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IANnC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,OAAO;WAQM,MAAM,CAAC,QAAQ,EAAE,uBAAuB,GACjD,OAAO,CAAC,eAAe,CAAC;IA8EtB,gBAAgB,CAClB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAevB,qBAAqB,CACvB,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0BzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Cleanup } from './cleanup.js';
|
|
17
|
+
import { SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES } from './conversation_config.js';
|
|
18
|
+
import { fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings } from './embedding_engine_settings.js';
|
|
19
|
+
import { getOrLoadGlobalLiteRtLm } from './load_litertlm.js';
|
|
20
|
+
import { Mutex } from './mutex.js';
|
|
21
|
+
import { ReadableStreamDataStreamWrapper } from './readable_stream_data_stream_wrapper.js';
|
|
22
|
+
import { modelToStream, setupStreamWeightsCallback } from './stream_utils.js';
|
|
23
|
+
import { Backend, InputOverflowStrategy } from './wasm_binding_types.js';
|
|
24
|
+
import { consumeEmscriptenVectorToArray } from './wasm_utils.js';
|
|
25
|
+
export { InputOverflowStrategy, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES, };
|
|
26
|
+
function toWasmEmbeddingOptions(options) {
|
|
27
|
+
return {
|
|
28
|
+
normalize: options?.normalize ?? true,
|
|
29
|
+
insertSpecialTokens: options?.insertSpecialTokens ?? true,
|
|
30
|
+
inputOverflowStrategy: options?.inputOverflowStrategy ?? InputOverflowStrategy.ERROR,
|
|
31
|
+
visionTokensPerImage: options?.visionTokensPerImage,
|
|
32
|
+
outputSize: options?.outputSize,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function normalizeInputPart(part) {
|
|
36
|
+
if (typeof part === 'string') {
|
|
37
|
+
return { type: 'text', text: part };
|
|
38
|
+
}
|
|
39
|
+
if (part instanceof Blob) {
|
|
40
|
+
const mimeType = part.type.toLowerCase().split(';')[0].trim();
|
|
41
|
+
if (SUPPORTED_IMAGE_MIME_TYPES.has(mimeType)) {
|
|
42
|
+
const arrayBuffer = await part.arrayBuffer();
|
|
43
|
+
return { type: 'image', data: arrayBuffer };
|
|
44
|
+
}
|
|
45
|
+
if (SUPPORTED_AUDIO_MIME_TYPES.has(mimeType)) {
|
|
46
|
+
const arrayBuffer = await part.arrayBuffer();
|
|
47
|
+
return { type: 'audio', data: arrayBuffer };
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`Unsupported Blob mime type: "${part.type}". Supported image types: ` +
|
|
50
|
+
`${[...SUPPORTED_IMAGE_MIME_TYPES].join(', ')}. Supported audio types: ` +
|
|
51
|
+
`${[...SUPPORTED_AUDIO_MIME_TYPES].join(', ')}.`);
|
|
52
|
+
}
|
|
53
|
+
if (typeof part === 'object' && part !== null) {
|
|
54
|
+
if (part.type === 'image') {
|
|
55
|
+
if (part.data instanceof Blob) {
|
|
56
|
+
const arrayBuffer = await part.data.arrayBuffer();
|
|
57
|
+
return { type: 'image', data: arrayBuffer };
|
|
58
|
+
}
|
|
59
|
+
return part;
|
|
60
|
+
}
|
|
61
|
+
if (part.type === 'audio') {
|
|
62
|
+
if (part.data instanceof Blob) {
|
|
63
|
+
const arrayBuffer = await part.data.arrayBuffer();
|
|
64
|
+
return { type: 'audio', data: arrayBuffer };
|
|
65
|
+
}
|
|
66
|
+
return part;
|
|
67
|
+
}
|
|
68
|
+
return part;
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`Unsupported input part: ${JSON.stringify(part)}`);
|
|
71
|
+
}
|
|
72
|
+
async function normalizeInput(input) {
|
|
73
|
+
if (Array.isArray(input)) {
|
|
74
|
+
return Promise.all(input.map((p) => normalizeInputPart(p)));
|
|
75
|
+
}
|
|
76
|
+
return normalizeInputPart(input);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* LiteRT-LM Embedding Engine
|
|
80
|
+
*/
|
|
81
|
+
export class EmbeddingEngine {
|
|
82
|
+
engine;
|
|
83
|
+
deleteCallback;
|
|
84
|
+
settings;
|
|
85
|
+
mutex = new Mutex();
|
|
86
|
+
constructor(engine, settings, deleteCallback) {
|
|
87
|
+
this.engine = engine;
|
|
88
|
+
this.deleteCallback = deleteCallback;
|
|
89
|
+
this.settings = settings;
|
|
90
|
+
}
|
|
91
|
+
static async create(settings) {
|
|
92
|
+
const litertlm = await getOrLoadGlobalLiteRtLm();
|
|
93
|
+
const wasm = litertlm.liteRtLmWasm;
|
|
94
|
+
const backend = settings.backend ?? Backend.GPU;
|
|
95
|
+
settings = { ...settings, backend };
|
|
96
|
+
if (backend === Backend.GPU || backend === Backend.GPU_ARTISAN) {
|
|
97
|
+
await litertlm.setupDefaultWebGpuDevice();
|
|
98
|
+
}
|
|
99
|
+
const cleanup = new Cleanup();
|
|
100
|
+
const modelStream = await modelToStream(settings.model);
|
|
101
|
+
let engine;
|
|
102
|
+
try {
|
|
103
|
+
const streamWrapper = new ReadableStreamDataStreamWrapper(modelStream, () => wasm.HEAPU8);
|
|
104
|
+
const dataStream = wasm.ReadableStreamDataStream.create(streamWrapper);
|
|
105
|
+
cleanup.add(() => {
|
|
106
|
+
dataStream.delete();
|
|
107
|
+
});
|
|
108
|
+
const modelAssets = wasm.ModelAssets.createStreaming(dataStream);
|
|
109
|
+
const cleanupModelAssets = cleanup.add(() => {
|
|
110
|
+
modelAssets.delete();
|
|
111
|
+
});
|
|
112
|
+
let wasmSettings;
|
|
113
|
+
if (settings.visionBackend !== undefined ||
|
|
114
|
+
settings.audioBackend !== undefined) {
|
|
115
|
+
wasmSettings = wasm.EmbeddingEngineSettings.createDefaultMultimodal(modelAssets, { value: backend }, settings.visionBackend ? { value: settings.visionBackend } :
|
|
116
|
+
undefined, settings.audioBackend ? { value: settings.audioBackend } : undefined);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
wasmSettings = wasm.EmbeddingEngineSettings.createDefault(modelAssets, { value: backend });
|
|
120
|
+
}
|
|
121
|
+
cleanupModelAssets();
|
|
122
|
+
const cleanupWasmSettings = cleanup.add(() => {
|
|
123
|
+
wasmSettings.delete();
|
|
124
|
+
});
|
|
125
|
+
const resolvedBackend = wasmSettings.getMutableMainExecutorSettings().getBackend().value;
|
|
126
|
+
fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings, settings, resolvedBackend);
|
|
127
|
+
if (resolvedBackend === Backend.GPU) {
|
|
128
|
+
setupStreamWeightsCallback(wasm);
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
engine = await wasm.EmbeddingEngine.createEngine(wasmSettings);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
if (resolvedBackend === Backend.GPU) {
|
|
135
|
+
try {
|
|
136
|
+
wasm.registerStreamWeightsCallback(undefined);
|
|
137
|
+
await wasm.clearStoredWeightsStreams();
|
|
138
|
+
}
|
|
139
|
+
catch (cleanupError) {
|
|
140
|
+
console.error('Error during cleanup:', cleanupError);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
cleanupWasmSettings();
|
|
145
|
+
cleanup.add(() => {
|
|
146
|
+
engine.delete();
|
|
147
|
+
});
|
|
148
|
+
return new EmbeddingEngine(engine, settings, () => cleanup.run());
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
cleanup.run();
|
|
152
|
+
throw e;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async computeEmbedding(input, options = {}) {
|
|
156
|
+
const normalized = await normalizeInput(input);
|
|
157
|
+
return this.mutex.acquireAndRun(async () => {
|
|
158
|
+
const wasmResponse = await this.engine.computeEmbedding(normalized, toWasmEmbeddingOptions(options));
|
|
159
|
+
const embedding = consumeEmscriptenVectorToArray(wasmResponse.embedding);
|
|
160
|
+
return {
|
|
161
|
+
embedding,
|
|
162
|
+
inputLength: wasmResponse.inputLength,
|
|
163
|
+
truncatedLength: wasmResponse.truncatedLength,
|
|
164
|
+
numChunks: wasmResponse.numChunks,
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
async computeEmbeddingBatch(inputs, options = {}) {
|
|
169
|
+
const normalizedBatch = await Promise.all(inputs.map(normalizeInput));
|
|
170
|
+
return this.mutex.acquireAndRun(async () => {
|
|
171
|
+
const wasmResponses = await this.engine.computeEmbeddingBatch(normalizedBatch, toWasmEmbeddingOptions(options));
|
|
172
|
+
try {
|
|
173
|
+
const responses = [];
|
|
174
|
+
const count = wasmResponses.size();
|
|
175
|
+
for (let i = 0; i < count; i++) {
|
|
176
|
+
const wasmResp = wasmResponses.get(i);
|
|
177
|
+
const embedding = consumeEmscriptenVectorToArray(wasmResp.embedding);
|
|
178
|
+
responses.push({
|
|
179
|
+
embedding,
|
|
180
|
+
inputLength: wasmResp.inputLength,
|
|
181
|
+
truncatedLength: wasmResp.truncatedLength,
|
|
182
|
+
numChunks: wasmResp.numChunks,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return responses;
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
wasmResponses.delete();
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
async delete() {
|
|
193
|
+
await this.mutex.acquireAndRun(() => {
|
|
194
|
+
this.deleteCallback();
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=embedding_engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding_engine.js","sourceRoot":"","sources":["../src/embedding_engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Backend, EmbeddingEngineSettings as WasmEmbeddingEngineSettings } from './wasm_binding_types.js';
|
|
17
|
+
/**
|
|
18
|
+
* LiteRT-LM EmbeddingExecutorSettings
|
|
19
|
+
*/
|
|
20
|
+
export interface EmbeddingExecutorSettings {
|
|
21
|
+
numThreads?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* LiteRT-LM EmbeddingEngineSettings
|
|
25
|
+
*/
|
|
26
|
+
export interface EmbeddingEngineSettings {
|
|
27
|
+
model: string | Blob | ReadableStream<Uint8Array>;
|
|
28
|
+
backend?: Backend;
|
|
29
|
+
visionBackend?: Backend;
|
|
30
|
+
audioBackend?: Backend;
|
|
31
|
+
maxInputLength?: number;
|
|
32
|
+
visionTokensPerImage?: number;
|
|
33
|
+
mainExecutorSettings?: EmbeddingExecutorSettings;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Fills a WasmEmbeddingEngineSettings with the values from an EmbeddingEngineSettings.
|
|
37
|
+
*/
|
|
38
|
+
export declare function fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings: WasmEmbeddingEngineSettings, settings: EmbeddingEngineSettings, backend: Backend): void;
|
|
39
|
+
//# sourceMappingURL=embedding_engine_settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding_engine_settings.d.ts","sourceRoot":"","sources":["../src/embedding_engine_settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,OAAO,EAAE,uBAAuB,IAAI,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,0DAA0D,CACtE,YAAY,EAAE,2BAA2B,EACzC,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,OAAO,GACjB,IAAI,CAiBN"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Fills a WasmEmbeddingEngineSettings with the values from an EmbeddingEngineSettings.
|
|
18
|
+
*/
|
|
19
|
+
export function fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings, settings, backend) {
|
|
20
|
+
const wasmExecutorSettings = wasmSettings.getMutableMainExecutorSettings();
|
|
21
|
+
wasmExecutorSettings.setCacheDir(':nocache');
|
|
22
|
+
if (settings.maxInputLength !== undefined) {
|
|
23
|
+
wasmSettings.setMaxInputLength(settings.maxInputLength);
|
|
24
|
+
}
|
|
25
|
+
if (settings.visionTokensPerImage !== undefined) {
|
|
26
|
+
wasmSettings.setVisionTokensPerImage(settings.visionTokensPerImage);
|
|
27
|
+
}
|
|
28
|
+
if (settings.mainExecutorSettings) {
|
|
29
|
+
const mainExecutorSettings = settings.mainExecutorSettings;
|
|
30
|
+
if (mainExecutorSettings.numThreads !== undefined) {
|
|
31
|
+
wasmExecutorSettings.setNumThreads(mainExecutorSettings.numThreads);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=embedding_engine_settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding_engine_settings.js","sourceRoot":"","sources":["../src/embedding_engine_settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwBH;;GAEG;AACH,MAAM,UAAU,0DAA0D,CACtE,YAAyC,EACzC,QAAiC,EACjC,OAAgB;IAElB,MAAM,oBAAoB,GAAG,YAAY,CAAC,8BAA8B,EAAE,CAAC;IAC3E,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAChD,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAClC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC3D,IAAI,oBAAoB,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,oBAAoB,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export * from './session.js';
|
|
|
26
26
|
export * from './conversation.js';
|
|
27
27
|
export * from './session_config.js';
|
|
28
28
|
export * from './conversation_config.js';
|
|
29
|
+
export * from './embedding_engine_settings.js';
|
|
30
|
+
export * from './embedding_engine.js';
|
|
29
31
|
export * as Wasm from './wasm_binding_types.js';
|
|
30
32
|
export * from './types.js';
|
|
31
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,8 @@ export * from './session.js';
|
|
|
26
26
|
export * from './conversation.js';
|
|
27
27
|
export * from './session_config.js';
|
|
28
28
|
export * from './conversation_config.js';
|
|
29
|
+
export * from './embedding_engine_settings.js';
|
|
30
|
+
export * from './embedding_engine.js';
|
|
29
31
|
export * as Wasm from './wasm_binding_types.js';
|
|
30
32
|
export * from './types.js';
|
|
31
33
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
|
package/dist/litertlm_web.js
CHANGED
|
@@ -26,7 +26,7 @@ export async function setupDefaultWebGpuDevice() {
|
|
|
26
26
|
*/
|
|
27
27
|
export class LiteRtLm {
|
|
28
28
|
liteRtLmWasm;
|
|
29
|
-
static DEFAULT_WASM_PATH = 'https://cdn.jsdelivr.net/npm/@litert-lm/core@0.17.
|
|
29
|
+
static DEFAULT_WASM_PATH = 'https://cdn.jsdelivr.net/npm/@litert-lm/core@0.17.1/wasm';
|
|
30
30
|
constructor(wasmModule) {
|
|
31
31
|
this.liteRtLmWasm = wasmModule;
|
|
32
32
|
this.liteRtLmWasm.setupLogging();
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { LiteRtLmWasm } from './wasm_binding_types.js';
|
|
17
|
+
/**
|
|
18
|
+
* Converts a model source (URL string, Blob, or ReadableStream) into a ReadableStream.
|
|
19
|
+
*/
|
|
20
|
+
export declare function modelToStream(model: string | Blob | ReadableStream<Uint8Array>): Promise<ReadableStream<Uint8Array>>;
|
|
21
|
+
/**
|
|
22
|
+
* Sets up the callback that streams model weights directly into WebGPU buffers.
|
|
23
|
+
*/
|
|
24
|
+
export declare function setupStreamWeightsCallback(wasm: LiteRtLmWasm): void;
|
|
25
|
+
//# sourceMappingURL=stream_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream_utils.d.ts","sourceRoot":"","sources":["../src/stream_utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,GACjD,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAgBtC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAoEnE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Converts a model source (URL string, Blob, or ReadableStream) into a ReadableStream.
|
|
18
|
+
*/
|
|
19
|
+
export async function modelToStream(model) {
|
|
20
|
+
if (model instanceof ReadableStream) {
|
|
21
|
+
return model;
|
|
22
|
+
}
|
|
23
|
+
if (model instanceof Blob) {
|
|
24
|
+
return model.stream();
|
|
25
|
+
}
|
|
26
|
+
const modelUrl = model;
|
|
27
|
+
const response = await fetch(modelUrl, {
|
|
28
|
+
credentials: 'same-origin',
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
throw new Error(`Failed to fetch model file from ${modelUrl}`);
|
|
32
|
+
}
|
|
33
|
+
return response.body;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Sets up the callback that streams model weights directly into WebGPU buffers.
|
|
37
|
+
*/
|
|
38
|
+
export function setupStreamWeightsCallback(wasm) {
|
|
39
|
+
const gpuDevice = wasm.preinitializedWebGPUDevice;
|
|
40
|
+
if (!gpuDevice) {
|
|
41
|
+
throw new Error('WebGPU device not initialized');
|
|
42
|
+
}
|
|
43
|
+
wasm.registerStreamWeightsCallback(async (tflIds, wgpuBufferIds, offsets, lengths) => {
|
|
44
|
+
const requests = [];
|
|
45
|
+
if (tflIds.length !== wgpuBufferIds.length) {
|
|
46
|
+
throw new Error(`Stream weights callback received arrays of different lengths: ` +
|
|
47
|
+
`tflIds=${tflIds.length}, wgpuBufferIds=${wgpuBufferIds.length}`);
|
|
48
|
+
}
|
|
49
|
+
for (let i = 0; i < tflIds.length; i++) {
|
|
50
|
+
requests.push({
|
|
51
|
+
id: tflIds[i],
|
|
52
|
+
wgpuBufferId: wgpuBufferIds[i],
|
|
53
|
+
offset: offsets[i],
|
|
54
|
+
length: lengths[i],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
requests.sort((a, b) => a.offset - b.offset);
|
|
58
|
+
const CHUNK_SIZE = 4 * 1024 * 1024;
|
|
59
|
+
// `_malloc` returns a signed i32, which reads back negative once the heap
|
|
60
|
+
// grows past 2GB. Reinterpret it as unsigned before using it to index the
|
|
61
|
+
// heap, or the `Uint8Array` view below throws a `RangeError`.
|
|
62
|
+
const tempPtr = wasm._malloc(CHUNK_SIZE) >>> 0;
|
|
63
|
+
if (tempPtr === 0) {
|
|
64
|
+
throw new Error('Failed to allocate Wasm memory for streaming weights');
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
for (const req of requests) {
|
|
68
|
+
const gpuBuffer = wasm.WebGPU.getJsObject(req.wgpuBufferId);
|
|
69
|
+
if (!gpuBuffer) {
|
|
70
|
+
throw new Error(`Failed to find GPUBuffer for ID: ${req.wgpuBufferId}`);
|
|
71
|
+
}
|
|
72
|
+
const modelType = wasm.getCurrentlyCompilingModel();
|
|
73
|
+
let bytesUploaded = 0;
|
|
74
|
+
while (bytesUploaded < req.length) {
|
|
75
|
+
const chunkSize = Math.min(CHUNK_SIZE, req.length - bytesUploaded);
|
|
76
|
+
await wasm.readStoredWeights(modelType, req.offset + bytesUploaded, chunkSize, tempPtr);
|
|
77
|
+
let chunkData = new Uint8Array(wasm.HEAPU8.buffer, tempPtr, chunkSize);
|
|
78
|
+
if (chunkData.byteLength % 4 !== 0 &&
|
|
79
|
+
bytesUploaded + chunkSize === req.length) {
|
|
80
|
+
const paddedSize = (chunkData.byteLength + 3) & ~3;
|
|
81
|
+
const paddedData = new Uint8Array(paddedSize);
|
|
82
|
+
paddedData.set(chunkData);
|
|
83
|
+
chunkData = paddedData;
|
|
84
|
+
}
|
|
85
|
+
gpuDevice.queue.writeBuffer(gpuBuffer, bytesUploaded, chunkData);
|
|
86
|
+
bytesUploaded += chunkSize;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
wasm._free(tempPtr);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=stream_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../src/stream_utils.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/fakes.js
CHANGED
|
@@ -33,7 +33,7 @@ export class ConversationFake {
|
|
|
33
33
|
if (this.nextResponses.length > 0) {
|
|
34
34
|
return this.nextResponses.shift();
|
|
35
35
|
}
|
|
36
|
-
return { role: '
|
|
36
|
+
return { role: 'assistant', content: 'hello from fake' };
|
|
37
37
|
}
|
|
38
38
|
appendInput(message) {
|
|
39
39
|
if (Array.isArray(message)) {
|