@modular-prompt/driver 0.15.0 → 0.17.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 +124 -9
- package/dist/cache-controller.d.ts +4 -0
- package/dist/cache-controller.d.ts.map +1 -1
- package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
- package/dist/driver-registry/config-based-factory.js +10 -3
- package/dist/driver-registry/config-based-factory.js.map +1 -1
- package/dist/driver-registry/factory-helper.d.ts.map +1 -1
- package/dist/driver-registry/factory-helper.js +10 -2
- package/dist/driver-registry/factory-helper.js.map +1 -1
- package/dist/driver-registry/index.d.ts +1 -1
- package/dist/driver-registry/index.d.ts.map +1 -1
- package/dist/driver-registry/types.d.ts +18 -1
- package/dist/driver-registry/types.d.ts.map +1 -1
- package/dist/formatter/converter.d.ts.map +1 -1
- package/dist/formatter/converter.js +31 -2
- package/dist/formatter/converter.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/local-inference/adapters.d.ts +6 -0
- package/dist/local-inference/adapters.d.ts.map +1 -1
- package/dist/local-inference/driver.d.ts.map +1 -1
- package/dist/local-inference/driver.js +45 -24
- package/dist/local-inference/driver.js.map +1 -1
- package/dist/local-inference/process-client.d.ts +4 -2
- package/dist/local-inference/process-client.d.ts.map +1 -1
- package/dist/local-inference/process-client.js +24 -8
- package/dist/local-inference/process-client.js.map +1 -1
- package/dist/local-inference/process-communication.d.ts +9 -2
- package/dist/local-inference/process-communication.d.ts.map +1 -1
- package/dist/local-inference/process-communication.js +37 -5
- package/dist/local-inference/process-communication.js.map +1 -1
- package/dist/local-inference/protocol.d.ts +4 -0
- package/dist/local-inference/protocol.d.ts.map +1 -1
- package/dist/local-inference/request-queue.d.ts +1 -1
- package/dist/local-inference/request-queue.d.ts.map +1 -1
- package/dist/local-inference/request-queue.js +26 -7
- package/dist/local-inference/request-queue.js.map +1 -1
- package/dist/local-inference/stream-utils.d.ts +6 -0
- package/dist/local-inference/stream-utils.d.ts.map +1 -1
- package/dist/local-inference/stream-utils.js.map +1 -1
- package/dist/mlx-ml/mlx-cache-controller.d.ts +9 -0
- package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-cache-controller.js +158 -32
- package/dist/mlx-ml/mlx-cache-controller.js.map +1 -1
- package/dist/mlx-ml/mlx-cache-support.d.ts +2 -2
- package/dist/mlx-ml/mlx-cache-support.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-cache-support.js +8 -3
- package/dist/mlx-ml/mlx-cache-support.js.map +1 -1
- package/dist/mlx-ml/mlx-driver.d.ts +0 -1
- package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-driver.js +1 -8
- package/dist/mlx-ml/mlx-driver.js.map +1 -1
- package/dist/mlx-ml/process/index.d.ts +1 -1
- package/dist/mlx-ml/process/index.d.ts.map +1 -1
- package/dist/mlx-ml/process/index.js +2 -2
- package/dist/mlx-ml/process/index.js.map +1 -1
- package/dist/models-config/index.d.ts +2 -2
- package/dist/models-config/index.d.ts.map +1 -1
- package/dist/models-config/index.js +2 -2
- package/dist/models-config/index.js.map +1 -1
- package/dist/models-config/paths.d.ts +8 -0
- package/dist/models-config/paths.d.ts.map +1 -1
- package/dist/models-config/paths.js +16 -1
- package/dist/models-config/paths.js.map +1 -1
- package/dist/models-config/resolve.d.ts +10 -2
- package/dist/models-config/resolve.d.ts.map +1 -1
- package/dist/models-config/resolve.js +119 -6
- package/dist/models-config/resolve.js.map +1 -1
- package/dist/models-config/types.d.ts +5 -1
- package/dist/models-config/types.d.ts.map +1 -1
- package/dist/pytorch/process/index.d.ts +4 -2
- package/dist/pytorch/process/index.d.ts.map +1 -1
- package/dist/pytorch/process/index.js +24 -7
- package/dist/pytorch/process/index.js.map +1 -1
- package/dist/pytorch/pytorch-cache-controller.d.ts +84 -0
- package/dist/pytorch/pytorch-cache-controller.d.ts.map +1 -0
- package/dist/pytorch/pytorch-cache-controller.js +742 -0
- package/dist/pytorch/pytorch-cache-controller.js.map +1 -0
- package/dist/pytorch/pytorch-cache-support.d.ts +23 -0
- package/dist/pytorch/pytorch-cache-support.d.ts.map +1 -0
- package/dist/pytorch/pytorch-cache-support.js +47 -0
- package/dist/pytorch/pytorch-cache-support.js.map +1 -0
- package/dist/pytorch/pytorch-driver.d.ts +8 -1
- package/dist/pytorch/pytorch-driver.d.ts.map +1 -1
- package/dist/pytorch/pytorch-driver.js +40 -0
- package/dist/pytorch/pytorch-driver.js.map +1 -1
- package/dist/runtime/check.d.ts.map +1 -1
- package/dist/runtime/check.js +9 -6
- package/dist/runtime/check.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/manifest-core.d.mts +1 -0
- package/dist/runtime/manifest-core.mjs +1 -0
- package/dist/runtime/manifest-core.mjs.map +1 -1
- package/dist/runtime/manifest.d.ts +2 -0
- package/dist/runtime/manifest.d.ts.map +1 -1
- package/dist/runtime/manifest.js.map +1 -1
- package/dist/runtime/paths-core.d.mts +15 -1
- package/dist/runtime/paths-core.d.mts.map +1 -1
- package/dist/runtime/paths-core.mjs +50 -5
- package/dist/runtime/paths-core.mjs.map +1 -1
- package/dist/runtime/paths.d.ts +2 -2
- package/dist/runtime/paths.d.ts.map +1 -1
- package/dist/runtime/paths.js +2 -2
- package/dist/runtime/paths.js.map +1 -1
- package/dist/runtime/pytorch-template-core.d.mts +11 -0
- package/dist/runtime/pytorch-template-core.d.mts.map +1 -0
- package/dist/runtime/pytorch-template-core.mjs +54 -0
- package/dist/runtime/pytorch-template-core.mjs.map +1 -0
- package/dist/runtime/setup-commands-core.d.mts +16 -0
- package/dist/runtime/setup-commands-core.d.mts.map +1 -0
- package/dist/runtime/setup-commands-core.mjs +18 -0
- package/dist/runtime/setup-commands-core.mjs.map +1 -0
- package/dist/runtime/setup-commands.d.ts +2 -0
- package/dist/runtime/setup-commands.d.ts.map +1 -0
- package/dist/runtime/setup-commands.js +2 -0
- package/dist/runtime/setup-commands.js.map +1 -0
- package/docs/DRIVER_API.md +455 -0
- package/docs/LOCAL_MODEL_SETUP.md +765 -0
- package/docs/mlx-api-selection.md +301 -0
- package/package.json +12 -5
- package/scripts/download-model.js +3 -2
- package/scripts/runtime-cli.bin.test.ts +142 -0
- package/scripts/runtime-cli.js +322 -47
- package/scripts/runtime-cli.test.ts +163 -0
- package/src/mlx-ml/python/__main__.py +1 -1
- package/src/mlx-ml/python/backends/base.py +88 -18
- package/src/mlx-ml/python/backends/cache_archive.py +41 -0
- package/src/mlx-ml/python/backends/mlx_lm.py +45 -4
- package/src/mlx-ml/python/backends/mlx_vlm.py +679 -2
- package/src/mlx-ml/python/handlers/cache.py +4 -0
- package/src/mlx-ml/python/handlers/generate.py +33 -10
- package/src/mlx-ml/python/handlers/tokenize.py +1 -4
- package/src/mlx-ml/python/pyproject.toml +9 -3
- package/src/mlx-ml/python/server.py +2 -0
- package/src/mlx-ml/python/uv.lock +193 -433
- package/src/pytorch/templates/cpu-minimal/backends/base.py +139 -0
- package/src/pytorch/templates/cpu-minimal/backends/transformers_lm.py +1167 -0
- package/src/pytorch/{python → templates/cpu-minimal}/handlers/__init__.py +1 -0
- package/src/pytorch/templates/cpu-minimal/handlers/cache.py +88 -0
- package/src/pytorch/templates/cpu-minimal/handlers/generate.py +157 -0
- package/src/pytorch/{python → templates/cpu-minimal}/pyproject.toml +2 -2
- package/src/pytorch/{python → templates/cpu-minimal}/server.py +20 -2
- package/src/pytorch/templates/cpu-minimal/tests/test_cache_handler.py +284 -0
- package/src/pytorch/templates/cpu-minimal/tests/test_capabilities.py +14 -0
- package/src/pytorch/templates/cpu-minimal/tests/test_server.py +141 -0
- package/src/pytorch/templates/cpu-minimal/tests/test_transformers_errors.py +89 -0
- package/src/pytorch/templates/cpu-minimal/tests/test_transformers_lm_cache.py +554 -0
- package/src/pytorch/templates/cpu-minimal/utils/__init__.py +0 -0
- package/src/pytorch/{python → templates/cpu-minimal}/utils/token_utils.py +2 -2
- package/src/pytorch/templates/cpu-minimal/utils/transformers_errors.py +54 -0
- package/src/pytorch/{python → templates/cpu-minimal}/uv.lock +149 -109
- package/src/pytorch/templates/cuda/__main__.py +19 -0
- package/src/pytorch/templates/cuda/backends/__init__.py +3 -0
- package/src/pytorch/{python → templates/cuda}/backends/base.py +54 -6
- package/src/pytorch/templates/cuda/backends/transformers_lm.py +379 -0
- package/src/pytorch/templates/cuda/handlers/__init__.py +7 -0
- package/src/pytorch/templates/cuda/handlers/cache.py +93 -0
- package/src/pytorch/templates/cuda/handlers/cancel.py +53 -0
- package/src/pytorch/templates/cuda/handlers/capabilities.py +6 -0
- package/src/pytorch/templates/cuda/handlers/completion.py +15 -0
- package/src/pytorch/templates/cuda/handlers/format_test.py +70 -0
- package/src/pytorch/templates/cuda/handlers/generate.py +152 -0
- package/src/pytorch/templates/cuda/handlers/render.py +40 -0
- package/src/pytorch/templates/cuda/handlers/tokenize.py +63 -0
- package/src/pytorch/templates/cuda/pyproject.toml +37 -0
- package/src/pytorch/templates/cuda/server.py +158 -0
- package/src/pytorch/templates/cuda/tests/__init__.py +0 -0
- package/src/pytorch/templates/cuda/tests/test_cache_handler.py +207 -0
- package/src/pytorch/templates/cuda/tests/test_capabilities.py +14 -0
- package/src/pytorch/templates/cuda/tests/test_server.py +145 -0
- package/src/pytorch/templates/cuda/tests/test_transformers_errors.py +89 -0
- package/src/pytorch/templates/cuda/tests/test_transformers_lm_cache.py +288 -0
- package/src/pytorch/templates/cuda/utils/__init__.py +0 -0
- package/src/pytorch/templates/cuda/utils/chat_template_constraints.py +164 -0
- package/src/pytorch/templates/cuda/utils/prompt_builder.py +54 -0
- package/src/pytorch/templates/cuda/utils/template_render.py +80 -0
- package/src/pytorch/templates/cuda/utils/token_utils.py +376 -0
- package/src/pytorch/templates/cuda/utils/transformers_errors.py +54 -0
- package/src/pytorch/templates/cuda/uv.lock +734 -0
- package/src/pytorch/python/backends/transformers_lm.py +0 -127
- package/src/pytorch/python/handlers/generate.py +0 -68
- /package/src/pytorch/{python → templates/cpu-minimal}/__main__.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/backends/__init__.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/cancel.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/capabilities.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/completion.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/format_test.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/render.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/handlers/tokenize.py +0 -0
- /package/src/pytorch/{python/utils → templates/cpu-minimal/tests}/__init__.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/utils/chat_template_constraints.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/utils/prompt_builder.py +0 -0
- /package/src/pytorch/{python → templates/cpu-minimal}/utils/template_render.py +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/local-inference/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/local-inference/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export declare class InferenceRequestQueue {
|
|
|
23
23
|
primer?: string;
|
|
24
24
|
}, tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceRenderResult>;
|
|
25
25
|
addTokenizeRequest(messages: InferenceMessage[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceTokenizeResult>;
|
|
26
|
-
addCachePrefillRequest(cachePath: string, messages: InferenceMessage[], baseCachePath?: string, trimToTokens?: number, prefixOffsets?: number[], prefixHashes?: string[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceCachePrefillResult>;
|
|
26
|
+
addCachePrefillRequest(cachePath: string, messages: InferenceMessage[], baseCachePath?: string, trimToTokens?: number, prefixOffsets?: number[], prefixHashes?: string[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high', images?: string[], maxImageSize?: number): Promise<InferenceCachePrefillResult>;
|
|
27
27
|
addCompletionRequest(prompt: string, options?: unknown, images?: string[], maxImageSize?: number): Promise<Readable>;
|
|
28
28
|
addGenerateRequest(prompt: string | number[], options?: unknown, images?: string[], maxImageSize?: number, cachePath?: string, cacheTrimTokens?: number, primer?: string): Promise<Readable>;
|
|
29
29
|
processNext(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EACV,qBAAqB,EAGrB,yBAAyB,EACzB,qBAAqB,EAErB,uBAAuB,EAIvB,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAWvB,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,MAAM,QAAQ,CAAC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,CAAC,EAAE,OAAO,KACd,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LIP JSON-RPC リクエストキュー
|
|
3
3
|
*/
|
|
4
|
+
function toError(error) {
|
|
5
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
6
|
+
}
|
|
4
7
|
export class InferenceRequestQueue {
|
|
5
8
|
queue = [];
|
|
6
9
|
isProcessing = false;
|
|
@@ -79,7 +82,7 @@ export class InferenceRequestQueue {
|
|
|
79
82
|
this.processNext();
|
|
80
83
|
});
|
|
81
84
|
}
|
|
82
|
-
addCachePrefillRequest(cachePath, messages, baseCachePath, trimToTokens, prefixOffsets, prefixHashes, tools, reasoningEffort) {
|
|
85
|
+
addCachePrefillRequest(cachePath, messages, baseCachePath, trimToTokens, prefixOffsets, prefixHashes, tools, reasoningEffort, images, maxImageSize) {
|
|
83
86
|
return new Promise((resolve, reject) => {
|
|
84
87
|
const request = {
|
|
85
88
|
method: 'cache_prefill',
|
|
@@ -90,6 +93,7 @@ export class InferenceRequestQueue {
|
|
|
90
93
|
...(prefixOffsets && prefixHashes && { prefix_offsets: prefixOffsets, prefix_hashes: prefixHashes }),
|
|
91
94
|
...(tools && { tools }),
|
|
92
95
|
...(reasoningEffort && { reasoning_effort: reasoningEffort }),
|
|
96
|
+
...(images?.length ? { images, maxImageSize } : {}),
|
|
93
97
|
};
|
|
94
98
|
this.queue.push({
|
|
95
99
|
request,
|
|
@@ -152,13 +156,28 @@ export class InferenceRequestQueue {
|
|
|
152
156
|
this.isProcessing = true;
|
|
153
157
|
const queueItem = this.queue[0];
|
|
154
158
|
const { request, expectJsonResponse } = queueItem;
|
|
155
|
-
if (!expectJsonResponse) {
|
|
156
|
-
const stream = this.callbacks.createNewStream();
|
|
157
|
-
queueItem.resolve(stream);
|
|
158
|
-
this.queue.shift();
|
|
159
|
-
}
|
|
160
159
|
const input = JSON.stringify(request);
|
|
161
|
-
|
|
160
|
+
let stream;
|
|
161
|
+
try {
|
|
162
|
+
if (!expectJsonResponse) {
|
|
163
|
+
stream = this.callbacks.createNewStream();
|
|
164
|
+
}
|
|
165
|
+
this.callbacks.sendToProcess(input + '\n');
|
|
166
|
+
if (!expectJsonResponse && stream) {
|
|
167
|
+
queueItem.resolve(stream);
|
|
168
|
+
this.queue.shift();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
const requestError = toError(error);
|
|
173
|
+
if (stream) {
|
|
174
|
+
stream.destroy(requestError);
|
|
175
|
+
}
|
|
176
|
+
const failedItem = this.queue.shift();
|
|
177
|
+
failedItem?.reject?.(requestError);
|
|
178
|
+
this.isProcessing = false;
|
|
179
|
+
this.processNext();
|
|
180
|
+
}
|
|
162
181
|
}
|
|
163
182
|
handleJsonResponse(jsonData) {
|
|
164
183
|
if (this.queue.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,12 @@ import { Readable } from 'stream';
|
|
|
2
2
|
export interface StreamMeta {
|
|
3
3
|
prompt_tokens?: number;
|
|
4
4
|
generation_tokens?: number;
|
|
5
|
+
/** Whether the requested prompt cache was actually loaded for this stream. */
|
|
6
|
+
cache_loaded?: boolean;
|
|
7
|
+
/** Tokens read from a backend-owned prompt/KV cache for this stream. */
|
|
8
|
+
cache_read_tokens?: number;
|
|
9
|
+
/** Tokens written to a backend-owned prompt/KV cache for this stream. */
|
|
10
|
+
cache_write_tokens?: number;
|
|
5
11
|
}
|
|
6
12
|
export declare const META_MARKER = "\u001E__META__:";
|
|
7
13
|
export declare function extractStreamMeta(content: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,WAAW,oBAAkB,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CASxF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,EAChB,SAAS,CAAC,EAAE,MAAM,OAAO,GACxB;IACD,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACjF,CA0DA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export declare class MlxCacheController implements PromptCacheController {
|
|
|
15
15
|
private cacheDirReady;
|
|
16
16
|
private closed;
|
|
17
17
|
private bound;
|
|
18
|
+
private modelKind;
|
|
18
19
|
private cleanupHandler?;
|
|
19
20
|
private messageProcessor?;
|
|
20
21
|
private formatterOptions;
|
|
@@ -25,8 +26,12 @@ export declare class MlxCacheController implements PromptCacheController {
|
|
|
25
26
|
private lastHandleToolsHash?;
|
|
26
27
|
private lastHandleReasoningEffort?;
|
|
27
28
|
private cacheIndex;
|
|
29
|
+
/** Token counts returned by the backend, including VLM exact disk refs. */
|
|
30
|
+
private cacheTokenCounts;
|
|
28
31
|
private stats;
|
|
29
32
|
constructor(options?: MlxCacheControllerOptions);
|
|
33
|
+
/** Select backend-local storage before the controller is bound. */
|
|
34
|
+
setModelKind(modelKind?: 'lm' | 'vlm'): void;
|
|
30
35
|
bind(process: MlxProcess, formatterOptions: FormatterOptions, messageProcessor?: (messages: MlxMessage[]) => MlxMessage[]): Promise<void>;
|
|
31
36
|
private ensureCacheDir;
|
|
32
37
|
private get indexPath();
|
|
@@ -35,6 +40,7 @@ export declare class MlxCacheController implements PromptCacheController {
|
|
|
35
40
|
private saveIndex;
|
|
36
41
|
private computeFormatterOptionsHash;
|
|
37
42
|
private computeToolsHash;
|
|
43
|
+
private computeImageCacheIdentity;
|
|
38
44
|
private updateLastCache;
|
|
39
45
|
private clearLastCache;
|
|
40
46
|
private computeElementHashes;
|
|
@@ -45,6 +51,9 @@ export declare class MlxCacheController implements PromptCacheController {
|
|
|
45
51
|
private addToIndex;
|
|
46
52
|
private computeCacheKey;
|
|
47
53
|
private generateCachePath;
|
|
54
|
+
private getIndexedCachePath;
|
|
55
|
+
private getEntryCachePath;
|
|
56
|
+
private toIndexCachePath;
|
|
48
57
|
recordQuery(): void;
|
|
49
58
|
recordPromptTokens(newPromptTokens: number, cacheTokensUsed: number): void;
|
|
50
59
|
readCacheTokenCount(cachePath: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mlx-cache-controller.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-cache-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mlx-cache-controller.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-cache-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmCrD,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,qBAAa,kBAAmB,YAAW,qBAAqB;IAC9D,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAC,CAA2C;IACpE,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAChD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C,OAAO,CAAC,UAAU,CAA2C;IAC7D,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,KAAK,CAOX;gBAEU,OAAO,CAAC,EAAE,yBAAyB;IAa/C,mEAAmE;IACnE,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI;IAOtC,IAAI,CACR,OAAO,EAAE,UAAU,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;YAsBF,cAAc;IAM5B,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,kBAAkB;YAUZ,SAAS;YAkBT,SAAS;IAevB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,sBAAsB;YAMhB,iBAAiB;YAmFjB,YAAY;IAuI1B,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,gBAAgB;IAcxB,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAK1E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C,QAAQ;;;;;;;;IAWF,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAElC;YAEY,WAAW;IA0LzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B7B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash, randomBytes } from 'node:crypto';
|
|
2
2
|
import { tmpdir } from 'node:os';
|
|
3
|
-
import { join } from 'node:path';
|
|
3
|
+
import { isAbsolute, join, relative, resolve as resolvePath, sep } from 'node:path';
|
|
4
4
|
import { rmSync, existsSync, readFileSync } from 'node:fs';
|
|
5
5
|
import { unlink, mkdir, rm, writeFile, readFile } from 'node:fs/promises';
|
|
6
6
|
import { lock as lockFile } from 'proper-lockfile';
|
|
@@ -8,6 +8,15 @@ import { formatPromptAsMessages } from '../formatter/converter.js';
|
|
|
8
8
|
import { convertMessages, convertToolDefinitions } from './mlx-message-utils.js';
|
|
9
9
|
import { Logger } from '@modular-prompt/utils';
|
|
10
10
|
const logger = new Logger({ prefix: 'MLX', context: 'cache' });
|
|
11
|
+
const CACHE_FILE_EXTENSIONS = {
|
|
12
|
+
lm: '.safetensors.zip',
|
|
13
|
+
// mlx-vlm's exact_cache_v1 snapshot is a standalone safetensors file and
|
|
14
|
+
// must never be mistaken for an mlx-lm archive.
|
|
15
|
+
vlm: '.vlm.safetensors',
|
|
16
|
+
// Image-bearing VLM snapshots have a separate namespace and sidecar
|
|
17
|
+
// layout. They are intentionally incompatible with text-only VLM refs.
|
|
18
|
+
vlmVision: '.vlm-vision.safetensors',
|
|
19
|
+
};
|
|
11
20
|
export class MlxCacheController {
|
|
12
21
|
cacheByHash = new Map();
|
|
13
22
|
inflightRequests = new Map();
|
|
@@ -17,6 +26,7 @@ export class MlxCacheController {
|
|
|
17
26
|
cacheDirReady = false;
|
|
18
27
|
closed = false;
|
|
19
28
|
bound = false;
|
|
29
|
+
modelKind = 'lm';
|
|
20
30
|
cleanupHandler;
|
|
21
31
|
messageProcessor;
|
|
22
32
|
formatterOptions;
|
|
@@ -27,6 +37,8 @@ export class MlxCacheController {
|
|
|
27
37
|
lastHandleToolsHash;
|
|
28
38
|
lastHandleReasoningEffort;
|
|
29
39
|
cacheIndex = { version: 1, entries: [] };
|
|
40
|
+
/** Token counts returned by the backend, including VLM exact disk refs. */
|
|
41
|
+
cacheTokenCounts = new Map();
|
|
30
42
|
stats = {
|
|
31
43
|
totalQueries: 0,
|
|
32
44
|
memoryHit: 0, diskHit: 0, incremental: 0, fresh: 0,
|
|
@@ -38,7 +50,9 @@ export class MlxCacheController {
|
|
|
38
50
|
constructor(options) {
|
|
39
51
|
this.formatterOptions = {};
|
|
40
52
|
if (options?.cacheDir) {
|
|
41
|
-
|
|
53
|
+
// Keep backend refs and relative index paths stable when callers pass a
|
|
54
|
+
// relative cacheDir (the Python process may have a different cwd).
|
|
55
|
+
this.cacheDir = resolvePath(options.cacheDir);
|
|
42
56
|
this.managedDir = false;
|
|
43
57
|
}
|
|
44
58
|
else {
|
|
@@ -46,6 +60,13 @@ export class MlxCacheController {
|
|
|
46
60
|
this.managedDir = true;
|
|
47
61
|
}
|
|
48
62
|
}
|
|
63
|
+
/** Select backend-local storage before the controller is bound. */
|
|
64
|
+
setModelKind(modelKind) {
|
|
65
|
+
if (this.bound) {
|
|
66
|
+
throw new Error('MlxCacheController model kind must be set before bind');
|
|
67
|
+
}
|
|
68
|
+
this.modelKind = modelKind === 'vlm' ? 'vlm' : 'lm';
|
|
69
|
+
}
|
|
49
70
|
async bind(process, formatterOptions, messageProcessor) {
|
|
50
71
|
if (this.bound) {
|
|
51
72
|
throw new Error('MlxCacheController is already bound to a process');
|
|
@@ -138,6 +159,28 @@ export class MlxCacheController {
|
|
|
138
159
|
const sorted = [...tools].sort((a, b) => a.name.localeCompare(b.name));
|
|
139
160
|
return createHash('sha256').update(JSON.stringify(sorted)).digest('hex');
|
|
140
161
|
}
|
|
162
|
+
computeImageCacheIdentity(images, maxImageSize) {
|
|
163
|
+
if (!images || images.length === 0)
|
|
164
|
+
return undefined;
|
|
165
|
+
return {
|
|
166
|
+
layout: 'vision_cache_v1',
|
|
167
|
+
maxImageSize: maxImageSize ?? 768,
|
|
168
|
+
images: images.map((image) => {
|
|
169
|
+
let contentHash;
|
|
170
|
+
try {
|
|
171
|
+
// Include the source bytes in the controller key when the source is
|
|
172
|
+
// a local file. The Python sidecar remains the authoritative
|
|
173
|
+
// normalized-image/APC extra_hash check at load time.
|
|
174
|
+
contentHash = createHash('sha256').update(readFileSync(image)).digest('hex');
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// URLs and unresolved paths are still distinguished by their ref;
|
|
178
|
+
// mlx-vlm will reject an unreadable path during prefill/load.
|
|
179
|
+
}
|
|
180
|
+
return { ref: image, contentHash };
|
|
181
|
+
}),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
141
184
|
updateLastCache(handle, elementHashes, params) {
|
|
142
185
|
this.lastHandle = handle;
|
|
143
186
|
this.lastElementHashes = elementHashes;
|
|
@@ -224,7 +267,7 @@ export class MlxCacheController {
|
|
|
224
267
|
output: [],
|
|
225
268
|
};
|
|
226
269
|
const chatMessages = formatPromptAsMessages(partialPrompt, this.formatterOptions);
|
|
227
|
-
let mlxMessages = convertMessages(chatMessages);
|
|
270
|
+
let mlxMessages = convertMessages(chatMessages, this.modelKind === 'vlm');
|
|
228
271
|
if (this.messageProcessor) {
|
|
229
272
|
mlxMessages = this.messageProcessor(mlxMessages);
|
|
230
273
|
}
|
|
@@ -255,6 +298,11 @@ export class MlxCacheController {
|
|
|
255
298
|
return { offsets, hashes };
|
|
256
299
|
}
|
|
257
300
|
async findBestBase(params, fullTokens) {
|
|
301
|
+
// exact_cache_v1 VLM snapshots are intentionally not used for incremental
|
|
302
|
+
// prefill. A VLM cache is still eligible for an exact disk hit in
|
|
303
|
+
// createCache(), but base_cache_path/trim_to_tokens remain Phase 3 work.
|
|
304
|
+
if (this.modelKind === 'vlm')
|
|
305
|
+
return undefined;
|
|
258
306
|
const newHashes = this.computeElementHashes(params);
|
|
259
307
|
if (newHashes.length === 0)
|
|
260
308
|
return undefined;
|
|
@@ -263,6 +311,8 @@ export class MlxCacheController {
|
|
|
263
311
|
const candidates = [];
|
|
264
312
|
const staleKeys = [];
|
|
265
313
|
for (const entry of this.cacheIndex.entries) {
|
|
314
|
+
if ((entry.backend ?? 'lm') !== 'lm')
|
|
315
|
+
continue;
|
|
266
316
|
if (entry.hint === 'release')
|
|
267
317
|
continue;
|
|
268
318
|
if (entry.model !== params.model || entry.formatterOptionsHash !== fmtHash)
|
|
@@ -271,7 +321,7 @@ export class MlxCacheController {
|
|
|
271
321
|
continue;
|
|
272
322
|
if ((entry.reasoningEffort ?? '') !== (params.reasoningEffort ?? ''))
|
|
273
323
|
continue;
|
|
274
|
-
const path = this.generateCachePath(entry.key);
|
|
324
|
+
const path = entry.path ?? this.generateCachePath(entry.key);
|
|
275
325
|
if (existsSync(path) && this.readMetaTokenCount(path) > 0) {
|
|
276
326
|
candidates.push({ path, elementHashes: entry.elementHashes, label: entry.key.slice(0, 8) });
|
|
277
327
|
}
|
|
@@ -293,7 +343,7 @@ export class MlxCacheController {
|
|
|
293
343
|
}
|
|
294
344
|
}
|
|
295
345
|
if (staleKeys.length > 0) {
|
|
296
|
-
this.cacheIndex.entries = this.cacheIndex.entries.filter(e => !staleKeys.includes(e.key));
|
|
346
|
+
this.cacheIndex.entries = this.cacheIndex.entries.filter(e => !(staleKeys.includes(e.key) && (e.backend ?? 'lm') === 'lm'));
|
|
297
347
|
this.saveIndex().catch(() => { });
|
|
298
348
|
}
|
|
299
349
|
if (candidates.length === 0)
|
|
@@ -363,10 +413,18 @@ export class MlxCacheController {
|
|
|
363
413
|
}
|
|
364
414
|
return bestInfo;
|
|
365
415
|
}
|
|
366
|
-
addToIndex(params, cacheKey) {
|
|
367
|
-
// avoid duplicates
|
|
368
|
-
|
|
416
|
+
addToIndex(params, cacheKey, cachePath) {
|
|
417
|
+
// avoid duplicates while refreshing the actual backend path after a VLM
|
|
418
|
+
// prefill (the logical path is only the namespace seed).
|
|
419
|
+
const existing = this.cacheIndex.entries.find(e => e.key === cacheKey && (e.backend ?? 'lm') === this.modelKind);
|
|
420
|
+
if (existing) {
|
|
421
|
+
existing.backend = this.modelKind;
|
|
422
|
+
if (this.modelKind === 'vlm') {
|
|
423
|
+
existing.path = this.toIndexCachePath(cachePath);
|
|
424
|
+
}
|
|
425
|
+
existing.hint = undefined;
|
|
369
426
|
return;
|
|
427
|
+
}
|
|
370
428
|
this.cacheIndex.entries.push({
|
|
371
429
|
key: cacheKey,
|
|
372
430
|
model: params.model,
|
|
@@ -375,6 +433,8 @@ export class MlxCacheController {
|
|
|
375
433
|
toolsHash: this.computeToolsHash(params.tools),
|
|
376
434
|
reasoningEffort: params.reasoningEffort,
|
|
377
435
|
createdAt: new Date().toISOString(),
|
|
436
|
+
backend: this.modelKind,
|
|
437
|
+
path: this.modelKind === 'vlm' ? this.toIndexCachePath(cachePath) : undefined,
|
|
378
438
|
});
|
|
379
439
|
}
|
|
380
440
|
computeCacheKey(params) {
|
|
@@ -394,10 +454,42 @@ export class MlxCacheController {
|
|
|
394
454
|
if (params.reasoningEffort) {
|
|
395
455
|
payload.reasoningEffort = params.reasoningEffort;
|
|
396
456
|
}
|
|
457
|
+
const imageIdentity = this.computeImageCacheIdentity(params.images, params.maxImageSize);
|
|
458
|
+
if (imageIdentity) {
|
|
459
|
+
payload.imageCache = imageIdentity;
|
|
460
|
+
}
|
|
397
461
|
return createHash('sha256').update(JSON.stringify(payload)).digest('hex');
|
|
398
462
|
}
|
|
399
|
-
generateCachePath(cacheKey) {
|
|
400
|
-
|
|
463
|
+
generateCachePath(cacheKey, vision = false) {
|
|
464
|
+
const extension = vision
|
|
465
|
+
? CACHE_FILE_EXTENSIONS.vlmVision
|
|
466
|
+
: CACHE_FILE_EXTENSIONS[this.modelKind];
|
|
467
|
+
return join(this.cacheDir, `${cacheKey}${extension}`);
|
|
468
|
+
}
|
|
469
|
+
getIndexedCachePath(cacheKey) {
|
|
470
|
+
const indexedPath = this.cacheIndex.entries.find(e => e.key === cacheKey && (e.backend ?? 'lm') === this.modelKind)?.path;
|
|
471
|
+
if (!indexedPath)
|
|
472
|
+
return undefined;
|
|
473
|
+
return isAbsolute(indexedPath) ? indexedPath : join(this.cacheDir, indexedPath);
|
|
474
|
+
}
|
|
475
|
+
getEntryCachePath(entry) {
|
|
476
|
+
if (entry.path) {
|
|
477
|
+
return isAbsolute(entry.path) ? entry.path : join(this.cacheDir, entry.path);
|
|
478
|
+
}
|
|
479
|
+
return this.generateCachePath(entry.key);
|
|
480
|
+
}
|
|
481
|
+
toIndexCachePath(cachePath) {
|
|
482
|
+
if (this.modelKind !== 'vlm') {
|
|
483
|
+
return cachePath;
|
|
484
|
+
}
|
|
485
|
+
const absoluteCachePath = isAbsolute(cachePath) ? cachePath : resolvePath(cachePath);
|
|
486
|
+
const relativePath = relative(this.cacheDir, absoluteCachePath);
|
|
487
|
+
// Backend-created VLM paths are inside cacheDir. Keep an absolute path
|
|
488
|
+
// only for an incompatible/custom backend result that cannot be relocated.
|
|
489
|
+
if (relativePath === '..' || relativePath.startsWith(`..${sep}`)) {
|
|
490
|
+
return cachePath;
|
|
491
|
+
}
|
|
492
|
+
return relativePath;
|
|
401
493
|
}
|
|
402
494
|
recordQuery() {
|
|
403
495
|
this.stats.totalQueries++;
|
|
@@ -407,7 +499,7 @@ export class MlxCacheController {
|
|
|
407
499
|
this.stats.totalCacheTokensUsed += cacheTokensUsed;
|
|
408
500
|
}
|
|
409
501
|
readCacheTokenCount(cachePath) {
|
|
410
|
-
return this.readMetaTokenCount(cachePath);
|
|
502
|
+
return this.cacheTokenCounts.get(cachePath) ?? this.readMetaTokenCount(cachePath);
|
|
411
503
|
}
|
|
412
504
|
getStats() {
|
|
413
505
|
const s = this.stats;
|
|
@@ -462,12 +554,25 @@ export class MlxCacheController {
|
|
|
462
554
|
logger.verbose('cache dir creation failed, skipping cache:', e instanceof Error ? e.message : String(e));
|
|
463
555
|
return MlxCacheController.EMPTY_HANDLE;
|
|
464
556
|
}
|
|
465
|
-
const
|
|
557
|
+
const visionCache = this.modelKind === 'vlm' && (params.images?.length ?? 0) > 0;
|
|
558
|
+
// VLM prefill returns the actual APC snapshot path. Reuse that path when
|
|
559
|
+
// a fixed-cache index has it; otherwise start with a deterministic logical
|
|
560
|
+
// path that the Python backend turns into a DiskBlockStore namespace.
|
|
561
|
+
const indexedPath = this.getIndexedCachePath(cacheKey);
|
|
562
|
+
const cachePath = indexedPath
|
|
563
|
+
&& existsSync(indexedPath)
|
|
564
|
+
&& existsSync(indexedPath + '.meta.json')
|
|
565
|
+
&& this.readMetaTokenCount(indexedPath) > 0
|
|
566
|
+
? indexedPath
|
|
567
|
+
: this.generateCachePath(cacheKey, visionCache);
|
|
568
|
+
let effectiveCachePath = cachePath;
|
|
466
569
|
const elementHashes = this.computeElementHashes(params);
|
|
467
570
|
let supersededRef;
|
|
468
|
-
// Disk hit check (exact same cache already exists)
|
|
571
|
+
// Disk hit check (exact same cache already exists). Both LM archives and
|
|
572
|
+
// VLM exact_cache_v1 snapshots use the same sidecar token-count contract.
|
|
469
573
|
if (existsSync(cachePath) && existsSync(cachePath + '.meta.json') && this.readMetaTokenCount(cachePath) > 0) {
|
|
470
574
|
this.stats.diskHit++;
|
|
575
|
+
this.cacheTokenCounts.set(cachePath, this.readMetaTokenCount(cachePath));
|
|
471
576
|
logger.verbose('reusing existing cache file', cacheKey.slice(0, 12));
|
|
472
577
|
}
|
|
473
578
|
else {
|
|
@@ -478,26 +583,34 @@ export class MlxCacheController {
|
|
|
478
583
|
output: [],
|
|
479
584
|
};
|
|
480
585
|
const chatMessages = formatPromptAsMessages(prefillPrompt, this.formatterOptions);
|
|
481
|
-
const preMergeMessages = convertMessages(chatMessages);
|
|
586
|
+
const preMergeMessages = convertMessages(chatMessages, this.modelKind === 'vlm');
|
|
482
587
|
let mlxMessages = preMergeMessages;
|
|
483
588
|
if (this.messageProcessor) {
|
|
484
589
|
mlxMessages = this.messageProcessor(mlxMessages);
|
|
485
590
|
}
|
|
486
591
|
const hasTools = params.tools && params.tools.length > 0;
|
|
487
592
|
const mlxTools = hasTools ? convertToolDefinitions(params.tools) : undefined;
|
|
488
|
-
// Tokenize to get full token IDs (for findBestBase + prefix computation)
|
|
593
|
+
// Tokenize to get full token IDs (for findBestBase + prefix computation).
|
|
594
|
+
// Image-bearing VLM prompts are deliberately excluded: the shared
|
|
595
|
+
// tokenize protocol carries messages but not image sources, so it
|
|
596
|
+
// cannot reproduce mlx-vlm's dynamic image-token expansion. The VLM
|
|
597
|
+
// backend computes the authoritative image-aware IDs during prefill.
|
|
489
598
|
let fullTokens = null;
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
599
|
+
if (!visionCache) {
|
|
600
|
+
try {
|
|
601
|
+
const tokenResult = await this.process.tokenize(mlxMessages, mlxTools, params.reasoningEffort);
|
|
602
|
+
if (!tokenResult.error && tokenResult.token_ids) {
|
|
603
|
+
fullTokens = tokenResult.token_ids;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
catch {
|
|
607
|
+
// tokenize failure — proceed without prefix matching
|
|
494
608
|
}
|
|
495
609
|
}
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
const base = fullTokens
|
|
610
|
+
// Find best base cache. VLM exact snapshots intentionally do not
|
|
611
|
+
// participate in incremental prefill until a safe trim/replay protocol
|
|
612
|
+
// is implemented.
|
|
613
|
+
const base = this.modelKind === 'lm' && fullTokens
|
|
501
614
|
? await this.findBestBase(params, fullTokens)
|
|
502
615
|
: undefined;
|
|
503
616
|
if (base?.coversAll) {
|
|
@@ -536,14 +649,26 @@ export class MlxCacheController {
|
|
|
536
649
|
logger.debug('prefill', cachePath);
|
|
537
650
|
const prefillStart = performance.now();
|
|
538
651
|
try {
|
|
539
|
-
await this.process.cachePrefill(cachePath, mlxMessages, base?.path, base?.trimTokens, prefixOffsets, prefixHashes, mlxTools, params.reasoningEffort);
|
|
652
|
+
const prefillResult = await this.process.cachePrefill(cachePath, mlxMessages, base?.path, base?.trimTokens, prefixOffsets, prefixHashes, mlxTools, params.reasoningEffort, params.images, params.maxImageSize);
|
|
653
|
+
const returnedTokenCount = typeof prefillResult?.token_count === 'number'
|
|
654
|
+
? prefillResult.token_count
|
|
655
|
+
: undefined;
|
|
656
|
+
if (this.modelKind === 'vlm'
|
|
657
|
+
&& typeof prefillResult?.cache_path === 'string'
|
|
658
|
+
&& prefillResult.cache_path.length > 0) {
|
|
659
|
+
effectiveCachePath = prefillResult.cache_path;
|
|
660
|
+
}
|
|
661
|
+
const tokenCount = returnedTokenCount ?? this.readMetaTokenCount(effectiveCachePath);
|
|
662
|
+
if (tokenCount > 0) {
|
|
663
|
+
this.cacheTokenCounts.set(effectiveCachePath, tokenCount);
|
|
664
|
+
}
|
|
540
665
|
}
|
|
541
666
|
catch (e) {
|
|
542
667
|
logger.verbose('prefill failed, skipping cache:', e instanceof Error ? e.message : String(e));
|
|
543
668
|
return MlxCacheController.EMPTY_HANDLE;
|
|
544
669
|
}
|
|
545
670
|
const prefillMs = performance.now() - prefillStart;
|
|
546
|
-
const newTokens = this.
|
|
671
|
+
const newTokens = this.readCacheTokenCount(effectiveCachePath);
|
|
547
672
|
this.stats.prefillTokens += newTokens;
|
|
548
673
|
if (base) {
|
|
549
674
|
this.stats.incremental++;
|
|
@@ -555,13 +680,13 @@ export class MlxCacheController {
|
|
|
555
680
|
}
|
|
556
681
|
logger.verbose(`prefill ${prefillMs.toFixed(0)}ms`, base ? '(incremental)' : '(fresh)');
|
|
557
682
|
if (this.closed) {
|
|
558
|
-
await unlink(
|
|
559
|
-
await unlink(
|
|
683
|
+
await unlink(effectiveCachePath).catch(() => { });
|
|
684
|
+
await unlink(effectiveCachePath + '.meta.json').catch(() => { });
|
|
560
685
|
return MlxCacheController.EMPTY_HANDLE;
|
|
561
686
|
}
|
|
562
687
|
}
|
|
563
688
|
const handle = {
|
|
564
|
-
ref:
|
|
689
|
+
ref: effectiveCachePath,
|
|
565
690
|
includes: {
|
|
566
691
|
instructions: (params.instructions?.length ?? 0) > 0,
|
|
567
692
|
dataElementCount: params.data?.length ?? 0,
|
|
@@ -571,7 +696,7 @@ export class MlxCacheController {
|
|
|
571
696
|
};
|
|
572
697
|
this.cacheByHash.set(cacheKey, handle);
|
|
573
698
|
this.updateLastCache(handle, elementHashes, params);
|
|
574
|
-
this.addToIndex(params, cacheKey);
|
|
699
|
+
this.addToIndex(params, cacheKey, effectiveCachePath);
|
|
575
700
|
if (supersededRef) {
|
|
576
701
|
this.release(supersededRef);
|
|
577
702
|
}
|
|
@@ -580,7 +705,7 @@ export class MlxCacheController {
|
|
|
580
705
|
}
|
|
581
706
|
release(ref) {
|
|
582
707
|
logger.debug('release', ref);
|
|
583
|
-
const entry = this.cacheIndex.entries.find(e => this.
|
|
708
|
+
const entry = this.cacheIndex.entries.find(e => this.getEntryCachePath(e) === ref);
|
|
584
709
|
if (entry) {
|
|
585
710
|
entry.hint = 'release';
|
|
586
711
|
}
|
|
@@ -606,6 +731,7 @@ export class MlxCacheController {
|
|
|
606
731
|
]);
|
|
607
732
|
this.inflightRequests.clear();
|
|
608
733
|
this.cacheByHash.clear();
|
|
734
|
+
this.cacheTokenCounts.clear();
|
|
609
735
|
this.clearLastCache();
|
|
610
736
|
if (this.managedDir && this.cacheDir) {
|
|
611
737
|
await rm(this.cacheDir, { recursive: true, force: true }).catch(() => { });
|
|
@@ -613,7 +739,7 @@ export class MlxCacheController {
|
|
|
613
739
|
else {
|
|
614
740
|
const released = this.cacheIndex.entries.filter(e => e.hint === 'release');
|
|
615
741
|
await Promise.allSettled(released.flatMap(entry => {
|
|
616
|
-
const path = this.
|
|
742
|
+
const path = this.getEntryCachePath(entry);
|
|
617
743
|
return [unlink(path), unlink(path + '.meta.json')];
|
|
618
744
|
}));
|
|
619
745
|
this.cacheIndex.entries = this.cacheIndex.entries.filter(e => e.hint !== 'release');
|