@reftrixmcp/ml 0.3.0 → 0.6.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.
Files changed (42) hide show
  1. package/dist/config/worker-resource-limits.d.ts +89 -0
  2. package/dist/config/worker-resource-limits.d.ts.map +1 -0
  3. package/dist/config/worker-resource-limits.js +156 -0
  4. package/dist/config/worker-resource-limits.js.map +1 -0
  5. package/dist/dinov2/service.d.ts.map +1 -1
  6. package/dist/dinov2/service.js +70 -10
  7. package/dist/dinov2/service.js.map +1 -1
  8. package/dist/dinov2/worker-thread.js +72 -9
  9. package/dist/dinov2/worker-thread.js.map +1 -1
  10. package/dist/embeddings/service.d.ts +19 -0
  11. package/dist/embeddings/service.d.ts.map +1 -1
  12. package/dist/embeddings/service.js +56 -1
  13. package/dist/embeddings/service.js.map +1 -1
  14. package/dist/embeddings/worker-thread-device.d.ts +59 -0
  15. package/dist/embeddings/worker-thread-device.d.ts.map +1 -0
  16. package/dist/embeddings/worker-thread-device.js +63 -0
  17. package/dist/embeddings/worker-thread-device.js.map +1 -0
  18. package/dist/embeddings/worker-thread.d.ts.map +1 -1
  19. package/dist/embeddings/worker-thread.js +22 -85
  20. package/dist/embeddings/worker-thread.js.map +1 -1
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +10 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/onnx-availability.d.ts +29 -0
  26. package/dist/onnx-availability.d.ts.map +1 -0
  27. package/dist/onnx-availability.js +69 -0
  28. package/dist/onnx-availability.js.map +1 -0
  29. package/dist/onnx-provider-detect.d.ts +47 -0
  30. package/dist/onnx-provider-detect.d.ts.map +1 -0
  31. package/dist/onnx-provider-detect.js +111 -0
  32. package/dist/onnx-provider-detect.js.map +1 -0
  33. package/package.json +8 -5
  34. package/src/config/worker-resource-limits.ts +176 -0
  35. package/src/dinov2/service.ts +88 -10
  36. package/src/dinov2/worker-thread.ts +85 -10
  37. package/src/embeddings/service.ts +63 -1
  38. package/src/embeddings/worker-thread-device.ts +68 -0
  39. package/src/embeddings/worker-thread.ts +30 -104
  40. package/src/index.ts +27 -0
  41. package/src/onnx-availability.ts +78 -0
  42. 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":"AA8BA,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;IAkDhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;YAQV,mBAAmB;YAWnB,iBAAiB;IAqE/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"}
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"}
@@ -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
- this.worker = new Worker(scriptPath, { execArgv: [] });
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 ortModule = await import("onnxruntime-node");
219
- this.inProcessSession = await ortModule.InferenceSession.create(this.modelPath, {
220
- executionProviders: ["cpu"],
221
- enableCpuMemArena: false,
222
- enableMemPattern: false,
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 import("onnxruntime-node");
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
- const output = await sess.run({ pixel_values: inputTensor });
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":"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"}
@@ -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 import("onnxruntime-node");
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 = (await ortModule.InferenceSession.create(modelPath, {
105
- executionProviders: ["cpu"],
106
- enableCpuMemArena: false,
107
- enableMemPattern: false,
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
- const output = await session.run({ pixel_values: inputTensor });
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":"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"}
1
+ {"version":3,"file":"worker-thread.js","sourceRoot":"","sources":["../../src/dinov2/worker-thread.ts"],"names":[],"mappings":"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"}
@@ -99,6 +99,25 @@ export declare class EmbeddingService {
99
99
  * If the configured device is 'cuda' but initialization fails (e.g. because
100
100
  * LD_LIBRARY_PATH was not set at the OS level), automatically falls back to CPU.
101
101
  */
102
+ /**
103
+ * Resolve the safe execution device for the in-process pipeline.
104
+ *
105
+ * PR-1 GPU-COORD H regression fix (FIND-IMPL-PR1-H-NEW-01): the Phase 5 fork
106
+ * child's VRAM probe wires `ONNX_EXECUTION_PROVIDER=cuda` when free VRAM is
107
+ * available, but that does NOT guarantee the CUDA EP shared library
108
+ * (`libonnxruntime_providers_cuda.so`) is installed on the host. Previously
109
+ * the in-process path trusted `this.config.device` (set straight from the env
110
+ * var in the constructor) and passed `device:"cuda"` to transformers, which
111
+ * raw-throws on the native dlopen failure when the EP `.so` is absent.
112
+ *
113
+ * This gate mirrors the DINOv2 in-process path (`dinov2/worker-thread.ts`
114
+ * `initializeSession`): it resolves via `detectExecutionProvider` (which calls
115
+ * `verifyCudaAvailability` for an EP `.so` filesystem check) and also requires
116
+ * `LD_LIBRARY_PATH` at the OS level. If either fails, it returns "cpu" so the
117
+ * pipeline is never asked to create a CUDA session it cannot back. When the
118
+ * configured device is not "cuda", the configured device is returned as-is.
119
+ */
120
+ private resolveInProcessDevice;
102
121
  private initializeInProcess;
103
122
  /**
104
123
  * Recycle the in-process pipeline if threshold reached.
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/embeddings/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/embeddings/service.ts"],"names":[],"mappings":"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"}