Skip to content

Commit 8813868

Browse files
authored
Merge branch 'main' into feat/reserved-weights
2 parents c6f1a11 + b3c4b1f commit 8813868

File tree

5 files changed

+34
-11
lines changed

5 files changed

+34
-11
lines changed

neurons/validators/genie_validator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ async def query_miners(self):
8484
SeoChallenge,
8585
#QualityChallenge,
8686
SeoChallenge,
87-
BalancedChallenge,
87+
SeoChallenge,
88+
SeoChallenge,
8889
]
8990

9091
with self.lock:

neurons/validators/score_manager.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from typing import List
99

1010
from webgenie.base.neuron import BaseNeuron
11+
1112
from webgenie.challenges.challenge import Challenge, RESERVED_WEIGHTS
1213
from webgenie.constants import CONSIDERING_SESSION_COUNTS, __STATE_VERSION__, WORK_DIR
1314
from webgenie.helpers.weights import save_file_to_wandb
@@ -133,13 +134,11 @@ def update_scores(self, rewards: np.ndarray, uids: List[int], challenge: Challen
133134
self.total_scores[uids] += rewards
134135
self.solved_tasks[uids] += 1
135136

136-
avg_scores = np.zeros(self.neuron.metagraph.n, dtype=np.float32)
137-
for uid in range(self.neuron.metagraph.n):
138-
if self.solved_tasks[uid] >= max(1, self.number_of_tasks / 2):
139-
avg_scores[uid] = self.total_scores[uid] / self.solved_tasks[uid]
140-
else:
141-
avg_scores[uid] = 0
142-
winner = np.argmax(avg_scores) if max(avg_scores) > 0 else -1
137+
winner = self.get_winner(
138+
self.total_scores,
139+
self.solved_tasks,
140+
self.number_of_tasks,
141+
)
143142

144143
current_session_results = {
145144
"session": session,
@@ -160,13 +159,31 @@ def update_scores(self, rewards: np.ndarray, uids: List[int], challenge: Challen
160159

161160
console = Console()
162161
self.print_session_result(session, console)
162+
163+
def is_blacklisted(self, uid: int):
164+
blacklisted_coldkeys = ["5G9yTkkDd39chZiyvKwNsQvzqbbPgdiLtdb4sCR743f4MuRY"]
165+
return self.neuron.metagraph.axons[uid].coldkey in blacklisted_coldkeys
166+
167+
def get_winner(self, total_scores: np.ndarray, solved_tasks: np.ndarray, number_of_tasks: int):
168+
avg_scores = np.zeros(self.neuron.metagraph.n, dtype=np.float32)
169+
for uid in range(self.neuron.metagraph.n):
170+
if self.is_blacklisted(uid):
171+
continue
172+
173+
if solved_tasks[uid] >= max(1, number_of_tasks - MAX_UNANSWERED_TASKS):
174+
avg_scores[uid] = total_scores[uid] / solved_tasks[uid]
175+
else:
176+
avg_scores[uid] = 0
177+
winner = np.argmax(avg_scores) if max(avg_scores) > 0 else -1
178+
return winner
163179

164180
def get_scores(self, session_upto: int):
165181
scores = np.zeros(self.neuron.metagraph.n, dtype=np.float32)
166182
for session_number in self.session_results:
167183
if (session_number <= session_upto - CONSIDERING_SESSION_COUNTS or
168184
session_number > session_upto):
169185
continue
186+
170187
try:
171188
winner = self.session_results[session_number]["winner"]
172189
competition_type = self.session_results[session_number]["competition_type"]
@@ -175,6 +192,7 @@ def get_scores(self, session_upto: int):
175192
scores[winner] += RESERVED_WEIGHTS[competition_type]
176193
except Exception as e:
177194
bt.logging.warning(f"Error getting scores: {e}")
195+
178196
return scores
179197
# scores = np.zeros(self.neuron.metagraph.n, dtype=np.float32)
180198
# tiny_weight = 1 / 128
@@ -212,7 +230,7 @@ def print_session_result(self, session_upto: int, console: Console):
212230

213231
avg_scores = np.zeros(self.neuron.metagraph.n, dtype=np.float32)
214232
for uid in range(self.neuron.metagraph.n):
215-
if solved_tasks[uid] >= max(1, number_of_tasks / 2):
233+
if solved_tasks[uid] >= max(1, number_of_tasks - MAX_UNANSWERED_TASKS):
216234
avg_scores[uid] = scores[uid] / solved_tasks[uid]
217235
else:
218236
avg_scores[uid] = 0

neurons/validators/validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def __init__(self, config=None):
8181

8282
if not AXON_OFF:
8383
self.serve_axon()
84-
84+
8585
def resync_metagraph(self):
8686
# Copies state of metagraph before syncing.
8787
previous_metagraph = copy.deepcopy(self.metagraph)

webgenie/constants.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import psutil
44
# Change this value when updating your code base.
55
# Define the version of the webgenie.
6+
67
__VERSION__ = "1.1.20" # version
78

89
SPEC_VERSION = (
@@ -81,14 +82,16 @@
8182

8283
WANDB_ENTITY_NAME = os.getenv("WANDB_ENTITY_NAME") # wandb entity name
8384

84-
VPERMIT_TAO_LIMIT = 1000 # vpermit tao limit
85+
VPERMIT_TAO_LIMIT = 100000 # vpermit tao limit
8586

8687
AXON_OFF = os.getenv("AXON_OFF", "False").lower() == "true" # axon off
8788

8889
NEURON_EPOCH_LENGTH = int(os.getenv("NEURON_EPOCH_LENGTH", 25)) # neuron epoch length
8990

9091
MAX_NUMBER_OF_TASKS_PER_SESSION = 18 # max number of tasks per session
9192

93+
MAX_UNANSWERED_TASKS = 3 # max unanswered tasks
94+
9295
NUMBER_OF_CONCURRENT_WORKERS = max(
9396
1,
9497
min(

webgenie/rewards/quality_reward.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ async def _get_score(self, solution: Solution) -> float:
3434
return 0
3535

3636
async def reward(self, task: Task, solutions: List[Solution]) -> np.ndarray:
37+
return np.array([1.0] * len(solutions))
3738
bt.logging.info(f"Rewarding task in quality reward")
3839
get_score_tasks = [self._get_score(solution) for solution in solutions]
3940
scores = await asyncio.gather(*get_score_tasks)

0 commit comments

Comments
 (0)