Structure of Panthalia
Panthalia is divided into subnets. Each subnet is a separate marketplace for compute for a specifically defined unit of compute. For example, a subnet may define that each task contains at least 5 minutes on a node with 4 RTX 4090 GPUs. Each subnet matches bid (buy) and ask (sell) orders for this unit of compute.
Each subnet is divided into jobs. Each job trains a specific model via a process defined by a piece of code called a plugin. The job trains the model by creating bid orders and tasks on behalf of the compute buyer. When the bid orders are filled (matched with ask orders), the worker that submitted the ask order is assigned the task. The worker then contributes to the job by executing the task. Usually, this means synchronizing the model and calculating gradients. So a job trains a model by subdividing the training into tasks and distributing them to workers.
When a bid order is submitted, Panthalia creates a hold on the buyer's account for the bid price. This hold is charged when the task is successfully completed. For an ask order, Panthalia creates a hold on the seller's account for the ask price multiplied by the subnet's stake multiplier. This hold is released when the task is successfully completed, and charged if it is not submitted or fails a check.