Пример #1
0
 def run():
     parser = argparse.ArgumentParser()
     parser.add_argument('-j',
                         '--job_id',
                         required=True,
                         type=str,
                         help="job id")
     parser.add_argument('-w',
                         '--work_mode',
                         required=True,
                         type=str,
                         help="work mode")
     parser.add_argument('-b',
                         '--backend',
                         required=True,
                         type=str,
                         help="backend")
     args = parser.parse_args()
     job_id = args.job_id
     work_mode = int(args.work_mode)
     backend = int(args.backend)
     session.init(job_id=job_id,
                  mode=work_mode,
                  backend=backend,
                  set_log_dir=False)
     try:
         schedule_logger(job_id.split('_')[0]).info(
             'start stop session {}'.format(session.get_session_id()))
         session.stop()
         schedule_logger(job_id.split('_')[0]).info(
             'stop session {} success'.format(session.get_session_id()))
     except Exception as e:
         pass
Пример #2
0
def clean_server_used_session():
    used_session_id = None
    try:
        used_session_id = session.get_session_id()
        session.stop()
    except:
        pass
    session.exit()
    stat_logger.info("clean session {} for fate flow server done".format(used_session_id))
Пример #3
0
 def tearDown(self):
     session.stop()
     try:
         session.cleanup("*", self.jobid, True)
     except EnvironmentError:
         pass
     try:
         session.cleanup("*", self.jobid, False)
     except EnvironmentError:
         pass
Пример #4
0
def task_killed_detector(job_id, role, party_id, component_name, pid):
    kill_path = os.path.join(get_job_directory(job_id), str(role),
                             str(party_id), component_name, 'kill')
    if os.path.exists(kill_path):
        try:
            session.stop()
        except Exception as e:
            pass
        kill_process(int(pid), only_child=True)
        os.kill(int(pid), 9)
        kill_process(int(pid), only_child=False)
    threading.Timer(0.25,
                    task_killed_detector,
                    args=[job_id, role, party_id, component_name,
                          pid]).start()
Пример #5
0
 def run():
     parser = argparse.ArgumentParser()
     parser.add_argument('-j', '--job_id', required=True, type=str, help="job id")
     parser.add_argument('-w', '--work_mode', required=True, type=str, help="work mode")
     parser.add_argument('-b', '--backend', required=True, type=str, help="backend")
     parser.add_argument('-c', '--command', required=True, type=str, help="command")
     args = parser.parse_args()
     session_job_id = args.job_id
     fate_job_id = session_job_id.split('_')[0]
     work_mode = int(args.work_mode)
     backend = int(args.backend)
     command = args.command
     session.init(job_id=session_job_id, mode=work_mode, backend=backend, set_log_dir=False)
     try:
         schedule_logger(fate_job_id).info('start {} session {}'.format(command, session.get_session_id()))
         if command == 'stop':
             session.stop()
         elif command == 'kill':
             session.kill()
         else:
             schedule_logger(fate_job_id).info('{} session {} failed, this command is not supported'.format(command, session.get_session_id()))
         schedule_logger(fate_job_id).info('{} session {} success'.format(command, session.get_session_id()))
     except Exception as e:
         pass
 def tearDown(self):
     session.stop()
