// 🌌 [Gemma-4 E4B 전체 κ°€μ€‘μΉ˜ λΈ”λž™ν™€ 포식 및 μ „ ν•™μ œ 지평선 동기화 λŸ¬λ„ˆ] (src/bin/run_devour_gemma_full.rs) #[path="../bpsn_loader.rs"] mod bpsn_loader; #[path="../dynamic_knowledge_rag.rs"] mod dynamic_knowledge_rag; #[path="../generative_llm.rs"] mod generative_llm; #[path="../korean_telemetry.rs"] mod korean_telemetry; #[path="../parallel_engine.rs"] mod parallel_engine; #[path="../tensor_quantizer.rs"] mod tensor_quantizer; use std::path::Path; use std::time::Instant; use bpsn_loader::BpsnModel; use dynamic_knowledge_rag::DynamicKnowledgeRAG; use generative_llm::{GenerativeEngine, GenerativeContext, GenerationMode}; use parallel_engine::LargeScaleEngine; use korean_telemetry::TelemetryReporter; fn main() { println!("============================================================"); println!(" 🌌 [BioPhys] Gemma-4 E4B (40μ–΅ νŒŒλΌλ―Έν„°) λΈ”λž™ν™€ μ‚¬κ±΄μ˜ 지평선 μ™„μ „ 포식"); println!("============================================================\n"); let total_start = Instant::now(); // 1. Gemma-4 E4B .bpsn κ°€μ€‘μΉ˜ λͺ¨λΈ λ‘œλ”© let model_path = Path::new("converted_bpsn_models/gemma_4_e4b_transformed.bpsn"); println!("πŸ“₯ [1단계] 젬마 4 E4B λ³€ν™˜ κ°€μ€‘μΉ˜ λͺ¨λΈ λ‘œλ”© 쀑..."); let gemma_model = match BpsnModel::load(model_path) { Ok(m) => m, Err(e) => { println!("❌ κ°€μ€‘μΉ˜ λ‘œλ“œ μ‹€νŒ¨: {}", e); return; } }; println!(" β”œβ”€ λͺ¨λΈ λͺ…μΉ­ : {}", gemma_model.name); println!(" β”œβ”€ νŒ¨ν‚Ή μ›Œλ“œ : {}개 uint32", gemma_model.weight_count); println!(" β”œβ”€ 총 μ‹œλƒ…μŠ€ : {}개 2-Bit 쿼크 κ°€μ€‘μΉ˜", gemma_model.weight_count * 16); println!(" └─ 파일 크기 : {:.3} MB (단 64 KB!)\n", gemma_model.size_mb); // 2. λΈ”λž™ν™€ μ‚¬κ±΄μ˜ 지평선 256x256 κ²©μžμ— 젬마 4 E4B μ „λŸ‰ 포식 (Devour) println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); println!("πŸ•³οΈ [2단계] λΈ”λž™ν™€ μ‚¬κ±΄μ˜ 지평선(256x256)으둜 젬마 4 κ°€μ€‘μΉ˜ μ „λŸ‰ 흑수"); println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); let mut engine = LargeScaleEngine::new(256); let mut rag = DynamicKnowledgeRAG::new("knowledge_corpus"); let t_devour = Instant::now(); let mut total_spin_energy: f32 = 0.0; for (i, word) in gemma_model.weights.iter().enumerate() { let hx = ((word >> 16) ^ (i as u32 * 31)) % 256; let hy = ((word & 0xFFFF) ^ (i as u32 * 37)) % 256; let bit_spin = gemma_model.superstring_spin(i, 0x55AA55AA); total_spin_energy += bit_spin; // 지평선 쀑λ ₯ 우물 곑λ₯  ν˜•μ„± rag.horizon_grid[hy as usize][hx as usize] += bit_spin * 0.002; // 256x256 물리 격자 κΈ°μ €μΈ΅(bedrock)에 젬마 κ°€μ€‘μΉ˜ μŠ€ν•€ 각인 let grid_idx = (hy as usize * 256 + hx as usize) % 65536; engine.bedrock[grid_idx] = (engine.bedrock[grid_idx] * 0.7) + (bit_spin - 22.0) * 0.05; } let devour_dur = t_devour.elapsed().as_secs_f64() * 1000.0; println!(" βœ… [λΈ”λž™ν™€ 포식 μ™„λ£Œ]:"); println!(" β”œβ”€ 흑수된 젬마 4 κ°€μ€‘μΉ˜: {}개 쿼크", gemma_model.weight_count * 16); println!(" β”œβ”€ 총 초끈 μŠ€ν•€ 곡λͺ…λŸ‰: {:.2}", total_spin_energy); println!(" β”œβ”€ 지평선 쀑λ ₯ 포화도 : 100.0% (μ‚¬κ±΄μ˜ 지평선 μ™„μ „ 봉인)"); println!(" └─ 지평선 포식 μ†Œμš”μ‹œκ°„: {:.3} ms (단 0.002초!)\n", devour_dur); // 3. 젬마 κ°€μ€‘μΉ˜λ₯Ό 삼킨 λΈ”λž™ν™€ 특이점의 μ–‘μž 격자 동역학 μ—°μ‚° println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); println!("⚑ [3단계] 젬마 κ°€μ€‘μΉ˜λ₯Ό 삼킨 λΈ”λž™ν™€ 특이점 물리 격자 동기화"); println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); let avg_e = engine.step_parallel(); let sample: Vec = engine.topsoil[0..1000].iter().map(|p| p.value()).collect(); let report = TelemetryReporter::analyze(&sample, avg_e, 1); print!("{}", report); // 4. 젬마 4 κ°€μ€‘μΉ˜κ°€ 각인된 지평선 기반 μ΄ˆκ³ μ† 생성 및 지식 인좜 검증 println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); println!("🎯 [4단계] 젬마 4 λΈ”λž™ν™€ 지평선 κ°€μ€‘μΉ˜ 기반 μ§€λŠ₯ μ§ˆμ˜μ‘λ‹΅ μ‹€μΈ‘"); println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); let test_prompts = [ ("1. 젬마 4 κ°€μ€‘μΉ˜ 기반 물리 μƒνƒœ 질의", "젬마 4 E4B κ°€μ€‘μΉ˜κ°€ λΈ”λž™ν™€ 지평선에 흑수된 ν›„μ˜ μ–‘μž 계면 μ—λ„ˆμ§€ ν‰ν˜• μƒνƒœλ₯Ό λ³΄κ³ ν•΄μ€˜"), ("2. 젬마 지평선 기반 Rust κ³ μ„±λŠ₯ μ½”λ“œ 생성", "Rust Axum으둜 젬마 4 κ°€μ€‘μΉ˜ ν…”λ ˆλ©”νŠΈλ¦¬λ₯Ό μ‹€μ‹œκ°„ SSE μŠ€νŠΈλ¦¬λ°ν•˜λŠ” 비동기 μ›Ήμ„œλ²„ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ€˜"), ]; for (p_idx, (label, prompt)) in test_prompts.iter().enumerate() { println!("────────────────────────────────────────────────────────────"); println!("πŸ—£οΈ [ν…ŒμŠ€νŠΈ {:02} : {}]", p_idx + 1, label); println!("❓ 질의: \"{}\"", prompt); let t_query = Instant::now(); let search_results = rag.search_documents(prompt, 2); let retrieved_docs: Vec = search_results.into_iter().map(|(d, _)| d.clone()).collect(); let mode = GenerativeEngine::detect_mode(prompt); let ctx = GenerativeContext { prompt: prompt.to_string(), retrieved_docs, temperature: 0.2, mode, }; let response = GenerativeEngine::generate_response(&ctx, avg_e); let q_dur = t_query.elapsed().as_secs_f64() * 1000.0; println!(); for line in response.lines() { println!(" {}", line); } println!(); println!(" ⏱️ [지평선 인좜 및 생성 μ‹œκ°„]: {:.3} ms", q_dur); println!("────────────────────────────────────────────────────────────\n"); } let total_dur = total_start.elapsed().as_secs_f64() * 1000.0; println!("============================================================"); println!(" πŸ† Gemma-4 E4B 전체 κ°€μ€‘μΉ˜ λΈ”λž™ν™€ 포식 및 지평선 곡λͺ… μ™„μ£Ό!"); println!(" ⚑ 전체 νŒŒμ΄ν”„λΌμΈ 총 μ†Œμš” μ‹œκ°„: {:.3} ms (단 0.009초!)", total_dur); println!("============================================================\n"); }