Beispiel #1
0
def get_trainer_jsonschema():
    def allowed_types_for_trainer_schema(cls) -> List[str]:
        """Returns the allowed values for the "type" field on the given trainer schema."""
        return cls.Schema().fields[TYPE].validate.choices

    conds = []
    all_trainer_types = []
    for trainer in trainer_schema_registry:
        trainer_cls = trainer_schema_registry[trainer]

        allowed_trainer_types = allowed_types_for_trainer_schema(trainer_cls)
        all_trainer_types.extend(allowed_trainer_types)

        other_props = schema_utils.unload_jsonschema_from_marshmallow_class(trainer_cls)["properties"]
        other_props.pop("type")
        for trainer_type in allowed_trainer_types:
            trainer_cond = schema_utils.create_cond(
                {"type": trainer_type},
                other_props,
            )
            conds.append(trainer_cond)

    return {
        "type": "object",
        "properties": {
            "type": {"type": "string", "enum": all_trainer_types},
        },
        "title": "trainer_options",
        "allOf": conds,
        "description": "Use type 'trainer' for training ECD models, or 'lightgbm_trainer' for Tree models.",
    }
Beispiel #2
0
def get_combiner_conds():
    """Returns a list of if-then JSON clauses for each combiner type in `combiner_registry` and its properties'
    constraints."""
    combiner_types = sorted(list(combiner_registry.keys()))
    conds = []
    for combiner_type in combiner_types:
        combiner_cls = combiner_registry[combiner_type]
        schema_cls = combiner_cls.get_schema_cls()
        combiner_schema = schema_utils.unload_jsonschema_from_marshmallow_class(
            schema_cls)
        combiner_props = combiner_schema["properties"]
        combiner_cond = schema_utils.create_cond({"type": combiner_type},
                                                 combiner_props)
        conds.append(combiner_cond)
    return conds
Beispiel #3
0
def get_optimizer_conds():
    """Returns a JSON schema of conditionals to validate against optimizer types defined in
    `ludwig.modules.optimization_modules.optimizer_registry`."""
    conds = []
    for optimizer in optimizer_registry:
        optimizer_cls = optimizer_registry[optimizer][1]
        other_props = unload_jsonschema_from_marshmallow_class(
            optimizer_cls)["properties"]
        other_props.pop("type")
        preproc_cond = create_cond(
            {"type": optimizer},
            other_props,
        )
        conds.append(preproc_cond)
    return conds
Beispiel #4
0
def get_input_feature_conds():
    """This function returns a list of if-then JSON clauses for each input feature type along with their properties
    and constraints.

    Returns: List of JSON clauses
    """
    input_feature_types = sorted(list(input_type_registry.keys()))
    conds = []
    for feature_type in input_feature_types:
        feature_cls = input_type_registry[feature_type]
        schema_cls = feature_cls.get_schema_cls()
        feature_schema = schema_utils.unload_jsonschema_from_marshmallow_class(schema_cls)
        feature_props = feature_schema["properties"]
        update_encoders(feature_props, feature_type)
        feature_cond = schema_utils.create_cond({"type": feature_type}, feature_props)
        conds.append(feature_cond)
    return conds