genai-electron 0.5.0 → 0.6.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/LICENSE +21 -21
- package/README.md +87 -85
- package/dist/config/defaults.d.ts +21 -17
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +23 -19
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/reasoning-models.d.ts.map +1 -1
- package/dist/config/reasoning-models.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/managers/BinaryManager.d.ts.map +1 -1
- package/dist/managers/BinaryManager.js +12 -3
- package/dist/managers/BinaryManager.js.map +1 -1
- package/dist/managers/DiffusionServerManager.d.ts +5 -0
- package/dist/managers/DiffusionServerManager.d.ts.map +1 -1
- package/dist/managers/DiffusionServerManager.js +106 -31
- package/dist/managers/DiffusionServerManager.js.map +1 -1
- package/dist/managers/GenerationRegistry.d.ts.map +1 -1
- package/dist/managers/GenerationRegistry.js +1 -1
- package/dist/managers/GenerationRegistry.js.map +1 -1
- package/dist/managers/LlamaServerManager.d.ts +17 -0
- package/dist/managers/LlamaServerManager.d.ts.map +1 -1
- package/dist/managers/LlamaServerManager.js +284 -28
- package/dist/managers/LlamaServerManager.js.map +1 -1
- package/dist/managers/ModelManager.d.ts +3 -0
- package/dist/managers/ModelManager.d.ts.map +1 -1
- package/dist/managers/ModelManager.js +206 -0
- package/dist/managers/ModelManager.js.map +1 -1
- package/dist/managers/ResourceOrchestrator.d.ts.map +1 -1
- package/dist/managers/ResourceOrchestrator.js +52 -51
- package/dist/managers/ResourceOrchestrator.js.map +1 -1
- package/dist/managers/ServerManager.d.ts +1 -1
- package/dist/managers/ServerManager.d.ts.map +1 -1
- package/dist/managers/ServerManager.js +6 -2
- package/dist/managers/ServerManager.js.map +1 -1
- package/dist/managers/StorageManager.d.ts.map +1 -1
- package/dist/managers/StorageManager.js +51 -0
- package/dist/managers/StorageManager.js.map +1 -1
- package/dist/process/health-check.d.ts +4 -3
- package/dist/process/health-check.d.ts.map +1 -1
- package/dist/process/health-check.js +12 -6
- package/dist/process/health-check.js.map +1 -1
- package/dist/process/log-manager.d.ts +11 -1
- package/dist/process/log-manager.d.ts.map +1 -1
- package/dist/process/log-manager.js +49 -2
- package/dist/process/log-manager.js.map +1 -1
- package/dist/process/port-utils.d.ts +3 -0
- package/dist/process/port-utils.d.ts.map +1 -0
- package/dist/process/port-utils.js +28 -0
- package/dist/process/port-utils.js.map +1 -0
- package/dist/types/images.d.ts +2 -2
- package/dist/types/images.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/models.d.ts +7 -0
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/servers.d.ts +20 -2
- package/dist/types/servers.d.ts.map +1 -1
- package/dist/utils/debug-log.d.ts +3 -0
- package/dist/utils/debug-log.d.ts.map +1 -0
- package/dist/utils/debug-log.js +10 -0
- package/dist/utils/debug-log.js.map +1 -0
- package/package.json +73 -73
|
@@ -68,6 +68,11 @@ export class ModelManager {
|
|
|
68
68
|
}
|
|
69
69
|
const modelId = this.generateModelId(config.name);
|
|
70
70
|
const filename = this.extractFilename(downloadURL, sourceFile);
|
|
71
|
+
const shardBasename = sourceFile ? (sourceFile.split('/').pop() ?? filename) : filename;
|
|
72
|
+
const extraShardFiles = this.resolveShardFilenames(shardBasename, config);
|
|
73
|
+
if (extraShardFiles.length > 0) {
|
|
74
|
+
return this.downloadShardedModel(config, downloadURL, sourceRepo, sourceFile, shardBasename, extraShardFiles);
|
|
75
|
+
}
|
|
71
76
|
const destinationPath = storageManager.getModelPath(config.type, filename);
|
|
72
77
|
const exists = await fileExists(destinationPath);
|
|
73
78
|
if (exists) {
|
|
@@ -322,6 +327,207 @@ export class ModelManager {
|
|
|
322
327
|
await storageManager.saveModelMetadata(modelInfo);
|
|
323
328
|
return modelInfo;
|
|
324
329
|
}
|
|
330
|
+
resolveShardFilenames(primaryFilename, config) {
|
|
331
|
+
if (config.shardFiles && config.shardFiles.length > 0) {
|
|
332
|
+
return config.shardFiles;
|
|
333
|
+
}
|
|
334
|
+
const match = /^(.*)-(\d{5})-of-(\d{5})\.gguf$/i.exec(primaryFilename);
|
|
335
|
+
if (!match) {
|
|
336
|
+
return [];
|
|
337
|
+
}
|
|
338
|
+
const shardIndex = parseInt(match[2], 10);
|
|
339
|
+
const shardTotal = parseInt(match[3], 10);
|
|
340
|
+
if (shardTotal <= 1) {
|
|
341
|
+
return [];
|
|
342
|
+
}
|
|
343
|
+
if (shardIndex !== 1) {
|
|
344
|
+
throw new DownloadError(`Multi-shard model download must point at the FIRST shard (got shard ${shardIndex} of ${shardTotal}): ${primaryFilename}`, {
|
|
345
|
+
suggestion: `Use the -00001-of-${match[3]} file; the remaining shards are downloaded automatically`,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
const MAX_SHARDS = 500;
|
|
349
|
+
if (shardTotal > MAX_SHARDS) {
|
|
350
|
+
throw new DownloadError(`Implausible shard count ${shardTotal} in filename: ${primaryFilename} (max supported: ${MAX_SHARDS})`, { suggestion: 'Check the filename, or list the shards explicitly via shardFiles' });
|
|
351
|
+
}
|
|
352
|
+
const prefix = match[1];
|
|
353
|
+
const suffix = primaryFilename.slice(prefix.length + 1 + 5);
|
|
354
|
+
const siblings = [];
|
|
355
|
+
for (let i = 2; i <= shardTotal; i++) {
|
|
356
|
+
siblings.push(`${prefix}-${String(i).padStart(5, '0')}${suffix}`);
|
|
357
|
+
}
|
|
358
|
+
return siblings;
|
|
359
|
+
}
|
|
360
|
+
resolveShardURL(shardEntry, config, primaryURL) {
|
|
361
|
+
if (/^https?:\/\//i.test(shardEntry)) {
|
|
362
|
+
return shardEntry;
|
|
363
|
+
}
|
|
364
|
+
if (config.source === 'huggingface') {
|
|
365
|
+
const hfFile = config.file.includes('/')
|
|
366
|
+
? config.file.replace(/[^/]+$/, () => shardEntry)
|
|
367
|
+
: shardEntry;
|
|
368
|
+
return getHuggingFaceURL(config.repo, hfFile);
|
|
369
|
+
}
|
|
370
|
+
try {
|
|
371
|
+
const url = new URL(primaryURL);
|
|
372
|
+
url.pathname = url.pathname.slice(0, url.pathname.lastIndexOf('/') + 1) + shardEntry;
|
|
373
|
+
return url.toString();
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return primaryURL.slice(0, primaryURL.lastIndexOf('/') + 1) + shardEntry;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
async downloadShardedModel(config, primaryURL, sourceRepo, sourceFile, primaryFilename, extraShardFiles) {
|
|
380
|
+
const modelId = this.generateModelId(config.name);
|
|
381
|
+
try {
|
|
382
|
+
await storageManager.loadModelMetadata(config.type, modelId);
|
|
383
|
+
throw new DownloadError(`Model already exists: ${modelId}`, { modelId });
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
if (error instanceof DownloadError)
|
|
387
|
+
throw error;
|
|
388
|
+
}
|
|
389
|
+
const modelDir = getModelDirectory(config.type, modelId);
|
|
390
|
+
const shardItems = [
|
|
391
|
+
{
|
|
392
|
+
url: primaryURL,
|
|
393
|
+
filename: primaryFilename,
|
|
394
|
+
destination: path.join(modelDir, sanitizeFilename(primaryFilename)),
|
|
395
|
+
},
|
|
396
|
+
];
|
|
397
|
+
for (const entry of extraShardFiles) {
|
|
398
|
+
const url = this.resolveShardURL(entry, config, primaryURL);
|
|
399
|
+
const shardFilename = this.extractFilename(url, /^https?:\/\//i.test(entry) ? undefined : entry);
|
|
400
|
+
shardItems.push({
|
|
401
|
+
url,
|
|
402
|
+
filename: shardFilename,
|
|
403
|
+
destination: path.join(modelDir, sanitizeFilename(shardFilename)),
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
for (const item of shardItems) {
|
|
407
|
+
if (await fileExists(item.destination)) {
|
|
408
|
+
throw new DownloadError(`Model file already exists: ${item.filename}`, {
|
|
409
|
+
path: item.destination,
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
let ggufMetadata;
|
|
414
|
+
try {
|
|
415
|
+
const parsedGGUF = await fetchGGUFMetadata(primaryURL);
|
|
416
|
+
ggufMetadata = this.createGGUFMetadataFromParsed(parsedGGUF);
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
420
|
+
throw new DownloadError(`Failed to fetch GGUF metadata before download: ${errorMessage}`, {
|
|
421
|
+
url: primaryURL,
|
|
422
|
+
originalError: error,
|
|
423
|
+
suggestion: 'Verify the URL points to a valid GGUF file. Check network connectivity if the error persists.',
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
const itemSizes = [];
|
|
427
|
+
await Promise.all(shardItems.map(async (item, index) => {
|
|
428
|
+
try {
|
|
429
|
+
const controller = new AbortController();
|
|
430
|
+
const timeout = setTimeout(() => controller.abort(), 10_000);
|
|
431
|
+
const response = await fetch(item.url, { method: 'HEAD', signal: controller.signal });
|
|
432
|
+
clearTimeout(timeout);
|
|
433
|
+
itemSizes[index] = parseInt(response.headers.get('content-length') || '0', 10);
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
itemSizes[index] = 0;
|
|
437
|
+
}
|
|
438
|
+
}));
|
|
439
|
+
let totalBytes = itemSizes.reduce((sum, s) => sum + s, 0);
|
|
440
|
+
await mkdir(modelDir, { recursive: true });
|
|
441
|
+
const downloadedPaths = [];
|
|
442
|
+
let completedBytes = 0;
|
|
443
|
+
try {
|
|
444
|
+
for (let i = 0; i < shardItems.length; i++) {
|
|
445
|
+
const item = shardItems[i];
|
|
446
|
+
const wrappedProgress = config.onProgress
|
|
447
|
+
? (downloaded, itemTotal) => {
|
|
448
|
+
if (itemSizes[i] === 0 && itemTotal > 0) {
|
|
449
|
+
itemSizes[i] = itemTotal;
|
|
450
|
+
totalBytes = itemSizes.reduce((sum, s) => sum + s, 0);
|
|
451
|
+
}
|
|
452
|
+
const aggregateDownloaded = completedBytes + downloaded;
|
|
453
|
+
const clampedTotal = Math.max(totalBytes, aggregateDownloaded);
|
|
454
|
+
config.onProgress(aggregateDownloaded, clampedTotal);
|
|
455
|
+
}
|
|
456
|
+
: undefined;
|
|
457
|
+
await this.downloader.download({
|
|
458
|
+
url: item.url,
|
|
459
|
+
destination: item.destination,
|
|
460
|
+
onProgress: wrappedProgress,
|
|
461
|
+
});
|
|
462
|
+
downloadedPaths.push(item.destination);
|
|
463
|
+
completedBytes += await getFileSize(item.destination);
|
|
464
|
+
}
|
|
465
|
+
if (config.checksum) {
|
|
466
|
+
const calculatedChecksum = await calculateSHA256(shardItems[0].destination);
|
|
467
|
+
const expectedChecksum = config.checksum.replace(/^sha256:/, '');
|
|
468
|
+
if (calculatedChecksum !== expectedChecksum) {
|
|
469
|
+
throw new DownloadError('Checksum verification failed', {
|
|
470
|
+
expected: expectedChecksum,
|
|
471
|
+
actual: calculatedChecksum,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
catch (error) {
|
|
477
|
+
for (const filePath of downloadedPaths) {
|
|
478
|
+
try {
|
|
479
|
+
await deleteFile(filePath);
|
|
480
|
+
}
|
|
481
|
+
catch {
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
try {
|
|
485
|
+
await rmdir(modelDir);
|
|
486
|
+
}
|
|
487
|
+
catch {
|
|
488
|
+
}
|
|
489
|
+
if (error instanceof DownloadError) {
|
|
490
|
+
throw error;
|
|
491
|
+
}
|
|
492
|
+
throw new DownloadError('Multi-shard download failed', {
|
|
493
|
+
error: error instanceof Error ? error.message : String(error),
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
const shards = [];
|
|
497
|
+
let aggregateSize = 0;
|
|
498
|
+
for (let i = 0; i < shardItems.length; i++) {
|
|
499
|
+
const item = shardItems[i];
|
|
500
|
+
const fileSize = await getFileSize(item.destination);
|
|
501
|
+
aggregateSize += fileSize;
|
|
502
|
+
const shard = { path: item.destination, size: fileSize };
|
|
503
|
+
if (i === 0 && config.checksum) {
|
|
504
|
+
shard.checksum = formatChecksum(config.checksum.replace(/^sha256:/, ''));
|
|
505
|
+
}
|
|
506
|
+
shards.push(shard);
|
|
507
|
+
}
|
|
508
|
+
const modelInfo = {
|
|
509
|
+
id: modelId,
|
|
510
|
+
name: config.name,
|
|
511
|
+
type: config.type,
|
|
512
|
+
size: aggregateSize,
|
|
513
|
+
path: shardItems[0].destination,
|
|
514
|
+
downloadedAt: new Date().toISOString(),
|
|
515
|
+
source: {
|
|
516
|
+
type: config.source,
|
|
517
|
+
url: primaryURL,
|
|
518
|
+
repo: sourceRepo,
|
|
519
|
+
file: sourceFile,
|
|
520
|
+
},
|
|
521
|
+
checksum: config.checksum
|
|
522
|
+
? formatChecksum(config.checksum.replace(/^sha256:/, ''))
|
|
523
|
+
: undefined,
|
|
524
|
+
supportsReasoning: detectReasoningSupport(primaryFilename),
|
|
525
|
+
ggufMetadata,
|
|
526
|
+
shards,
|
|
527
|
+
};
|
|
528
|
+
await storageManager.saveModelMetadata(modelInfo);
|
|
529
|
+
return modelInfo;
|
|
530
|
+
}
|
|
325
531
|
resolveComponentURL(spec) {
|
|
326
532
|
if (spec.source === 'url') {
|
|
327
533
|
if (!spec.url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../src/managers/ModelManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModelManager.js","sourceRoot":"","sources":["../../src/managers/ModelManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceOrchestrator.d.ts","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceOrchestrator.d.ts","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAOpG,MAAM,WAAW,aAAa;IAE5B,MAAM,EAAE,YAAY,CAAC;IAErB,UAAU,EAAE,OAAO,CAAC;IAEpB,OAAO,EAAE,IAAI,CAAC;CACf;AAsCD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAQ;IAErD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,aAAa,CAA8B;gBAWjD,UAAU,EAAE,UAAU,YAA2B,EACjD,WAAW,EAAE,kBAAkB,EAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,GAAE,YAAyC;IA4BnD,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YA6DjF,oBAAoB;YA8DpB,gBAAgB;YAiEhB,sBAAsB;YAuCtB,UAAU;YAwCV,SAAS;IAiDvB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,KAAK;IAcb,eAAe,IAAI,IAAI;IAoBvB,aAAa,IAAI,aAAa,GAAG,SAAS;IAqBpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAG3C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SystemInfo } from '../system/SystemInfo.js';
|
|
2
2
|
import { ModelManager } from './ModelManager.js';
|
|
3
3
|
import { ServerError } from '../errors/index.js';
|
|
4
|
+
import { debugLog } from '../utils/debug-log.js';
|
|
4
5
|
export class ResourceOrchestrator {
|
|
5
6
|
static RELOAD_RETRY_DELAY_MS = 2000;
|
|
6
7
|
systemInfo;
|
|
@@ -16,101 +17,101 @@ export class ResourceOrchestrator {
|
|
|
16
17
|
this.modelManager = modelManager;
|
|
17
18
|
}
|
|
18
19
|
async orchestrateImageGeneration(config) {
|
|
19
|
-
|
|
20
|
+
debugLog('[Orchestrator] orchestrateImageGeneration called');
|
|
20
21
|
if (this.pendingReload) {
|
|
21
|
-
|
|
22
|
+
debugLog('[Orchestrator] Awaiting pending LLM reload from previous generation...');
|
|
22
23
|
await this.pendingReload;
|
|
23
24
|
this.pendingReload = null;
|
|
24
25
|
}
|
|
25
26
|
const needsOffload = await this.needsOffloadForImage();
|
|
26
27
|
const llamaIsRunning = this.llamaServer.isRunning();
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
debugLog('[Orchestrator] needsOffload:', needsOffload);
|
|
29
|
+
debugLog('[Orchestrator] llamaServer.isRunning():', llamaIsRunning);
|
|
29
30
|
if (needsOffload && llamaIsRunning) {
|
|
30
|
-
|
|
31
|
+
debugLog('[Orchestrator] ⚠️ Resources constrained - offloading LLM before generation');
|
|
31
32
|
await this.offloadLLM();
|
|
32
33
|
let result;
|
|
33
34
|
try {
|
|
34
|
-
|
|
35
|
+
debugLog('[Orchestrator] Generating image with LLM offloaded...');
|
|
35
36
|
result = await this.diffusionServer.executeImageGeneration(config);
|
|
36
37
|
}
|
|
37
38
|
catch (error) {
|
|
38
|
-
|
|
39
|
+
debugLog('[Orchestrator] Image generation failed, reloading LLM in background...');
|
|
39
40
|
this.fireAndForgetReload();
|
|
40
41
|
throw error;
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
debugLog('[Orchestrator] Image ready, reloading LLM in background...');
|
|
43
44
|
this.fireAndForgetReload();
|
|
44
45
|
return result;
|
|
45
46
|
}
|
|
46
47
|
else {
|
|
47
48
|
if (!needsOffload) {
|
|
48
|
-
|
|
49
|
+
debugLog('[Orchestrator] ✅ Sufficient resources - generating directly without offload');
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
51
|
-
|
|
52
|
+
debugLog('[Orchestrator] ✅ LLM not running - generating directly');
|
|
52
53
|
}
|
|
53
54
|
return await this.diffusionServer.executeImageGeneration(config);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
async needsOffloadForImage() {
|
|
57
|
-
|
|
58
|
+
debugLog('[Orchestrator] Checking if offload needed...');
|
|
58
59
|
const memory = this.systemInfo.getMemoryInfo();
|
|
59
60
|
const capabilities = await this.systemInfo.detect();
|
|
60
61
|
const llamaUsage = await this.estimateLLMUsage();
|
|
61
62
|
const diffusionUsage = await this.estimateDiffusionUsage();
|
|
62
63
|
const isGPUSystem = capabilities.gpu.available && capabilities.gpu.vram;
|
|
63
|
-
|
|
64
|
+
debugLog('[Orchestrator] System type:', isGPUSystem ? 'GPU' : 'CPU-only');
|
|
64
65
|
if (isGPUSystem) {
|
|
65
66
|
const totalVRAM = capabilities.gpu.vram || 0;
|
|
66
67
|
const vramNeeded = (llamaUsage.vram || 0) + (diffusionUsage.vram || 0);
|
|
67
68
|
const threshold = totalVRAM * 0.75;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
debugLog('[Orchestrator] VRAM Analysis:');
|
|
70
|
+
debugLog(' - LLM VRAM usage:', (llamaUsage.vram || 0) / 1024 ** 3, 'GB');
|
|
71
|
+
debugLog(' - Diffusion VRAM usage:', (diffusionUsage.vram || 0) / 1024 ** 3, 'GB');
|
|
72
|
+
debugLog(' - Total VRAM needed:', vramNeeded / 1024 ** 3, 'GB');
|
|
73
|
+
debugLog(' - Total VRAM available:', totalVRAM / 1024 ** 3, 'GB');
|
|
74
|
+
debugLog(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
|
|
75
|
+
debugLog(' - Offload needed:', vramNeeded > threshold);
|
|
75
76
|
return vramNeeded > threshold;
|
|
76
77
|
}
|
|
77
78
|
else {
|
|
78
79
|
const ramNeeded = llamaUsage.ram + diffusionUsage.ram;
|
|
79
80
|
const threshold = memory.available * 0.75;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
81
|
+
debugLog('[Orchestrator] RAM Analysis:');
|
|
82
|
+
debugLog(' - LLM RAM usage:', llamaUsage.ram / 1024 ** 3, 'GB');
|
|
83
|
+
debugLog(' - Diffusion RAM usage:', diffusionUsage.ram / 1024 ** 3, 'GB');
|
|
84
|
+
debugLog(' - Total RAM needed:', ramNeeded / 1024 ** 3, 'GB');
|
|
85
|
+
debugLog(' - Available RAM:', memory.available / 1024 ** 3, 'GB');
|
|
86
|
+
debugLog(' - Threshold (75%):', threshold / 1024 ** 3, 'GB');
|
|
87
|
+
debugLog(' - Offload needed:', ramNeeded > threshold);
|
|
87
88
|
return ramNeeded > threshold;
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
async estimateLLMUsage() {
|
|
91
92
|
if (!this.llamaServer.isRunning()) {
|
|
92
|
-
|
|
93
|
+
debugLog('[Orchestrator] LLM not running - usage: 0');
|
|
93
94
|
return { ram: 0, vram: 0 };
|
|
94
95
|
}
|
|
95
96
|
const config = this.llamaServer.getConfig();
|
|
96
97
|
if (!config) {
|
|
97
|
-
|
|
98
|
+
debugLog('[Orchestrator] LLM config not found - usage: 0');
|
|
98
99
|
return { ram: 0, vram: 0 };
|
|
99
100
|
}
|
|
100
101
|
try {
|
|
101
102
|
const modelInfo = await this.modelManager.getModelInfo(config.modelId);
|
|
102
103
|
const gpuLayers = config.gpuLayers || 0;
|
|
103
104
|
const totalLayers = await this.modelManager.getModelLayerCount(config.modelId);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
debugLog('[Orchestrator] LLM model:', config.modelId);
|
|
106
|
+
debugLog('[Orchestrator] LLM model size:', modelInfo.size / 1024 ** 3, 'GB');
|
|
107
|
+
debugLog('[Orchestrator] LLM GPU layers:', gpuLayers, '/', totalLayers);
|
|
107
108
|
if (gpuLayers > 0) {
|
|
108
109
|
const gpuRatio = Math.min(gpuLayers / totalLayers, 1.0);
|
|
109
110
|
const result = {
|
|
110
111
|
ram: modelInfo.size * (1 - gpuRatio) * 1.2,
|
|
111
112
|
vram: modelInfo.size * gpuRatio * 1.2,
|
|
112
113
|
};
|
|
113
|
-
|
|
114
|
+
debugLog('[Orchestrator] LLM usage (mixed):', {
|
|
114
115
|
ram: `${result.ram / 1024 ** 3} GB`,
|
|
115
116
|
vram: `${result.vram / 1024 ** 3} GB`,
|
|
116
117
|
});
|
|
@@ -121,7 +122,7 @@ export class ResourceOrchestrator {
|
|
|
121
122
|
ram: modelInfo.size * 1.2,
|
|
122
123
|
vram: 0,
|
|
123
124
|
};
|
|
124
|
-
|
|
125
|
+
debugLog('[Orchestrator] LLM usage (CPU-only):', {
|
|
125
126
|
ram: `${result.ram / 1024 ** 3} GB`,
|
|
126
127
|
vram: '0 GB',
|
|
127
128
|
});
|
|
@@ -129,7 +130,7 @@ export class ResourceOrchestrator {
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
catch (error) {
|
|
132
|
-
|
|
133
|
+
debugLog('[Orchestrator] Failed to get LLM model info:', error);
|
|
133
134
|
return { ram: 0, vram: 0 };
|
|
134
135
|
}
|
|
135
136
|
}
|
|
@@ -137,39 +138,39 @@ export class ResourceOrchestrator {
|
|
|
137
138
|
const config = this.diffusionServer.getConfig();
|
|
138
139
|
if (!config) {
|
|
139
140
|
const defaultSize = 6.5 * 1024 * 1024 * 1024;
|
|
140
|
-
|
|
141
|
+
debugLog('[Orchestrator] Diffusion config not found - using default estimate: 6.5GB');
|
|
141
142
|
return { ram: defaultSize * 1.2, vram: defaultSize * 1.2 };
|
|
142
143
|
}
|
|
143
144
|
try {
|
|
144
145
|
const modelInfo = await this.modelManager.getModelInfo(config.modelId);
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
debugLog('[Orchestrator] Diffusion model:', config.modelId);
|
|
147
|
+
debugLog('[Orchestrator] Diffusion model size:', modelInfo.size / 1024 ** 3, 'GB');
|
|
147
148
|
const usage = modelInfo.size * 1.2;
|
|
148
149
|
const result = {
|
|
149
150
|
ram: usage,
|
|
150
151
|
vram: usage,
|
|
151
152
|
};
|
|
152
|
-
|
|
153
|
+
debugLog('[Orchestrator] Diffusion usage:', usage / 1024 ** 3, 'GB (both RAM and VRAM)');
|
|
153
154
|
return result;
|
|
154
155
|
}
|
|
155
156
|
catch (error) {
|
|
156
|
-
|
|
157
|
+
debugLog('[Orchestrator] Failed to get diffusion model info:', error);
|
|
157
158
|
const defaultSize = 6.5 * 1024 * 1024 * 1024;
|
|
158
|
-
|
|
159
|
+
debugLog('[Orchestrator] Using default estimate: 6.5GB');
|
|
159
160
|
return { ram: defaultSize * 1.2, vram: defaultSize * 1.2 };
|
|
160
161
|
}
|
|
161
162
|
}
|
|
162
163
|
async offloadLLM() {
|
|
163
|
-
|
|
164
|
+
debugLog('[Orchestrator] offloadLLM called');
|
|
164
165
|
if (!this.llamaServer.isRunning()) {
|
|
165
|
-
|
|
166
|
+
debugLog('[Orchestrator] LLM not running - nothing to offload');
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
169
|
const config = this.llamaServer.getConfig();
|
|
169
170
|
if (!config) {
|
|
170
171
|
throw new ServerError('Cannot offload LLM: no configuration found');
|
|
171
172
|
}
|
|
172
|
-
|
|
173
|
+
debugLog('[Orchestrator] Saving LLM state:', {
|
|
173
174
|
modelId: config.modelId,
|
|
174
175
|
port: config.port,
|
|
175
176
|
gpuLayers: config.gpuLayers,
|
|
@@ -179,24 +180,24 @@ export class ResourceOrchestrator {
|
|
|
179
180
|
wasRunning: true,
|
|
180
181
|
savedAt: new Date(),
|
|
181
182
|
};
|
|
182
|
-
|
|
183
|
+
debugLog('[Orchestrator] Stopping LLM server...');
|
|
183
184
|
await this.llamaServer.stop();
|
|
184
|
-
|
|
185
|
+
debugLog('[Orchestrator] ✅ LLM server stopped successfully');
|
|
185
186
|
}
|
|
186
187
|
async reloadLLM() {
|
|
187
|
-
|
|
188
|
+
debugLog('[Orchestrator] reloadLLM called');
|
|
188
189
|
if (!this.savedLLMState || !this.savedLLMState.wasRunning) {
|
|
189
|
-
|
|
190
|
+
debugLog('[Orchestrator] No saved LLM state - nothing to reload');
|
|
190
191
|
return;
|
|
191
192
|
}
|
|
192
193
|
const savedConfig = this.savedLLMState.config;
|
|
193
194
|
try {
|
|
194
|
-
|
|
195
|
+
debugLog('[Orchestrator] Restarting LLM with saved config:', {
|
|
195
196
|
modelId: savedConfig.modelId,
|
|
196
197
|
port: savedConfig.port,
|
|
197
198
|
});
|
|
198
199
|
await this.llamaServer.start(savedConfig);
|
|
199
|
-
|
|
200
|
+
debugLog('[Orchestrator] ✅ LLM server restarted successfully');
|
|
200
201
|
this.savedLLMState = undefined;
|
|
201
202
|
return;
|
|
202
203
|
}
|
|
@@ -204,11 +205,11 @@ export class ResourceOrchestrator {
|
|
|
204
205
|
console.warn('[Orchestrator] ⚠️ First reload attempt failed:', firstError);
|
|
205
206
|
}
|
|
206
207
|
try {
|
|
207
|
-
|
|
208
|
+
debugLog(`[Orchestrator] Retrying reload after ${ResourceOrchestrator.RELOAD_RETRY_DELAY_MS}ms...`);
|
|
208
209
|
await this.delay(ResourceOrchestrator.RELOAD_RETRY_DELAY_MS);
|
|
209
210
|
this.systemInfo.clearCache();
|
|
210
211
|
await this.llamaServer.start(savedConfig);
|
|
211
|
-
|
|
212
|
+
debugLog('[Orchestrator] ✅ LLM server restarted on retry');
|
|
212
213
|
this.savedLLMState = undefined;
|
|
213
214
|
}
|
|
214
215
|
catch (retryError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceOrchestrator.js","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAkDjD,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAU,qBAAqB,GAAG,IAAI,CAAC;IAE7C,UAAU,CAAa;IACvB,WAAW,CAAqB;IAChC,eAAe,CAAyB;IACxC,YAAY,CAAe;IAC3B,aAAa,CAAiB;IAC9B,aAAa,GAAyB,IAAI,CAAC;IAUnD,YACE,aAAyB,UAAU,CAAC,WAAW,EAAE,EACjD,WAA+B,EAC/B,eAAuC,EACvC,eAA6B,YAAY,CAAC,WAAW,EAAE;QAEvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAsBD,KAAK,CAAC,0BAA0B,CAAC,MAA6B;QAC5D,
|
|
1
|
+
{"version":3,"file":"ResourceOrchestrator.js","sourceRoot":"","sources":["../../src/managers/ResourceOrchestrator.ts"],"names":[],"mappings":"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"}
|