Combinatorial Double Auction Algorithm

onsider a vector of service providers 𝑹 = βŸ¨π‘…1,𝑅2,...,π‘…π‘›βŸ© and inference tasks 𝑻 = βŸ¨π‘‡1, 𝑇2, ..., π‘‡π‘šβŸ©. Additionally, each inference task should be represented as 𝑇𝑖 = βŸ¨πΆπ‘–,1𝑑1,𝐢𝑖,2𝑑2,...𝐢𝑖,π‘˜π‘‘π‘˜βŸ© where 𝐢𝑖,𝑗 represents the demand for each of the π‘˜ inference task types (e.g. each of the machine learning model types). Let 𝑣𝑖 represent the adjusted valuation of computing the sub-task 𝑇𝑖, which reflects factors imposed by the demand such as the slashing mechanism discussed in Section 6. Let 𝑺 be the set 𝑆𝑗 = (𝒔𝒋, 𝑀𝑗, 𝑐𝑗) where 𝒔𝒋 represents the 𝑗- th resource (e.g. CPU processing power). 𝑀𝑗 represents the maximum number of units of service that device 𝑗 can provide for each resource type 𝑠𝑗,𝑖 and 𝑐𝑗 represents the true adjusted valuation of the 𝑖-th device’s cost.

We can construct a matrix 𝐴 ∈ 𝑀{π‘šΓ—π‘›}(πŸ™) such that 𝐴𝑖,𝑗 = {1 𝑅𝑗 accepts the 𝑖 -th task

0 else

Indeed, βˆ‘π‘šπ‘˜=1 π΄π‘˜,𝑗 ≀ 1, for 1 ≀ 𝑗 ≀ 𝑛 since a model can strictly accept only one model inference. Let the additional cost function be defined by 𝑒𝑖 = 𝑑𝑖 log𝛼(𝑑𝑖) + 𝛽 where 𝛼, 𝛽 ∈ Z+. Then, a utility function for users can be defined as

utility𝑒𝑖 = {𝑣𝑖 βˆ’ (trade price𝑖 + 𝑒𝑖) if the 𝑖 -th task wins 0 else

Similarly, the utility function for service providers can be defined as

utility𝑝𝑗 = {trade price𝑗 βˆ’ βˆ‘π‘›π‘–=1 𝐴𝑖,𝑗 if the 𝑗 -th task wins 0 else

We must optimize the function max(βˆ‘π‘šπ‘–=1 utility𝑒𝑖 βˆ’ βˆ‘π‘›π‘—=1 utility𝑝𝑗 ) such that:

π‘š βˆ‘ 𝐴𝑖,𝑗 ≀ 𝑀𝑗 For each user device

𝑖=1 𝐴𝑖,𝑗 ∈ [0,1],βˆ€π‘– ∈ [1,π‘š],𝑗 ∈ [1,𝑛]

If the provider fails to complete the task within the alloted time, the task will be inserted back into the auction with a higher demand 𝑣𝑖.

Last updated