コード例 #1
0
ファイル: redis_model_storage.py プロジェクト: zpskt/FATE
 def restore(self, model_id: str, model_version: str, store_address: dict):
     """
     Restore model from redis to local cache
     :param model_id:
     :param model_version:
     :param store_address:
     :return:
     """
     try:
         red = self.get_connection(config=store_address)
         model = PipelinedModel(model_id=model_id,
                                model_version=model_version)
         redis_store_key = self.store_key(model_id=model_id,
                                          model_version=model_version)
         model_archive_data = red.get(name=redis_store_key)
         if not model_archive_data:
             raise Exception(
                 "Restore model {} {} to redis failed: {}".format(
                     model_id, model_version,
                     "can not found model archive data"))
         with open(model.archive_model_file_path(), "wb") as fw:
             fw.write(model_archive_data)
         model.unpack_model(model.archive_model_file_path())
         LOGGER.info(
             "Restore model to {} from redis successfully using key {}".
             format(model.archive_model_file_path(), redis_store_key))
     except Exception as e:
         LOGGER.exception(e)
         raise Exception("Restore model {} {} from redis failed".format(
             model_id, model_version))
コード例 #2
0
ファイル: mysql_model_storage.py プロジェクト: zpskt/FATE
 def restore(self, model_id: str, model_version: str, store_address: dict):
     """
     Restore model from mysql to local cache
     :param model_id:
     :param model_version:
     :param store_address:
     :return:
     """
     try:
         self.get_connection(config=store_address)
         model = PipelinedModel(model_id=model_id, model_version=model_version)
         with DB.connection_context():
             models_in_tables = MachineLearningModel.select().where(MachineLearningModel.f_model_id == model_id,
                                                                    MachineLearningModel.f_model_version == model_version).\
                 order_by(MachineLearningModel.f_slice_index)
             if not models_in_tables:
                 raise Exception("Restore model {} {} from mysql failed: {}".format(
                     model_id, model_version, "can not found model in table"))
             f_content = ''
             for models_in_table in models_in_tables:
                 if not f_content:
                     f_content = models_in_table.f_content
                 else:
                     f_content += models_in_table.f_content
             model_archive_data = deserialize_b64(f_content)
             if not model_archive_data:
                 raise Exception("Restore model {} {} from mysql failed: {}".format(
                     model_id, model_version, "can not get model archive data"))
             with open(model.archive_model_file_path(), "wb") as fw:
                 fw.write(model_archive_data)
             model.unpack_model(model.archive_model_file_path())
             LOGGER.info("Restore model to {} from mysql successfully".format(model.archive_model_file_path()))
         self.close_connection()
     except Exception as e:
         LOGGER.exception(e)
         raise Exception("Restore model {} {} from mysql failed".format(model_id, model_version))