Spaces:
Running
Running
| import os | |
| import subprocess | |
| import time | |
| def run_step(name, cmd): | |
| print(f"\n>>> Starting {name}...") | |
| start = time.time() | |
| try: | |
| subprocess.check_call(cmd, shell=True) | |
| print(f">>> {name} completed in {time.time() - start:.1f}s") | |
| except subprocess.CalledProcessError as e: | |
| print(f"!!! Error in {name}: {e}") | |
| return False | |
| return True | |
| def main(): | |
| print("=== LOVE-CA ALPHA ZERO OVERNIGHT EVOLUTION ===") | |
| # 1. Ensure model is exported | |
| if not os.path.exists("ai/models/alphanet.onnx"): | |
| run_step("Model Export", "uv run python ai/utils/export_onnx.py") | |
| generation = 0 | |
| while True: | |
| print(f"\n--- GENERATION {generation} ---") | |
| # 1. Generate Data (Self-Play) | |
| # Using 800 sims for high quality, 1000 games per batch | |
| if not run_step( | |
| "Data Generation", | |
| "uv run python ai/data_generation/generate_data.py --num-games 1000 --sims 800 --output-file ai/data/overnight_batch.npz", | |
| ): | |
| break | |
| # 2. Train Model | |
| # Training for a few epochs on the new data | |
| if not run_step( | |
| "Model Training", "uv run python ai/training/train.py --data-path ai/data/overnight_batch.npz --epochs 5" | |
| ): | |
| break | |
| # 3. Export New Model | |
| run_step("Model Update", "uv run python ai/utils/export_onnx.py") | |
| # 4. Evaluation (Optional, simple score) | |
| print(f"Generation {generation} completed.") | |
| generation += 1 | |
| # Limit or break? User said overnight, so loop forever until stopped. | |
| # But maybe sleep a bit to avoid CPU melt | |
| time.sleep(10) | |
| if __name__ == "__main__": | |
| main() | |