mirror of
https://github.com/clearml/clearml-server
synced 2025-02-01 11:26:43 +00:00
133 lines
3.8 KiB
Python
133 lines
3.8 KiB
Python
|
from enum import Enum
|
||
|
|
||
|
from mongoengine import (
|
||
|
StringField,
|
||
|
EmbeddedDocumentField,
|
||
|
EmbeddedDocument,
|
||
|
DateTimeField,
|
||
|
IntField,
|
||
|
ListField,
|
||
|
)
|
||
|
|
||
|
from database import Database, strict
|
||
|
from database.fields import StrippedStringField, SafeMapField, SafeDictField
|
||
|
from database.model import AttributedDocument
|
||
|
from database.model.model_labels import ModelLabels
|
||
|
from database.model.project import Project
|
||
|
from database.utils import get_options
|
||
|
from .metrics import MetricEvent
|
||
|
from .output import Output
|
||
|
|
||
|
DEFAULT_LAST_ITERATION = 0
|
||
|
|
||
|
|
||
|
class TaskStatus(object):
|
||
|
created = 'created'
|
||
|
in_progress = 'in_progress'
|
||
|
stopped = 'stopped'
|
||
|
publishing = 'publishing'
|
||
|
published = 'published'
|
||
|
closed = 'closed'
|
||
|
failed = 'failed'
|
||
|
unknown = 'unknown'
|
||
|
|
||
|
|
||
|
class TaskStatusMessage(object):
|
||
|
stopping = 'stopping'
|
||
|
|
||
|
|
||
|
class TaskTags(object):
|
||
|
development = 'development'
|
||
|
|
||
|
|
||
|
class Script(EmbeddedDocument):
|
||
|
binary = StringField(default='python')
|
||
|
repository = StringField(required=True)
|
||
|
tag = StringField()
|
||
|
branch = StringField()
|
||
|
version_num = StringField()
|
||
|
entry_point = StringField(required=True)
|
||
|
working_dir = StringField()
|
||
|
requirements = SafeDictField()
|
||
|
|
||
|
|
||
|
class Execution(EmbeddedDocument):
|
||
|
test_split = IntField(default=0)
|
||
|
parameters = SafeDictField(default=dict)
|
||
|
model = StringField(reference_field='Model')
|
||
|
model_desc = SafeMapField(StringField(default=''))
|
||
|
model_labels = ModelLabels()
|
||
|
framework = StringField()
|
||
|
|
||
|
queue = StringField()
|
||
|
''' Queue ID where task was queued '''
|
||
|
|
||
|
|
||
|
class TaskType(object):
|
||
|
training = 'training'
|
||
|
testing = 'testing'
|
||
|
|
||
|
|
||
|
class Task(AttributedDocument):
|
||
|
meta = {
|
||
|
'db_alias': Database.backend,
|
||
|
'strict': strict,
|
||
|
'indexes': [
|
||
|
'created',
|
||
|
'started',
|
||
|
'completed',
|
||
|
{
|
||
|
'name': '%s.task.main_text_index' % Database.backend,
|
||
|
'fields': [
|
||
|
'$name',
|
||
|
'$id',
|
||
|
'$comment',
|
||
|
'$execution.model',
|
||
|
'$output.model',
|
||
|
'$script.repository',
|
||
|
'$script.entry_point',
|
||
|
],
|
||
|
'default_language': 'english',
|
||
|
'weights': {
|
||
|
'name': 10,
|
||
|
'id': 10,
|
||
|
'comment': 10,
|
||
|
'execution.model': 2,
|
||
|
'output.model': 2,
|
||
|
'script.repository': 1,
|
||
|
'script.entry_point': 1,
|
||
|
},
|
||
|
},
|
||
|
],
|
||
|
}
|
||
|
|
||
|
id = StringField(primary_key=True)
|
||
|
name = StrippedStringField(
|
||
|
required=True, user_set_allowed=True, sparse=False, min_length=3
|
||
|
)
|
||
|
|
||
|
type = StringField(required=True, choices=get_options(TaskType))
|
||
|
status = StringField(default=TaskStatus.created, choices=get_options(TaskStatus))
|
||
|
status_reason = StringField()
|
||
|
status_message = StringField()
|
||
|
status_changed = DateTimeField()
|
||
|
comment = StringField(user_set_allowed=True)
|
||
|
created = DateTimeField(required=True, user_set_allowed=True)
|
||
|
started = DateTimeField()
|
||
|
completed = DateTimeField()
|
||
|
published = DateTimeField()
|
||
|
parent = StringField()
|
||
|
project = StringField(reference_field=Project, user_set_allowed=True)
|
||
|
output = EmbeddedDocumentField(Output, default=Output)
|
||
|
execution: Execution = EmbeddedDocumentField(Execution, default=Execution)
|
||
|
tags = ListField(StringField(required=True), user_set_allowed=True)
|
||
|
script = EmbeddedDocumentField(Script)
|
||
|
last_update = DateTimeField()
|
||
|
last_iteration = IntField(default=DEFAULT_LAST_ITERATION)
|
||
|
last_metrics = SafeMapField(field=SafeMapField(EmbeddedDocumentField(MetricEvent)))
|
||
|
|
||
|
|
||
|
class TaskVisibility(Enum):
|
||
|
active = 'active'
|
||
|
archived = 'archived'
|