@@ -156,19 +156,32 @@ async def query_miners(
156156 return ""
157157 return str (result )
158158
159+ async def query_miners_with_times (
160+ self , body : dict [str , Any ], endpoint : str , hotkey : str | None = None , timeout : float = TIMEOUT
161+ ) -> tuple [str , float ]:
162+ """Query the miners for the query."""
163+ start_time = time .time ()
164+ result = await self .query_miners (body , endpoint , hotkey , timeout )
165+ return result , time .time () - start_time
166+
159167 async def query_generators (self , query : str ) -> MinerGeneratorResults :
160168 """Query the miners for the query."""
161169 miner_information = await self ._sample_miners (sample_size = self ._generator_sample_size )
162170 body = {"step" : "generator" , "query" : query }
163171
164172 hotkeys : list [str ] = []
165- tasks : list [Coroutine [str , str , Any ]] = []
173+ tasks : list [Coroutine [tuple [ str , float ] , str , Any ]] = []
166174
167175 for miner_info in miner_information :
168176 hotkeys .append (miner_info .hotkey )
169- tasks .append (self .query_miners (body = body , endpoint = miner_info .address , hotkey = miner_info .hotkey ))
177+ tasks .append (self .query_miners_with_times (body = body , endpoint = miner_info .address , hotkey = miner_info .hotkey ))
170178 generator_results = await asyncio .gather (* tasks )
171- return MinerGeneratorResults (query = query , generator_hotkeys = hotkeys , generator_results = generator_results )
179+ return MinerGeneratorResults (
180+ query = query ,
181+ generator_hotkeys = hotkeys ,
182+ generator_results = [result [0 ] for result in generator_results ],
183+ generator_times = [result [1 ] for result in generator_results ],
184+ )
172185
173186 async def query_discriminators (
174187 self ,
@@ -181,19 +194,20 @@ async def query_discriminators(
181194 miner_information = await self ._sample_miners (sample_size = self ._discriminator_sample_size )
182195 # Flip the coin for the generator.
183196 if ground_truth and generator_results :
184- selected_generator : tuple [str , str ] = random .choice (
197+ selected_generator : tuple [str , str , float ] = random .choice (
185198 list (
186199 zip (
187200 generator_results .generator_hotkeys ,
188201 generator_results .generator_results ,
202+ generator_results .generator_times ,
189203 strict = False ,
190204 )
191205 )
192206 )
193207 else :
194208 if reference is None :
195209 raise ValueError ("Reference cannot be None when not using miner generator results" )
196- selected_generator = (VALIDATOR_REFERENCE_LABEL , reference )
210+ selected_generator = (VALIDATOR_REFERENCE_LABEL , reference , 0.0 )
197211
198212 body = {
199213 "step" : "discriminator" ,
@@ -202,7 +216,7 @@ async def query_discriminators(
202216 }
203217
204218 hotkeys : list [str ] = []
205- tasks : list [Coroutine [str , str , Any ]] = []
219+ tasks : list [Coroutine [tuple [ str , float ] , str , Any ]] = []
206220 for miner_info in miner_information :
207221 hotkeys .append (miner_info .hotkey )
208222 tasks .append (self .query_miners (body = body , endpoint = miner_info .address , hotkey = miner_info .hotkey ))
@@ -244,6 +258,7 @@ async def query_discriminators(
244258 generator_hotkey = selected_generator [0 ],
245259 generator_result = selected_generator [1 ],
246260 generator_score = generator_result_float ,
261+ generator_time = selected_generator [2 ],
247262 discriminator_hotkeys = hotkeys ,
248263 discriminator_results = parsed_discriminator_results ,
249264 discriminator_scores = discriminator_results_float ,
0 commit comments