Exemple #1
0
def put_best_model_in_production(model_metrics, db_name):
    """
        Función para poner el mejor modelo en producción.
        Args:
            model_metrics (dict):  Info del modelo.
            db_name (str):  Nombre de la base de datos.
    """

    # conexión a la base de datos elegida
    db = client.get_database(db_name)
    # consulta para traer el documento con la info del modelo en producción
    query = Query(db, selector={'status': {'$eq': 'in_production'}})
    res = query()['docs']
    #  id del modelo en producción
    best_model_id = model_metrics['_id']

    # en caso de que SÍ haya un modelo en producción
    if len(res) != 0:
        # se realiza una comparación entre el modelo entrenado y el modelo en producción
        best_model_id, worse_model_id = get_best_model(model_metrics, res[0])
        # se marca el peor modelo (entre ambos) como "NO en producción"
        worse_model_doc = db[worse_model_id]
        worse_model_doc['status'] = 'none'
        # se actualiza el marcado en la BDD
        worse_model_doc.save()
    else:
        # primer modelo entrenado va a automáticamente a producción
        print('------> FIRST model going in production')

    # se marca el mejor modelo como "SÍ en producción"
    best_model_doc = db[best_model_id]
    best_model_doc['status'] = 'in_production'
    # se actualiza el marcado en la BDD
    best_model_doc.save()
Exemple #2
0
def load_model_config(db_name):
    """
        Función para cargar la info del modelo desde IBM Cloudant.
        Args:
            db_name (str):  Nombre de la base de datos.
        Returns:
            dict. Documento con la configuración del modelo.
    """
    db = client.get_database(db_name)
    query = Query(db, selector={'_id': {'$eq': 'model_config'}})
    return query()['docs'][0]
Exemple #3
0
def save_model_info(db_name, metrics_dict):
    """
        Función para guardar la info del modelo en IBM Cloudant
        Args:
            db_name (str):  Nombre de la base de datos.
            metrics_dict (dict):  Info del modelo.
        Returns:
            boolean. Comprobación de si el documento se ha creado.
    """
    db = client.get_database(db_name)
    client.create_document(db, metrics_dict)

    return metrics_dict['_id'] in db
Exemple #4
0
def get_best_model_info(db_name):
    """
         Función para cargar la info del modelo de IBM Cloudant
         Args:
             db_name (str):  base de datos a usar.
         Kwargs:
             bucket_name (str):  depósito de IBM COS a usar.
        Returns:
            dict. Info del modelo.
     """
    db = client.get_database(db_name)
    query = Query(db, selector={'status': {'$eq': 'in_production'}})
    return query()['docs'][0]
Exemple #5
0
def load_data_config(db_name):
    """
        Función para cargar la info del modelo desde IBM Cloudant.
        Args:
            db_name (str):  Nombre de la base de datos.
        Returns:
            dict. Documento con la configuración del modelo.
    """
    db = client.get_database(db_name)
    query = Query(db, selector={'_id': {'$eq': 'data_config'}})
    return query()['docs'][0]


# class CustomUnpickler(pickle.Unpickler):
#
#     def find_class(self, module, name):
#         if name == 'Scaler':
#             from app.src.data.pipeline_fn import Scaler
#             return Scaler
#         elif name == 'HogFeaturesExtraction':
#             from app.src.data.pipeline_fn import HogFeaturesExtraction
#             return HogFeaturesExtraction
#         return super().find_class(module, name)