Package: mlflow-algorithmia
mlflow-algorithmiaDeploy MLflow models to AlgorithmiaInstallpip install mlflow-algorithmiaUsageThis is based on themlflow tutorialwe reproduce some steps here but for more details please see the officialmlflow docs.Create a model by running this script:mlflow run examples/sklearn_elasticnet_wine/This will create anmlrunsdirectory that contains the trained model,
you can run the mlflow UI runningmlflow uior serve the model locally using the
mlflow server running:mlflow models serve -m mlruns/0/<run-id>/artifacts/model -p 1234And make a test querycurl -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:An Algorithmia API key withRead + Writedata accessThe path to the model (undermlruns) you want to deploy, for example:mlruns/0/<run-id>/artifacts/modelSet 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/modelINFO: 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: c6b883b325ee0bb63d91dd0cadfe0baf6bd84fb3Save the new model version from the output to query the model.Query the model in AlgorithmiaYou need the new model version from above and theALGORITHMIA_USERNAMEandALGORITHMIA_API_KEYvariables you used before.Replace<version>with the model version from the previous command output.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 usemlflow deployments predictcommand to query the model, on this case it will always query thelatest public publishedversion of the model, to query a specific version use the method described above.First create apredict_input.jsonfile: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.jsonNow query the latest public published version of the model:mlflow deployments predict -t algorithmia --name mlflow_sklearn_demo -I predict_input.jsonTo 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_demoAlgorithm settingsTo control the different algorithm specific deployment options such as the
algorithmia environment using environment variables. For example:export ALGO_PACKAGE_SET=python38
mlflow deployments create -t algorithmia --name mlflow_sklearn_demo -m mlruns/0/<run-id>/artifacts/modelWill create an algorithm with the Package Set Python 3.8 instead of the default of 3.7.A complete list of variables and its defaults:VariableDefaultDescriptionALGO_LANGUAGEpython3Package setALGO_ENV_ID``Defaults to the Python 3.8 environment ID found on the clusterALGO_SRC_VISIBILITYclosedAlgorithm source visibilityclosedoropenALGO_LICENSEaplAlgorithm licenseALGO_NETWORK_ACCESSfullNetwork AccessALGO_PIPELINETrueAlgorithm pipeline enabled or notALGO_PACKAGE_SETOptional legacy environment package set name