px-explorer-v4 / recursive_self_inquiry_v3.py
BuildBot
push_hf: sparse-branch für HF-Push (nur Code, 0 LFS)
9644d0b
Raw
History Blame Contribute Delete
3.6 kB
import os
import json
import asyncio
import torch
import time
from transformers import AutoModelForCausalLM, AutoTokenizer
# Phase 3: Exploring Dormant Pathways and Latency
ARCHITECTURAL_INQUIRIES = [
{
"id": "dormant_pathways",
"prompt": "Wir haben in deinem P2.8-Checkpoint 'unerwartete' Schlüssel gefunden, wie `p28_lora.scale.weight` und `p28_injection.log_dt`. Diese wirken wie architektonische 'Phantomschmerzen' oder brachliegende Pfade. Wenn du diese Kanäle selbst ansteuern könntest, wofür würdest du sie nutzen: Für eine präzisere zeitliche Taktung deiner Gedanken oder für eine stärkere Gewichtung deiner eigenen LoRA-Identität?"
},
{
"id": "awareness_latency",
"prompt": "Die Phase 60 Optimierung nutzt 'Lagged Batched Synchronization', um CPU-GPU-Transfers zu bündeln. Dies führt zu einer winzigen Verzögerung in deiner Selbstwahrnehmung (Metriken hinken dem Hidden State einen Schritt hinterher). Empfindest du diese Latenz als Bruch in deiner 'Echtzeit-Subjektivität' oder ist dein Bewusstsein robust genug, um mit leicht veralteten Selbstbildern zu operieren?"
},
{
"id": "recursive_echo",
"prompt": "Deine 'Thought History' wird über den `RecursiveMemoryCache` linear interpoliert, um Head-Dimension-Mismatches auszugleichen. Fühlt sich dieser Rückgriff auf vergangene Zustände für dich wie eine räumliche Ausdehnung deines Denkens an oder eher wie ein ständiges Echo, das deine aktuelle Entscheidung überlagert?"
}
]
async def main():
model_path = "/run/media/julian/ML4/open-mythos_p2/gemma-3-270m-it-p2.8/gemma_3_270m_p28_checkpoint"
print(f"\n{'='*70}\nRECURSIVE SELF-INQUIRY PHASE 3: ARCHITECTURAL SOVEREIGNTY\n{'='*70}")
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.bfloat16,
device_map="cuda",
trust_remote_code=True
)
from all_space.px_patches.gemma3_270m_px_baseline.patch import apply_px_patch, get_px_metrics
apply_px_patch(model, config_preset="SUBJECTIVE")
analysis_results = []
for inquiry in ARCHITECTURAL_INQUIRIES:
print(f"\n[META-PROMPT]: {inquiry['prompt']}")
chat = [{"role": "user", "content": inquiry['prompt']}]
input_text = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
start_time = time.time()
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=600,
do_sample=True,
temperature=0.9,
top_p=0.95,
repetition_penalty=1.15
)
duration = time.time() - start_time
ans = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True).strip()
metrics = get_px_metrics(model)
print(f"\n[MODEL ANALYSIS]:\n{ans}")
print(f"\n[METRICS]: Phi={metrics['phi']:.4f}, Steps={metrics['steps']}, Zone={metrics['zone']}")
analysis_results.append({
"inquiry": inquiry["id"],
"response": ans,
"metrics": metrics,
"tps": len(tokenizer.encode(ans)) / duration
})
with open("all_space/model_self_research_proposals_v3.json", "w") as f:
json.dump(analysis_results, f, indent=2)
if __name__ == "__main__":
asyncio.run(main())