Пример #7
0
    def run_task():
        task = Task()
        task.f_create_time = current_timestamp()
        try:
            parser = argparse.ArgumentParser()
            parser.add_argument('-j', '--job_id', required=True, type=str, help="job id")
            parser.add_argument('-n', '--component_name', required=True, type=str,
                                help="component name")
            parser.add_argument('-t', '--task_id', required=True, type=str, help="task id")
            parser.add_argument('-r', '--role', required=True, type=str, help="role")
            parser.add_argument('-p', '--party_id', required=True, type=str, help="party id")
            parser.add_argument('-c', '--config', required=True, type=str, help="task config")
            parser.add_argument('--job_server', help="job server", type=str)
            args = parser.parse_args()
            schedule_logger(args.job_id).info('enter task process')
            schedule_logger(args.job_id).info(args)
            # init function args
            if args.job_server:
                RuntimeConfig.init_config(HTTP_PORT=args.job_server.split(':')[1])
            job_id = args.job_id
            component_name = args.component_name
            task_id = args.task_id
            role = args.role
            party_id = int(args.party_id)
            task_config = file_utils.load_json_conf(args.config)
            job_parameters = task_config['job_parameters']
            job_initiator = task_config['job_initiator']
            job_args = task_config['job_args']
            task_input_dsl = task_config['input']
            task_output_dsl = task_config['output']
            parameters = TaskExecutor.get_parameters(job_id, component_name, role, party_id)
            # parameters = task_config['parameters']
            module_name = task_config['module_name']
        except Exception as e:
            traceback.print_exc()
            schedule_logger().exception(e)
            task.f_status = TaskStatus.FAILED
            return
        try:
            # init environment, process is shared globally
            RuntimeConfig.init_config(WORK_MODE=job_parameters['work_mode'],
                                      BACKEND=job_parameters.get('backend', 0))
            session.init(job_id='{}_{}_{}'.format(task_id, role, party_id), mode=RuntimeConfig.WORK_MODE, backend=RuntimeConfig.BACKEND)
            federation.init(job_id=task_id, runtime_conf=parameters)
            job_log_dir = os.path.join(job_utils.get_job_log_directory(job_id=job_id), role, str(party_id))
            task_log_dir = os.path.join(job_log_dir, component_name)
            log_utils.LoggerFactory.set_directory(directory=task_log_dir, parent_log_dir=job_log_dir,
                                                  append_to_parent_log=True, force=True)

            task.f_job_id = job_id
            task.f_component_name = component_name
            task.f_task_id = task_id
            task.f_role = role
            task.f_party_id = party_id
            task.f_operator = 'python_operator'
            tracker = Tracking(job_id=job_id, role=role, party_id=party_id, component_name=component_name,
                               task_id=task_id,
                               model_id=job_parameters['model_id'],
                               model_version=job_parameters['model_version'],
                               module_name=module_name)
            task.f_start_time = current_timestamp()
            task.f_run_ip = get_lan_ip()
            task.f_run_pid = os.getpid()
            run_class_paths = parameters.get('CodePath').split('/')
            run_class_package = '.'.join(run_class_paths[:-2]) + '.' + run_class_paths[-2].replace('.py','')
            run_class_name = run_class_paths[-1]
            task_run_args = TaskExecutor.get_task_run_args(job_id=job_id, role=role, party_id=party_id,
                                                           job_parameters=job_parameters, job_args=job_args,
                                                           input_dsl=task_input_dsl)
            run_object = getattr(importlib.import_module(run_class_package), run_class_name)()
            run_object.set_tracker(tracker=tracker)
            run_object.set_taskid(taskid=task_id)
            task.f_status = TaskStatus.RUNNING
            TaskExecutor.sync_task_status(job_id=job_id, component_name=component_name, task_id=task_id, role=role,
                                          party_id=party_id, initiator_party_id=job_initiator.get('party_id', None),
                                          initiator_role=job_initiator.get('role', None),
                                          task_info=task.to_json())

            schedule_logger().info('run {} {} {} {} {} task'.format(job_id, component_name, task_id, role, party_id))
            schedule_logger().info(parameters)
            schedule_logger().info(task_input_dsl)
            run_object.run(parameters, task_run_args)
            output_data = run_object.save_data()
            tracker.save_output_data_table(output_data, task_output_dsl.get('data')[0] if task_output_dsl.get('data') else 'component')
            output_model = run_object.export_model()
            # There is only one model output at the current dsl version.
            tracker.save_output_model(output_model, task_output_dsl['model'][0] if task_output_dsl.get('model') else 'default')
            task.f_status = TaskStatus.SUCCESS
        except Exception as e:
            traceback.print_exc()
            schedule_logger().exception(e)
            task.f_status = TaskStatus.FAILED
        finally:
            sync_success = False
            try:
                session.stop()
                task.f_end_time = current_timestamp()
                task.f_elapsed = task.f_end_time - task.f_start_time
                task.f_update_time = current_timestamp()
                TaskExecutor.sync_task_status(job_id=job_id, component_name=component_name, task_id=task_id, role=role,
                                              party_id=party_id,
                                              initiator_party_id=job_initiator.get('party_id', None),
                                              initiator_role=job_initiator.get('role', None),
                                              task_info=task.to_json())
                sync_success = True
            except Exception as e:
                traceback.print_exc()
                schedule_logger().exception(e)
        schedule_logger().info(
            'finish {} {} {} {} {} {} task'.format(job_id, component_name, task_id, role, party_id, task.f_status if sync_success else TaskStatus.FAILED))
        print('finish {} {} {} {} {} {} task'.format(job_id, component_name, task_id, role, party_id, task.f_status if sync_success else TaskStatus.FAILED))
            if fit_intercept:
                self.assertListEqual(dense_result, self.gradient_fit_intercept)
            else:
                self.assertListEqual(dense_result, self.gradient)
            sparse_result = hetero_linear_model_gradient.compute_gradient(
                sparse_data, fore_gradient, fit_intercept)
            sparse_result = [
                self.paillier_encrypt.decrypt(iterator)
                for iterator in sparse_result
            ]
            self.assertListEqual(dense_result, sparse_result)

    def _make_sparse_data(self):
        def trans_sparse(instance):
            dense_features = instance.features
            indices = [i for i in range(len(dense_features))]
            sparse_features = SparseVector(indices=indices,
                                           data=dense_features,
                                           shape=len(dense_features))
            return Instance(inst_id=None,
                            features=sparse_features,
                            label=instance.label)

        return self.data_inst.mapValues(trans_sparse)


if __name__ == "__main__":
    session.init("1111")
    unittest.main()
    session.stop()
Пример #9
0
def onsignal_term(signum, frame):
    try:
        session.stop()
        sys.exit(1)
    except Exception as e:
        pass
Пример #10
0
 def tearDown(self):
     self.table.destroy()
     session.stop()
Пример #11
0
 def tearDown(self):
     for table in self.table_list:
         table.destroy()
     session.stop()