llm-checker 3.6.1 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -7
- package/bin/enhanced_cli.js +361 -5
- package/package.json +7 -2
- package/src/data/model-database.js +450 -0
- package/src/data/registry-ingestors.js +751 -0
- package/src/data/registry-recommender.js +514 -0
- package/src/data/seed/README.md +11 -3
- package/src/data/seed/models.db +0 -0
- package/src/index.js +68 -4
- package/src/models/deterministic-selector.js +16 -3
- package/src/models/moe-assumptions.js +11 -0
|
@@ -2342,6 +2342,9 @@ class DeterministicModelSelector {
|
|
|
2342
2342
|
estimatedRAM: candidate.requiredGB,
|
|
2343
2343
|
reasoning: candidate.rationale,
|
|
2344
2344
|
runtime: candidate.runtime || candidate.speed?.runtime || 'ollama',
|
|
2345
|
+
installCommand: candidate.meta.installCommand || provenance.install_command || '',
|
|
2346
|
+
downloadUrl: candidate.meta.downloadUrl || provenance.download_url || '',
|
|
2347
|
+
artifactFormat: candidate.meta.artifact?.format || '',
|
|
2345
2348
|
memoryAssumptionSource: candidate.memory?.assumptionSource || 'dense_params',
|
|
2346
2349
|
speedAssumptions: candidate.speed?.moe ? {
|
|
2347
2350
|
applied: Boolean(candidate.speed.moe.applied),
|
|
@@ -2523,19 +2526,24 @@ class DeterministicModelSelector {
|
|
|
2523
2526
|
Object.entries(recommendations).forEach(([category, data]) => {
|
|
2524
2527
|
const bestModel = data.bestModels[0];
|
|
2525
2528
|
if (bestModel) {
|
|
2529
|
+
const command = bestModel.installCommand ||
|
|
2530
|
+
bestModel.provenance?.install_command ||
|
|
2531
|
+
`ollama pull ${bestModel.model_identifier}`;
|
|
2526
2532
|
summary.by_category[category] = {
|
|
2527
2533
|
name: bestModel.model_name || bestModel.name,
|
|
2528
2534
|
identifier: bestModel.model_identifier,
|
|
2529
2535
|
score: Math.round(bestModel.categoryScore || bestModel.score),
|
|
2530
|
-
command
|
|
2536
|
+
command,
|
|
2531
2537
|
size: this.formatModelSize(bestModel),
|
|
2532
2538
|
quantization: bestModel.quantization || bestModel.quant || 'Q4_K_M',
|
|
2539
|
+
runtime: bestModel.runtime || bestModel.provenance?.runtime || 'ollama',
|
|
2533
2540
|
pulls: bestModel.pulls || 0,
|
|
2534
2541
|
source: bestModel.source || bestModel.provenance?.source || 'unknown',
|
|
2535
2542
|
registry: bestModel.registry || bestModel.provenance?.registry || 'unknown',
|
|
2536
2543
|
version: bestModel.version || bestModel.provenance?.version || 'unknown',
|
|
2537
2544
|
license: bestModel.license || bestModel.provenance?.license || 'unknown',
|
|
2538
2545
|
digest: bestModel.digest || bestModel.provenance?.digest || 'unknown',
|
|
2546
|
+
download_url: bestModel.downloadUrl || bestModel.provenance?.download_url || '',
|
|
2539
2547
|
provenance: bestModel.provenance || {
|
|
2540
2548
|
source: bestModel.source || 'unknown',
|
|
2541
2549
|
registry: bestModel.registry || 'unknown',
|
|
@@ -2545,7 +2553,7 @@ class DeterministicModelSelector {
|
|
|
2545
2553
|
}
|
|
2546
2554
|
};
|
|
2547
2555
|
|
|
2548
|
-
summary.quick_commands.push(
|
|
2556
|
+
summary.quick_commands.push(command);
|
|
2549
2557
|
|
|
2550
2558
|
const isGeneralCategory = ['general', 'coding', 'talking', 'reading'].includes(category);
|
|
2551
2559
|
const score = bestModel.categoryScore || bestModel.score || 0;
|
|
@@ -2559,18 +2567,23 @@ class DeterministicModelSelector {
|
|
|
2559
2567
|
});
|
|
2560
2568
|
|
|
2561
2569
|
if (bestOverallModel) {
|
|
2570
|
+
const command = bestOverallModel.installCommand ||
|
|
2571
|
+
bestOverallModel.provenance?.install_command ||
|
|
2572
|
+
`ollama pull ${bestOverallModel.model_identifier}`;
|
|
2562
2573
|
summary.best_overall = {
|
|
2563
2574
|
name: bestOverallModel.model_name || bestOverallModel.name,
|
|
2564
2575
|
identifier: bestOverallModel.model_identifier,
|
|
2565
2576
|
category: bestOverallCategory,
|
|
2566
2577
|
score: Math.round(bestOverallScore),
|
|
2567
|
-
command
|
|
2578
|
+
command,
|
|
2568
2579
|
quantization: bestOverallModel.quantization || bestOverallModel.quant || 'Q4_K_M',
|
|
2580
|
+
runtime: bestOverallModel.runtime || bestOverallModel.provenance?.runtime || 'ollama',
|
|
2569
2581
|
source: bestOverallModel.source || bestOverallModel.provenance?.source || 'unknown',
|
|
2570
2582
|
registry: bestOverallModel.registry || bestOverallModel.provenance?.registry || 'unknown',
|
|
2571
2583
|
version: bestOverallModel.version || bestOverallModel.provenance?.version || 'unknown',
|
|
2572
2584
|
license: bestOverallModel.license || bestOverallModel.provenance?.license || 'unknown',
|
|
2573
2585
|
digest: bestOverallModel.digest || bestOverallModel.provenance?.digest || 'unknown',
|
|
2586
|
+
download_url: bestOverallModel.downloadUrl || bestOverallModel.provenance?.download_url || '',
|
|
2574
2587
|
provenance: bestOverallModel.provenance || {
|
|
2575
2588
|
source: bestOverallModel.source || 'unknown',
|
|
2576
2589
|
registry: bestOverallModel.registry || 'unknown',
|
|
@@ -24,6 +24,14 @@ const MOE_RUNTIME_PROFILES = Object.freeze({
|
|
|
24
24
|
maxEffectiveGain: 2.65,
|
|
25
25
|
notes: ['optimized scheduler', 'better expert batching', 'lower offload pressure']
|
|
26
26
|
}),
|
|
27
|
+
transformers: Object.freeze({
|
|
28
|
+
runtime: 'transformers',
|
|
29
|
+
routingOverhead: 0.15,
|
|
30
|
+
communicationOverhead: 0.10,
|
|
31
|
+
offloadOverhead: 0.06,
|
|
32
|
+
maxEffectiveGain: 2.45,
|
|
33
|
+
notes: ['general Hugging Face path', 'broad architecture support', 'higher Python overhead than vLLM']
|
|
34
|
+
}),
|
|
27
35
|
mlx: Object.freeze({
|
|
28
36
|
runtime: 'mlx',
|
|
29
37
|
routingOverhead: 0.16,
|
|
@@ -45,6 +53,9 @@ const MOE_RUNTIME_PROFILES = Object.freeze({
|
|
|
45
53
|
const RUNTIME_ALIASES = Object.freeze({
|
|
46
54
|
ollama: 'ollama',
|
|
47
55
|
vllm: 'vllm',
|
|
56
|
+
transformers: 'transformers',
|
|
57
|
+
'huggingface-transformers': 'transformers',
|
|
58
|
+
hf: 'transformers',
|
|
48
59
|
mlx: 'mlx',
|
|
49
60
|
'mlx-lm': 'mlx',
|
|
50
61
|
mlx_lm: 'mlx',
|