Democratizing Computing Power
How to apply the principles of the sharing economy to computing power resources in less than 48 hours.
A couple of weeks ago we held our annual hackathon at Wolox. A two-day non-stop event where multifunctional teams are expected to implement a prototype for a product idea. At the end of the hackathon, each team must deliver a 3-minute pitch in front of a panel of judges. The teams are evaluated based on different criteria such as pitch delivery, UX, business model and prototype quality.
A month prior to the hackathon, woloxers are encouraged to submit ideas. In order to be accepted an idea must meet certain criteria or technologies, e.g: virtual reality, augmented reality, machine learning or blockchain. Then there is a period where the selected ideas are published and Woloxers are able to join the teams (or ideas). Up to 6 members per idea.
I decided to submit an idea that was in the back of my head for while but I never had the chance to really research. Over the last few months, I’ve been interested in doing something with blockchain technology. I’d been reading up on machine learning for a class I was preparing on neural networks and that was when it clicked.
Neural network algorithms usually need a cluster of GPUs in order to train their models much faster than a regular computer would do. Having to maintain your own cluster is expensive and complex and getting a cloud-based cluster on services like AWS is also expensive, compared to a cluster of regular EC2 instances. Getting access to such technology for someone that wants to do research or bootstrap a startup idea could be a deal breaker when you consider the actual cost of hardware or cloud services.
Thanks to penetration of smartphones in the market most people carry a GPU with them in their pockets. Those slick animations or cool 3D games you play on your phone are powered by the GPU. But when your phone’s screen is turned off the GPU is doing absolutely nothing. What if we could still use all those resources that are idle even when you don’t use your phone?
This is how GPUse was born.
How does this work?
GPUse is a decentralized network of smartphones that executes tasks that require a GPU in exchange for money, in this case, Bitcoin. Users that want to contribute their phone’s GPU to the network can do so by installing GPUse’s mobile app. The app lets you configure a time frame to start accepting work, most likely around the time you go to sleep. Then it detects if the phone is fully charged, power connected with a WiFi connection, and from there it begins receiving job requests from the network. When a job is processed the network transfers Bitcoins to the phone’s owner based on the amount of time it took to process the job.
In a nutshell
The users get paid for renting their phone’s GPU while they are not using it. Think of it as the Uber for unused phone’s processing power.
Users that want to process information that requires GPU can distribute the workload over the network and pay far less for the same “net” computing power they can get in a cluster on a service like EC2. (By net computing power I mean the total sum of all the theoretical power from all the GPU in the network). The idea is that although the GPUs available in a service like AWS are way more powerful than the GPU in an average smartphone, the size of GPUse network is theoretically bigger than Amazon’s. You compensate the power of one AWS GPU by using a lot of phones that have less powerful GPUs.
After almost 30 hours of no sleep and hacking, we managed to build a proof-of-concept. We made an iOS app that connects to a server that distributes work. To simplify what we mean by work we made a web app that lets users upload a video and a filter (implemented as an OpenGL (ES) shader). The server in charge of distributing work gives each frame to a different phone which then applies the filter and returns the resulting frame. Once all frames have been processed the resulting video is assembled and returned to the user that submitted the job. Finally, Bitcoin transactions are performed between the user and each phone that processed frames.
Although this is just a prototype, it is clear that GPUse has great potential. Besides being a great experience to work as a team, and get to know other woloxers, we got 2nd place!
In the following months, we plan to explore this idea further and evaluate the viability to transform this into a usable product. If you want to know more about GPUse or want to ask any question drop a comment below or Tweet at me @guidomb.