git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
88 lines
2.8 KiB
JavaScript
88 lines
2.8 KiB
JavaScript
/**
|
|
* Custom Configuration Example
|
|
* Demonstrates advanced configuration options
|
|
*/
|
|
|
|
const { SonaEngine } = require('../index.js');
|
|
|
|
function main() {
|
|
console.log('🔧 SONA - Custom Configuration Example\n');
|
|
|
|
// Create engine with custom configuration
|
|
const config = {
|
|
hiddenDim: 512,
|
|
embeddingDim: 512,
|
|
microLoraRank: 2,
|
|
baseLoraRank: 16,
|
|
microLoraLr: 0.002,
|
|
baseLoraLr: 0.0002,
|
|
ewcLambda: 500.0,
|
|
patternClusters: 100,
|
|
trajectoryCapacity: 5000,
|
|
backgroundIntervalMs: 1800000, // 30 minutes
|
|
qualityThreshold: 0.7,
|
|
enableSimd: true,
|
|
};
|
|
|
|
console.log('Configuration:', JSON.stringify(config, null, 2));
|
|
const engine = SonaEngine.withConfig(config);
|
|
console.log('✓ Engine created with custom config\n');
|
|
|
|
// Record high-quality trajectories
|
|
console.log('Recording high-quality trajectories...');
|
|
for (let i = 0; i < 20; i++) {
|
|
const queryEmbedding = Array(512).fill(0).map(() => Math.random());
|
|
const builder = engine.beginTrajectory(queryEmbedding);
|
|
|
|
// Multiple inference steps
|
|
for (let step = 0; step < 5; step++) {
|
|
const activations = Array(512).fill(0).map(() => Math.random());
|
|
const attentionWeights = Array(128).fill(0).map(() => Math.random());
|
|
const reward = 0.8 + Math.random() * 0.2;
|
|
|
|
builder.addStep(activations, attentionWeights, reward);
|
|
}
|
|
|
|
builder.setRoute(`high_quality_model_${i % 4}`);
|
|
const quality = 0.85 + Math.random() * 0.15;
|
|
engine.endTrajectory(builder, quality);
|
|
}
|
|
console.log('✓ Recorded 20 high-quality trajectories\n');
|
|
|
|
// Apply both micro and base LoRA
|
|
console.log('Applying LoRA transformations...');
|
|
const input = Array(512).fill(1.0);
|
|
|
|
const microOutput = engine.applyMicroLora(input);
|
|
console.log(`✓ Micro-LoRA: ${input.length} -> ${microOutput.length}`);
|
|
|
|
const baseOutput = engine.applyBaseLora(0, input);
|
|
console.log(`✓ Base-LoRA (layer 0): ${input.length} -> ${baseOutput.length}\n`);
|
|
|
|
// Pattern analysis
|
|
console.log('Pattern analysis...');
|
|
const testQuery = Array(512).fill(0).map(() => Math.random());
|
|
const topPatterns = engine.findPatterns(testQuery, 10);
|
|
|
|
console.log(`Found ${topPatterns.length} patterns:`);
|
|
topPatterns.slice(0, 3).forEach((pattern, i) => {
|
|
console.log(` ${i + 1}. ID: ${pattern.id}`);
|
|
console.log(` Quality: ${pattern.avgQuality.toFixed(3)}`);
|
|
console.log(` Cluster size: ${pattern.clusterSize}`);
|
|
console.log(` Type: ${pattern.patternType}`);
|
|
});
|
|
console.log();
|
|
|
|
// Enable/disable engine
|
|
console.log('Testing enable/disable...');
|
|
console.log(`Engine enabled: ${engine.isEnabled()}`);
|
|
engine.setEnabled(false);
|
|
console.log(`Engine enabled: ${engine.isEnabled()}`);
|
|
engine.setEnabled(true);
|
|
console.log(`Engine enabled: ${engine.isEnabled()}\n`);
|
|
|
|
console.log('✓ Custom configuration example completed!');
|
|
}
|
|
|
|
main();
|