The first glimpse into Golem Unlimited
by Piotr Chromiec, Piotrek “Viggith” Janiuk
A few weeks ago we announced Golem Unlimited, and now, we are proud to share a demo featuring its first incarnation.
This is our product built for organizations with idle computing infrastructure. In Golem Unlimited we can find two roles: the hub acting as a requestor and provider nodes sharing resources. It is an open platform featuring an SDK for application development and deployment in trusted infrastructures, such as desktop computers in companies, LANs, datacenters or trusted P2P networks.
The goal of Golem Unlimited is manyfold. First of all, broadening the Golem Network reach. Each Golem Unlimited instance will be a separate subnetwork, which can be shared in the Golem network as a single provider. Secondly, these subnetworks may also be utilized by the business running them — for internal purposes only. We aim to provide a seamless experience regarding the set-up, use, and new integrations.
Due to the platform’s open nature and the compatibility with popular Operating Systems (Linux, Win, Mac) and hardware, Golem Unlimited will be easily accessible to developers and application integrators.
Golem Unlimited is based on a trusted environment, which enables building the platform without the overhead of the economic layer, reputation schemes, verification, and mandatory sandboxing. It simplifies the product and optimizes its efficiency.
Golem Unlimited is a part of the broader Golem ecosystem. Hence, it will support all Golem use cases.
The audience
Golem Unlimited is designed for specific users:
- owners of idle infrastructure (e.g., idle nodes in render farms can compute Golem tasks or mine cryptocurrencies)
- Companies with idle machines after working hours (e.g., cross-sharing computers between departments in different time-zones)
- teams sharing their machines’ power(e.g., lengthy tasks in open source projects can be distributed across members’ machines)
- Golem Network users computing tasks, which require low latency networks to run
Platform architecture
There are two functional roles in Golem Unlimited. The provider is a computer on which tasks within a Golem Unlimited subnetwork are run, whose sole purpose is to provide resources. The other role is the hub, a supervisor responsible for managing the providers (e.g., assign tasks, take care of load balancing).
Although the hub is exposed as a single entity, it may be hosted on more than one physical machine to assure availability.
The diagram above shows a network with a star topology featuring providers connected to the central hub. However, the Golem Unlimited infrastructure may also be organized as a P2P subnetwork, where each node trusts all other participants.
The Golem Unlimited infrastructure is in principle a heterogeneous network consisting of a variety of machines (desktops, laptops and multi-GPU servers). It is essential due to the expected resource utilization, which is highly app dependant (e.g., there are PoW algorithms that fit CPU and others that can be run only on a specific class of GPUs). Moreover, this design principle allows for an easy creation of homogeneous subnetworks.
A Golem Unlimited subnetwork can be connected to the Golem network as a single, powerful participant. More about this below.
Integration structure
New integrations are essential for Golem Unlimited. Our goal is to make it easy for developers to create their applications for the platform.
The Golem Unlimited SDK will feature an API, docs, tools, and tutorials. Although the Golem Unlimited core code is written in Rust, developers can use any language; as long as the REST API is supported.
Golem Unlimited utilizes a plugin system. Every integration needs a plugin and application binary packages.
Plugins can be dynamically loaded into- and removed from the gu-hub application by the maintainer. Binary packages are downloaded, unpacked and executed on selected provider nodes when the maintainer runs a session with the appropriate plugin.
We will ship several ready-to-use plugins to facilitate the understanding of the API. Two of them are already implemented, namely, number factorization and mining.
We will also show the rendering plugin, an integration that Brass Golem and Unlimited have in common. The first iteration is going to cover Blender rendering.
Golem meets Unlimited
With Golem Unlimited, the infrastructure maintainer will be able to add multi-machine resources to the Golem Network. In the simplest case, the entire Golem Unlimited subnetwork acts as a single, powerful provider (in such settings, tasks from Golem Network requiring Mesh or Grid infrastructure seem to be a perfect fit for Golem Unlimited).
This way, Golem Unlimited resources can be tied to the Golem Network economy.
In addition, the Golem Unlimited subnetwork acting as a single provider must conform to the Golem Network protocol (e.g., sandboxing and containerizing computations, but also providing appropriate TEE implementations such as the Graphene framework for Intel SGX).
To sum up…
We are at the start of an adventure called Golem Unlimited. For the time being the code base consists of the core backend code written in Rust and web frontend written in AngularJS.
We want it to be easily adaptable. Building the integer factorization plugin from scratch required just a few hours of work of one programmer. And as shown in the demo, the Golem Unlimited setup only takes a few minutes.
Our code base will be opened in some weeks. We’re also going to continue the integration of additional use cases.
Let us know which features you are interested in and dare to propose new ones. Looking forward to seeing your ideas!!