diff --git a/topicnet/cooking_machine/README-rus.md b/topicnet/cooking_machine/README-rus.md index 67326b5..401d449 100644 --- a/topicnet/cooking_machine/README-rus.md +++ b/topicnet/cooking_machine/README-rus.md @@ -1,18 +1,12 @@ # Cooking Machine +[English version](README.md) ### Общее описание -Эксперимент состоит из моделей и кубиков, которые добавляют в эти модели новые регуляризаторы и осущетвляют подбор различных параметров тематичеких моделей на каждом этапе обучения. +Эксперимент состоит из моделей и кубиков, которые добавляют в эти модели новые регуляризаторы и осущеcтвляют подбор различных параметров тематичеcких моделей на каждом этапе обучения. -Важно отметить, что на каждом шаге эксперимента используется один и тот же кубик для дальнейшей настройки моделей. -Если для разным тематических моделей после очередного этапа обучения применяются разные кубики, то эксперимент разделяется на два отдельных эксперимента, которые отличаются данным и последующими этапами обучения, иными словами последовательностями применения кубиков с соответствующими им параметрам. -Объект эксперимента содержит всю необходимую информацию для воспроизведения данного эксперимента с нуля и изменяется в процессе добавления кубиков пользователя. -При использовании кубиков также изменяется информация о моделях и их описание, создаются новые модели копии основной, которые соответствуют перебираемым внутри кубика параметрам. -Описание моделей также позволяет построить их по описанию и создать скрипт их создания и обучения. -Таким образом, ключевым объектом - является кубик, а точнее их последовательность, которые взаимодействуют с объектами модель и эксперимент. #### Кубик -Смысловая единица обучения модели, которая вводит регуляризатор/регуляризаторы и перебирает его/их коэффициенты по сетке. -Внутри себя кубик вносит изменения в объекты модель (он еще и создает новые модели) и в объект эксперимент. +Кубик -- это сущность, задающая некоторое преобразование над моделями ("инКУБатор"). Обычно это преобразование параметрическое, и эти параметры перебираются по сетке; на выходе кубика -- семейство новых моделей (копии основной), которые соответствуют перебираемым внутри кубика параметрам. **Вход:** модель или модели, регуляризатор или регуляризаторы, параметры перебора (сетка), число итераций или метод выбора числа итераций, внешние метрики (которых нет в BigArtm, опционально). **Выход:** модели (их число совпадает с числом параметров в сетке или наборов параметров, если сетка многомерная). @@ -35,7 +29,7 @@ * хранит результаты обучения. #### Эксперимент -Смысловая единица описания эксперимента с обучением тематических моделей: +Объект Experiment содержит всю необходимую информацию для воспроизведения данного эксперимента с нуля и изменяется в процессе добавления кубиков пользователя. * хранит своё описание; * выводит описание в human-readable виде; diff --git a/topicnet/cooking_machine/README.md b/topicnet/cooking_machine/README.md new file mode 100644 index 0000000..3a8dbb3 --- /dev/null +++ b/topicnet/cooking_machine/README.md @@ -0,0 +1,32 @@ +# Cooking Machine +[Русская версия](README-rus.md) + +#### Cube +A unit of model training pipeline. This unit encapsulates an action over one or many model hyperparameters. This action and hyperparameter space are stored as cube properties and then saved in Experiment. + +**Input:** model or list of models, regularizer or list of them, hyperparameter search sapce(grid), iterations number or a function defining it, custom metrics. +**Output:** models. +**Body:** performs actions over `artm` model. Can modify, create new models and alter their Experiment. + +#### Model +A class containing Topic Model and its description: + +* stores topic model description; +* outputs the description in human-readable form; +* the model can only load and copy itself, the artm-model is an attribute and in order to change it is should be extracted, modified and put back; +* stores experiment id; +* stores parent model id; +* stores model topic names; +* stores regularizers list with their parameters; +* stores modality weights; +* stores save path for data, model and model information; +* stores training metric values. + +#### Experiment +Class providing experiment infrastructure: + +* keeps the description of all actions on the models; +* provides human-readable log of experiment; +* keeps the model training sequence in memory; +* automaticly runs integrity check; +* able to copy itself. \ No newline at end of file diff --git a/topicnet/cooking_machine/cubes/cube_creator.py b/topicnet/cooking_machine/cubes/cube_creator.py index 217860c..da97654 100644 --- a/topicnet/cooking_machine/cubes/cube_creator.py +++ b/topicnet/cooking_machine/cubes/cube_creator.py @@ -11,7 +11,7 @@ class CubeCreator(BaseCube): """ DEFAULT_SEED_VALUE = 4 - def __init__(self, num_iter: int, parameters, reg_search, strategy=None, + def __init__(self, num_iter: int, parameters, reg_search="grid", strategy=None, model_class='TopicModel', second_level=False, tracked_score_function=None, verbose=False): """ diff --git a/topicnet/cooking_machine/experiment.py b/topicnet/cooking_machine/experiment.py index c7ded90..e14c0ad 100644 --- a/topicnet/cooking_machine/experiment.py +++ b/topicnet/cooking_machine/experiment.py @@ -13,6 +13,7 @@ from .routine import is_saveable_model from .models import BaseModel +from .models.base_model import MODEL_NAME_LENGTH W_EMPTY_SPECIAL_1 = 'Unable to calculate special functions in query\n' W_EMPTY_SPECIAL_2 = 'Process failed with following: {}' @@ -461,7 +462,9 @@ def load(load_path): return experiment - def get_description(self, min_len_per_cube: int = 21, len_tree_step: int = 22): + def get_description(self, + min_len_per_cube: int = MODEL_NAME_LENGTH, + len_tree_step: int = MODEL_NAME_LENGTH + 1): """ Creates description of the tree that you can print. Print is good when you use no more than 3 cubes at all.