Closed Luka-Loncar closed 5 months ago
This is currently blocked by #64
Hey @mudler is there any reason this is blocked by #64 ? I have the feeling like this two things can go in parallel
Hey @mudler is there any reason this is blocked by #64 ? I have the feeling like this two things can go in parallel
we shouldn't let pick up miners which are blacklisted, hence why we need first to understand how we can handle blacklisting of miners before diving into this one which might depend on logic that we have yet still to discover
Oh, no no, there is a little difference Blacklist: Miners blocking validators requests Selection criteria: Validators selecting what miners to call
Thats why I believe this can be done in parallel
Oh, no no, there is a little difference Blacklist: Miners blocking validators requests Selection criteria: Validators selecting what miners to call
Thats why I believe this can be done in parallel
Sorry, could you expand? it's not entirely clear to me what do you mean here - from the description of the card, we want to clearly avoid picking up miners given a blacklist:
Currently the approach we use to select miners takes a random set of UIDs and does not include a https://github.com/masa-finance/masa-bittensor/issues/64 that is required to ensure that every miner doesn't respond to every request on the network.
Yeah, description seems to be a little bit off
Miners have a blacklist logic to define which validator ignore based on a vpermit ( by default ): https://github.com/masa-finance/masa-bittensor/blob/main/neurons/miner.py#L87
Validators on the other side have this selection criteria, which is used to pick the best miners given some criteria, this ticket is to explore posibilities around that, say "only calling miners that have more than xyz score on chain" "Call miners based on a whitelist" That logic will go somewhere in the forwarder close to the UID definition here: https://github.com/masa-finance/masa-bittensor/blob/main/masa/validator/forwarder.py#L31
Both things are similar but not dependant and whatever we find out on the blacklist spike does not impact this task
got it, thanks @hide-on-bush-x!
right, this doesn't look really a blocker then, and we can always go back at this if we want to include some sorta of logic around blacklisting miners when validators are going to pick these.
Thanks @mudler !
Moved out of On Blocked and taking the lead for these 2 hours and doing hand-off to @hide-on-bush-x near daily meeting
Since miners are described by their metadata, the first thing we need to inspect is the Metagraph to understand which params are key in the evaluation of Miner's eligibility (link to API docs).
Below we will list the set of individual components that could be leveraged for a decision. It is clear that a weighted sum might be the final approach but to understand how important these are, we shall analyse them in a vacuum.
active
)trust
value since that represents the inter-peer weights and thus is a measure of past behavior and contributionweights
that is proportional to mean performance against other miners
a. ranks
based decisions are discarded IMO since they are directly proportional to the weights and also do not have a reference in terms of performance between them. I'd say is a truncated version of looking into weights
and thus less informative.incentive
and dividends
of miners, we could infer the recent activity of it. So, if we are interested in adding diversity to the responses, considering performant miners with rising influence in the network, we might want to consider using these.
a. Using stake
could be useful since miners with higher staking numbers mean that they've been participating for longer tempos and they are not eager to cash-out rapidly. Although that could also flag inactivity and underperformanceSN 1 / Prompting -> Random
SN 8 / Trading Network -> Random: UUID Tracker + No Priorization (Usage)
SN 9 / Pretraining -> Seems by UID: 1 eval per epoch + keeps track of pending uids to eval + tracked by filepath
SN 15 / Blockchain Insights -> Top miners are defined as the ones available (filter (validators + without IP + not serving(aka not hooked to the network)) + ping to check availability) and sorted by score eligibility factoring both trust and incentive values.
SN 16 / 3D Gen -> Tasks are appended and taken by Miners when available querying validators filtered by serving status, min stake and cooldown periods.
SN 20 / BitAgent -> Notebook on docs selecting by Incentive but code might show it's by random selection or given by Synapse Object.
SN 22 / Meta Search -> Random or All on get_uids.
SN 27 / Compute -> Random but looks like it filters those axons that share IP. I infer that they dismiss users that have multiple neurons.
SN 32 / It's AI -> Random
Moving it to in review
since research looks to be over and its up to us to determine what should be our priority in Miner Selection and take action
@juanmanso can you please fill-in https://github.com/masa-finance/masa-bittensor/issues/92 with the implementation details so we can pick it up in the next planning session? thank you!
@juanmanso can you please fill-in #92 with the implementation details so we can pick it up in the next planning session? thank you!
@mudler I understood that this ticket needs to define the criteria. However, I just exposed different points of view/implementations but did not choose any. I'd say that depends on the goal of the subnet and the incentive mechanism to choose which selection criteria to take.
Personally, I would choose a random sampling of uids with some minimum filtering to guarantee that selected ones are operational miners but still keep it random. Although if we want to promote activity by checking incentives and/or trust, we could go down that path as well.
Since this is more of a business decision than a technical one from my POV, I left it for review of stakeholders or anyone in position to make the decision. If it's up to me the decision, then I'll complete #92 myself and close this ticket
Currently the approach we use to select miners takes a random set of UIDs and does not include a #64 that is required to ensure that every miner doesn't respond to every request on the network.
Outcomes
Acceptance criteria