Python cloudpickle.__version__() Examples
The following are 14
code examples of cloudpickle.__version__().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cloudpickle
, or try the search function
.
Example #1
Source File: experiment.py From ProMP with MIT License | 6 votes |
def get_args(key=None, default=None): args = __get_arg_config() if args.args_data: if args.use_cloudpickle: import cloudpickle assert args.cloudpickle_version == cloudpickle.__version__, "Cloudpickle versions do not match! (host) %s vs (remote) %s" % (args.cloudpickle_version, cloudpickle.__version__) data = cloudpickle.loads(base64.b64decode(args.args_data)) else: data = pickle.loads(base64.b64decode(args.args_data)) else: data = {} if key is not None: return data.get(key, default) return data
Example #2
Source File: experiment.py From ProMP with MIT License | 6 votes |
def encode_args(call_args, cloudpickle=False): """ Encode call_args dictionary as a base64 string """ assert isinstance(call_args, dict) if cloudpickle: import cloudpickle cpickle_version = cloudpickle.__version__ data = base64.b64encode(cloudpickle.dumps(call_args)).decode("utf-8") else: data = base64.b64encode(pickle.dumps(call_args)).decode("utf-8") cpickle_version = 'n/a' return data, cpickle_version # These are arguments passed in from launch_python
Example #3
Source File: keras.py From mlflow with Apache License 2.0 | 6 votes |
def _load_model(model_path, keras_module, **kwargs): keras_models = importlib.import_module(keras_module.__name__ + ".models") custom_objects = kwargs.pop("custom_objects", {}) custom_objects_path = None if os.path.isdir(model_path): if os.path.isfile(os.path.join(model_path, _CUSTOM_OBJECTS_SAVE_PATH)): custom_objects_path = os.path.join(model_path, _CUSTOM_OBJECTS_SAVE_PATH) model_path = os.path.join(model_path, _MODEL_SAVE_PATH) if custom_objects_path is not None: import cloudpickle with open(custom_objects_path, "rb") as in_f: pickled_custom_objects = cloudpickle.load(in_f) pickled_custom_objects.update(custom_objects) custom_objects = pickled_custom_objects from distutils.version import StrictVersion if StrictVersion(keras_module.__version__.split('-')[0]) >= StrictVersion("2.2.3"): # NOTE: Keras 2.2.3 does not work with unicode paths in python2. Pass in h5py.File instead # of string to avoid issues. import h5py with h5py.File(os.path.abspath(model_path), "r") as model_path: return keras_models.load_model(model_path, custom_objects=custom_objects, **kwargs) else: # NOTE: Older versions of Keras only handle filepath. return keras_models.load_model(model_path, custom_objects=custom_objects, **kwargs)
Example #4
Source File: fastai.py From mlflow with Apache License 2.0 | 6 votes |
def get_default_conda_env(include_cloudpickle=False): """ :return: The default Conda environment for MLflow Models produced by calls to :func:`save_model()` and :func:`log_model()`. """ import fastai pip_deps = None if include_cloudpickle: import cloudpickle pip_deps = ["cloudpickle=={}".format(cloudpickle.__version__)] return _mlflow_conda_env( additional_conda_deps=[ "fastai={}".format(fastai.__version__), ], additional_pip_deps=pip_deps, additional_conda_channels=None )
Example #5
Source File: __init__.py From mlflow with Apache License 2.0 | 6 votes |
def get_default_conda_env(): """ :return: The default Conda environment for MLflow Models produced by calls to :func:`save_model()` and :func:`log_model()`. """ import torch import torchvision return _mlflow_conda_env( additional_conda_deps=[ "pytorch={}".format(torch.__version__), "torchvision={}".format(torchvision.__version__), ], additional_pip_deps=[ # We include CloudPickle in the default environment because # it's required by the default pickle module used by `save_model()` # and `log_model()`: `mlflow.pytorch.pickle_module`. "cloudpickle=={}".format(cloudpickle.__version__) ], additional_conda_channels=[ "pytorch", ])
Example #6
Source File: sklearn.py From mlflow with Apache License 2.0 | 6 votes |
def get_default_conda_env(include_cloudpickle=False): """ :return: The default Conda environment for MLflow Models produced by calls to :func:`save_model()` and :func:`log_model()`. """ import sklearn pip_deps = None if include_cloudpickle: import cloudpickle pip_deps = ["cloudpickle=={}".format(cloudpickle.__version__)] return _mlflow_conda_env( additional_conda_deps=[ "scikit-learn={}".format(sklearn.__version__), ], additional_pip_deps=pip_deps, additional_conda_channels=None )
Example #7
Source File: launcher.py From EPG with MIT License | 5 votes |
def dumps_with_help(obj): if cloudpickle.__version__ != '0.5.2': raise RuntimeError( 'cloudpickle version 0.5.2 is required, please run `pip install cloudpickle==0.5.2`') try: return cloudpickle.dumps(obj) except Exception: raise RuntimeError( 'Failed to cloudpickle %s. Possible fixes: (1) remove super() from yours script.' % obj)
Example #8
Source File: keras.py From mlflow with Apache License 2.0 | 5 votes |
def get_default_conda_env(include_cloudpickle=False, keras_module=None): """ :return: The default Conda environment for MLflow Models produced by calls to :func:`save_model()` and :func:`log_model()`. """ import tensorflow as tf conda_deps = [] # if we use tf.keras we only need to declare dependency on tensorflow pip_deps = [] if keras_module is None: import keras keras_module = keras if keras_module.__name__ == "keras": # Temporary fix: the created conda environment has issues installing keras >= 2.3.1 if LooseVersion(keras_module.__version__) < LooseVersion('2.3.1'): conda_deps.append("keras=={}".format(keras_module.__version__)) else: pip_deps.append("keras=={}".format(keras_module.__version__)) if include_cloudpickle: import cloudpickle pip_deps.append("cloudpickle=={}".format(cloudpickle.__version__)) # Temporary fix: conda-forge currently does not have tensorflow > 1.14 # The Keras pyfunc representation requires the TensorFlow # backend for Keras. Therefore, the conda environment must # include TensorFlow if LooseVersion(tf.__version__) <= LooseVersion('1.13.2'): conda_deps.append("tensorflow=={}".format(tf.__version__)) else: pip_deps.append("tensorflow=={}".format(tf.__version__)) return _mlflow_conda_env( additional_conda_deps=conda_deps, additional_pip_deps=pip_deps, additional_conda_channels=None)
Example #9
Source File: keras.py From mlflow with Apache License 2.0 | 5 votes |
def _load_pyfunc(path): """ Load PyFunc implementation. Called by ``pyfunc.load_pyfunc``. :param path: Local filesystem path to the MLflow Model with the ``keras`` flavor. """ import tensorflow as tf if os.path.isfile(os.path.join(path, _KERAS_MODULE_SPEC_PATH)): with open(os.path.join(path, _KERAS_MODULE_SPEC_PATH), "r") as f: keras_module = importlib.import_module(f.read()) else: import keras keras_module = keras K = importlib.import_module(keras_module.__name__ + ".backend") if keras_module.__name__ == "tensorflow.keras" or K.backend() == 'tensorflow': if LooseVersion(tf.__version__) < LooseVersion('2.0.0'): graph = tf.Graph() sess = tf.Session(graph=graph) # By default tf backed models depend on the global graph and session. # We create an use new Graph and Session and store them with the model # This way the model is independent on the global state. with graph.as_default(): with sess.as_default(): # pylint:disable=not-context-manager K.set_learning_phase(0) m = _load_model(path, keras_module=keras_module, compile=False) return _KerasModelWrapper(m, graph, sess) else: K.set_learning_phase(0) m = _load_model(path, keras_module=keras_module, compile=False) return _KerasModelWrapper(m, None, None) else: raise MlflowException("Unsupported backend '%s'" % K._BACKEND)
Example #10
Source File: model.py From mlflow with Apache License 2.0 | 5 votes |
def get_default_conda_env(): """ :return: The default Conda environment for MLflow Models produced by calls to :func:`save_model() <mlflow.pyfunc.save_model>` and :func:`log_model() <mlflow.pyfunc.log_model>` when a user-defined subclass of :class:`PythonModel` is provided. """ return _mlflow_conda_env( additional_conda_deps=None, additional_pip_deps=[ "cloudpickle=={}".format(cloudpickle.__version__), ], additional_conda_channels=None)
Example #11
Source File: model.py From mlflow with Apache License 2.0 | 5 votes |
def _load_pyfunc(model_path): pyfunc_config = _get_flavor_configuration( model_path=model_path, flavor_name=mlflow.pyfunc.FLAVOR_NAME) python_model_cloudpickle_version = pyfunc_config.get(CONFIG_KEY_CLOUDPICKLE_VERSION, None) if python_model_cloudpickle_version is None: mlflow.pyfunc._logger.warning( "The version of CloudPickle used to save the model could not be found in the MLmodel" " configuration") elif python_model_cloudpickle_version != cloudpickle.__version__: # CloudPickle does not have a well-defined cross-version compatibility policy. Micro version # releases have been known to cause incompatibilities. Therefore, we match on the full # library version mlflow.pyfunc._logger.warning( "The version of CloudPickle that was used to save the model, `CloudPickle %s`, differs" " from the version of CloudPickle that is currently running, `CloudPickle %s`, and may" " be incompatible", python_model_cloudpickle_version, cloudpickle.__version__) python_model_subpath = pyfunc_config.get(CONFIG_KEY_PYTHON_MODEL, None) if python_model_subpath is None: raise MlflowException( "Python model path was not specified in the model configuration") with open(os.path.join(model_path, python_model_subpath), "rb") as f: python_model = cloudpickle.load(f) artifacts = {} for saved_artifact_name, saved_artifact_info in\ pyfunc_config.get(CONFIG_KEY_ARTIFACTS, {}).items(): artifacts[saved_artifact_name] = os.path.join( model_path, saved_artifact_info[CONFIG_KEY_ARTIFACT_RELATIVE_PATH]) context = PythonModelContext(artifacts=artifacts) python_model.load_context(context=context) return _PythonModelPyfuncWrapper(python_model=python_model, context=context)
Example #12
Source File: test_model_export_with_class_and_artifacts.py From mlflow with Apache License 2.0 | 5 votes |
def _conda_env(): # NB: We need mlflow as a dependency in the environment. return _mlflow_conda_env( additional_conda_deps=None, install_mlflow=False, additional_pip_deps=[ "-e " + os.path.dirname(mlflow.__path__[0]), "cloudpickle=={}".format(cloudpickle.__version__), "scikit-learn=={}".format(sklearn.__version__) ], additional_conda_channels=None)
Example #13
Source File: test_model_export_with_class_and_artifacts.py From mlflow with Apache License 2.0 | 5 votes |
def test_load_model_with_differing_cloudpickle_version_at_micro_granularity_logs_warning( model_path): class TestModel(mlflow.pyfunc.PythonModel): def predict(self, context, model_input): return model_input mlflow.pyfunc.save_model(path=model_path, python_model=TestModel()) saver_cloudpickle_version = "0.5.8" model_config_path = os.path.join(model_path, "MLmodel") model_config = Model.load(model_config_path) model_config.flavors[mlflow.pyfunc.FLAVOR_NAME][ mlflow.pyfunc.model.CONFIG_KEY_CLOUDPICKLE_VERSION] = saver_cloudpickle_version model_config.save(model_config_path) log_messages = [] def custom_warn(message_text, *args, **kwargs): log_messages.append(message_text % args % kwargs) loader_cloudpickle_version = "0.5.7" with mock.patch("mlflow.pyfunc._logger.warning") as warn_mock, \ mock.patch("cloudpickle.__version__") as cloudpickle_version_mock: cloudpickle_version_mock.__str__ = lambda *args, **kwargs: loader_cloudpickle_version warn_mock.side_effect = custom_warn mlflow.pyfunc.load_pyfunc(model_uri=model_path) assert any([ "differs from the version of CloudPickle that is currently running" in log_message and saver_cloudpickle_version in log_message and loader_cloudpickle_version in log_message for log_message in log_messages ])
Example #14
Source File: mlflow.py From interpret-community with MIT License | 4 votes |
def log_explanation(name, explanation): """Log the explanation to MLflow using MLflow model logging. :param name: The name of the explanation. Will be used as a directory name. :type name: str :param explanation: The explanation object to log. :type explanation: Explanation """ try: from mlflow.models import Model except ImportError as e: raise Exception("Could not log_explanation to mlflow. Missing mlflow dependency, " "pip install mlflow to resolve the error: {}.".format(e)) import cloudpickle as pickle with TemporaryDirectory() as tempdir: path = os.path.join(tempdir, 'explanation') save_explanation(explanation, path, exist_ok=True) conda_env = { "name": "mlflow-env", "channels": ["defaults"], "dependencies": [ "pip", { "pip": [ "interpret-community=={}".format(interpret_community.__version__), "cloudpickle=={}".format(pickle.__version__)] } ] } conda_path = os.path.join(tempdir, "conda.yaml") with open(conda_path, "w") as stream: yaml.dump(conda_env, stream) kwargs = {'interpret_community_metadata': _get_explanation_metadata(explanation)} Model.log(name, flavor=interpret_community.mlflow, loader_module='interpret_community.mlflow', data_path=path, conda_env=conda_path, **kwargs)