@reftrixmcp/ml 0.3.0 → 0.5.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/config/worker-resource-limits.d.ts +89 -0
- package/dist/config/worker-resource-limits.d.ts.map +1 -0
- package/dist/config/worker-resource-limits.js +156 -0
- package/dist/config/worker-resource-limits.js.map +1 -0
- package/dist/dinov2/service.d.ts.map +1 -1
- package/dist/dinov2/service.js +70 -10
- package/dist/dinov2/service.js.map +1 -1
- package/dist/dinov2/worker-thread.js +72 -9
- package/dist/dinov2/worker-thread.js.map +1 -1
- package/dist/embeddings/service.d.ts.map +1 -1
- package/dist/embeddings/service.js +13 -1
- package/dist/embeddings/service.js.map +1 -1
- package/dist/embeddings/worker-thread.d.ts.map +1 -1
- package/dist/embeddings/worker-thread.js +8 -83
- package/dist/embeddings/worker-thread.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/onnx-availability.d.ts +29 -0
- package/dist/onnx-availability.d.ts.map +1 -0
- package/dist/onnx-availability.js +69 -0
- package/dist/onnx-availability.js.map +1 -0
- package/dist/onnx-provider-detect.d.ts +47 -0
- package/dist/onnx-provider-detect.d.ts.map +1 -0
- package/dist/onnx-provider-detect.js +111 -0
- package/dist/onnx-provider-detect.js.map +1 -0
- package/package.json +5 -3
- package/src/config/worker-resource-limits.ts +176 -0
- package/src/dinov2/service.ts +88 -10
- package/src/dinov2/worker-thread.ts +85 -10
- package/src/embeddings/service.ts +13 -1
- package/src/embeddings/worker-thread.ts +13 -102
- package/src/index.ts +15 -0
- package/src/onnx-availability.ts +78 -0
- package/src/onnx-provider-detect.ts +134 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ML Worker Thread Resource Limits (PR7e-β1)
|
|
3
|
+
*
|
|
4
|
+
* ONNX Runtime が CPU fallback (onnxruntime-node) に切り替わったとき、
|
|
5
|
+
* `execArgv: []` を指定した Worker Thread は親プロセスの
|
|
6
|
+
* `--max-old-space-size` を継承しないため、デフォルトでは V8 old space
|
|
7
|
+
* が 4GB 未満の既定値に制限されてしまう。その結果、e5-base / DINOv2 の
|
|
8
|
+
* CPU 推論で OOM クラッシュが発生し、Queue-based Backfill が永久に
|
|
9
|
+
* `in_progress` のまま滞留する。
|
|
10
|
+
*
|
|
11
|
+
* When ONNX Runtime falls back to CPU (`onnxruntime-node`), a Worker Thread
|
|
12
|
+
* spawned with `execArgv: []` does NOT inherit the parent's
|
|
13
|
+
* `--max-old-space-size` flag, so V8 old-space defaults to less than 4GB.
|
|
14
|
+
* This causes OOM crashes during e5-base / DINOv2 CPU inference and leaves
|
|
15
|
+
* Queue-based Backfill jobs stuck `in_progress` indefinitely.
|
|
16
|
+
*
|
|
17
|
+
* Fix: explicitly pass `resourceLimits` to `new Worker(...)` so that the
|
|
18
|
+
* worker gets an explicit old-space / young-space / code-range ceiling.
|
|
19
|
+
*
|
|
20
|
+
* 参照 / References:
|
|
21
|
+
* - ADR-0012 §3 BLOCKER 4
|
|
22
|
+
* - Node.js docs: https://nodejs.org/api/worker_threads.html#new-workerfilename-options
|
|
23
|
+
*
|
|
24
|
+
* @module config/worker-resource-limits
|
|
25
|
+
*/
|
|
26
|
+
import { z } from "zod";
|
|
27
|
+
/**
|
|
28
|
+
* ML Worker resource-limits Zod schema
|
|
29
|
+
*/
|
|
30
|
+
export declare const MLWorkerResourceLimitsSchema: z.ZodObject<{
|
|
31
|
+
/**
|
|
32
|
+
* Worker Thread の V8 old-space 上限(MB)
|
|
33
|
+
* V8 old-space ceiling (MB) for the Worker Thread
|
|
34
|
+
*/
|
|
35
|
+
maxOldGenerationSizeMb: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
/**
|
|
37
|
+
* Worker Thread の V8 young-space 上限(MB)
|
|
38
|
+
* V8 young-space ceiling (MB) for the Worker Thread
|
|
39
|
+
*/
|
|
40
|
+
maxYoungGenerationSizeMb: z.ZodDefault<z.ZodNumber>;
|
|
41
|
+
/**
|
|
42
|
+
* Worker Thread の code-range 上限(MB)
|
|
43
|
+
* Code-range ceiling (MB) for the Worker Thread
|
|
44
|
+
*/
|
|
45
|
+
codeRangeSizeMb: z.ZodDefault<z.ZodNumber>;
|
|
46
|
+
}, "strip", z.ZodTypeAny, {
|
|
47
|
+
maxOldGenerationSizeMb: number;
|
|
48
|
+
maxYoungGenerationSizeMb: number;
|
|
49
|
+
codeRangeSizeMb: number;
|
|
50
|
+
}, {
|
|
51
|
+
maxOldGenerationSizeMb?: number | undefined;
|
|
52
|
+
maxYoungGenerationSizeMb?: number | undefined;
|
|
53
|
+
codeRangeSizeMb?: number | undefined;
|
|
54
|
+
}>;
|
|
55
|
+
export type MLWorkerResourceLimits = z.infer<typeof MLWorkerResourceLimitsSchema>;
|
|
56
|
+
/**
|
|
57
|
+
* 環境変数から ML Worker Thread の resource-limits をロードする。
|
|
58
|
+
* Load ML Worker Thread resource-limits from environment variables.
|
|
59
|
+
*
|
|
60
|
+
* 環境変数 / Environment variables:
|
|
61
|
+
* - `ML_WORKER_MAX_OLD_SPACE_MB`: V8 old-space ceiling (MB, integer, 512..8192)
|
|
62
|
+
*
|
|
63
|
+
* 不正値(NaN / Infinity / 負値 / 範囲外)は warn してデフォルトにフォールバック。
|
|
64
|
+
* Invalid values (NaN / Infinity / negative / out of range) warn and fall back
|
|
65
|
+
* to defaults.
|
|
66
|
+
*
|
|
67
|
+
* 副作用 / Side effects:
|
|
68
|
+
* - なし (純粋関数) / None (pure function)
|
|
69
|
+
* - 呼び出し側でログ出力すること / Caller is responsible for logging
|
|
70
|
+
*/
|
|
71
|
+
export declare function loadMLWorkerResourceLimits(): MLWorkerResourceLimits;
|
|
72
|
+
/**
|
|
73
|
+
* 新しい Worker Thread を作成する際に渡す resourceLimits オプションを返す。
|
|
74
|
+
* Returns the `resourceLimits` option object to pass to `new Worker(...)`.
|
|
75
|
+
*
|
|
76
|
+
* 使用例 / Usage:
|
|
77
|
+
* ```ts
|
|
78
|
+
* import { getMLWorkerThreadOptions } from "@reftrixmcp/ml/config/worker-resource-limits";
|
|
79
|
+
* new Worker(scriptPath, { execArgv: [], ...getMLWorkerThreadOptions() });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function getMLWorkerThreadOptions(): {
|
|
83
|
+
resourceLimits: {
|
|
84
|
+
maxOldGenerationSizeMb: number;
|
|
85
|
+
maxYoungGenerationSizeMb: number;
|
|
86
|
+
codeRangeSizeMb: number;
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=worker-resource-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-resource-limits.d.ts","sourceRoot":"","sources":["../../src/config/worker-resource-limits.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6CxB;;GAEG;AACH,eAAO,MAAM,4BAA4B;IACvC;;;OAGG;;IAOH;;;OAGG;;IAEH;;;OAGG;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,CA+BnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,IAAI;IAC1C,cAAc,EAAE;QACd,sBAAsB,EAAE,MAAM,CAAC;QAC/B,wBAAwB,EAAE,MAAM,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CASA"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2025-2026 Reftrix Contributors
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* ML Worker Thread Resource Limits (PR7e-β1)
|
|
5
|
+
*
|
|
6
|
+
* ONNX Runtime が CPU fallback (onnxruntime-node) に切り替わったとき、
|
|
7
|
+
* `execArgv: []` を指定した Worker Thread は親プロセスの
|
|
8
|
+
* `--max-old-space-size` を継承しないため、デフォルトでは V8 old space
|
|
9
|
+
* が 4GB 未満の既定値に制限されてしまう。その結果、e5-base / DINOv2 の
|
|
10
|
+
* CPU 推論で OOM クラッシュが発生し、Queue-based Backfill が永久に
|
|
11
|
+
* `in_progress` のまま滞留する。
|
|
12
|
+
*
|
|
13
|
+
* When ONNX Runtime falls back to CPU (`onnxruntime-node`), a Worker Thread
|
|
14
|
+
* spawned with `execArgv: []` does NOT inherit the parent's
|
|
15
|
+
* `--max-old-space-size` flag, so V8 old-space defaults to less than 4GB.
|
|
16
|
+
* This causes OOM crashes during e5-base / DINOv2 CPU inference and leaves
|
|
17
|
+
* Queue-based Backfill jobs stuck `in_progress` indefinitely.
|
|
18
|
+
*
|
|
19
|
+
* Fix: explicitly pass `resourceLimits` to `new Worker(...)` so that the
|
|
20
|
+
* worker gets an explicit old-space / young-space / code-range ceiling.
|
|
21
|
+
*
|
|
22
|
+
* 参照 / References:
|
|
23
|
+
* - ADR-0012 §3 BLOCKER 4
|
|
24
|
+
* - Node.js docs: https://nodejs.org/api/worker_threads.html#new-workerfilename-options
|
|
25
|
+
*
|
|
26
|
+
* @module config/worker-resource-limits
|
|
27
|
+
*/
|
|
28
|
+
import { z } from "zod";
|
|
29
|
+
/**
|
|
30
|
+
* Default old-space ceiling (MB) for ML Worker Threads.
|
|
31
|
+
*
|
|
32
|
+
* 4096 MB は e5-base (~500MB arena) + DINOv2 (~800MB arena) + transformers.js
|
|
33
|
+
* pipeline overhead を同時に CPU でロードしても OOM にならない実測値。
|
|
34
|
+
* さらに β1 では Phase 5 親プロセス RSS 上限を 4096 MB に段階緩和するため、
|
|
35
|
+
* Worker old-space をそれと同水準に揃えることで、親プロセスと子 Worker の
|
|
36
|
+
* メモリ上限を対称化する。
|
|
37
|
+
*
|
|
38
|
+
* 4096 MB is empirically the minimum old-space ceiling that keeps e5-base
|
|
39
|
+
* (~500MB arena) + DINOv2 (~800MB arena) + transformers.js pipeline overhead
|
|
40
|
+
* from OOMing on CPU. β1 also raises the Phase 5 parent-process RSS ceiling
|
|
41
|
+
* to 4096 MB, so aligning the Worker old-space with the parent RSS keeps
|
|
42
|
+
* parent/child memory ceilings symmetric.
|
|
43
|
+
*/
|
|
44
|
+
const DEFAULT_ML_WORKER_MAX_OLD_SPACE_MB = 4096;
|
|
45
|
+
/**
|
|
46
|
+
* Fixed secondary limits.
|
|
47
|
+
*
|
|
48
|
+
* young-space=512MB and code-range=256MB are Node.js defaults scaled for
|
|
49
|
+
* ONNX Runtime's large tensor allocations; exposing them as env vars would
|
|
50
|
+
* create too many configuration surfaces.
|
|
51
|
+
*/
|
|
52
|
+
const ML_WORKER_MAX_YOUNG_GENERATION_MB = 512;
|
|
53
|
+
const ML_WORKER_CODE_RANGE_MB = 256;
|
|
54
|
+
/**
|
|
55
|
+
* 許容レンジ
|
|
56
|
+
* - 下限 512 MB: e5-base の初期化 (tokenizer + model metadata) だけでも
|
|
57
|
+
* 約 300MB 必要で、ヘッドルームを確保する最小値
|
|
58
|
+
* - 上限 8192 MB: 単一 Worker Thread で 8GB を超える old-space は現実的な
|
|
59
|
+
* ユースケースが存在せず、over-provisioning 防御
|
|
60
|
+
*
|
|
61
|
+
* Allowed range:
|
|
62
|
+
* - Lower bound 512 MB: e5-base init (tokenizer + model metadata) alone needs
|
|
63
|
+
* ~300MB, so this is the minimum that preserves any headroom.
|
|
64
|
+
* - Upper bound 8192 MB: no realistic use case for > 8GB old-space in a single
|
|
65
|
+
* Worker Thread; guards against over-provisioning.
|
|
66
|
+
*/
|
|
67
|
+
const ML_WORKER_MAX_OLD_SPACE_MIN_MB = 512;
|
|
68
|
+
const ML_WORKER_MAX_OLD_SPACE_MAX_MB = 8192;
|
|
69
|
+
/**
|
|
70
|
+
* ML Worker resource-limits Zod schema
|
|
71
|
+
*/
|
|
72
|
+
export const MLWorkerResourceLimitsSchema = z.object({
|
|
73
|
+
/**
|
|
74
|
+
* Worker Thread の V8 old-space 上限(MB)
|
|
75
|
+
* V8 old-space ceiling (MB) for the Worker Thread
|
|
76
|
+
*/
|
|
77
|
+
maxOldGenerationSizeMb: z
|
|
78
|
+
.number()
|
|
79
|
+
.int()
|
|
80
|
+
.min(ML_WORKER_MAX_OLD_SPACE_MIN_MB)
|
|
81
|
+
.max(ML_WORKER_MAX_OLD_SPACE_MAX_MB)
|
|
82
|
+
.default(DEFAULT_ML_WORKER_MAX_OLD_SPACE_MB),
|
|
83
|
+
/**
|
|
84
|
+
* Worker Thread の V8 young-space 上限(MB)
|
|
85
|
+
* V8 young-space ceiling (MB) for the Worker Thread
|
|
86
|
+
*/
|
|
87
|
+
maxYoungGenerationSizeMb: z.number().int().positive().default(ML_WORKER_MAX_YOUNG_GENERATION_MB),
|
|
88
|
+
/**
|
|
89
|
+
* Worker Thread の code-range 上限(MB)
|
|
90
|
+
* Code-range ceiling (MB) for the Worker Thread
|
|
91
|
+
*/
|
|
92
|
+
codeRangeSizeMb: z.number().int().positive().default(ML_WORKER_CODE_RANGE_MB),
|
|
93
|
+
});
|
|
94
|
+
/**
|
|
95
|
+
* 環境変数から ML Worker Thread の resource-limits をロードする。
|
|
96
|
+
* Load ML Worker Thread resource-limits from environment variables.
|
|
97
|
+
*
|
|
98
|
+
* 環境変数 / Environment variables:
|
|
99
|
+
* - `ML_WORKER_MAX_OLD_SPACE_MB`: V8 old-space ceiling (MB, integer, 512..8192)
|
|
100
|
+
*
|
|
101
|
+
* 不正値(NaN / Infinity / 負値 / 範囲外)は warn してデフォルトにフォールバック。
|
|
102
|
+
* Invalid values (NaN / Infinity / negative / out of range) warn and fall back
|
|
103
|
+
* to defaults.
|
|
104
|
+
*
|
|
105
|
+
* 副作用 / Side effects:
|
|
106
|
+
* - なし (純粋関数) / None (pure function)
|
|
107
|
+
* - 呼び出し側でログ出力すること / Caller is responsible for logging
|
|
108
|
+
*/
|
|
109
|
+
export function loadMLWorkerResourceLimits() {
|
|
110
|
+
const raw = process.env["ML_WORKER_MAX_OLD_SPACE_MB"];
|
|
111
|
+
// 未設定 → Zod default
|
|
112
|
+
// Unset → Zod default
|
|
113
|
+
if (raw === undefined || raw === "") {
|
|
114
|
+
return MLWorkerResourceLimitsSchema.parse({});
|
|
115
|
+
}
|
|
116
|
+
const parsed = Number(raw);
|
|
117
|
+
// NaN / Infinity 早期拒絶 (Zod でも弾けるが明示的に)
|
|
118
|
+
// Reject NaN / Infinity explicitly
|
|
119
|
+
if (!Number.isFinite(parsed)) {
|
|
120
|
+
return {
|
|
121
|
+
maxOldGenerationSizeMb: DEFAULT_ML_WORKER_MAX_OLD_SPACE_MB,
|
|
122
|
+
maxYoungGenerationSizeMb: ML_WORKER_MAX_YOUNG_GENERATION_MB,
|
|
123
|
+
codeRangeSizeMb: ML_WORKER_CODE_RANGE_MB,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const result = MLWorkerResourceLimitsSchema.safeParse({ maxOldGenerationSizeMb: parsed });
|
|
127
|
+
if (!result.success) {
|
|
128
|
+
return {
|
|
129
|
+
maxOldGenerationSizeMb: DEFAULT_ML_WORKER_MAX_OLD_SPACE_MB,
|
|
130
|
+
maxYoungGenerationSizeMb: ML_WORKER_MAX_YOUNG_GENERATION_MB,
|
|
131
|
+
codeRangeSizeMb: ML_WORKER_CODE_RANGE_MB,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return result.data;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 新しい Worker Thread を作成する際に渡す resourceLimits オプションを返す。
|
|
138
|
+
* Returns the `resourceLimits` option object to pass to `new Worker(...)`.
|
|
139
|
+
*
|
|
140
|
+
* 使用例 / Usage:
|
|
141
|
+
* ```ts
|
|
142
|
+
* import { getMLWorkerThreadOptions } from "@reftrixmcp/ml/config/worker-resource-limits";
|
|
143
|
+
* new Worker(scriptPath, { execArgv: [], ...getMLWorkerThreadOptions() });
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export function getMLWorkerThreadOptions() {
|
|
147
|
+
const limits = loadMLWorkerResourceLimits();
|
|
148
|
+
return {
|
|
149
|
+
resourceLimits: {
|
|
150
|
+
maxOldGenerationSizeMb: limits.maxOldGenerationSizeMb,
|
|
151
|
+
maxYoungGenerationSizeMb: limits.maxYoungGenerationSizeMb,
|
|
152
|
+
codeRangeSizeMb: limits.codeRangeSizeMb,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=worker-resource-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-resource-limits.js","sourceRoot":"","sources":["../../src/config/worker-resource-limits.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,kCAAkC,GAAG,IAAI,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAC9C,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAC3C,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD;;;OAGG;IACH,sBAAsB,EAAE,CAAC;SACtB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,8BAA8B,CAAC;SACnC,GAAG,CAAC,8BAA8B,CAAC;SACnC,OAAO,CAAC,kCAAkC,CAAC;IAC9C;;;OAGG;IACH,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC;IAChG;;;OAGG;IACH,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC;CAC9E,CAAC,CAAC;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,0BAA0B;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAEtD,oBAAoB;IACpB,sBAAsB;IACtB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,4BAA4B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAE3B,uCAAuC;IACvC,mCAAmC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,sBAAsB,EAAE,kCAAkC;YAC1D,wBAAwB,EAAE,iCAAiC;YAC3D,eAAe,EAAE,uBAAuB;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,sBAAsB,EAAE,kCAAkC;YAC1D,wBAAwB,EAAE,iCAAiC;YAC3D,eAAe,EAAE,uBAAuB;SACzC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB;IAOtC,MAAM,MAAM,GAAG,0BAA0B,EAAE,CAAC;IAC5C,OAAO;QACL,cAAc,EAAE;YACd,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;YACrD,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;YACzD,eAAe,EAAE,MAAM,CAAC,eAAe;SACxC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/dinov2/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/dinov2/service.ts"],"names":[],"mappings":"AAiCA,uCAAuC;AACvC,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAYrC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAU;IAGjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,aAAa,CAAK;IAG1B,OAAO,CAAC,gBAAgB,CAAwB;IAEhD,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,mBAAmB;IASvC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;YACW,iBAAiB;YAkBjB,kBAAkB;IAwDhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;YAQV,mBAAmB;YA4DnB,iBAAiB;IAyF/B;;;;;;;;OAQG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB/D;;;;;;;;OAQG;IACG,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAS1E;;OAEG;YACW,iBAAiB;IAiC/B;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B;;;;;;;;;;;OAWG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ChC;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;OAEG;IACH,qBAAqB,IAAI,MAAM;CAGhC"}
|
package/dist/dinov2/service.js
CHANGED
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
import { Worker } from "node:worker_threads";
|
|
21
21
|
import { fileURLToPath } from "node:url";
|
|
22
22
|
import path from "node:path";
|
|
23
|
+
import { safeImportOnnx } from "../onnx-availability.js";
|
|
24
|
+
import { detectExecutionProvider, isLdLibraryPathSetAtOsLevel } from "../onnx-provider-detect.js";
|
|
25
|
+
import { getMLWorkerThreadOptions } from "../config/worker-resource-limits.js";
|
|
23
26
|
// =====================================================
|
|
24
27
|
// Constants
|
|
25
28
|
// =====================================================
|
|
@@ -128,7 +131,13 @@ export class DINOv2Service {
|
|
|
128
131
|
const scriptPath = resolveWorkerScriptPath();
|
|
129
132
|
// Worker threads inherit the parent's execArgv by default.
|
|
130
133
|
// Pass empty array to prevent parent flags from propagating.
|
|
131
|
-
|
|
134
|
+
//
|
|
135
|
+
// PR7e-β1: Add explicit resourceLimits to prevent OOM when ONNX
|
|
136
|
+
// falls back to CPU (onnxruntime-node). DINOv2 ViT-B/14 arena is
|
|
137
|
+
// ~800MB; without resourceLimits V8 old-space < 4GB triggers OOM
|
|
138
|
+
// during CPU inference. See ADR-0012 §3 BLOCKER 4.
|
|
139
|
+
const workerOptions = { execArgv: [], ...getMLWorkerThreadOptions() };
|
|
140
|
+
this.worker = new Worker(scriptPath, workerOptions);
|
|
132
141
|
this.worker.on("message", (response) => {
|
|
133
142
|
this.handleWorkerResponse(response);
|
|
134
143
|
});
|
|
@@ -215,17 +224,49 @@ export class DINOv2Service {
|
|
|
215
224
|
// In-process fallback (for testing / debugging)
|
|
216
225
|
// =====================================================
|
|
217
226
|
async initializeInProcess() {
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
227
|
+
const provider = detectExecutionProvider("DINOv2");
|
|
228
|
+
// Safety check: LD_LIBRARY_PATH must be set at OS level for CUDA
|
|
229
|
+
let effectiveProvider = provider;
|
|
230
|
+
if (effectiveProvider === "cuda" && !isLdLibraryPathSetAtOsLevel()) {
|
|
231
|
+
console.warn("[DINOv2] CUDA requested but LD_LIBRARY_PATH not set at OS level. " + "Falling back to CPU.");
|
|
232
|
+
effectiveProvider = "cpu";
|
|
233
|
+
}
|
|
234
|
+
const sessionOptions = effectiveProvider === "cuda"
|
|
235
|
+
? {
|
|
236
|
+
executionProviders: ["CUDAExecutionProvider", "CPUExecutionProvider"],
|
|
237
|
+
enableMemPattern: false,
|
|
238
|
+
}
|
|
239
|
+
: {
|
|
240
|
+
executionProviders: ["cpu"],
|
|
241
|
+
enableCpuMemArena: false,
|
|
242
|
+
enableMemPattern: false,
|
|
243
|
+
};
|
|
244
|
+
const ortModule = await safeImportOnnx();
|
|
245
|
+
// Attempt session creation with resolved provider.
|
|
246
|
+
// If CUDA init fails, catch and retry with CPU.
|
|
247
|
+
try {
|
|
248
|
+
this.inProcessSession = await ortModule.InferenceSession.create(this.modelPath, sessionOptions);
|
|
249
|
+
}
|
|
250
|
+
catch (providerError) {
|
|
251
|
+
if (effectiveProvider !== "cpu") {
|
|
252
|
+
const errorMsg = providerError instanceof Error ? providerError.message : String(providerError);
|
|
253
|
+
console.warn("[DINOv2] CUDA in-process session creation failed, falling back to CPU: %s", errorMsg);
|
|
254
|
+
this.inProcessSession = await ortModule.InferenceSession.create(this.modelPath, {
|
|
255
|
+
executionProviders: ["cpu"],
|
|
256
|
+
enableCpuMemArena: false,
|
|
257
|
+
enableMemPattern: false,
|
|
258
|
+
});
|
|
259
|
+
effectiveProvider = "cpu";
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
throw providerError;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
224
265
|
// eslint-disable-next-line no-console
|
|
225
|
-
console.log("[DINOv2] Session initialized in-process:", this.modelPath);
|
|
266
|
+
console.log("[DINOv2] Session initialized in-process (provider: %s):", effectiveProvider, this.modelPath);
|
|
226
267
|
}
|
|
227
268
|
async generateInProcess(imageBuffer) {
|
|
228
|
-
const ortModule = await
|
|
269
|
+
const ortModule = await safeImportOnnx();
|
|
229
270
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
230
271
|
const sess = this.inProcessSession;
|
|
231
272
|
if (!sess)
|
|
@@ -250,7 +291,18 @@ export class DINOv2Service {
|
|
|
250
291
|
}
|
|
251
292
|
}
|
|
252
293
|
const inputTensor = new ortModule.Tensor("float32", float32, [1, 3, height, width]);
|
|
253
|
-
|
|
294
|
+
// OOM-FIX-1: Use try/finally to ensure ONNX tensor disposal.
|
|
295
|
+
// ONNX Tensor holds native C++ memory that V8 GC cannot reclaim.
|
|
296
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
297
|
+
let output;
|
|
298
|
+
try {
|
|
299
|
+
output = await sess.run({ pixel_values: inputTensor });
|
|
300
|
+
}
|
|
301
|
+
finally {
|
|
302
|
+
if (typeof inputTensor.dispose === "function") {
|
|
303
|
+
inputTensor.dispose();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
254
306
|
const lastHiddenState = output.last_hidden_state;
|
|
255
307
|
if (!lastHiddenState) {
|
|
256
308
|
throw new Error("Model output missing last_hidden_state");
|
|
@@ -261,6 +313,14 @@ export class DINOv2Service {
|
|
|
261
313
|
for (let i = 0; i < DINOV2_EMBEDDING_DIMENSION; i++) {
|
|
262
314
|
clsToken[i] = data[i];
|
|
263
315
|
}
|
|
316
|
+
// OOM-FIX-1: Dispose output tensors after data extraction
|
|
317
|
+
for (const key of Object.keys(output)) {
|
|
318
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
319
|
+
const tensor = output[key];
|
|
320
|
+
if (typeof tensor?.dispose === "function") {
|
|
321
|
+
tensor.dispose();
|
|
322
|
+
}
|
|
323
|
+
}
|
|
264
324
|
// L2 normalize
|
|
265
325
|
let norm = 0;
|
|
266
326
|
for (let i = 0; i < clsToken.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dinov2/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dinov2/service.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,yCAAyC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,wDAAwD;AACxD,YAAY;AACZ,wDAAwD;AAExD,uCAAuC;AACvC,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,mDAAmD;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,sEAAsE;AACtE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,kFAAkF;AAClF,MAAM,0BAA0B,GAAG,MAAM,CAAC;AA2B1C,wDAAwD;AACxD,gCAAgC;AAChC,wDAAwD;AAExD,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,SAAS,iBAAiB;IACxB,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAChD,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACvD,yEAAyE;IACzE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,gBAAgB;AAChB,wDAAwD;AAExD;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAChB,SAAS,CAAS;IAClB,eAAe,CAAU;IAEjC,8BAA8B;IACtB,MAAM,GAAkB,IAAI,CAAC;IAC7B,iBAAiB,GAAyB,IAAI,CAAC;IAC/C,WAAW,GAAG,KAAK,CAAC;IACpB,kBAAkB,GAAG,CAAC,CAAC;IACvB,eAAe,GAAgC,IAAI,GAAG,EAAE,CAAC;IACzD,aAAa,GAAG,CAAC,CAAC;IAE1B,oCAAoC;IAC5B,gBAAgB,GAAmB,IAAI,CAAC;IAExC,cAAc,GAAG,KAAK,CAAC;IAE/B,YAAY,MAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,qBAAqB,EAAE,CAAC;IACjD,CAAC;IAED,wDAAwD;IACxD,2BAA2B;IAC3B,wDAAwD;IAExD;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAEhC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC7B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAC5C,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAE1D,6DAA6D;QAC7D,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,iBAAiB,GAAG,KAAK,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YAChD,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,iBAAiB,GAAG,OAAO,CAAC;gBAC3C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;YAE7C,2DAA2D;YAC3D,6DAA6D;YAC7D,EAAE;YACF,gEAAgE;YAChE,iEAAiE;YACjE,iEAAiE;YACjE,mDAAmD;YACnD,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,wBAAwB,EAAE,EAAE,CAAC;YACtE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAEpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAA8B,EAAE,EAAE;gBAC3D,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7D,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACtC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;oBAC/D,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;gBAC5C,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,iBAAiB,EAAE;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAExB,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC7B,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAA4B;QACpD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,0BAA0B,WAAW,OAAO,CAAC,IAAI,EAAE,CACvF,CACF,CAAC;YACJ,CAAC,EAAE,0BAA0B,CAAC,CAAC;YAE/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,MAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,QAA8B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,KAAY;QACpC,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC;IACvD,CAAC;IAED,wDAAwD;IACxD,gDAAgD;IAChD,wDAAwD;IAEhD,KAAK,CAAC,mBAAmB;QAC/B,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEnD,iEAAiE;QACjE,IAAI,iBAAiB,GAAG,QAAQ,CAAC;QACjC,IAAI,iBAAiB,KAAK,MAAM,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;YACnE,OAAO,CAAC,IAAI,CACV,mEAAmE,GAAG,sBAAsB,CAC7F,CAAC;YACF,iBAAiB,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,MAAM,cAAc,GAClB,iBAAiB,KAAK,MAAM;YAC1B,CAAC,CAAC;gBACE,kBAAkB,EAAE,CAAC,uBAAuB,EAAE,sBAAsB,CAAC;gBACrE,gBAAgB,EAAE,KAAK;aACxB;YACH,CAAC,CAAC;gBACE,kBAAkB,EAAE,CAAC,KAAK,CAAC;gBAC3B,iBAAiB,EAAE,KAAK;gBACxB,gBAAgB,EAAE,KAAK;aACxB,CAAC;QAER,MAAM,SAAS,GAAG,MAAM,cAAc,EAAE,CAAC;QAEzC,mDAAmD;QACnD,gDAAgD;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAC7D,IAAI,CAAC,SAAS,EACd,cAAc,CACf,CAAC;QACJ,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,IAAI,iBAAiB,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,QAAQ,GACZ,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACjF,OAAO,CAAC,IAAI,CACV,2EAA2E,EAC3E,QAAQ,CACT,CAAC;gBACF,IAAI,CAAC,gBAAgB,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC9E,kBAAkB,EAAE,CAAC,KAAK,CAAC;oBAC3B,iBAAiB,EAAE,KAAK;oBACxB,gBAAgB,EAAE,KAAK;iBACxB,CAAC,CAAC;gBACH,iBAAiB,GAAG,KAAK,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,CAAC;YACtB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,GAAG,CACT,yDAAyD,EACzD,iBAAiB,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACjD,MAAM,SAAS,GAAG,MAAM,cAAc,EAAE,CAAC;QAEzC,8DAA8D;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAuB,CAAC;QAC1C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,iBAAiB,CAAC;QAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC;QACjC,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,SAAS,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,mEAAmE;QACnE,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;oBAClD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpF,6DAA6D;QAC7D,iEAAiE;QACjE,8DAA8D;QAC9D,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC9C,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,IAAoB,CAAC;QAElD,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,0BAA0B,CAAC,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACzB,CAAC;QAED,0DAA0D;QAC1D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,8DAA8D;YAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAQ,CAAC;YAClC,IAAI,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC1C,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,eAAe;QACf,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,0BAA0B,CAAC,CAAC;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,0BAA0B,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,wDAAwD;IACxD,aAAa;IACb,wDAAwD;IAExD;;;;;;;;OAQG;IACH,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,YAAY,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,CAAC,CAAC;QAC/D,IAAI,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,yBAAyB,WAAW,CAAC,MAAM,EAAE,CACjG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uBAAuB,CAAC,YAAsB;QAClD,MAAM,OAAO,GAAe,EAAE,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,wCAAwC,mBAAmB,GAAG,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;QAED,4DAA4D;QAC5D,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAC7B,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC,CACnF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,iBAAiB,EAAE;YAC9B,WAAW,EAAE,WAAW;YACxB,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,QAAQ,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC;wBAC3B,IAAI,EAAE,SAAS;wBACf,SAAS,EAAE,iBAAiB,EAAE;qBAC/B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,iDAAiD;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,8DAA8D;oBAC9D,MAAO,IAAI,CAAC,gBAAwB,CAAC,OAAO,EAAE,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,iDAAiD;gBACnD,CAAC;gBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,iBAAiB,CAAC;oBAC3B,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,iBAAiB,EAAE;iBAC/B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,8DAA8D;gBAC9D,MAAO,IAAI,CAAC,gBAAwB,CAAC,OAAO,EAAE,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,iDAAiD;YACnD,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAE5B,wCAAwC;QACxC,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -19,10 +19,15 @@
|
|
|
19
19
|
* @module dinov2/worker-thread
|
|
20
20
|
*/
|
|
21
21
|
import { parentPort } from "node:worker_threads";
|
|
22
|
+
// =====================================================
|
|
23
|
+
// Dynamic import of onnxruntime-node (optional dependency)
|
|
24
|
+
// =====================================================
|
|
25
|
+
import { safeImportOnnx } from "../onnx-availability.js";
|
|
26
|
+
import { detectExecutionProvider, isLdLibraryPathSetAtOsLevel } from "../onnx-provider-detect.js";
|
|
22
27
|
let ort = null;
|
|
23
28
|
async function getOrt() {
|
|
24
29
|
if (!ort) {
|
|
25
|
-
ort = await
|
|
30
|
+
ort = await safeImportOnnx();
|
|
26
31
|
}
|
|
27
32
|
return ort;
|
|
28
33
|
}
|
|
@@ -97,17 +102,57 @@ function l2Normalize(vec) {
|
|
|
97
102
|
// =====================================================
|
|
98
103
|
// Session management
|
|
99
104
|
// =====================================================
|
|
105
|
+
/** Resolved execution provider for the current session. */
|
|
106
|
+
let resolvedProvider = "cpu";
|
|
100
107
|
async function initializeSession(modelPath) {
|
|
101
108
|
if (session)
|
|
102
109
|
return;
|
|
110
|
+
const provider = detectExecutionProvider("DINOv2Worker");
|
|
111
|
+
// Safety check: if CUDA is requested but LD_LIBRARY_PATH was not set at
|
|
112
|
+
// the OS level (only set via loadEnvLocal at runtime), CUDA init will crash
|
|
113
|
+
// because dlopen() can't find CUDA shared libraries. Fall back to CPU.
|
|
114
|
+
let effectiveProvider = provider;
|
|
115
|
+
if (effectiveProvider === "cuda" && !isLdLibraryPathSetAtOsLevel()) {
|
|
116
|
+
console.warn("[DINOv2Worker] CUDA requested but LD_LIBRARY_PATH not set at OS level. " +
|
|
117
|
+
"dlopen() cannot find CUDA libraries. Falling back to CPU. " +
|
|
118
|
+
"To use CUDA, set LD_LIBRARY_PATH before starting the Node.js process.");
|
|
119
|
+
effectiveProvider = "cpu";
|
|
120
|
+
}
|
|
121
|
+
const sessionOptions = effectiveProvider === "cuda"
|
|
122
|
+
? {
|
|
123
|
+
executionProviders: ["CUDAExecutionProvider", "CPUExecutionProvider"],
|
|
124
|
+
enableMemPattern: false,
|
|
125
|
+
}
|
|
126
|
+
: {
|
|
127
|
+
executionProviders: ["cpu"],
|
|
128
|
+
enableCpuMemArena: false,
|
|
129
|
+
enableMemPattern: false,
|
|
130
|
+
};
|
|
103
131
|
const ortModule = await getOrt();
|
|
104
|
-
session
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
132
|
+
// Attempt to create session with the resolved provider.
|
|
133
|
+
// If CUDA init fails (e.g. library not found), catch and retry with CPU.
|
|
134
|
+
try {
|
|
135
|
+
session = (await ortModule.InferenceSession.create(modelPath, sessionOptions));
|
|
136
|
+
resolvedProvider = effectiveProvider;
|
|
137
|
+
}
|
|
138
|
+
catch (providerError) {
|
|
139
|
+
if (effectiveProvider !== "cpu") {
|
|
140
|
+
// CUDA init failed — fallback to CPU
|
|
141
|
+
const errorMsg = providerError instanceof Error ? providerError.message : String(providerError);
|
|
142
|
+
console.warn("[DINOv2Worker] CUDA session creation failed, falling back to CPU: %s", errorMsg);
|
|
143
|
+
session = (await ortModule.InferenceSession.create(modelPath, {
|
|
144
|
+
executionProviders: ["cpu"],
|
|
145
|
+
enableCpuMemArena: false,
|
|
146
|
+
enableMemPattern: false,
|
|
147
|
+
}));
|
|
148
|
+
resolvedProvider = "cpu";
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
throw providerError;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
109
154
|
// eslint-disable-next-line no-console
|
|
110
|
-
console.log("[DINOv2Worker] Session initialized:", modelPath);
|
|
155
|
+
console.log("[DINOv2Worker] Session initialized (provider: %s):", resolvedProvider, modelPath);
|
|
111
156
|
}
|
|
112
157
|
async function disposeSession() {
|
|
113
158
|
if (session) {
|
|
@@ -137,8 +182,19 @@ async function runInference(rawPixels, width, height) {
|
|
|
137
182
|
const inputData = preprocessImage(rawPixels, width, height);
|
|
138
183
|
// Create input tensor [1, 3, height, width]
|
|
139
184
|
const inputTensor = new ortModule.Tensor("float32", inputData, [1, 3, height, width]);
|
|
140
|
-
// Run inference
|
|
141
|
-
|
|
185
|
+
// Run inference — use try/finally to ensure tensor disposal (OOM-FIX-1)
|
|
186
|
+
// ONNX Tensor holds native C++ memory that V8 GC cannot reclaim.
|
|
187
|
+
// Without explicit dispose(), ~1.4MB/inference leaks as native memory.
|
|
188
|
+
let output;
|
|
189
|
+
try {
|
|
190
|
+
output = await session.run({ pixel_values: inputTensor });
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
// Dispose input tensor immediately after inference completes
|
|
194
|
+
if (typeof inputTensor.dispose === "function") {
|
|
195
|
+
inputTensor.dispose();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
142
198
|
// Extract CLS token from last_hidden_state [1, 257, 768]
|
|
143
199
|
const lastHiddenState = output.last_hidden_state;
|
|
144
200
|
if (!lastHiddenState) {
|
|
@@ -155,6 +211,13 @@ async function runInference(rawPixels, width, height) {
|
|
|
155
211
|
for (let i = 0; i < DINOV2_EMBEDDING_DIMENSION; i++) {
|
|
156
212
|
clsToken[i] = data[i];
|
|
157
213
|
}
|
|
214
|
+
// Dispose output tensors after data extraction (OOM-FIX-1)
|
|
215
|
+
for (const key of Object.keys(output)) {
|
|
216
|
+
const tensor = output[key];
|
|
217
|
+
if (typeof tensor?.dispose === "function") {
|
|
218
|
+
tensor.dispose();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
158
221
|
// L2 normalize with NaN/Infinity defense
|
|
159
222
|
const normalized = l2Normalize(clsToken);
|
|
160
223
|
// Convert to plain number[] for structured clone
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-thread.js","sourceRoot":"","sources":["../../src/dinov2/worker-thread.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-thread.js","sourceRoot":"","sources":["../../src/dinov2/worker-thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/embeddings/service.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/embeddings/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
import { Worker } from "node:worker_threads";
|
|
18
18
|
import { fileURLToPath } from "node:url";
|
|
19
19
|
import path from "node:path";
|
|
20
|
+
import { OnnxRuntimeUnavailableError } from "../onnx-availability.js";
|
|
21
|
+
import { getMLWorkerThreadOptions } from "../config/worker-resource-limits.js";
|
|
20
22
|
/**
|
|
21
23
|
* Default maximum cache size for LRU cache
|
|
22
24
|
* Prevents unbounded memory growth
|
|
@@ -245,7 +247,13 @@ export class EmbeddingService {
|
|
|
245
247
|
// worker_threads Workers, so we must explicitly pass an empty array
|
|
246
248
|
// to prevent the parent's flags (set by WorkerSupervisor fork())
|
|
247
249
|
// from propagating.
|
|
248
|
-
|
|
250
|
+
//
|
|
251
|
+
// PR7e-β1: Add explicit resourceLimits to prevent OOM when ONNX
|
|
252
|
+
// falls back to CPU (onnxruntime-node). Without resourceLimits,
|
|
253
|
+
// V8 old-space defaults to < 4GB and e5-base CPU inference OOMs.
|
|
254
|
+
// See ADR-0012 §3 BLOCKER 4 and config/worker-resource-limits.ts.
|
|
255
|
+
const workerOptions = { execArgv: [], ...getMLWorkerThreadOptions() };
|
|
256
|
+
this.worker = new Worker(scriptPath, workerOptions);
|
|
249
257
|
// Handle worker messages
|
|
250
258
|
this.worker.on("message", (response) => {
|
|
251
259
|
this.handleWorkerResponse(response);
|
|
@@ -402,6 +410,10 @@ export class EmbeddingService {
|
|
|
402
410
|
}
|
|
403
411
|
catch (error) {
|
|
404
412
|
this.initPromise = null;
|
|
413
|
+
const code = error.code;
|
|
414
|
+
if (code === "MODULE_NOT_FOUND" || code === "ERR_MODULE_NOT_FOUND") {
|
|
415
|
+
throw new OnnxRuntimeUnavailableError("text embedding");
|
|
416
|
+
}
|
|
405
417
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
406
418
|
throw new Error(`Failed to load embedding model: ${message}`);
|
|
407
419
|
}
|