File size: 5,038 Bytes
31d9d4f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | #include "../kernels/ov_universal_kernel.h"
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
// Mock Tensors
using Tensor1D = std::vector<float>;
using Tensor2D = std::vector<std::vector<float>>;
enum ArchType {
TRANSFORMER_STANDARD, // Llama, Gemma, GPT
SSM_MAMBA, // Mamba 1/2
HYBRID_JAMBA, // Transformer + Mamba
MOE_DEEPSEEK // Mixture of Experts
};
class OVEngineCore {
public:
OVEngineCore(ArchType arch) : architecture(arch) {
std::cout << "โ๏ธ Initializing OV-Engine Core for Architecture: ";
switch(arch) {
case TRANSFORMER_STANDARD: std::cout << "Standard Transformer"; break;
case SSM_MAMBA: std::cout << "State Space Model (Mamba)"; break;
case HYBRID_JAMBA: std::cout << "Hybrid (Jamba/Samba)"; break;
case MOE_DEEPSEEK: std::cout << "Mixture of Experts (MoE)"; break;
}
std::cout << std::endl;
// Setup Dummy "Truth" from OV-Memory
// In prod, this comes from the Graph Walk (ov_graph.cpp)
active_memory.truth_vector = {1.0f, 1.0f, 1.0f, 1.0f};
active_memory.confidence = 0.95f; // Very high confidence fact found
active_memory.is_active = true;
}
void run_inference_step() {
std::cout << "\nโถ๏ธ Running Inference Step..." << std::endl;
switch(architecture) {
case TRANSFORMER_STANDARD:
simulate_transformer_step();
break;
case SSM_MAMBA:
simulate_mamba_step();
break;
case HYBRID_JAMBA:
simulate_mamba_step(); // Layer N (SSM)
simulate_transformer_step(); // Layer N+1 (Attention)
break;
case MOE_DEEPSEEK:
simulate_moe_step();
break;
}
}
private:
ArchType architecture;
OV_Kernel::MemoryContext active_memory;
void print_vec(const std::string& label, const Tensor1D& v) {
std::cout << " " << label << ": [ ";
for (size_t i = 0; i < std::min(v.size(), (size_t)4); ++i)
std::cout << std::fixed << std::setprecision(2) << v[i] << " ";
std::cout << "...]" << std::endl;
}
void simulate_transformer_step() {
// Mock Attention Scores (0-9)
// Index 0 is our "Truth Context", others are noise
Tensor1D scores = {0.5f, 1.2f, 0.8f, 0.3f, 1.1f};
std::cout << " [Attention] Raw Scores (Truth at idx 0 is low):" << std::endl;
print_vec("Scores", scores);
// Apply Intervention
std::cout << " ๐ Applying OV-Attention Bias..." << std::endl;
OV_Kernel::apply_attention_bias(scores, active_memory, 0, 1, 8.0f);
print_vec("Result", scores);
if (scores[0] > 5.0f) std::cout << " โ
Attention successfully steered to Truth." << std::endl;
}
void simulate_mamba_step() {
// Mock Hidden State (Drifting to hallucination -0.5)
Tensor1D state = {-0.5f, -0.6f, -0.4f, -0.5f};
std::cout << " [SSM State] Current Drifting State:" << std::endl;
print_vec("State", state);
// Apply Intervention
std::cout << " ๐ Applying OV-State Correction..." << std::endl;
OV_Kernel::apply_state_correction(state, active_memory, 0.4f);
print_vec("Result", state);
if (state[0] > 0.0f) std::cout << " โ
State vector pulled towards Truth." << std::endl;
}
void simulate_moe_step() {
// Mock Router Logits (Expert 0=Fact, Expert 1=Fiction, Expert 2=Trash)
Tensor1D logits = {0.5f, 2.0f, 0.5f}; // Router prefers Expert 1 (Fiction)
std::vector<int> fact_experts = {0}; // Expert 0 is the "Truth" expert
std::cout << " [MoE Router] Expert 1 (Fiction) selected:" << std::endl;
print_vec("Logits", logits);
// Apply Intervention
std::cout << " ๐ Applying OV-Router Bias..." << std::endl;
OV_Kernel::apply_router_bias(logits, fact_experts, active_memory, 5.0f);
print_vec("Result", logits);
if (logits[0] > logits[1]) std::cout << " โ
Router forced to select Factual Expert." << std::endl;
}
};
int main(int argc, char* argv[]) {
std::cout << "=== OpenVinayaka Engine v1.0 (Full Version) ===\n" << std::endl;
// Run tests for all supported architectures
{
OVEngineCore engine(TRANSFORMER_STANDARD);
engine.run_inference_step();
}
std::cout << "\n----------------------------------------\n";
{
OVEngineCore engine(SSM_MAMBA);
engine.run_inference_step();
}
std::cout << "\n----------------------------------------\n";
{
OVEngineCore engine(MOE_DEEPSEEK);
engine.run_inference_step();
}
std::cout << "\n----------------------------------------\n";
{
OVEngineCore engine(HYBRID_JAMBA);
engine.run_inference_step();
}
return 0;
}
|