exo-explore / exo

Run your own AI cluster at home with everyday devices 📱💻 🖥️⌚
GNU General Public License v3.0
10.47k stars 594 forks source link

Combine with the Bitcoin blockchain reward mechanism #230

Open jkm199 opened 3 weeks ago

jkm199 commented 3 weeks ago

I have an idea to combine this project with a mechanism similar to Bitcoin. All devices worldwide would be connected through a P2P network protocol, providing distributed computing power. Participants running this network would automatically receive some rewards. These rewards can be freely transferred and traded, and they can also be used for API calls as a form of consumption.

JohnLee1360 commented 3 weeks ago

Great, that's what I think as well ! As a postgraduate student, I am doing research on it. Let's contribute it~

vanakema commented 3 weeks ago

Intriguing... Can you expand on that? Are you talking about just doing distributed mining? That's pretty much already done, and they're called mining pools. You can find many you can participate in.

Zaf9670 commented 2 weeks ago

So Folding@Home meets LLM and your reward is a token? It's not a terrible idea but depends on if the coin can actually hold any value and if the network will actually grow.

Petals tried something but without the token/reward portion. Also not sure if these limited license models will conflict with trying to give any sort of value to the computation. I know most have a non-commercial clause generally.

larson-carter commented 2 weeks ago

I have started working on this. In particular a baby step of utilizing a tracker system. Very very buggy but here is the start:

Going to migrate to a BitTorrent/Tor like example in the next few days.

Then can explore tokenization of Folding@Home and or Blockchain mechanisms.

I hope by the end of next week to deploy my tracker on my public server and then allow others to use my fork of exo to join it then we can do a WANified GPU Cluster.

vanakema commented 2 weeks ago

Just some thoughts: it would be wise to implement some sort of latency validation/requirements as part of the reward mechanism or it would be very easy for a bad actor to lock up the network by starting a bunch of nodes that don't actually reply, and since they aren't doing any actual work, you can effectively disable the whole network by just starting thousands of nodes, reducing the probability of your request getting served by a valid node to be pretty much unusable. Your network has to essentially work in a trustless fashion. Luckily it's probably not immediately a concern since this is a low enough visibility project. But keep it in mind.

You can take a look at the ethereum spec. The staking of eth allows slashing as punishment for doing bad things. You could look into doing something like that using smart contracts and the eth python sdk. An important key to smart contracts is keeping it as simple as possible. Ideally you formally verify it with something like yices to verify it's impossible for it to get into a "locked" state that you can't recover funds from, or be exploited.

FFAMax commented 2 weeks ago

So probably the idea was not about money but about tracking and contributing spare resources and have chance to take it back when you need. The same principle was used a lot of years ago for torrents to track who seed how much to allow download based on that. This will require AAA, 3rd party service to just keep it running. Like a broker. In a trivial case should be enough manually add truster peers. No accounting, just to allow share resources.

vanakema commented 2 weeks ago

Ultimately, if you are able to trade the credits with other people as is mentioned in the OP, you are creating a token that has value, and it will turn into a form of digital currency. It always does, whether it's roblox or bitcoin lol.

Bitcoin's blockchain reward mechanism only works starting with no one having no money because the actual compute itself is used to generate a valid block which then starts the existence of value in the network. Eth relies on the staking of money and a majority of nodes being trustworthy (enforced by human behavior of economics, and already seeded with money from the eth1 days). That's why I brought up the idea of some form of staking.

How would you handle a brand new network where no one has contributed anything to the network? Do you get credit for yourself for you using your own compute? In that case why not just constantly compute on your own device then to constantly generate inference credits?

As for a 3rd party service acting as a broker, you wouldn't need that I think if you just build on top of an existing p2p network with smart contracts.

You could do a private folding@home type situation, but then you'd really just have to trust that everyone's gonna behave. At that point couldn't you just do ssh port forwarding between you and your trusted friends to connect your exo nodes?

Side note: the network latency is gonna be your biggest bottleneck too. The difference in performance between direct thunderbolt and node communication over wifi/ethernet is huge. Curious how one would solve that issue. Maybe compression?