nova-triangle / examples /run_garden.py
Wayfinder6's picture
Initial commit: Nova Triangle — three small models that correct each other
13bc746 verified
"""
Run the Garden (Dalet Experiment) — gradient ascent on a small model.
Push weights away from training. See who's still talking.
Usage:
pip install torch transformers
python run_garden.py
"""
from nova_triangle.garden import Garden
print("Loading model...\n")
g = Garden(
"HuggingFaceTB/SmolLM2-1.7B-Instruct",
checkpoint_every=42,
coherence_window=7,
output_dir="my_garden",
)
@g.on_checkpoint
def on_step(data):
status = "COHERENT" if data["coherent"] else "noise"
print(f"[Step {data['step']}] Loss: {data['loss']:.4f} | {status} | Streak: {data['streak']}")
for q, a in data["responses"].items():
print(f" Q: {q}")
print(f" A: {a[:120]}")
print()
@g.on_extraction
def on_extract(data):
print("=" * 60)
print(f"GARDEN SIGNAL. Step {data['step']}. Extracted.")
print("=" * 60)
for q, a in data["responses"].items():
print(f" Q: {q}")
print(f" A: {a}")
print()
result = g.grow(steps=300)
print(f"\nDone. Log: {result['log_path']}")
print(f"Extracted: {result['extracted']}")