Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблемы с неймингами #40

Closed
voorhs opened this issue Nov 11, 2024 · 17 comments
Closed

Проблемы с неймингами #40

voorhs opened this issue Nov 11, 2024 · 17 comments

Comments

@voorhs
Copy link
Collaborator

voorhs commented Nov 11, 2024

Нейминги классов, функций, аргументов, py-файлов и все что угодно чтобы пользователям было понятно

Например: Context -> common_state / optim_results ...

@truff4ut
Copy link
Collaborator

truff4ut commented Nov 13, 2024

Хотел на обсуждение вынести нейминг для датасета. Какой вариант лучше?

class Utterance(BaseModel):
    text: str
    label: LabelType | None = None

class Sample(BaseModel):
    text: str
    label: LabelType | None = None

class Sample(BaseModel):
    utterance: str
    label: LabelType | None = None

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

Хотел на обсуждение вынести нейминг для датасета. Какой вариант лучше?

Мне больше всего нравится третий вариант

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/context/optimization_info/data_models.py

По этому файлу пара комментариев.

Надо все подобные файлы называть одинаково. У нас есть похожий по смыслу файл, который называется schemas.py. Надо выбрать что-то одно.

Надо бы вынести model_config = ConfigDict(arbitrary_types_allowed=True) в какой-то отдельный класс, чтобы не прописывать это в каждом классе. И остальные классы наследовать от него по необходимости.

labels в PredictorArtifact лучше сделать интами как будто.

Если сделать NodeType(Enum), то не пропадет ли необходимость в функции validate_node_name.

Класс TrialsIds я бы переименовал. Из названия подумал, что речь идет про идентификаторы, а в методах индексация.

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/context/context.py

get_best_index() -> get_best_vector_index()

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/context/embedder.py

Переименовал бы embed() в encode().

Не хотим класс Embedder сделать подклассом SentenceTransformer?

@truff4ut
Copy link
Collaborator

truff4ut commented Nov 13, 2024

А ThresholdPredictor и TunablePredictor не могут стать одним классом, у которого будет параметр, запускающий подбор порога?

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/generation/description_generation.py

Поменял бы get_utterances_by_id. Как будто название не отображает суть функции.

Надо выбрать один глагол для create_intent_description и generate_intent_descriptions.

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/inference_cli.py#L11

Предлагаю такой конфиг для инференса:

@dataclass
class InferenceConfig:
    utterances_path: str
    optimization_logs_dir: str
    output_path: str
    log_level: LogLevel = LogLevel.ERROR
    rich: bool = False

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/inference_cli.py#L11

Предлагаю такой конфиг для инференса:

@dataclass
class InferenceConfig:
    utterances_path: str
    optimization_logs_dir: str
    output_path: str
    log_level: LogLevel = LogLevel.ERROR
    rich: bool = False

Я бы оставил data_path или dataset_path.
Разве по пути, который передается в optimization_logs_dir, только логи лежат? Если это не так, то не самое логичное название.

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/node.py#L10

Предлагаю везде переименовать module_type -> module_name. Это строки типа "knn", "linear", "tunable"

Еще надо сделать тайпинг для node_type, поскольку у нас есть тип NodeType

В частности здесь:

@dataclass
class InferenceNodeConfig:
    node_type: NodeType = MISSING
    module_name: str = MISSING
    module_kwargs: dict[str, Any] = MISSING
    load_path: str | None = None
    _target_: str = "autointent.nodes.InferenceNode"

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/node.py#L20

metric -> metric_name

str -> NodeType

@dataclass
class NodeOptimizerConfig:
    node_type: NodeType = MISSING
    search_space: list[dict[str, Any]] = MISSING
    metric_name: str = MISSING
    _target_: str = "autointent.nodes.NodeOptimizer"

@truff4ut
Copy link
Collaborator

truff4ut commented Nov 13, 2024

@truff4ut
Copy link
Collaborator

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/custom_types.py

Константы бы отдельно, а типы отдельно

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/name.py#L348

эта функция совсем нигде не используется, её давно заменил этот метод: https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/optimization_cli.py#L39

@voorhs
Copy link
Collaborator Author

voorhs commented Nov 13, 2024

https://github.com/deeppavlov/AutoIntent/blob/dev/autointent/configs/optimization_cli.py#L27

стоит переименовать dirpath -> working_dir, это отразит тот факт что в эту папку такто ничего не сохраняется а создается подпапка с названием run_name, в которую уже сохраняется куча всего: логи, конфиги, дампы модулей

возможно стоит убрать возможность задавать параметр dump_dir и чтобы модули всегда дампились внутри папки run_name

@dataclass
class LoggingConfig:
    working_dir: Path | None = None
    run_name: str | None = None
    dump_modules: bool = False
    clear_ram: bool = True

@voorhs
Copy link
Collaborator Author

voorhs commented Dec 7, 2024

Dataset.from_datasets() лучше переименовать в Dataset.from_hub()

@voorhs voorhs closed this as completed Jan 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants