forked from luopingyi/xc_agent_platform_demo
54 lines
2.4 KiB
Python
54 lines
2.4 KiB
Python
"""Baked, validated permanent model/GPU reject marks."""
|
|
import json
|
|
from pathlib import Path
|
|
from .config_params import GPU_ENUMS
|
|
from .live_queue import model_key
|
|
|
|
DATA = Path(__file__).parent / 'data/reject-marks.json'
|
|
PERMANENT_PAIR_CODES = {60012, *range(60019, 60030)}
|
|
|
|
REJECT_CODES = {
|
|
60006: 'CANNOT_CREATE_CONTEST_TASK_BECAUSE_NOT_IN_WHITE_LIST',
|
|
60007: 'MODEL_VERIFY_TASK_NUM_LIMIT',
|
|
60008: 'CREATE_CONTEST_TASK_REQUEST_EMPTY',
|
|
60009: 'CREATE_CONTEST_TASK_CONTRIBUTORS_EMPTY',
|
|
60010: 'CREATE_CONTEST_TASK_SUBMISSION_CONFIG_EMPTY',
|
|
60011: 'CREATE_CONTEST_TASK_GPU_TYPE_EMPTY',
|
|
60012: 'CREATE_CONTEST_TASK_MULTI_GPU_UNSUPPORTED',
|
|
60013: 'CREATE_CONTEST_TASK_MODEL_ID_EMPTY',
|
|
60014: 'CREATE_CONTEST_TASK_SCRIPT_SUBMIT_DISABLED',
|
|
60015: 'CREATE_CONTEST_TASK_TASK_TYPE_EMPTY',
|
|
60016: 'CREATE_CONTEST_TASK_FRAMEWORK_EMPTY',
|
|
60017: 'CREATE_CONTEST_TASK_DRIVER_IMAGE_NOT_FOUND',
|
|
60018: 'CREATE_CONTEST_TASK_CONTRIBUTOR_NOT_FOUND',
|
|
60019: 'CREATE_CONTEST_TASK_SUBMISSION_GPU_TYPE_MISMATCH',
|
|
60020: 'CREATE_CONTEST_TASK_MODEL_NOT_DOWNLOADED',
|
|
60021: 'CREATE_CONTEST_TASK_FRAMEWORK_UNRESOLVED',
|
|
60022: 'CREATE_CONTEST_TASK_GPU_CONFIG_UNSUPPORTED',
|
|
60023: 'CREATE_CONTEST_TASK_YAML_CONFIG_EMPTY',
|
|
60024: 'CREATE_CONTEST_TASK_YAML_CONFIG_INVALID',
|
|
60025: 'CREATE_CONTEST_TASK_GPU_TYPE_UNSUPPORTED',
|
|
60026: 'CREATE_CONTEST_TASK_MODEL_NOT_FOUND',
|
|
60027: 'CREATE_CONTEST_TASK_MODEL_ALREADY_VERIFIED',
|
|
60028: 'CREATE_CONTEST_TASK_MODEL_VERIFY_RUNNING',
|
|
60029: 'CREATE_CONTEST_TASK_TRANSFORMERS_REQUIRES_FAILED_BASELINE',
|
|
60030: 'CREATE_CONTEST_TASK_API_VERSION_UNSUPPORTED',
|
|
}
|
|
|
|
|
|
def load_marks(path=DATA):
|
|
try:
|
|
data = json.loads(Path(path).read_text())
|
|
if not isinstance(data, dict) or type(data.get('version')) is not int or data['version'] != 1 or not isinstance(data.get('marks'), list):
|
|
raise ValueError
|
|
marks = {}
|
|
for row in data['marks']:
|
|
if (not isinstance(row, dict) or not isinstance(row.get('model'), str)
|
|
or not row['model'].strip() or row.get('gpu') not in set(GPU_ENUMS.values())
|
|
or type(row.get('code')) is not int):
|
|
raise ValueError
|
|
marks[model_key(row['model']), row['gpu']] = row['code']
|
|
return marks
|
|
except (OSError, ValueError, TypeError, KeyError) as error:
|
|
raise ValueError('Invalid reject marks') from error
|