# -*- coding: utf-8 -*-
"""Constants."""
from enum import Enum, EnumMeta
from trinity.utils.log import get_logger
logger = get_logger(__name__)
# names
EXPLORER_NAME = "explorer"
TRAINER_NAME = "trainer"
ROLLOUT_WEIGHT_SYNC_GROUP_NAME = "rollout_weight_sync"
# enumerate types
[docs]
class CaseInsensitiveEnum(Enum, metaclass=CaseInsensitiveEnumMeta):
pass
[docs]
class PromptType(CaseInsensitiveEnum):
"""Prompt Type."""
MESSAGES = "messages" # prompt+response: message list
CHATPAIR = "chatpair" # prompt: message list, response: message list
PLAINTEXT = "plaintext" # prompt: plaintext, response: plaintext
[docs]
class TaskType(Enum):
"""Task Type."""
EXPLORE = 0
EVAL = 1
[docs]
class ReadStrategy(CaseInsensitiveEnum):
"""Pop Strategy."""
DEFAULT = None
FIFO = "fifo"
RANDOM = "random"
LRU = "lru"
LFU = "lfu"
PRIORITY = "priority"
[docs]
class StorageType(CaseInsensitiveEnum):
"""Storage Type."""
SQL = "sql"
QUEUE = "queue"
FILE = "file"
[docs]
class MonitorType(CaseInsensitiveEnum):
"""Monitor Type."""
WANDB = "wandb"
TENSORBOARD = "tensorboard"
[docs]
class SyncMethod(CaseInsensitiveEnum, metaclass=SyncMethodEnumMeta):
"""Sync Method."""
NCCL = "nccl"
CHECKPOINT = "checkpoint"
[docs]
class RunningStatus(Enum):
"""Running status of explorer and trainer."""
RUNNING = "running"
WAITING_SYNC = "waiting_sync"
STOPPED = "stopped"