Metadata-Version: 2.1
Name: mlflow-algorithmia
Version: 0.1.1
Summary: UNKNOWN
Home-page: https://github.com/algorithmia/mlflow-algorithmia
Maintainer: Algorithmia
Maintainer-email: drodriguez@algorithmia.io
License: Apache License, Version 2.0
Description: # mlflow-algorithmia
        
        [![PyPI](https://badge.fury.io/py/mlflow-algorithmia.svg)](https://pypi.org/project/mlflow-algorithmia/)
        [![Testing](https://github.com/algorithmia/mlflow-algorithmia/workflows/test/badge.svg)](https://github.com/algorithmia/mlflow-algorithmia/actions)
        [![License](http://img.shields.io/:license-Apache%202-blue.svg)](https://github.com/algorithmia/mlflow-algorithmia/blob/master/LICENSE.txt)
        
        Deploy MLflow models to Algorithmia
        
        ## Install
        
        ```
        pip install git+git://github.com/algorithmia/mlflow-algorithmia.git
        
        pip install mlflow-algorithmia
        ```
        
        ## Usage
        
        This is based on the [mlflow tutorial](https://www.mlflow.org/docs/latest/tutorials-and-examples/tutorial.html)
        we reproduce some steps here but for more details please see the official [mlflow docs](https://www.mlflow.org/docs).
        
        Create a model by running this script:
        
        ```
        python examples/sklearn_elasticnet_wine/train.py
        ```
        
        This will create an `mlruns` directory that contains the trained model,
        you can run the mlflow UI running `mlflow ui` or serve the model locally using the
        mlflow server running:
        
        ```
        $ mlflow models serve -m mlruns/0/<run-id>/artifacts/model -p 1234
        ```
        
        And make a test query
        
        ```
        $ curl -X POST -H "Content-Type:application/json; format=pandas-split" --data '{"columns":["alcohol", "chlorides", "citric acid", "density", "fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", "total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98, 6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}' http://127.0.0.1:1234/invocations
        
        [5.120775719594933]
        ```
        
        Now let's deploy the same model in Algorithmia, you will need:
        
        1. An Algorithmia API key with `Read + Write` data access
        2. The path to the model (under `mlruns`) you want to deploy, for example: `mlruns/0/<run-id>/artifacts/model`
        
        Set your Algorithmia API key and username as environment variables:
        
        ```
        export ALGORITHMIA_USERNAME=<username>
        export ALGORITHMIA_API_KEY=<api-key>
        ```
        
        Create the deployment:
        
        ```
        mlflow deployments create -t algorithmia --name mlflow_sklearn_demo -m mlruns/0/<run-id>/artifacts/model
        ```
        
        ```
        INFO: Creating Mlflow bundle
        INFO: Uploading Mlflow bundle
        INFO: MLflow bundle uploaded to: ...
        INFO: Cloning algorithm source to: ./algorithmia_tmp/
        INFO: Updating algorithm source and building model
        INFO: Algorithm repo updated: Update - MLflow run_id: 6df340cd6d294fe59d1b4652fb25969a
        INFO: New model version ready: c6b883b325ee0bb63d91dd0cadfe0baf6bd84fb3
        ```
        
        Save the new model version from the output to query the model.
        
        ### Query the model in Algorithmia
        
        You need the new model version from above and the `ALGORITHMIA_USERNAME` and `ALGORITHMIA_API_KEY` variables you used before.
        
        ```
        curl -X POST -d '{"columns":["alcohol", "chlorides", "citric acid", "density", "fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", "total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98, 6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}' -H 'Content-Type: application/json' -H 'Authorization: Simple '${ALGORITHMIA_API_KEY} https://api.algorithmia.com/v1/algo/${ALGORITHMIA_USERNAME}/mlflow_sklearn_demo/<version>
        ```
        
        You can also use `mlflow deployments predict` command to query the model, on this case it will always query the **latest published** version of the model, to query specific versions use the method described above.
        
        First create a `predict_input.json` file:
        
        ```
        echo '{"alcohol":{"0":12.8},"chlorides":{"0":0.029},"citric acid":{"0":0.48},"density":{"0":0.98},"fixed acidity":{"0":6.2},"free sulfur dioxide":{"0":29},"pH":{"0":3.33},"residual sugar":{"0":1.2},"sulphates":{"0":0.39},"total sulfur dioxide":{"0":75},"volatile acidity":{"0":0.66}}' > predict_input.json
        ```
        
        Now query the latest published version of the model:
        
        ```
        mlflow deployments predict -t algorithmia --name mlflow_sklearn_demo -I predict_input.json
        ```
        
        To update deployment, for example after training a new model:
        
        ```
        mlflow deployments update -t algorithmia --name mlflow_sklearn_demo -m <path-to-new-model-dir>
        ```
        
        To delete the deployment:
        
        ```
        mlflow deployments delete -t algorithmia --name mlflow_sklearn_demo
        ```
        
Platform: UNKNOWN
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: test
Provides-Extra: dev
