Skip to content

Commit bf02fd2

Browse files
committed
Add support to add tags to the ClearML task via build_options
1 parent 8670e84 commit bf02fd2

File tree

4 files changed

+14
-28
lines changed

4 files changed

+14
-28
lines changed

machine/jobs/build_clearml_helper.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def local_progress(progress_status: ProgressStatus) -> None:
110110
return local_progress
111111

112112

113-
def update_settings(settings: Settings, args: dict):
113+
def update_settings(settings: Settings, args: dict, task: Optional[Task], logger: logging.Logger):
114114
settings.update(args)
115115
settings.model_type = cast(str, settings.model_type).lower()
116116
if "build_options" in settings:
@@ -121,4 +121,11 @@ def update_settings(settings: Settings, args: dict):
121121
except TypeError as e:
122122
raise TypeError(f"Build options could not be parsed: {e}") from e
123123
settings.update({settings.model_type: build_options})
124+
if "align_pretranslations" in build_options:
125+
settings.update({"align_pretranslations": build_options["align_pretranslations"]})
126+
if task is not None and "tags" in build_options:
127+
tags = build_options["tags"]
128+
if isinstance(tags, str) or (isinstance(tags, list) and all(isinstance(tag, str) for tag in tags)):
129+
task.add_tags(tags)
124130
settings.data_dir = os.path.expanduser(cast(str, settings.data_dir))
131+
logger.info(f"Config: {settings.as_dict()}")

machine/jobs/build_nmt_engine.py

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import argparse
2-
import json
32
import logging
4-
import os
5-
from typing import Callable, Optional, cast
3+
from typing import Callable, Optional
64

75
from clearml import Task
86

97
from ..utils.canceled_error import CanceledError
108
from ..utils.progress_status import ProgressStatus
11-
from .build_clearml_helper import report_clearml_progress
9+
from .build_clearml_helper import report_clearml_progress, update_settings
1210
from .config import SETTINGS
1311
from .nmt_engine_build_job import NmtEngineBuildJob
1412
from .nmt_model_factory import NmtModelFactory
@@ -47,26 +45,11 @@ def clearml_progress(status: ProgressStatus) -> None:
4745

4846
try:
4947
logger.info("NMT Engine Build Job started")
50-
51-
SETTINGS.update(args)
52-
model_type = cast(str, SETTINGS.model_type).lower()
53-
if "build_options" in SETTINGS:
54-
try:
55-
build_options = json.loads(cast(str, SETTINGS.build_options))
56-
except ValueError as e:
57-
raise ValueError("Build options could not be parsed: Invalid JSON") from e
58-
except TypeError as e:
59-
raise TypeError(f"Build options could not be parsed: {e}") from e
60-
SETTINGS.update({model_type: build_options})
61-
if "align_pretranslations" in build_options:
62-
SETTINGS.update({"align_pretranslations": build_options["align_pretranslations"]})
63-
SETTINGS.data_dir = os.path.expanduser(cast(str, SETTINGS.data_dir))
64-
65-
logger.info(f"Config: {SETTINGS.as_dict()}")
48+
update_settings(SETTINGS, args, task, logger)
6649

6750
translation_file_service = TranslationFileService(SharedFileServiceType.CLEARML, SETTINGS)
6851
nmt_model_factory: NmtModelFactory
69-
if model_type == "huggingface":
52+
if SETTINGS.model_type == "huggingface":
7053
from .huggingface.hugging_face_nmt_model_factory import HuggingFaceNmtModelFactory
7154

7255
nmt_model_factory = HuggingFaceNmtModelFactory(SETTINGS)

machine/jobs/build_smt_engine.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ def run(args: dict) -> None:
4646

4747
try:
4848
logger.info("SMT Engine Build Job started")
49-
update_settings(SETTINGS, args)
50-
51-
logger.info(f"Config: {SETTINGS.as_dict()}")
49+
update_settings(SETTINGS, args, task, logger)
5250

5351
shared_file_service = TranslationFileService(SharedFileServiceType.CLEARML, SETTINGS)
5452
smt_model_factory: SmtModelFactory

machine/jobs/build_word_alignment_model.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ def run(args: dict):
4747

4848
try:
4949
logger.info("Word Alignment Build Job started")
50-
update_settings(SETTINGS, args)
51-
52-
logger.info(f"Config: {SETTINGS.as_dict()}")
50+
update_settings(SETTINGS, args, task, logger)
5351

5452
word_alignment_file_service = WordAlignmentFileService(SharedFileServiceType.CLEARML, SETTINGS)
5553
word_alignment_model_factory: WordAlignmentModelFactory

0 commit comments

Comments
 (0)