def configure(self, params): super(PredictionServer, self).configure(params) self._show_perf = self._params.get("show_perf") self._run_language = RunLanguage(params.get("run_language")) self._target_type = params[TARGET_TYPE_ARG_KEYWORD] self._stats_collector = StatsCollector( disable_instance=not self._show_perf) self._stats_collector.register_report("run_predictor_total", "finish", StatsOperation.SUB, "start") self._memory_monitor = MemoryMonitor(monitor_current_process=True) if self._run_language == RunLanguage.PYTHON: from datarobot_drum.drum.language_predictors.python_predictor.python_predictor import ( PythonPredictor, ) self._predictor = PythonPredictor() elif self._run_language == RunLanguage.JAVA: from datarobot_drum.drum.language_predictors.java_predictor.java_predictor import ( JavaPredictor, ) self._predictor = JavaPredictor() elif self._run_language == RunLanguage.R: # this import is here, because RPredictor imports rpy library, # which is not installed for Java and Python cases. from datarobot_drum.drum.language_predictors.r_predictor.r_predictor import RPredictor self._predictor = RPredictor() else: raise DrumCommonException( "Prediction server doesn't support language: {} ".format( self._run_language)) self._predictor.configure(params)
def configure(self, params): super(GenericPredictorComponent, self).configure(params) self._run_language = RunLanguage(params.get("run_language")) self._target_type = TargetType(params[TARGET_TYPE_ARG_KEYWORD]) if self._run_language == RunLanguage.PYTHON: from datarobot_drum.drum.language_predictors.python_predictor.python_predictor import ( PythonPredictor, ) self._predictor = PythonPredictor() elif self._run_language == RunLanguage.JAVA: from datarobot_drum.drum.language_predictors.java_predictor.java_predictor import ( JavaPredictor, ) self._predictor = JavaPredictor() elif self._run_language == RunLanguage.R: # this import is here, because RPredictor imports rpy library, # which is not installed for Java and Python cases. from datarobot_drum.drum.language_predictors.r_predictor.r_predictor import RPredictor self._predictor = RPredictor() else: raise DrumCommonException( "Prediction server doesn't support language: {} ".format( self._run_language)) self._predictor.configure(params)
def configure(self, params): """ @brief It is called in within the 'deputy' context """ super(UwsgiServing, self).configure(params) self._show_perf = self._params.get("show_perf") self._stats_collector = StatsCollector( disable_instance=not self._show_perf) self._stats_collector.register_report("run_predictor_total", "finish", StatsOperation.SUB, "start") self._memory_monitor = MemoryMonitor() self._run_language = RunLanguage(params.get("run_language")) self._logger.info( "Configure component with input params, name: {}, params: {}". format(self.name(), params))
def configure(self, params): """ @brief It is called in within the 'deputy' context """ super(UwsgiServing, self).configure(params) self._code_dir = self._params.get("__custom_model_path__") self._show_perf = self._params.get("show_perf") self._run_language = RunLanguage(params.get("run_language")) self._target_type = TargetType(params[TARGET_TYPE_ARG_KEYWORD]) self._stats_collector = StatsCollector( disable_instance=not self._show_perf) self._stats_collector.register_report("run_predictor_total", "finish", StatsOperation.SUB, "start") self._memory_monitor = MemoryMonitor() self._deployment_config = parse_validate_deployment_config_file( self._params["deployment_config"]) self._logger.info( "Configure component with input params, name: {}, params: {}". format(self.name(), params))
def _check_artifacts_and_get_run_language(self): lang = getattr(self.options, "language", None) if lang: return RunLanguage(self.options.language) code_dir_abspath = os.path.abspath(self.options.code_dir) artifact_language = None custom_language = None # check which artifacts present in the code dir python_artifacts = CMRunnerUtils.find_files_by_extensions( code_dir_abspath, PythonArtifacts.ALL) r_artifacts = CMRunnerUtils.find_files_by_extensions( code_dir_abspath, RArtifacts.ALL) java_artifacts = CMRunnerUtils.find_files_by_extensions( code_dir_abspath, JavaArtifacts.ALL) # check which custom code files present in the code dir is_custom_py = CMRunnerUtils.filename_exists_and_is_file( code_dir_abspath, "custom.py") is_custom_r = CMRunnerUtils.filename_exists_and_is_file( code_dir_abspath, "custom.R") or CMRunnerUtils.filename_exists_and_is_file( code_dir_abspath, "custom.r") # if all the artifacts belong to the same language, set it if bool(len(python_artifacts)) + bool(len(r_artifacts)) + bool( len(java_artifacts)) == 1: if len(python_artifacts): artifact_language = RunLanguage.PYTHON elif len(r_artifacts): artifact_language = RunLanguage.R elif len(java_artifacts): artifact_language = RunLanguage.JAVA # if only one custom file found, set it: if is_custom_py + is_custom_r == 1: custom_language = RunLanguage.PYTHON if is_custom_py else RunLanguage.R # if both language values are None, or both are not None and not equal if (bool(custom_language) + bool(artifact_language) == 0 or bool(custom_language) + bool(artifact_language) == 2 and custom_language != artifact_language): artifact_language = "None" if artifact_language is None else artifact_language.value custom_language = "None" if custom_language is None else custom_language.value error_mes = ( "Can not detect language by artifacts and/or custom.py/R files.\n" "Detected: language by artifacts - {}; language by custom - {}.\n" "Code directory must have one or more model artifacts belonging to the same language:\n" "Python/R/Java, with an extension:\n" "Python models: {}\n" "R models: {}\n" "Java models: {}.\n" "Or one of custom.py/R files.".format( artifact_language, custom_language, PythonArtifacts.ALL, RArtifacts.ALL, JavaArtifacts.ALL, )) all_files_message = "\n\nFiles(100 first) found in {}:\n{}\n".format( code_dir_abspath, "\n".join(sorted(os.listdir(code_dir_abspath))[0:100])) error_mes += all_files_message self.logger.error(error_mes) raise DrumCommonException(error_mes) run_language = custom_language if custom_language is not None else artifact_language return run_language
def _generate_template(self): CMTemplateGenerator( template_type=TemplateType.MODEL, language=RunLanguage(self.options.language), dir=self.options.code_dir, ).generate()