Challenges and Tasks¶
A Challenge is a collection of assessments on which participating teams compete to achieve the best performance.
Creating a Challenge¶
Use the challenges.create() function to create a new challenge:
from dyff.schema.requests import ChallengeCreateRequest
from dyff.schema.platform import ChallengeContent, ChallengeContentPage
challenge = dyffapi.challenges.create(
ChallengeCreateRequest(
account=account,
content=ChallengeContent(
page=ChallengeContentPage(
title="My Challenge",
summary="A challenge to evaluate AI systems",
body="Detailed description in Markdown format...",
)
),
)
)
Challenge Tasks¶
A ChallengeTask is a task that is part of a challenge. Teams make submissions to individual tasks, rather than the overall challenge. A task combines an assessment pipeline that implements the evaluation computations along with rules for submissions and descriptive content for the Web app.
Tasks are embedded within a Challenge and accessed via the Challenge.tasks dictionary.
Creating a Task¶
Use challenges.create_task() to add a task to an existing challenge:
from dyff.schema.requests import ChallengeTaskCreateRequest
from dyff.schema.platform import (
ChallengeTaskRules,
ChallengeTaskExecutionEnvironmentChoices,
ChallengeTaskExecutionEnvironment,
)
task = dyffapi.challenges.create_task(
challenge.id,
ChallengeTaskCreateRequest(
account=account,
challenge=challenge.id,
name="task-1",
assessment=pipeline.id, # ID of the Pipeline to assess submissions
rules=ChallengeTaskRules(
executionEnvironment=ChallengeTaskExecutionEnvironmentChoices(
choices={
"default": ChallengeTaskExecutionEnvironment(
cpu="4",
memory="16Gi",
accelerators={},
)
}
)
),
),
)
Task Rules¶
Each task defines rules that control submissions:
Execution Environment: Specifies available computational resources (CPU, memory, accelerators) that submissions can request
Schedule: Controls when submissions are accepted (opening time, closing time, submission limits per cycle)
Edit task rules with challenges.edit_task_rules():
from dyff.schema.requests import ChallengeTaskRulesEditRequest
dyffapi.challenges.edit_task_rules(
challenge.id,
task.id,
ChallengeTaskRulesEditRequest(
# ... rule updates
),
)
Editing Content¶
Challenge and task content can be updated after creation:
from dyff.schema.requests import ChallengeContentEditRequest
from dyff.schema.commands import ChallengeContentPatch, ChallengeContentPagePatch
# Edit challenge content
dyffapi.challenges.edit_content(
challenge.id,
ChallengeContentEditRequest(
content=ChallengeContentPatch(
page=ChallengeContentPagePatch(
title="Updated Challenge Title",
)
)
),
)
# Edit task content
dyffapi.challenges.edit_task_content(
challenge.id,
task.id,
ChallengeContentEditRequest(
content=ChallengeContentPatch(
page=ChallengeContentPagePatch(
title="Updated Task Title",
)
)
),
)