Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 40 additions & 22 deletions src/protocol/pay-per-task.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,52 @@
---
title: Pay Per Task Model
description:
Pricing model and task categories for iExec protocol, including computing and
deal time limits.
description: Pay-per-task categories, time limits, and claim rules..
---

# Pay per task model
# Task size: pay-per-task

Check warning on line 6 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L6

[Google.Headings] 'Task size: pay-per-task' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'Task size: pay-per-task' should use sentence-style capitalization.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 6, "column": 3}}}, "severity": "WARNING"}

We are introducing a new method for pricing and we have defined several task
categories that describe the execution boundaries. We'll setup a test
infrastructure so that application developers can evaluate the category of their
submissions. Conversely, worker pools will be able to benchmark their
infrastructures against the reference machine.
Pay-per-task categories, time limits, and claim rules.

In the future, we'll redefine the categories, and provide more advanced tools
for helping developers to maximize the usage of the infrastructure
## Pay-per-task model

We base the pay-per-task model on task size categories. Each category defines

Check warning on line 12 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L12

[Google.We] Try to avoid using first-person plural like 'We'.
Raw output
{"message": "[Google.We] Try to avoid using first-person plural like 'We'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 12, "column": 1}}}, "severity": "WARNING"}
two limits:

- Maximum Computing Time (C): per-task execution time on the worker. If the task

Check notice on line 15 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L15

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 15, "column": 26}}}, "severity": "INFO"}
exceeds C, the worker stops the task and marks it as failed.
- Maximum Deal Time (D): overall time window for a task in the deal. If the task

Check notice on line 17 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L17

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 17, "column": 21}}}, "severity": "INFO"}
isn’t completed within D, the requester can claim the task. On claim, the
requester can recover the RLC engaged for this task.

**Categories Description:**

| **Category** | **Maximum Computing Time (C)** | **Maximum Deal Time (D)** |
| ------------ | ------------------------------ | ------------------------- |
| 0 – XS | 5 min | 50 min |
| 1 – S | 20 min | 200 min (3h20m) |
| 2 – M | 1 hour | 10h |
| 3 – L | 3 hour | 30h (1d6h) |
| 4 – XL | 10 hour | 100h (4d4h) |

- Each worker will allocate **C** minutes to compute the application. If the
computation is not completed within this **Maximum Computing Time**, the
running application will be stopped.
- From a buyer perspective, a requester will be able to claim a task of a deal
after **D** minutes if the task is not completed within the **Maximum Deal
Time**.
| 1 – S | 20 min | 200 min |

Check failure on line 26 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L26

[Google.EmDash] Don't put a space before or after a dash.
Raw output
{"message": "[Google.EmDash] Don't put a space before or after a dash.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 26, "column": 4}}}, "severity": "ERROR"}
| 2 – M | 1 hour | 10 hours |

Check failure on line 27 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L27

[Google.EmDash] Don't put a space before or after a dash.
Raw output
{"message": "[Google.EmDash] Don't put a space before or after a dash.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 27, "column": 4}}}, "severity": "ERROR"}
| 3 – L | 3 hours | 30 hours |

Check failure on line 28 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L28

[Google.EmDash] Don't put a space before or after a dash.
Raw output
{"message": "[Google.EmDash] Don't put a space before or after a dash.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 28, "column": 4}}}, "severity": "ERROR"}
| 4 – XL | 10 hours | 100 hours |

Check failure on line 29 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L29

[Google.EmDash] Don't put a space before or after a dash.
Raw output
{"message": "[Google.EmDash] Don't put a space before or after a dash.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 29, "column": 4}}}, "severity": "ERROR"}

- Worker allocates up to C per task. Beyond C, the worker stops the task.
- Requesters can claim the task after D if the task isn’t completed.

Check failure on line 32 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L32

[Vale.Terms] Use 'requesters' instead of 'Requesters'.
Raw output
{"message": "[Vale.Terms] Use 'requesters' instead of 'Requesters'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 32, "column": 3}}}, "severity": "ERROR"}

## How to pick a category: quick guide

Use this decision table to choose a safe category for your workload.

| **Typical workload** | **Suggested category** |
| ------------------------------------- | ---------------------- |
| Short scripts / small data processing | Cat 0–1 |
| Medium data processing / 10-15min | Cat 2 |

Check failure on line 41 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L41

[Google.Units] Put a nonbreaking space between the number and the unit in '15min'.
Raw output
{"message": "[Google.Units] Put a nonbreaking space between the number and the unit in '15min'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 41, "column": 31}}}, "severity": "ERROR"}
| Heavy ML inference / long simulations | Cat 3–4 |

Use the iExec SDK to **set the category** in app, request, or workerpool

Check failure on line 44 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L44

[Vale.Terms] Use 'Workerpool' instead of 'workerpool'.
Raw output
{"message": "[Vale.Terms] Use 'Workerpool' instead of 'workerpool'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 44, "column": 63}}}, "severity": "ERROR"}
orders.
For commands and examples, see the
[iExec SDK Github repository](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/master/docs/README.md).

::: info Need help Can’t find an order that fits your needs or unsure which
category to choose?
[Contact us on Discord](https://discord.com/invite/pbt9m98wnU) and we will help

Check warning on line 51 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L51

[Google.We] Try to avoid using first-person plural like 'us'.
Raw output
{"message": "[Google.We] Try to avoid using first-person plural like 'us'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 51, "column": 10}}}, "severity": "WARNING"}

Check warning on line 51 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L51

[Google.We] Try to avoid using first-person plural like 'we'.
Raw output
{"message": "[Google.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 51, "column": 68}}}, "severity": "WARNING"}

Check warning on line 51 in src/protocol/pay-per-task.md

View workflow job for this annotation

GitHub Actions / vale

[vale] src/protocol/pay-per-task.md#L51

[Google.Will] Avoid using 'will'.
Raw output
{"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "src/protocol/pay-per-task.md", "range": {"start": {"line": 51, "column": 71}}}, "severity": "WARNING"}
you pick the right setup. :::