Spaces:
Sleeping
Sleeping
import random | |
import copy | |
class EvoTransformer: | |
def __init__(self): | |
self.history = [] | |
self.base_config = { | |
"layers": 4, | |
"attention_heads": 4, | |
"ffn_dim": 1024, | |
"dropout": 0.1, | |
"memory": False | |
} | |
def reset(self): | |
self.history = [] | |
def mutate(self, config): | |
new_config = copy.deepcopy(config) | |
if random.random() < 0.5: | |
new_config["layers"] = min(12, max(1, new_config["layers"] + random.choice([-1, 1]))) | |
if random.random() < 0.5: | |
new_config["attention_heads"] = min(12, max(1, new_config["attention_heads"] + random.choice([-1, 1]))) | |
if random.random() < 0.5: | |
new_config["ffn_dim"] = min(4096, max(128, new_config["ffn_dim"] + random.choice([-512, 512]))) | |
if random.random() < 0.5: | |
new_config["dropout"] = round(min(0.5, max(0.0, new_config["dropout"] + random.choice([-0.02, 0.02]))), 2) | |
if random.random() < 0.3: | |
new_config["memory"] = not new_config["memory"] | |
return new_config | |
def run_evolution(self, generations=5): | |
current = self.base_config | |
self.history.append(current) | |
for _ in range(generations - 1): | |
current = self.mutate(current) | |
self.history.append(current) | |