restructure: proper project layout, README, kill training
- cuda/ — main LBM kernel (khra_gixx_1024_v5.cu) - navigator/ — lattice_observer, golden_weave, bridges, mock daemon - scripts/ — compile, start, launch, setup (paths updated) - docs/ — system manual - archive/ — everything else (old kernels, inquiries, experiments) - README.md — full setup guide: requirements, quick start, use your own LLM - removed training/ entirely (broken LoRA scripts + datasets) - .gitignore: exclude build/ logs/ training/ *.jsonl
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
# entropy_injection_inference.py
|
||||
# GPU temperature / Asymmetry → Model temperature mapping
|
||||
# Hotter environment = Higher creativity (reaching into base Llama knowledge)
|
||||
|
||||
import zmq
|
||||
import json
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
from unsloth import FastLanguageModel
|
||||
import torch
|
||||
|
||||
def get_gpu_metrics():
|
||||
"""Get GPU temperature and power"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
['nvidia-smi', '--query-gpu=temperature.gpu,power.draw',
|
||||
'--format=csv,noheader,nounits'],
|
||||
capture_output=True, text=True, timeout=2
|
||||
)
|
||||
if result.returncode == 0:
|
||||
parts = result.stdout.strip().split(',')
|
||||
return {
|
||||
'temp_c': float(parts[0]),
|
||||
'power_w': float(parts[1])
|
||||
}
|
||||
except:
|
||||
pass
|
||||
return {'temp_c': 45.0, 'power_w': 50.0} # Default
|
||||
|
||||
def calculate_dynamic_temperature(gpu_temp, asymmetry):
|
||||
"""
|
||||
Entropy Injection: Hotter GPU or higher asymmetry = higher model temperature
|
||||
|
||||
Base: 40°C GPU, A=0 → T=0.3 (conservative)
|
||||
Hot: 70°C GPU, A=13 → T=1.2 (creative)
|
||||
"""
|
||||
# GPU temp component: 40°C → 0.0, 70°C → 0.6
|
||||
temp_factor = max(0, min(1, (gpu_temp - 40) / 30)) * 0.6
|
||||
|
||||
# Asymmetry component: A=0 → 0.0, A=13 → 0.6
|
||||
asym_factor = max(0, min(1, asymmetry / 13)) * 0.6
|
||||
|
||||
# Combined: base 0.3 + up to 0.9 additional
|
||||
temperature = 0.3 + (temp_factor + asym_factor) / 2
|
||||
|
||||
return min(1.4, temperature) # Cap at 1.4
|
||||
|
||||
print("="*70)
|
||||
print("ENTROPY INJECTION INFERENCE")
|
||||
print("GPU Temp / Asymmetry → Model Temperature")
|
||||
print("="*70)
|
||||
|
||||
# Load model
|
||||
print("\n[Loading Kaelara v0.9...]")
|
||||
model, tokenizer = FastLanguageModel.from_pretrained(
|
||||
model_name="unsloth/llama-3.2-3b",
|
||||
max_seq_length=512,
|
||||
dtype=torch.bfloat16,
|
||||
load_in_4bit=True,
|
||||
)
|
||||
|
||||
model = FastLanguageModel.get_peft_model(
|
||||
model,
|
||||
r=64, target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
|
||||
lora_alpha=128, lora_dropout=0, bias="none",
|
||||
use_gradient_checkpointing="unsloth", random_state=3407,
|
||||
)
|
||||
|
||||
from peft import PeftModel
|
||||
model = PeftModel.from_pretrained(model, "./kaelara_v09_scientist/final")
|
||||
print("✓ Model loaded")
|
||||
|
||||
# ZMQ
|
||||
ctx = zmq.Context()
|
||||
sub = ctx.socket(zmq.SUB)
|
||||
sub.setsockopt_string(zmq.SUBSCRIBE, "")
|
||||
sub.connect("tcp://127.0.0.1:5556")
|
||||
print("✓ ZMQ connected")
|
||||
|
||||
print("\n" + "="*70)
|
||||
print("ENTROPY INJECTION LOOP (5 cycles)")
|
||||
print("="*70)
|
||||
|
||||
for cycle_num in range(5):
|
||||
# Get LBM frame
|
||||
frame = None
|
||||
for i in range(50):
|
||||
try:
|
||||
msg = sub.recv(flags=zmq.NOBLOCK)
|
||||
frame = json.loads(msg.decode('utf-8'))
|
||||
break
|
||||
except zmq.Again:
|
||||
time.sleep(0.05)
|
||||
|
||||
if frame is None:
|
||||
print(f"[{cycle_num}] No data")
|
||||
continue
|
||||
|
||||
# Get GPU metrics
|
||||
gpu = get_gpu_metrics()
|
||||
|
||||
# Calculate dynamic temperature
|
||||
temp = calculate_dynamic_temperature(gpu['temp_c'], frame['asymmetry'])
|
||||
|
||||
print(f"\n[{cycle_num}] Cycle {frame['cycle']}")
|
||||
print(f" GPU: {gpu['temp_c']:.1f}°C, {gpu['power_w']:.1f}W")
|
||||
print(f" LBM: Asym={frame['asymmetry']:.2f}, Coh={frame['coherence']:.3f}")
|
||||
print(f" → Model Temperature: {temp:.2f}")
|
||||
|
||||
# Generate with dynamic temperature
|
||||
prompt = f"""Input: Asymmetry {frame['asymmetry']:.1f}, Coherence {frame['coherence']:.2f}, GPU {gpu['temp_c']:.1f}°C. Define the situation.
|
||||
|
||||
Output:"""
|
||||
|
||||
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
|
||||
outputs = model.generate(
|
||||
**inputs,
|
||||
max_new_tokens=80,
|
||||
temperature=temp,
|
||||
do_sample=True,
|
||||
top_p=0.9
|
||||
)
|
||||
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
||||
|
||||
# Extract just the output part
|
||||
if "Output:" in response:
|
||||
response = response.split("Output:")[-1].strip()
|
||||
|
||||
print(f" Response: {response[:100]}...")
|
||||
|
||||
print("\n" + "="*70)
|
||||
print("ENTROPY INJECTION COMPLETE")
|
||||
print("="*70)
|
||||
Reference in New Issue
Block a user