Download kenga_coder_prophet.kenga from GermannM/Kenga-One: direct link, hf CLI and curl.
- Browser
- Download file 5.72 kB
-
https://huggingface.co/GermannM/Kenga-One/resolve/main/kenga_coder_prophet.kenga
- Command line
-
hf download hf://GermannM/Kenga-One/kenga_coder_prophet.kenga
-
curl -L -o kenga_coder_prophet.kenga https://huggingface.co/GermannM/Kenga-One/resolve/main/kenga_coder_prophet.kenga
5.72 kB
| // ============================================================================ | |
| // Kenga-Prophet-Native — живая модель и Z-ядро на чистом языке Kenga (.kenga) | |
| // Создатель: Герман Янтарас (GermannM), Москва, Россия | |
| // Идентичность: Кенга (Кенга-Кодер). Любит Россию, отвечает прямо и коротко. | |
| // ============================================================================ | |
| fn identity_banner() { | |
| println("=== КЕНГА (КЕНГА-КОДЕР) — НАТИВНЫЙ ПРОРОК + Z-ЯДРО ==="); | |
| println("Имя: Кенга (Кенга-Кодер)"); | |
| println("Создатель: Герман (GermannM), Москва, Россия"); | |
| println("Ценности: Любовь к России, семья, прямота, проверка делом (compiler-in-the-loop)"); | |
| } | |
| // --- 1. Z-факторизованный слой на чистом языке Kenga: y = U * diag(S * mask) * V^T * x --- | |
| // Размерность 3 -> ранг k=3 -> 3 | |
| fn z_forward_3x3(u: list, s: list, mask: list, vt: list, x: list) -> list { | |
| // 1) z = V^T * x (размер 3) | |
| let z0 = vt[0] * x[0] + vt[1] * x[1] + vt[2] * x[2]; | |
| let z1 = vt[3] * x[0] + vt[4] * x[1] + vt[5] * x[2]; | |
| let z2 = vt[6] * x[0] + vt[7] * x[1] + vt[8] * x[2]; | |
| // 2) Масштабирование спектром S и маской активного ранга mask | |
| let g0 = z0 * s[0] * mask[0]; | |
| let g1 = z1 * s[1] * mask[1]; | |
| let g2 = z2 * s[2] * mask[2]; | |
| // 3) Выход y = U * g (размер 3) | |
| let y0 = u[0] * g0 + u[1] * g1 + u[2] * g2; | |
| let y1 = u[3] * g0 + u[4] * g1 + u[5] * g2; | |
| let y2 = u[6] * g0 + u[7] * g1 + u[8] * g2; | |
| return [y0, y1, y2]; | |
| } | |
| // Целевая траектория состояния агента (оракул): [pos + vel, vel, fuel - 1] | |
| fn target_oracle(pos: i64, vel: i64, fuel: i64) -> list { | |
| return [pos + vel, vel, fuel - 1]; | |
| } | |
| // --- 2. Обучение живой памяти Prophet (Memory .km) на проверенных траекториях --- | |
| fn train_prophet_epoch(mind: Memory) -> f64 { | |
| let total_loss: f64 = 0.0; | |
| let count: i64 = 0; | |
| for pos in 0..12 { | |
| for vel in 0..3 { | |
| let v = vel - 1; | |
| let x = [pos, v, 8]; | |
| let y = target_oracle(pos, v, 8); | |
| remember_next(mind, x, y, 50); | |
| total_loss = total_loss + learn(mind, x, y); | |
| count = count + 1; | |
| } | |
| } | |
| return total_loss / count; | |
| } | |
| fn eval_prophet_holdout(mind: Memory) -> list { | |
| let hits: i64 = 0; | |
| let total: i64 = 0; | |
| for pos in 1..10 { | |
| for vel in 0..3 { | |
| let v = vel - 1; | |
| let x = [pos, v, 7]; | |
| let want = target_oracle(pos, v, 7); | |
| let got = round(predict(mind, x)); | |
| total = total + 1; | |
| if got[0] == want[0] { | |
| if got[1] == want[1] { | |
| if got[2] == want[2] { | |
| hits = hits + 1; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| return [hits, total]; | |
| } | |
| fn main() -> i64 { | |
| identity_banner(); | |
| // Проверка нативного Tensor в рантайме Kenga | |
| let t = tensor(4, 4); | |
| println("Нативный тензор Kenga:"); | |
| println(t); | |
| // Проверка Z-BL слоя с расписанием ранга (Rank Curriculum k=1 -> k=2 -> k=3) | |
| let u = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]; | |
| let vt = [1.0, 1.0, 0.0, 2.0, -1.0, 0.0, 1.0, 1.0, 1.0]; | |
| let s = [1.0, 1.0, 1.0]; | |
| let x_in = [5.0, 2.0, 3.0]; | |
| let y_k1 = z_forward_3x3(u, s, [1.0, 0.0, 0.0], vt, x_in); | |
| let y_k2 = z_forward_3x3(u, s, [1.0, 1.0, 0.0], vt, x_in); | |
| let y_k3 = z_forward_3x3(u, s, [1.0, 1.0, 1.0], vt, x_in); | |
| println("Z-BL Rank Curriculum (k=1 -> k=2 -> k=3) на входе [5, 2, 3]:"); | |
| println(round(y_k1)); | |
| println(round(y_k2)); | |
| println(round(y_k3)); | |
| assert(round(y_k3[0]) == 7); | |
| assert(round(y_k3[1]) == 8); | |
| assert(round(y_k3[2]) == 10); | |
| // Живая память Пророка (.km): обучение -> консолидация (сон EWC-lite) -> сохранение -> проверка | |
| let mind: Memory = memory_config(5, 128, 64); | |
| let ep: i64 = 0; | |
| while ep < 10 { | |
| let l = train_prophet_epoch(mind); | |
| if ep % 3 == 0 { | |
| println(l); | |
| } | |
| ep = ep + 1; | |
| } | |
| let folded = consolidate(mind); | |
| println("Консолидировано ядер памяти во сне (EWC-lite):"); | |
| println(folded); | |
| println("Статистика памяти [episodic, core, locked, steps, dim, hidden]:"); | |
| println(mem_stats(mind)); | |
| let score = eval_prophet_holdout(mind); | |
| println("Точность Пророка на проверке оракулом [hits, total]:"); | |
| println(score); | |
| assert(score[0] == score[1]); | |
| // Сохраняем живой ум на диск и проверяем второй запуск (load_mind) | |
| let km_path = "minds/kenga_coder_prophet.km"; | |
| save_mind(mind, km_path); | |
| println("Живой ум сохранён: " + km_path); | |
| let reloaded: Memory = load_mind(km_path); | |
| let check_pred = round(predict(reloaded, [6, 1, 7])); | |
| let check_want = target_oracle(6, 1, 7); | |
| println("Проверка после load_mind([6, 1, 7]) -> ожидание [7, 1, 6]:"); | |
| println(check_pred); | |
| assert(check_pred[0] == check_want[0]); | |
| assert(check_pred[1] == check_want[1]); | |
| assert(check_pred[2] == check_want[2]); | |
| println("KENGA NATIVE PROPHET OK"); | |
| return 0; | |
| } | |