From 01886e09f47659800a0c44acbf3f09c1b7440222 Mon Sep 17 00:00:00 2001 From: iguazio-cicd Date: Sun, 11 Feb 2024 12:52:09 +0000 Subject: [PATCH] Automatically generated by github-worflow[bot] for commit: 4620020 --- README.md | 64 + catalog.json | 2 +- .../auto_trainer/1.7.0/src/auto_trainer.ipynb | 464 ++++++ .../auto_trainer/1.7.0/src/auto_trainer.py | 401 ++++++ .../auto_trainer/1.7.0/src/function.yaml | 164 +++ .../master/auto_trainer/1.7.0/src/item.yaml | 26 + .../auto_trainer/1.7.0/src/requirements.txt | 4 + .../1.7.0/src/test_auto_trainer.py | 215 +++ .../1.7.0/static/auto_trainer.html | 541 +++++++ .../1.7.0/static/documentation.html | 339 +++++ .../auto_trainer/1.7.0/static/example.html | 541 +++++++ .../auto_trainer/1.7.0/static/function.html | 186 +++ .../auto_trainer/1.7.0/static/item.html | 48 + .../auto_trainer/1.7.0/static/source.html | 423 ++++++ .../auto_trainer/latest/src/auto_trainer.py | 14 +- .../auto_trainer/latest/src/function.yaml | 10 +- .../master/auto_trainer/latest/src/item.yaml | 2 +- .../latest/static/auto_trainer.html | 14 +- .../auto_trainer/latest/static/function.html | 10 +- .../auto_trainer/latest/static/item.html | 2 +- .../auto_trainer/latest/static/source.html | 14 +- functions/master/catalog.json | 2 +- .../1.4.0/src/data/metrics.pq | Bin 0 -> 170843 bytes .../1.4.0/src/feature_selection.ipynb | 1283 +++++++++++++++++ .../1.4.0/src/feature_selection.py | 347 +++++ .../feature_selection/1.4.0/src/function.yaml | 120 ++ .../feature_selection/1.4.0/src/item.yaml | 25 + .../1.4.0/src/requirements.txt | 5 + .../1.4.0/src/test_feature_selection.py | 48 + .../1.4.0/static/documentation.html | 262 ++++ .../1.4.0/static/example.html | 1185 +++++++++++++++ .../1.4.0/static/feature_selection.html | 487 +++++++ .../1.4.0/static/function.html | 142 ++ .../feature_selection/1.4.0/static/item.html | 47 + .../1.4.0/static/source.html | 369 +++++ .../latest/src/feature_selection.py | 2 +- .../latest/src/function.yaml | 29 +- .../feature_selection/latest/src/item.yaml | 2 +- .../latest/static/feature_selection.html | 2 +- .../latest/static/function.html | 29 +- .../feature_selection/latest/static/item.html | 2 +- .../latest/static/source.html | 2 +- functions/master/tags.json | 2 +- 43 files changed, 7809 insertions(+), 67 deletions(-) create mode 100644 functions/master/auto_trainer/1.7.0/src/auto_trainer.ipynb create mode 100755 functions/master/auto_trainer/1.7.0/src/auto_trainer.py create mode 100644 functions/master/auto_trainer/1.7.0/src/function.yaml create mode 100755 functions/master/auto_trainer/1.7.0/src/item.yaml create mode 100644 functions/master/auto_trainer/1.7.0/src/requirements.txt create mode 100644 functions/master/auto_trainer/1.7.0/src/test_auto_trainer.py create mode 100644 functions/master/auto_trainer/1.7.0/static/auto_trainer.html create mode 100644 functions/master/auto_trainer/1.7.0/static/documentation.html create mode 100644 functions/master/auto_trainer/1.7.0/static/example.html create mode 100644 functions/master/auto_trainer/1.7.0/static/function.html create mode 100644 functions/master/auto_trainer/1.7.0/static/item.html create mode 100644 functions/master/auto_trainer/1.7.0/static/source.html create mode 100644 functions/master/feature_selection/1.4.0/src/data/metrics.pq create mode 100644 functions/master/feature_selection/1.4.0/src/feature_selection.ipynb create mode 100644 functions/master/feature_selection/1.4.0/src/feature_selection.py create mode 100644 functions/master/feature_selection/1.4.0/src/function.yaml create mode 100644 functions/master/feature_selection/1.4.0/src/item.yaml create mode 100644 functions/master/feature_selection/1.4.0/src/requirements.txt create mode 100644 functions/master/feature_selection/1.4.0/src/test_feature_selection.py create mode 100644 functions/master/feature_selection/1.4.0/static/documentation.html create mode 100644 functions/master/feature_selection/1.4.0/static/example.html create mode 100644 functions/master/feature_selection/1.4.0/static/feature_selection.html create mode 100644 functions/master/feature_selection/1.4.0/static/function.html create mode 100644 functions/master/feature_selection/1.4.0/static/item.html create mode 100644 functions/master/feature_selection/1.4.0/static/source.html diff --git a/README.md b/README.md index 3868d478..1f751090 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,67 @@ +### Change log [2024-02-11 12:52:07] +1. Item Updated: `batch_inference` (from version: `1.7.0` to `1.7.0`) +2. Item Updated: `structured_data_generator` (from version: `1.3.0` to `1.3.0`) +3. Item Updated: `tf2_serving_v2` (from version: `1.1.0` to `1.1.0`) +4. Item Updated: `model_server` (from version: `1.1.0` to `1.1.0`) +5. Item Updated: `test_classifier` (from version: `1.1.0` to `1.1.0`) +6. Item Updated: `batch_inference_v2` (from version: `2.5.0` to `2.5.0`) +7. Item Updated: `pandas_profiling_report` (from version: `1.1.0` to `1.1.0`) +8. Item Updated: `xgb_serving` (from version: `1.1.2` to `1.1.2`) +9. Item Updated: `silero_vad` (from version: `1.1.0` to `1.1.0`) +10. Item Updated: `load_dataset` (from version: `1.1.0` to `1.1.0`) +11. Item Updated: `xgb_custom` (from version: `1.1.0` to `1.1.0`) +12. Item Updated: `v2_model_server` (from version: `1.1.0` to `1.1.0`) +13. Item Updated: `pii_recognizer` (from version: `0.2.0` to `0.2.0`) +14. Item Updated: `github_utils` (from version: `1.1.0` to `1.1.0`) +15. Item Updated: `send_email` (from version: `1.2.0` to `1.2.0`) +16. Item Updated: `snowflake_dask` (from version: `1.1.0` to `1.1.0`) +17. Item Updated: `ingest` (from version: `1.1.0` to `1.1.0`) +18. Item Updated: `hugging_face_serving` (from version: `1.0.0` to `1.0.0`) +19. Item Updated: `text_to_audio_generator` (from version: `1.1.0` to `1.1.0`) +20. Item Updated: `model_monitoring_batch` (from version: `1.1.0` to `1.1.0`) +21. Item Updated: `translate` (from version: `0.0.2` to `0.0.2`) +22. Item Updated: `xgb_trainer` (from version: `1.1.1` to `1.1.1`) +23. Item Updated: `model_server_tester` (from version: `1.1.0` to `1.1.0`) +24. Item Updated: `get_offline_features` (from version: `1.2.0` to `1.2.0`) +25. Item Updated: `load_dask` (from version: `1.1.0` to `1.1.0`) +26. Item Updated: `describe` (from version: `1.2.0` to `1.2.0`) +27. Item Updated: `bert_embeddings` (from version: `1.2.0` to `1.2.0`) +28. Item Updated: `huggingface_auto_trainer` (from version: `1.0.0` to `1.0.0`) +29. Item Updated: `tf1_serving` (from version: `1.1.0` to `1.1.0`) +30. Item Updated: `validate_great_expectations` (from version: `1.1.0` to `1.1.0`) +31. Item Updated: `concept_drift` (from version: `1.1.0` to `1.1.0`) +32. Item Updated: `onnx_utils` (from version: `1.2.0` to `1.2.0`) +33. Item Updated: `open_archive` (from version: `1.1.0` to `1.1.0`) +34. Item Updated: `coxph_trainer` (from version: `1.1.0` to `1.1.0`) +35. Item Updated: `stream_to_parquet` (from version: `1.1.0` to `1.1.0`) +36. Item Updated: `slack_notify` (from version: `1.1.0` to `1.1.0`) +37. Item Updated: `xgb_test` (from version: `1.1.1` to `1.1.1`) +38. Item Updated: `feature_selection` (from version: `1.4.0` to `1.4.0`) +39. Item Updated: `pyannote_audio` (from version: `1.0.0` to `1.0.0`) +40. Item Updated: `transcribe` (from version: `1.0.0` to `1.0.0`) +41. Item Updated: `azureml_serving` (from version: `1.1.0` to `1.1.0`) +42. Item Updated: `churn_server` (from version: `1.1.0` to `1.1.0`) +43. Item Updated: `describe_spark` (from version: `1.1.0` to `1.1.0`) +44. Item Updated: `tf2_serving` (from version: `1.1.0` to `1.1.0`) +45. Item Updated: `virtual_drift` (from version: `1.1.0` to `1.1.0`) +46. Item Updated: `auto_trainer` (from version: `1.7.0` to `1.7.0`) +47. Item Updated: `sklearn_classifier` (from version: `1.1.1` to `1.1.1`) +48. Item Updated: `gen_class_data` (from version: `1.2.0` to `1.2.0`) +49. Item Updated: `question_answering` (from version: `0.3.1` to `0.3.1`) +50. Item Updated: `aggregate` (from version: `1.3.0` to `1.3.0`) +51. Item Updated: `coxph_test` (from version: `1.1.0` to `1.1.0`) +52. Item Updated: `azureml_utils` (from version: `1.3.0` to `1.3.0`) +53. Item Updated: `v2_model_tester` (from version: `1.1.0` to `1.1.0`) +54. Item Updated: `sql_to_file` (from version: `1.1.0` to `1.1.0`) +55. Item Updated: `hugging_face_classifier_trainer` (from version: `0.1.0` to `0.1.0`) +56. Item Updated: `rnn_serving` (from version: `1.1.0` to `1.1.0`) +57. Item Updated: `concept_drift_streaming` (from version: `1.1.0` to `1.1.0`) +58. Item Updated: `model_monitoring_stream` (from version: `1.1.0` to `1.1.0`) +59. Item Updated: `feature_perms` (from version: `1.1.0` to `1.1.0`) +60. Item Updated: `arc_to_parquet` (from version: `1.4.1` to `1.4.1`) +61. Item Updated: `sklearn_classifier_dask` (from version: `1.1.1` to `1.1.1`) +62. Item Updated: `describe_dask` (from version: `1.1.0` to `1.1.0`) + ### Change log [2024-02-06 11:16:40] 1. Item Updated: `pyannote_audio` (from version: `1.0.0` to `1.0.0`) 2. Item Updated: `hugging_face_classifier_trainer` (from version: `0.1.0` to `0.1.0`) diff --git a/catalog.json b/catalog.json index 263c3b4a..c597ee67 100644 --- a/catalog.json +++ b/catalog.json @@ -1 +1 @@ -{"functions": {"development": {"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.7.1", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1"}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "0.10.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-10-25:00-15", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-10-25:00-15", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "onnx_utils", "platformVersion": "", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.8.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.1"}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1"}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.0.1"}, "0.9.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.3"}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "1.0.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.4"}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0"}, "0.10.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.1"}, "1.7.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2"}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3"}, "1.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "0.10.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6"}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.1.1"}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0"}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0"}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0"}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0"}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0"}, "2.3.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.3.0"}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0"}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}}}, "master": {"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1"}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1"}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1"}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1"}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0"}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1"}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1"}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1"}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1"}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1"}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1"}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1"}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1"}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1"}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1"}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5"}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6"}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.5"}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0"}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3"}, "1.0.7": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.7"}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.4.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.3.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0"}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1"}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0"}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0"}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.1.0"}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.0.1"}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0"}, "2.4.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.4.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0"}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0"}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0"}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0"}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}}}}} \ No newline at end of file +{"functions": {"development": {"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.7.1", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1"}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.2"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "0.10.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-10-25:00-15", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-10-25:00-15", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "onnx_utils", "platformVersion": "", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "0.8.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.1"}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1"}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.0.1"}, "0.9.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.3"}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "1.0.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.4"}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0"}, "0.10.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.1"}, "1.7.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.0.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2"}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3"}, "1.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "0.10.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6"}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.1.1"}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0"}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0"}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0"}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0"}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0"}, "2.3.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.3.0"}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0"}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}}}, "master": {"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0"}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1"}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0"}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0"}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0"}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0"}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0"}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0"}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0"}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0"}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0"}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0"}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1"}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0"}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0"}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0"}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0"}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1"}, "1.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0"}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0"}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0"}, "1.0.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.5"}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3"}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0"}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6"}, "1.7.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0"}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2"}, "1.0.7": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.7"}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0"}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0"}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.4.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.4.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.3.0"}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0"}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.1"}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0"}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0"}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0"}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1"}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0"}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0"}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.1.0"}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1"}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0"}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0"}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.0.1"}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0"}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "2.4.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.4.0"}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0"}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0"}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0"}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0"}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0"}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0"}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0"}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0"}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0"}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0"}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0"}}}}} \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/src/auto_trainer.ipynb b/functions/master/auto_trainer/1.7.0/src/auto_trainer.ipynb new file mode 100644 index 00000000..9e0a3d48 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/auto_trainer.ipynb @@ -0,0 +1,464 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# MLRun Auto-Trainer Tutorial" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "This notebook shows how to use the handlers of the MLRun's Auto-trainer.\n", + "the following handlers are:\n", + "- `train`\n", + "- `evaluate`\n", + "- `predict`\n", + "\n", + "All you need is simply **ML model type** and a **dataset**." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import mlrun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "mlrun.get_or_create_project('auto-trainer', context=\"./\", user_project=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### **Fetching a Dataset**" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "To generate the dataset we used the \"gen_class_data\" function from the hub, \n", + "which wraps scikit-learn's [make_classification](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_classification.html#sklearn-datasets-make-classification).
\n", + "See the link for a description of all parameters." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "DATASET_URL = 'https://s3.wasabisys.com/iguazio/data/function-marketplace-data/xgb_trainer/classifier-data.csv'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "mlrun.get_dataitem(DATASET_URL).show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### **Importing the MLhandlers functions from the Marketplace**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "auto_trainer = mlrun.import_function(\"hub://auto_trainer\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### **Training a model**\n", + "\n", + "Choosing the `train` handler" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Define task parameters¶\n", + "* Class parameters should contain the prefix `CLASS_`\n", + "* Fit parameters should contain the prefix `FIT_`\n", + "* Predict parameters should contain the prefix `PREDICT_`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "model_class = \"sklearn.ensemble.RandomForestClassifier\"\n", + "additional_parameters = {\n", + " \"CLASS_max_depth\": 8,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Running the Training job with the \"train\" handler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "train_run = auto_trainer.run(\n", + " inputs={\"dataset\": DATASET_URL},\n", + " params = {\n", + " \"model_class\": model_class,\n", + " \"drop_columns\": [\"feat_0\", \"feat_2\"],\n", + " \"train_test_split_size\": 0.2,\n", + " \"random_state\": 42,\n", + " \"label_columns\": \"labels\",\n", + " \"model_name\": 'MyModel',\n", + " **additional_parameters\n", + " }, \n", + " handler='train',\n", + " local=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### The result of the train run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "train_run.outputs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "train_run.artifact('confusion-matrix').show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Getting the model for evaluating and predicting" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "model_path = train_run.outputs['model']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### **Evaluating a model**\n", + "\n", + "Choosing the `evaluate` handler" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "evaluate_run = auto_trainer.run(\n", + " inputs={\"dataset\": train_run.outputs['test_set']},\n", + " params={\n", + " \"model\": model_path,\n", + " \"drop_columns\": [\"feat_0\", \"feat_2\"], # Not actually necessary on the test set (already done in the previous step)\n", + " \"label_columns\": \"labels\",\n", + " },\n", + " handler=\"evaluate\",\n", + " local=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### The result of the evaluate run" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "evaluate_run.outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### **Making a prediction**\n", + "\n", + "Choosing the `predict` handler. For predicting from a simple sample (a `list` of `lists`,`dict`) pass the dataset as a `param`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "sample = mlrun.get_dataitem(DATASET_URL).as_df().head().drop(\"labels\", axis=1)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "outputs": [], + "source": [ + "sample = sample.values.tolist()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "predict_run = auto_trainer.run(\n", + " params={\n", + " \"dataset\": sample,\n", + " \"model\": model_path,\n", + " \"drop_columns\": [0, 2],\n", + " \"label_columns\": \"labels\",\n", + " },\n", + " handler=\"predict\",\n", + " local=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "#### Showing the predeiction results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "predict_run.outputs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "predict_run.artifact('prediction').show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "[Back to the top](#XGBoost-trainer)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:root] *", + "language": "python", + "name": "conda-root-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/src/auto_trainer.py b/functions/master/auto_trainer/1.7.0/src/auto_trainer.py new file mode 100755 index 00000000..7b476470 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/auto_trainer.py @@ -0,0 +1,401 @@ +# Copyright 2019 Iguazio +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union + +import mlrun +import mlrun.datastore +import mlrun.utils +import pandas as pd +from mlrun import feature_store as fs +from mlrun.datastore import DataItem +from mlrun.execution import MLClientCtx +from mlrun.frameworks.auto_mlrun import AutoMLRun +from mlrun.utils.helpers import create_class, create_function +from sklearn.model_selection import train_test_split + +PathType = Union[str, Path] + + +class KWArgsPrefixes: + MODEL_CLASS = "CLASS_" + FIT = "FIT_" + TRAIN = "TRAIN_" + + +def _get_sub_dict_by_prefix(src: Dict, prefix_key: str) -> Dict[str, Any]: + """ + Collect all the keys from the given dict that starts with the given prefix and creates a new dictionary with these + keys. + + :param src: The source dict to extract the values from. + :param prefix_key: Only keys with this prefix will be returned. The keys in the result dict will be without this + prefix. + """ + return { + key.replace(prefix_key, ""): val + for key, val in src.items() + if key.startswith(prefix_key) + } + + +def _get_dataframe( + context: MLClientCtx, + dataset: DataItem, + label_columns: Optional[Union[str, List[str]]] = None, + drop_columns: Union[str, List[str], int, List[int]] = None, +) -> Tuple[pd.DataFrame, Optional[Union[str, List[str]]]]: + """ + Getting the DataFrame of the dataset and drop the columns accordingly. + + :param context: MLRun context. + :param dataset: The dataset to train the model on. + Can be either a list of lists, dict, URI or a FeatureVector. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. + :param drop_columns: str/int or a list of strings/ints that represent the column names/indices to drop. + """ + store_uri_prefix, _ = mlrun.datastore.parse_store_uri(dataset.artifact_url) + + # Getting the dataset: + if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix: + label_columns = label_columns or dataset.meta.status.label_column + context.logger.info(f"label columns: {label_columns}") + # FeatureVector case: + try: + fv = mlrun.datastore.get_store_resource(dataset.artifact_url) + dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe() + except AttributeError: + # Leave here for backwards compatibility + dataset = fs.get_offline_features( + dataset.meta.uri, drop_columns=drop_columns + ).to_dataframe() + + elif not label_columns: + context.logger.info( + "label_columns not provided, mandatory when dataset is not a FeatureVector" + ) + raise ValueError + + elif isinstance(dataset, (list, dict)): + # list/dict case: + dataset = pd.DataFrame(dataset) + # Checking if drop_columns provided by integer type: + if drop_columns: + if isinstance(drop_columns, str) or ( + isinstance(drop_columns, list) + and any(isinstance(col, str) for col in drop_columns) + ): + context.logger.error( + "drop_columns must be an integer/list of integers if not provided with a URI/FeatureVector dataset" + ) + raise ValueError + dataset.drop(drop_columns, axis=1, inplace=True) + + else: + # simple URL case: + dataset = dataset.as_df() + if drop_columns: + if all(col in dataset for col in drop_columns): + dataset = dataset.drop(drop_columns, axis=1) + else: + context.logger.info( + "not all of the columns to drop in the dataset, drop columns process skipped" + ) + + return dataset, label_columns + + +def train( + context: MLClientCtx, + dataset: DataItem, + model_class: str, + label_columns: Optional[Union[str, List[str]]] = None, + drop_columns: List[str] = None, + model_name: str = "model", + tag: str = "", + sample_set: DataItem = None, + test_set: DataItem = None, + train_test_split_size: float = None, + random_state: int = None, + labels: dict = None, + **kwargs, +): + """ + Training a model with the given dataset. + + example:: + + import mlrun + project = mlrun.get_or_create_project("my-project") + project.set_function("hub://auto_trainer", "train") + trainer_run = project.run( + name="train", + handler="train", + inputs={"dataset": "./path/to/dataset.csv"}, + params={ + "model_class": "sklearn.linear_model.LogisticRegression", + "label_columns": "label", + "drop_columns": "id", + "model_name": "my-model", + "tag": "v1.0.0", + "sample_set": "./path/to/sample_set.csv", + "test_set": "./path/to/test_set.csv", + "CLASS_solver": "liblinear", + }, + ) + + :param context: MLRun context + :param dataset: The dataset to train the model on. Can be either a URI or a FeatureVector + :param model_class: The class of the model, e.g. `sklearn.linear_model.LogisticRegression` + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param drop_columns: str or a list of strings that represent the columns to drop + :param model_name: The model's name to use for storing the model artifact, default to 'model' + :param tag: The model's tag to log with + :param sample_set: A sample set of inputs for the model for logging its stats along the model in favour + of model monitoring. Can be either a URI or a FeatureVector + :param test_set: The test set to train the model with. + :param train_test_split_size: if test_set was provided then this argument is ignored. + Should be between 0.0 and 1.0 and represent the proportion of the dataset to include + in the test split. The size of the Training set is set to the complement of this + value. Default = 0.2 + :param random_state: Relevant only when using train_test_split_size. + A random state seed to shuffle the data. For more information, see: + https://scikit-learn.org/stable/glossary.html#term-random_state + Notice that here we only pass integer values. + :param labels: Labels to log with the model + :param kwargs: Here you can pass keyword arguments with prefixes, + that will be parsed and passed to the relevant function, by the following prefixes: + - `CLASS_` - for the model class arguments + - `FIT_` - for the `fit` function arguments + - `TRAIN_` - for the `train` function (in xgb or lgbm train function - future) + + """ + # Validate inputs: + # Check if exactly one of them is supplied: + if test_set is None: + if train_test_split_size is None: + context.logger.info( + "test_set or train_test_split_size are not provided, setting train_test_split_size to 0.2" + ) + train_test_split_size = 0.2 + + elif train_test_split_size: + context.logger.info( + "test_set provided, ignoring given train_test_split_size value" + ) + train_test_split_size = None + + # Get DataFrame by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Getting the sample set: + if sample_set is None: + context.logger.info( + f"Sample set not given, using the whole training set as the sample set" + ) + sample_set = dataset + else: + sample_set, _ = _get_dataframe( + context=context, + dataset=sample_set, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Parsing kwargs: + # TODO: Use in xgb or lgbm train function. + train_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.TRAIN) + fit_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.FIT) + model_class_kwargs = _get_sub_dict_by_prefix( + src=kwargs, prefix_key=KWArgsPrefixes.MODEL_CLASS + ) + + # Check if model or function: + if hasattr(model_class, "train"): + # TODO: Need to call: model(), afterwards to start the train function. + # model = create_function(f"{model_class}.train") + raise NotImplementedError + else: + # Creating model instance: + model = create_class(model_class)(**model_class_kwargs) + + x = dataset.drop(label_columns, axis=1) + y = dataset[label_columns] + if train_test_split_size: + x_train, x_test, y_train, y_test = train_test_split( + x, y, test_size=train_test_split_size, random_state=random_state + ) + else: + x_train, y_train = x, y + + test_set = test_set.as_df() + if drop_columns: + test_set = dataset.drop(drop_columns, axis=1) + + x_test, y_test = test_set.drop(label_columns, axis=1), test_set[label_columns] + + AutoMLRun.apply_mlrun( + model=model, + model_name=model_name, + context=context, + tag=tag, + sample_set=sample_set, + y_columns=label_columns, + test_set=test_set, + x_test=x_test, + y_test=y_test, + artifacts=context.artifacts, + labels=labels, + ) + context.logger.info(f"training '{model_name}'") + model.fit(x_train, y_train, **fit_kwargs) + + +def evaluate( + context: MLClientCtx, + model: str, + dataset: mlrun.DataItem, + drop_columns: List[str] = None, + label_columns: Optional[Union[str, List[str]]] = None, + **kwargs, +): + """ + Evaluating a model. Artifacts generated by the MLHandler. + + :param context: MLRun context. + :param model: The model Store path. + :param dataset: The dataset to evaluate the model on. Can be either a URI or a FeatureVector. + :param drop_columns: str or a list of strings that represent the columns to drop. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param kwargs: Here you can pass keyword arguments to the predict function + (PREDICT_ prefix is not required). + """ + # Get dataset by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Parsing label_columns: + parsed_label_columns = [] + if label_columns: + label_columns = ( + label_columns if isinstance(label_columns, list) else [label_columns] + ) + for lc in label_columns: + if fs.common.feature_separator in lc: + feature_set_name, label_name, alias = fs.common.parse_feature_string(lc) + parsed_label_columns.append(alias or label_name) + if parsed_label_columns: + label_columns = parsed_label_columns + + x = dataset.drop(label_columns, axis=1) + y = dataset[label_columns] + + # Loading the model and predicting: + model_handler = AutoMLRun.load_model( + model_path=model, context=context, model_name="model_LinearRegression" + ) + AutoMLRun.apply_mlrun(model_handler.model, y_test=y, model_path=model) + + context.logger.info(f"evaluating '{model_handler.model_name}'") + model_handler.model.predict(x, **kwargs) + + +def predict( + context: MLClientCtx, + model: str, + dataset: mlrun.DataItem, + drop_columns: Union[str, List[str], int, List[int]] = None, + label_columns: Optional[Union[str, List[str]]] = None, + result_set: Optional[str] = None, + **kwargs, +): + """ + Predicting dataset by a model. + + :param context: MLRun context. + :param model: The model Store path. + :param dataset: The dataset to predict the model on. Can be either a URI, a FeatureVector or a + sample in a shape of a list/dict. + When passing a sample, pass the dataset as a field in `params` instead of `inputs`. + :param drop_columns: str/int or a list of strings/ints that represent the column names/indices to drop. + When the dataset is a list/dict this parameter should be represented by integers. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param result_set: The db key to set name of the prediction result and the filename. + Default to 'prediction'. + :param kwargs: Here you can pass keyword arguments to the predict function + (PREDICT_ prefix is not required). + """ + # Get dataset by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # loading the model, and getting the model handler: + model_handler = AutoMLRun.load_model(model_path=model, context=context) + + # Dropping label columns if necessary: + if not label_columns: + label_columns = [] + elif isinstance(label_columns, str): + label_columns = [label_columns] + + # Predicting: + context.logger.info(f"making prediction by '{model_handler.model_name}'") + y_pred = model_handler.model.predict(dataset, **kwargs) + + # Preparing and validating label columns for the dataframe of the prediction result: + num_predicted = 1 if len(y_pred.shape) == 1 else y_pred.shape[1] + + if num_predicted > len(label_columns): + if num_predicted == 1: + label_columns = ["predicted labels"] + else: + label_columns.extend( + [ + f"predicted_label_{i + 1 + len(label_columns)}" + for i in range(num_predicted - len(label_columns)) + ] + ) + elif num_predicted < len(label_columns): + context.logger.error( + f"number of predicted labels: {num_predicted} is smaller than number of label columns: {len(label_columns)}" + ) + raise ValueError + + artifact_name = result_set or "prediction" + labels_inside_df = set(label_columns) & set(dataset.columns.tolist()) + if labels_inside_df: + context.logger.error( + f"The labels: {labels_inside_df} are already existed in the dataframe" + ) + raise ValueError + pred_df = pd.concat([dataset, pd.DataFrame(y_pred, columns=label_columns)], axis=1) + context.log_dataset(artifact_name, pred_df, db_key=result_set) diff --git a/functions/master/auto_trainer/1.7.0/src/function.yaml b/functions/master/auto_trainer/1.7.0/src/function.yaml new file mode 100644 index 00000000..0f86b7ea --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/function.yaml @@ -0,0 +1,164 @@ +kind: job +metadata: + name: auto-trainer + tag: '' + hash: 1c415e6d3bd79c9ca0ee537e008643660c13fbc7 + project: '' + labels: + author: yonish + categories: + - machine-learning + - model-training +spec: + command: '' + args: [] + image: mlrun/mlrun + build: + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibGFiZWwgY29sdW1uczoge2xhYmVsX2NvbHVtbnN9IikKICAgICAgICAjIEZlYXR1cmVWZWN0b3IgY2FzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ2ID0gbWxydW4uZGF0YXN0b3JlLmdldF9zdG9yZV9yZXNvdXJjZShkYXRhc2V0LmFydGlmYWN0X3VybCkKICAgICAgICAgICAgZGF0YXNldCA9IGZ2LmdldF9vZmZsaW5lX2ZlYXR1cmVzKGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMpLnRvX2RhdGFmcmFtZSgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIExlYXZlIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIGRhdGFzZXQgPSBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcygKICAgICAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICAgICAgKS50b19kYXRhZnJhbWUoKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo= + commands: [] + code_origin: '' + origin_filename: '' + requirements: [] + entry_points: + train: + name: train + doc: "Training a model with the given dataset.\n\nexample::\n\n import mlrun\n\ + \ project = mlrun.get_or_create_project(\"my-project\")\n project.set_function(\"\ + hub://auto_trainer\", \"train\")\n trainer_run = project.run(\n \ + \ name=\"train\",\n handler=\"train\",\n inputs={\"dataset\"\ + : \"./path/to/dataset.csv\"},\n params={\n \"model_class\"\ + : \"sklearn.linear_model.LogisticRegression\",\n \"label_columns\"\ + : \"label\",\n \"drop_columns\": \"id\",\n \"model_name\"\ + : \"my-model\",\n \"tag\": \"v1.0.0\",\n \"sample_set\"\ + : \"./path/to/sample_set.csv\",\n \"test_set\": \"./path/to/test_set.csv\"\ + ,\n \"CLASS_solver\": \"liblinear\",\n },\n )" + parameters: + - name: context + type: MLClientCtx + doc: MLRun context + - name: dataset + type: DataItem + doc: The dataset to train the model on. Can be either a URI or a FeatureVector + - name: model_class + type: str + doc: The class of the model, e.g. `sklearn.linear_model.LogisticRegression` + - name: label_columns + type: Optional[Union[str, List[str]]] + doc: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + default: null + - name: drop_columns + type: List[str] + doc: str or a list of strings that represent the columns to drop + default: null + - name: model_name + type: str + doc: The model's name to use for storing the model artifact, default to 'model' + default: model + - name: tag + type: str + doc: The model's tag to log with + default: '' + - name: sample_set + type: DataItem + doc: A sample set of inputs for the model for logging its stats along the + model in favour of model monitoring. Can be either a URI or a FeatureVector + default: null + - name: test_set + type: DataItem + doc: The test set to train the model with. + default: null + - name: train_test_split_size + type: float + doc: if test_set was provided then this argument is ignored. Should be between + 0.0 and 1.0 and represent the proportion of the dataset to include in the + test split. The size of the Training set is set to the complement of this + value. Default = 0.2 + default: null + - name: random_state + type: int + doc: 'Relevant only when using train_test_split_size. A random state seed + to shuffle the data. For more information, see: https://scikit-learn.org/stable/glossary.html#term-random_state + Notice that here we only pass integer values.' + default: null + - name: labels + type: dict + doc: Labels to log with the model + default: null + outputs: [] + lineno: 121 + has_varargs: false + has_kwargs: true + evaluate: + name: evaluate + doc: Evaluating a model. Artifacts generated by the MLHandler. + parameters: + - name: context + type: MLClientCtx + doc: MLRun context. + - name: model + type: str + doc: The model Store path. + - name: dataset + type: DataItem + doc: The dataset to evaluate the model on. Can be either a URI or a FeatureVector. + - name: drop_columns + type: List[str] + doc: str or a list of strings that represent the columns to drop. + default: null + - name: label_columns + type: Optional[Union[str, List[str]]] + doc: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + default: null + outputs: [] + lineno: 273 + has_varargs: false + has_kwargs: true + predict: + name: predict + doc: Predicting dataset by a model. + parameters: + - name: context + type: MLClientCtx + doc: MLRun context. + - name: model + type: str + doc: The model Store path. + - name: dataset + type: DataItem + doc: The dataset to predict the model on. Can be either a URI, a FeatureVector + or a sample in a shape of a list/dict. When passing a sample, pass the dataset + as a field in `params` instead of `inputs`. + - name: drop_columns + type: Union[str, List[str], int, List[int]] + doc: str/int or a list of strings/ints that represent the column names/indices + to drop. When the dataset is a list/dict this parameter should be represented + by integers. + default: null + - name: label_columns + type: Optional[Union[str, List[str]]] + doc: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + default: null + - name: result_set + type: Optional[str] + doc: The db key to set name of the prediction result and the filename. Default + to 'prediction'. + default: null + outputs: [] + lineno: 327 + has_varargs: false + has_kwargs: true + description: Automatic train, evaluate and predict functions for the ML frameworks + - Scikit-Learn, XGBoost and LightGBM. + default_handler: train + disable_auto_mount: false + clone_target_dir: '' + env: [] + priority_class_name: '' + preemption_mode: prevent + affinity: null + tolerations: null + security_context: {} +verbose: false diff --git a/functions/master/auto_trainer/1.7.0/src/item.yaml b/functions/master/auto_trainer/1.7.0/src/item.yaml new file mode 100755 index 00000000..ffa03bf0 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/item.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +categories: +- machine-learning +- model-training +description: Automatic train, evaluate and predict functions for the ML frameworks + - Scikit-Learn, XGBoost and LightGBM. +doc: '' +example: auto_trainer.ipynb +generationDate: 2022-08-28:17-25 +hidden: false +icon: '' +labels: + author: yonish +maintainers: [] +marketplaceType: '' +mlrunVersion: 1.5.2 +name: auto_trainer +platformVersion: 3.5.0 +spec: + filename: auto_trainer.py + handler: train + image: mlrun/mlrun + kind: job + requirements: [] +url: '' +version: 1.7.0 diff --git a/functions/master/auto_trainer/1.7.0/src/requirements.txt b/functions/master/auto_trainer/1.7.0/src/requirements.txt new file mode 100644 index 00000000..ad97214f --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/requirements.txt @@ -0,0 +1,4 @@ +pandas +scikit-learn +xgboost +plotly \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/src/test_auto_trainer.py b/functions/master/auto_trainer/1.7.0/src/test_auto_trainer.py new file mode 100644 index 00000000..9a1ff554 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/src/test_auto_trainer.py @@ -0,0 +1,215 @@ +# Copyright 2019 Iguazio +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import os +import tempfile +from typing import Tuple + +import mlrun +import pandas as pd +import pytest +from sklearn.datasets import ( + make_classification, + make_multilabel_classification, + make_regression, +) + +MODELS = [ + ("sklearn.linear_model.LinearRegression", "regression"), + ("sklearn.ensemble.RandomForestClassifier", "classification"), + ("xgboost.XGBRegressor", "regression"), +] + +REQUIRED_ENV_VARS = [ + "MLRUN_DBPATH", + "MLRUN_ARTIFACT_PATH", + "V3IO_USERNAME", + "V3IO_API", + "V3IO_ACCESS_KEY", +] + + +def _validate_environment_variables() -> bool: + """ + Checks that all required Environment variables are set. + """ + environment_keys = os.environ.keys() + return all(key in environment_keys for key in REQUIRED_ENV_VARS) + + +def _get_dataset(problem_type: str, filepath: str = ".", n_classes: int = 2): + if problem_type == "classification": + x, y = make_classification(n_classes=n_classes) + elif problem_type == "regression": + x, y = make_regression(n_targets=1) + elif problem_type == "multilabel_classification": + x, y = make_multilabel_classification(n_classes=n_classes) + else: + raise ValueError(f"Not supporting problem type = {problem_type}") + + features = [f"f_{i}" for i in range(x.shape[1])] + if y.ndim == 1: + labels = ["labels"] + else: + labels = [f"label_{i}" for i in range(y.shape[1])] + dataset = pd.concat( + [pd.DataFrame(x, columns=features), pd.DataFrame(y, columns=labels)], axis=1 + ) + filename = f"{filepath}/{problem_type}_dataset.csv" + dataset.to_csv(filename, index=False) + return filename, labels + + +def _assert_train_handler(train_run): + assert train_run and all( + key in train_run.outputs for key in ["model", "test_set"] + ), "outputs should include more data" + + +@pytest.mark.parametrize("model", MODELS) +def test_train(model: Tuple[str, str]): + dataset, label_columns = _get_dataset(model[1]) + is_test_passed = True + + project = mlrun.new_project("auto-trainer-test", context="./") + fn = project.set_function("function.yaml", "train", kind="job", image="mlrun/mlrun") + + train_run = None + model_name = model[0].split(".")[-1] + labels = {"label1": "my-value"} + try: + train_run = fn.run( + inputs={"dataset": dataset}, + params={ + "drop_columns": ["f_0", "f_2"], + "model_class": model[0], + "model_name": f"model_{model_name}", + "label_columns": label_columns, + "train_test_split_size": 0.2, + "labels": labels, + }, + handler="train", + local=True, + ) + except Exception as exception: + print(f"- The test failed - raised the following error:\n- {exception}") + is_test_passed = False + + assert is_test_passed, "The test failed" + _assert_train_handler(train_run) + + +@pytest.mark.parametrize("model", MODELS) +@pytest.mark.skipif( + condition=not _validate_environment_variables(), + reason="Project's environment variables are not set", +) +def test_train_evaluate(model: Tuple[str, str]): + dataset, label_columns = _get_dataset(model[1]) + is_test_passed = True + # Importing function: + project = mlrun.new_project("auto-trainer-test", context="./") + fn = project.set_function("function.yaml", "train", kind="job", image="mlrun/mlrun") + temp_dir = tempfile.mkdtemp() + + evaluate_run = None + model_name = model[0].split(".")[-1] + try: + train_run = fn.run( + inputs={"dataset": dataset}, + params={ + "drop_columns": ["f_0", "f_2"], + "model_class": model[0], + "model_name": f"model_{model_name}", + "label_columns": label_columns, + "train_test_split_size": 0.2, + }, + handler="train", + local=True, + artifact_path=temp_dir, + ) + _assert_train_handler(train_run) + + evaluate_run = fn.run( + inputs={"dataset": train_run.outputs["test_set"]}, + params={ + "model": train_run.outputs["model"], + "label_columns": label_columns, + }, + handler="evaluate", + local=True, + artifact_path=temp_dir, + ) + except Exception as exception: + print(f"- The test failed - raised the following error:\n- {exception}") + is_test_passed = False + + assert is_test_passed, "The test failed" + assert ( + evaluate_run and "evaluation-test_set" in evaluate_run.outputs + ), "Missing fields in evaluate_run" + + +@pytest.mark.parametrize("model", MODELS) +@pytest.mark.skipif( + condition=not _validate_environment_variables(), + reason="Project's environment variables are not set", +) +def test_train_predict(model: Tuple[str, str]): + is_test_passed = True + dataset, label_columns = _get_dataset(model[1]) + df = pd.read_csv(dataset) + sample = df.head().drop("labels", axis=1).values.tolist() + # Importing function: + project = mlrun.new_project("auto-trainer-test", context="./") + fn = project.set_function("function.yaml", "train", kind="job", image="mlrun/mlrun") + temp_dir = tempfile.mkdtemp() + + predict_run = None + model_name = model[0].split(".")[-1] + try: + train_run = fn.run( + inputs={"dataset": dataset}, + params={ + "drop_columns": ["f_0", "f_2"], + "model_class": model[0], + "model_name": f"model_{model_name}", + "label_columns": label_columns, + "train_test_split_size": 0.2, + }, + handler="train", + local=True, + artifact_path=temp_dir, + ) + _assert_train_handler(train_run) + + predict_run = fn.run( + params={ + "dataset": sample, + "drop_columns": [0, 2], + "model": train_run.outputs["model"], + "label_columns": label_columns, + }, + handler="predict", + local=True, + artifact_path=temp_dir, + ) + except Exception as exception: + print(f"- The test failed - raised the following error:\n- {exception}") + is_test_passed = False + + assert is_test_passed, "The test failed" + assert ( + predict_run and "prediction" in predict_run.outputs + ), "Prediction field must be in the output" diff --git a/functions/master/auto_trainer/1.7.0/static/auto_trainer.html b/functions/master/auto_trainer/1.7.0/static/auto_trainer.html new file mode 100644 index 00000000..a3db2659 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/auto_trainer.html @@ -0,0 +1,541 @@ + + + + + + + +auto_trainer.auto_trainer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+ +
+

+ +
+
+
+
+
+
+
+

Source code for auto_trainer.auto_trainer

+# Copyright 2019 Iguazio
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+import mlrun
+import mlrun.datastore
+import mlrun.utils
+import pandas as pd
+from mlrun import feature_store as fs
+from mlrun.datastore import DataItem
+from mlrun.execution import MLClientCtx
+from mlrun.frameworks.auto_mlrun import AutoMLRun
+from mlrun.utils.helpers import create_class, create_function
+from sklearn.model_selection import train_test_split
+
+PathType = Union[str, Path]
+
+
+
[docs]class KWArgsPrefixes: + MODEL_CLASS = "CLASS_" + FIT = "FIT_" + TRAIN = "TRAIN_"
+ + +def _get_sub_dict_by_prefix(src: Dict, prefix_key: str) -> Dict[str, Any]: + """ + Collect all the keys from the given dict that starts with the given prefix and creates a new dictionary with these + keys. + + :param src: The source dict to extract the values from. + :param prefix_key: Only keys with this prefix will be returned. The keys in the result dict will be without this + prefix. + """ + return { + key.replace(prefix_key, ""): val + for key, val in src.items() + if key.startswith(prefix_key) + } + + +def _get_dataframe( + context: MLClientCtx, + dataset: DataItem, + label_columns: Optional[Union[str, List[str]]] = None, + drop_columns: Union[str, List[str], int, List[int]] = None, +) -> Tuple[pd.DataFrame, Optional[Union[str, List[str]]]]: + """ + Getting the DataFrame of the dataset and drop the columns accordingly. + + :param context: MLRun context. + :param dataset: The dataset to train the model on. + Can be either a list of lists, dict, URI or a FeatureVector. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. + :param drop_columns: str/int or a list of strings/ints that represent the column names/indices to drop. + """ + store_uri_prefix, _ = mlrun.datastore.parse_store_uri(dataset.artifact_url) + + # Getting the dataset: + if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix: + label_columns = label_columns or dataset.meta.status.label_column + context.logger.info(f"label columns: {label_columns}") + # FeatureVector case: + try: + fv = mlrun.datastore.get_store_resource(dataset.artifact_url) + dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe() + except AttributeError: + # Leave here for backwards compatibility + dataset = fs.get_offline_features( + dataset.meta.uri, drop_columns=drop_columns + ).to_dataframe() + + elif not label_columns: + context.logger.info( + "label_columns not provided, mandatory when dataset is not a FeatureVector" + ) + raise ValueError + + elif isinstance(dataset, (list, dict)): + # list/dict case: + dataset = pd.DataFrame(dataset) + # Checking if drop_columns provided by integer type: + if drop_columns: + if isinstance(drop_columns, str) or ( + isinstance(drop_columns, list) + and any(isinstance(col, str) for col in drop_columns) + ): + context.logger.error( + "drop_columns must be an integer/list of integers if not provided with a URI/FeatureVector dataset" + ) + raise ValueError + dataset.drop(drop_columns, axis=1, inplace=True) + + else: + # simple URL case: + dataset = dataset.as_df() + if drop_columns: + if all(col in dataset for col in drop_columns): + dataset = dataset.drop(drop_columns, axis=1) + else: + context.logger.info( + "not all of the columns to drop in the dataset, drop columns process skipped" + ) + + return dataset, label_columns + + +
[docs]def train( + context: MLClientCtx, + dataset: DataItem, + model_class: str, + label_columns: Optional[Union[str, List[str]]] = None, + drop_columns: List[str] = None, + model_name: str = "model", + tag: str = "", + sample_set: DataItem = None, + test_set: DataItem = None, + train_test_split_size: float = None, + random_state: int = None, + labels: dict = None, + **kwargs, +): + """ + Training a model with the given dataset. + + example:: + + import mlrun + project = mlrun.get_or_create_project("my-project") + project.set_function("hub://auto_trainer", "train") + trainer_run = project.run( + name="train", + handler="train", + inputs={"dataset": "./path/to/dataset.csv"}, + params={ + "model_class": "sklearn.linear_model.LogisticRegression", + "label_columns": "label", + "drop_columns": "id", + "model_name": "my-model", + "tag": "v1.0.0", + "sample_set": "./path/to/sample_set.csv", + "test_set": "./path/to/test_set.csv", + "CLASS_solver": "liblinear", + }, + ) + + :param context: MLRun context + :param dataset: The dataset to train the model on. Can be either a URI or a FeatureVector + :param model_class: The class of the model, e.g. `sklearn.linear_model.LogisticRegression` + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param drop_columns: str or a list of strings that represent the columns to drop + :param model_name: The model's name to use for storing the model artifact, default to 'model' + :param tag: The model's tag to log with + :param sample_set: A sample set of inputs for the model for logging its stats along the model in favour + of model monitoring. Can be either a URI or a FeatureVector + :param test_set: The test set to train the model with. + :param train_test_split_size: if test_set was provided then this argument is ignored. + Should be between 0.0 and 1.0 and represent the proportion of the dataset to include + in the test split. The size of the Training set is set to the complement of this + value. Default = 0.2 + :param random_state: Relevant only when using train_test_split_size. + A random state seed to shuffle the data. For more information, see: + https://scikit-learn.org/stable/glossary.html#term-random_state + Notice that here we only pass integer values. + :param labels: Labels to log with the model + :param kwargs: Here you can pass keyword arguments with prefixes, + that will be parsed and passed to the relevant function, by the following prefixes: + - `CLASS_` - for the model class arguments + - `FIT_` - for the `fit` function arguments + - `TRAIN_` - for the `train` function (in xgb or lgbm train function - future) + + """ + # Validate inputs: + # Check if exactly one of them is supplied: + if test_set is None: + if train_test_split_size is None: + context.logger.info( + "test_set or train_test_split_size are not provided, setting train_test_split_size to 0.2" + ) + train_test_split_size = 0.2 + + elif train_test_split_size: + context.logger.info( + "test_set provided, ignoring given train_test_split_size value" + ) + train_test_split_size = None + + # Get DataFrame by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Getting the sample set: + if sample_set is None: + context.logger.info( + f"Sample set not given, using the whole training set as the sample set" + ) + sample_set = dataset + else: + sample_set, _ = _get_dataframe( + context=context, + dataset=sample_set, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Parsing kwargs: + # TODO: Use in xgb or lgbm train function. + train_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.TRAIN) + fit_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.FIT) + model_class_kwargs = _get_sub_dict_by_prefix( + src=kwargs, prefix_key=KWArgsPrefixes.MODEL_CLASS + ) + + # Check if model or function: + if hasattr(model_class, "train"): + # TODO: Need to call: model(), afterwards to start the train function. + # model = create_function(f"{model_class}.train") + raise NotImplementedError + else: + # Creating model instance: + model = create_class(model_class)(**model_class_kwargs) + + x = dataset.drop(label_columns, axis=1) + y = dataset[label_columns] + if train_test_split_size: + x_train, x_test, y_train, y_test = train_test_split( + x, y, test_size=train_test_split_size, random_state=random_state + ) + else: + x_train, y_train = x, y + + test_set = test_set.as_df() + if drop_columns: + test_set = dataset.drop(drop_columns, axis=1) + + x_test, y_test = test_set.drop(label_columns, axis=1), test_set[label_columns] + + AutoMLRun.apply_mlrun( + model=model, + model_name=model_name, + context=context, + tag=tag, + sample_set=sample_set, + y_columns=label_columns, + test_set=test_set, + x_test=x_test, + y_test=y_test, + artifacts=context.artifacts, + labels=labels, + ) + context.logger.info(f"training '{model_name}'") + model.fit(x_train, y_train, **fit_kwargs)
+ + +
[docs]def evaluate( + context: MLClientCtx, + model: str, + dataset: mlrun.DataItem, + drop_columns: List[str] = None, + label_columns: Optional[Union[str, List[str]]] = None, + **kwargs, +): + """ + Evaluating a model. Artifacts generated by the MLHandler. + + :param context: MLRun context. + :param model: The model Store path. + :param dataset: The dataset to evaluate the model on. Can be either a URI or a FeatureVector. + :param drop_columns: str or a list of strings that represent the columns to drop. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param kwargs: Here you can pass keyword arguments to the predict function + (PREDICT_ prefix is not required). + """ + # Get dataset by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # Parsing label_columns: + parsed_label_columns = [] + if label_columns: + label_columns = ( + label_columns if isinstance(label_columns, list) else [label_columns] + ) + for lc in label_columns: + if fs.common.feature_separator in lc: + feature_set_name, label_name, alias = fs.common.parse_feature_string(lc) + parsed_label_columns.append(alias or label_name) + if parsed_label_columns: + label_columns = parsed_label_columns + + x = dataset.drop(label_columns, axis=1) + y = dataset[label_columns] + + # Loading the model and predicting: + model_handler = AutoMLRun.load_model( + model_path=model, context=context, model_name="model_LinearRegression" + ) + AutoMLRun.apply_mlrun(model_handler.model, y_test=y, model_path=model) + + context.logger.info(f"evaluating '{model_handler.model_name}'") + model_handler.model.predict(x, **kwargs)
+ + +
[docs]def predict( + context: MLClientCtx, + model: str, + dataset: mlrun.DataItem, + drop_columns: Union[str, List[str], int, List[int]] = None, + label_columns: Optional[Union[str, List[str]]] = None, + result_set: Optional[str] = None, + **kwargs, +): + """ + Predicting dataset by a model. + + :param context: MLRun context. + :param model: The model Store path. + :param dataset: The dataset to predict the model on. Can be either a URI, a FeatureVector or a + sample in a shape of a list/dict. + When passing a sample, pass the dataset as a field in `params` instead of `inputs`. + :param drop_columns: str/int or a list of strings/ints that represent the column names/indices to drop. + When the dataset is a list/dict this parameter should be represented by integers. + :param label_columns: The target label(s) of the column(s) in the dataset. for Regression or + Classification tasks. Mandatory when dataset is not a FeatureVector. + :param result_set: The db key to set name of the prediction result and the filename. + Default to 'prediction'. + :param kwargs: Here you can pass keyword arguments to the predict function + (PREDICT_ prefix is not required). + """ + # Get dataset by URL or by FeatureVector: + dataset, label_columns = _get_dataframe( + context=context, + dataset=dataset, + label_columns=label_columns, + drop_columns=drop_columns, + ) + + # loading the model, and getting the model handler: + model_handler = AutoMLRun.load_model(model_path=model, context=context) + + # Dropping label columns if necessary: + if not label_columns: + label_columns = [] + elif isinstance(label_columns, str): + label_columns = [label_columns] + + # Predicting: + context.logger.info(f"making prediction by '{model_handler.model_name}'") + y_pred = model_handler.model.predict(dataset, **kwargs) + + # Preparing and validating label columns for the dataframe of the prediction result: + num_predicted = 1 if len(y_pred.shape) == 1 else y_pred.shape[1] + + if num_predicted > len(label_columns): + if num_predicted == 1: + label_columns = ["predicted labels"] + else: + label_columns.extend( + [ + f"predicted_label_{i + 1 + len(label_columns)}" + for i in range(num_predicted - len(label_columns)) + ] + ) + elif num_predicted < len(label_columns): + context.logger.error( + f"number of predicted labels: {num_predicted} is smaller than number of label columns: {len(label_columns)}" + ) + raise ValueError + + artifact_name = result_set or "prediction" + labels_inside_df = set(label_columns) & set(dataset.columns.tolist()) + if labels_inside_df: + context.logger.error( + f"The labels: {labels_inside_df} are already existed in the dataframe" + ) + raise ValueError + pred_df = pd.concat([dataset, pd.DataFrame(y_pred, columns=label_columns)], axis=1) + context.log_dataset(artifact_name, pred_df, db_key=result_set)
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/static/documentation.html b/functions/master/auto_trainer/1.7.0/static/documentation.html new file mode 100644 index 00000000..e545900f --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/documentation.html @@ -0,0 +1,339 @@ + + + + + + + +auto_trainer package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + + + +
+
+ + +
+
+
+ +
+

auto_trainer package

+ +
+ +
+
+
+
+
+

auto_trainer package#

+
+

Submodules#

+
+
+

auto_trainer.auto_trainer module#

+
+
+class auto_trainer.auto_trainer.KWArgsPrefixes[source]#
+

Bases: object

+
+
+FIT = 'FIT_'#
+
+
+
+MODEL_CLASS = 'CLASS_'#
+
+
+
+TRAIN = 'TRAIN_'#
+
+
+
+
+auto_trainer.auto_trainer.evaluate(context: mlrun.execution.MLClientCtx, model: str, dataset: mlrun.datastore.base.DataItem, drop_columns: Optional[List[str]] = None, label_columns: Optional[Union[str, List[str]]] = None, **kwargs)[source]#
+

Evaluating a model. Artifacts generated by the MLHandler.

+
+
Parameters
+
    +
  • context – MLRun context.

  • +
  • model – The model Store path.

  • +
  • dataset – The dataset to evaluate the model on. Can be either a URI or a FeatureVector.

  • +
  • drop_columns – str or a list of strings that represent the columns to drop.

  • +
  • label_columns – The target label(s) of the column(s) in the dataset. for Regression or +Classification tasks. Mandatory when dataset is not a FeatureVector.

  • +
  • kwargs – Here you can pass keyword arguments to the predict function +(PREDICT_ prefix is not required).

  • +
+
+
+
+
+
+auto_trainer.auto_trainer.predict(context: mlrun.execution.MLClientCtx, model: str, dataset: mlrun.datastore.base.DataItem, drop_columns: Optional[Union[str, List[str], int, List[int]]] = None, label_columns: Optional[Union[str, List[str]]] = None, result_set: Optional[str] = None, **kwargs)[source]#
+

Predicting dataset by a model.

+
+
Parameters
+
    +
  • context – MLRun context.

  • +
  • model – The model Store path.

  • +
  • dataset – The dataset to predict the model on. Can be either a URI, a FeatureVector or a +sample in a shape of a list/dict. +When passing a sample, pass the dataset as a field in params instead of inputs.

  • +
  • drop_columns – str/int or a list of strings/ints that represent the column names/indices to drop. +When the dataset is a list/dict this parameter should be represented by integers.

  • +
  • label_columns – The target label(s) of the column(s) in the dataset. for Regression or +Classification tasks. Mandatory when dataset is not a FeatureVector.

  • +
  • result_set – The db key to set name of the prediction result and the filename. +Default to ‘prediction’.

  • +
  • kwargs – Here you can pass keyword arguments to the predict function +(PREDICT_ prefix is not required).

  • +
+
+
+
+
+
+auto_trainer.auto_trainer.train(context: mlrun.execution.MLClientCtx, dataset: mlrun.datastore.base.DataItem, model_class: str, label_columns: Optional[Union[str, List[str]]] = None, drop_columns: Optional[List[str]] = None, model_name: str = 'model', tag: str = '', sample_set: Optional[mlrun.datastore.base.DataItem] = None, test_set: Optional[mlrun.datastore.base.DataItem] = None, train_test_split_size: Optional[float] = None, random_state: Optional[int] = None, labels: Optional[dict] = None, **kwargs)[source]#
+

Training a model with the given dataset.

+

example:

+
import mlrun
+project = mlrun.get_or_create_project("my-project")
+project.set_function("hub://auto_trainer", "train")
+trainer_run = project.run(
+    name="train",
+    handler="train",
+    inputs={"dataset": "./path/to/dataset.csv"},
+    params={
+        "model_class": "sklearn.linear_model.LogisticRegression",
+        "label_columns": "label",
+        "drop_columns": "id",
+        "model_name": "my-model",
+        "tag": "v1.0.0",
+        "sample_set": "./path/to/sample_set.csv",
+        "test_set": "./path/to/test_set.csv",
+        "CLASS_solver": "liblinear",
+    },
+)
+
+
+
+
Parameters
+
    +
  • context – MLRun context

  • +
  • dataset – The dataset to train the model on. Can be either a URI or a FeatureVector

  • +
  • model_class – The class of the model, e.g. sklearn.linear_model.LogisticRegression

  • +
  • label_columns – The target label(s) of the column(s) in the dataset. for Regression or +Classification tasks. Mandatory when dataset is not a FeatureVector.

  • +
  • drop_columns – str or a list of strings that represent the columns to drop

  • +
  • model_name – The model’s name to use for storing the model artifact, default to ‘model’

  • +
  • tag – The model’s tag to log with

  • +
  • sample_set – A sample set of inputs for the model for logging its stats along the model in favour +of model monitoring. Can be either a URI or a FeatureVector

  • +
  • test_set – The test set to train the model with.

  • +
  • train_test_split_size – if test_set was provided then this argument is ignored. +Should be between 0.0 and 1.0 and represent the proportion of the dataset to include +in the test split. The size of the Training set is set to the complement of this +value. Default = 0.2

  • +
  • random_state – Relevant only when using train_test_split_size. +A random state seed to shuffle the data. For more information, see: +https://scikit-learn.org/stable/glossary.html#term-random_state +Notice that here we only pass integer values.

  • +
  • labels – Labels to log with the model

  • +
  • kwargs – Here you can pass keyword arguments with prefixes, +that will be parsed and passed to the relevant function, by the following prefixes: +- CLASS_ - for the model class arguments +- FIT_ - for the fit function arguments +- TRAIN_ - for the train function (in xgb or lgbm train function - future)

  • +
+
+
+
+
+
+

Module contents#

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/static/example.html b/functions/master/auto_trainer/1.7.0/static/example.html new file mode 100644 index 00000000..35ef8da5 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/example.html @@ -0,0 +1,541 @@ + + + + + + + +MLRun Auto-Trainer Tutorial + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + + + +
+
+ + +
+
+
+ + +
+
+
+

MLRun Auto-Trainer Tutorial#

+

This notebook shows how to use the handlers of the MLRun’s Auto-trainer. +the following handlers are:

+
    +
  • train

  • +
  • evaluate

  • +
  • predict

  • +
+

All you need is simply ML model type and a dataset.

+
+
+
import mlrun
+
+
+
+
+
+
+
mlrun.get_or_create_project('auto-trainer', context="./", user_project=True)
+
+
+
+
+
+

Fetching a Dataset#

+

To generate the dataset we used the “gen_class_data” function from the hub, +which wraps scikit-learn’s make_classification.
+See the link for a description of all parameters.

+
+
+
DATASET_URL = 'https://s3.wasabisys.com/iguazio/data/function-marketplace-data/xgb_trainer/classifier-data.csv'
+
+
+
+
+
+
+
mlrun.get_dataitem(DATASET_URL).show()
+
+
+
+
+
+
+

Importing the MLhandlers functions from the Marketplace#

+
+
+
auto_trainer = mlrun.import_function("hub://auto_trainer")
+
+
+
+
+
+
+

Training a model#

+

Choosing the train handler

+
+

Define task parameters¶#

+
    +
  • Class parameters should contain the prefix CLASS_

  • +
  • Fit parameters should contain the prefix FIT_

  • +
  • Predict parameters should contain the prefix PREDICT_

  • +
+
+
+
model_class = "sklearn.ensemble.RandomForestClassifier"
+additional_parameters = {
+    "CLASS_max_depth": 8,
+}
+
+
+
+
+
+
+

Running the Training job with the “train” handler#

+
+
+
train_run = auto_trainer.run(
+    inputs={"dataset": DATASET_URL},
+    params = {
+        "model_class": model_class,
+        "drop_columns": ["feat_0", "feat_2"],
+        "train_test_split_size": 0.2,
+        "random_state": 42,
+        "label_columns": "labels",
+        "model_name": 'MyModel',
+        **additional_parameters
+    }, 
+    handler='train',
+    local=True
+)
+
+
+
+
+
+
+

The result of the train run#

+
+
+
train_run.outputs
+
+
+
+
+
+
+
train_run.artifact('confusion-matrix').show()
+
+
+
+
+
+
+

Getting the model for evaluating and predicting#

+
+
+
model_path = train_run.outputs['model']
+
+
+
+
+
+
+
+

Evaluating a model#

+

Choosing the evaluate handler

+
+
+
evaluate_run = auto_trainer.run(
+    inputs={"dataset": train_run.outputs['test_set']},
+    params={
+        "model": model_path,
+        "drop_columns": ["feat_0", "feat_2"], # Not actually necessary on the test set (already done in the previous step)
+        "label_columns": "labels",
+    },
+    handler="evaluate",
+    local=True,
+)
+
+
+
+
+
+

The result of the evaluate run#

+
+
+
evaluate_run.outputs
+
+
+
+
+
+
+
+

Making a prediction#

+

Choosing the predict handler. For predicting from a simple sample (a list of lists,dict) pass the dataset as a param.

+
+
+
sample = mlrun.get_dataitem(DATASET_URL).as_df().head().drop("labels", axis=1)
+
+
+
+
+
+
+
sample = sample.values.tolist()
+
+
+
+
+
+
+
predict_run = auto_trainer.run(
+    params={
+        "dataset": sample,
+        "model": model_path,
+        "drop_columns": [0, 2],
+        "label_columns": "labels",
+    },
+    handler="predict",
+    local=True,
+)
+
+
+
+
+
+

Showing the predeiction results#

+
+
+
predict_run.outputs
+
+
+
+
+
+
+
predict_run.artifact('prediction').show()
+
+
+
+
+

Back to the top

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/static/function.html b/functions/master/auto_trainer/1.7.0/static/function.html new file mode 100644 index 00000000..aed22593 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/function.html @@ -0,0 +1,186 @@ + + + + + + + + + + + Source + + + + +
+        
+kind: job
+metadata:
+  name: auto-trainer
+  tag: ''
+  hash: 1c415e6d3bd79c9ca0ee537e008643660c13fbc7
+  project: ''
+  labels:
+    author: yonish
+  categories:
+  - machine-learning
+  - model-training
+spec:
+  command: ''
+  args: []
+  image: mlrun/mlrun
+  build:
+    functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibGFiZWwgY29sdW1uczoge2xhYmVsX2NvbHVtbnN9IikKICAgICAgICAjIEZlYXR1cmVWZWN0b3IgY2FzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ2ID0gbWxydW4uZGF0YXN0b3JlLmdldF9zdG9yZV9yZXNvdXJjZShkYXRhc2V0LmFydGlmYWN0X3VybCkKICAgICAgICAgICAgZGF0YXNldCA9IGZ2LmdldF9vZmZsaW5lX2ZlYXR1cmVzKGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMpLnRvX2RhdGFmcmFtZSgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIExlYXZlIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIGRhdGFzZXQgPSBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcygKICAgICAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICAgICAgKS50b19kYXRhZnJhbWUoKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo=
+    commands: []
+    code_origin: ''
+    origin_filename: ''
+    requirements: []
+  entry_points:
+    train:
+      name: train
+      doc: "Training a model with the given dataset.\n\nexample::\n\n    import mlrun\n\
+        \    project = mlrun.get_or_create_project(\"my-project\")\n    project.set_function(\"\
+        hub://auto_trainer\", \"train\")\n    trainer_run = project.run(\n       \
+        \ name=\"train\",\n        handler=\"train\",\n        inputs={\"dataset\"\
+        : \"./path/to/dataset.csv\"},\n        params={\n            \"model_class\"\
+        : \"sklearn.linear_model.LogisticRegression\",\n            \"label_columns\"\
+        : \"label\",\n            \"drop_columns\": \"id\",\n            \"model_name\"\
+        : \"my-model\",\n            \"tag\": \"v1.0.0\",\n            \"sample_set\"\
+        : \"./path/to/sample_set.csv\",\n            \"test_set\": \"./path/to/test_set.csv\"\
+        ,\n            \"CLASS_solver\": \"liblinear\",\n        },\n    )"
+      parameters:
+      - name: context
+        type: MLClientCtx
+        doc: MLRun context
+      - name: dataset
+        type: DataItem
+        doc: The dataset to train the model on. Can be either a URI or a FeatureVector
+      - name: model_class
+        type: str
+        doc: The class of the model, e.g. `sklearn.linear_model.LogisticRegression`
+      - name: label_columns
+        type: Optional[Union[str, List[str]]]
+        doc: The target label(s) of the column(s) in the dataset. for Regression or
+          Classification tasks. Mandatory when dataset is not a FeatureVector.
+        default: null
+      - name: drop_columns
+        type: List[str]
+        doc: str or a list of strings that represent the columns to drop
+        default: null
+      - name: model_name
+        type: str
+        doc: The model's name to use for storing the model artifact, default to 'model'
+        default: model
+      - name: tag
+        type: str
+        doc: The model's tag to log with
+        default: ''
+      - name: sample_set
+        type: DataItem
+        doc: A sample set of inputs for the model for logging its stats along the
+          model in favour of model monitoring. Can be either a URI or a FeatureVector
+        default: null
+      - name: test_set
+        type: DataItem
+        doc: The test set to train the model with.
+        default: null
+      - name: train_test_split_size
+        type: float
+        doc: if test_set was provided then this argument is ignored. Should be between
+          0.0 and 1.0 and represent the proportion of the dataset to include in the
+          test split. The size of the Training set is set to the complement of this
+          value. Default = 0.2
+        default: null
+      - name: random_state
+        type: int
+        doc: 'Relevant only when using train_test_split_size. A random state seed
+          to shuffle the data. For more information, see: https://scikit-learn.org/stable/glossary.html#term-random_state
+          Notice that here we only pass integer values.'
+        default: null
+      - name: labels
+        type: dict
+        doc: Labels to log with the model
+        default: null
+      outputs: []
+      lineno: 121
+      has_varargs: false
+      has_kwargs: true
+    evaluate:
+      name: evaluate
+      doc: Evaluating a model. Artifacts generated by the MLHandler.
+      parameters:
+      - name: context
+        type: MLClientCtx
+        doc: MLRun context.
+      - name: model
+        type: str
+        doc: The model Store path.
+      - name: dataset
+        type: DataItem
+        doc: The dataset to evaluate the model on. Can be either a URI or a FeatureVector.
+      - name: drop_columns
+        type: List[str]
+        doc: str or a list of strings that represent the columns to drop.
+        default: null
+      - name: label_columns
+        type: Optional[Union[str, List[str]]]
+        doc: The target label(s) of the column(s) in the dataset. for Regression or
+          Classification tasks. Mandatory when dataset is not a FeatureVector.
+        default: null
+      outputs: []
+      lineno: 273
+      has_varargs: false
+      has_kwargs: true
+    predict:
+      name: predict
+      doc: Predicting dataset by a model.
+      parameters:
+      - name: context
+        type: MLClientCtx
+        doc: MLRun context.
+      - name: model
+        type: str
+        doc: The model Store path.
+      - name: dataset
+        type: DataItem
+        doc: The dataset to predict the model on. Can be either a URI, a FeatureVector
+          or a sample in a shape of a list/dict. When passing a sample, pass the dataset
+          as a field in `params` instead of `inputs`.
+      - name: drop_columns
+        type: Union[str, List[str], int, List[int]]
+        doc: str/int or a list of strings/ints that represent the column names/indices
+          to drop. When the dataset is a list/dict this parameter should be represented
+          by integers.
+        default: null
+      - name: label_columns
+        type: Optional[Union[str, List[str]]]
+        doc: The target label(s) of the column(s) in the dataset. for Regression or
+          Classification tasks. Mandatory when dataset is not a FeatureVector.
+        default: null
+      - name: result_set
+        type: Optional[str]
+        doc: The db key to set name of the prediction result and the filename. Default
+          to 'prediction'.
+        default: null
+      outputs: []
+      lineno: 327
+      has_varargs: false
+      has_kwargs: true
+  description: Automatic train, evaluate and predict functions for the ML frameworks
+    - Scikit-Learn, XGBoost and LightGBM.
+  default_handler: train
+  disable_auto_mount: false
+  clone_target_dir: ''
+  env: []
+  priority_class_name: ''
+  preemption_mode: prevent
+  affinity: null
+  tolerations: null
+  security_context: {}
+verbose: false
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/static/item.html b/functions/master/auto_trainer/1.7.0/static/item.html new file mode 100644 index 00000000..c11f37e4 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/item.html @@ -0,0 +1,48 @@ + + + + + + + + + + + Source + + + + +
+        
+apiVersion: v1
+categories:
+- machine-learning
+- model-training
+description: Automatic train, evaluate and predict functions for the ML frameworks
+  - Scikit-Learn, XGBoost and LightGBM.
+doc: ''
+example: auto_trainer.ipynb
+generationDate: 2022-08-28:17-25
+hidden: false
+icon: ''
+labels:
+  author: yonish
+maintainers: []
+marketplaceType: ''
+mlrunVersion: 1.5.2
+name: auto_trainer
+platformVersion: 3.5.0
+spec:
+  filename: auto_trainer.py
+  handler: train
+  image: mlrun/mlrun
+  kind: job
+  requirements: []
+url: ''
+version: 1.7.0
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/auto_trainer/1.7.0/static/source.html b/functions/master/auto_trainer/1.7.0/static/source.html new file mode 100644 index 00000000..1e132975 --- /dev/null +++ b/functions/master/auto_trainer/1.7.0/static/source.html @@ -0,0 +1,423 @@ + + + + + + + + + + + Source + + + + +
+        
+# Copyright 2019 Iguazio
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+from pathlib import Path
+from typing import Any, Dict, List, Optional, Tuple, Union
+
+import mlrun
+import mlrun.datastore
+import mlrun.utils
+import pandas as pd
+from mlrun import feature_store as fs
+from mlrun.datastore import DataItem
+from mlrun.execution import MLClientCtx
+from mlrun.frameworks.auto_mlrun import AutoMLRun
+from mlrun.utils.helpers import create_class, create_function
+from sklearn.model_selection import train_test_split
+
+PathType = Union[str, Path]
+
+
+class KWArgsPrefixes:
+    MODEL_CLASS = "CLASS_"
+    FIT = "FIT_"
+    TRAIN = "TRAIN_"
+
+
+def _get_sub_dict_by_prefix(src: Dict, prefix_key: str) -> Dict[str, Any]:
+    """
+    Collect all the keys from the given dict that starts with the given prefix and creates a new dictionary with these
+    keys.
+
+    :param src:         The source dict to extract the values from.
+    :param prefix_key:  Only keys with this prefix will be returned. The keys in the result dict will be without this
+                        prefix.
+    """
+    return {
+        key.replace(prefix_key, ""): val
+        for key, val in src.items()
+        if key.startswith(prefix_key)
+    }
+
+
+def _get_dataframe(
+    context: MLClientCtx,
+    dataset: DataItem,
+    label_columns: Optional[Union[str, List[str]]] = None,
+    drop_columns: Union[str, List[str], int, List[int]] = None,
+) -> Tuple[pd.DataFrame, Optional[Union[str, List[str]]]]:
+    """
+    Getting the DataFrame of the dataset and drop the columns accordingly.
+
+    :param context:         MLRun context.
+    :param dataset:         The dataset to train the model on.
+                            Can be either a list of lists, dict, URI or a FeatureVector.
+    :param label_columns:   The target label(s) of the column(s) in the dataset. for Regression or
+                            Classification tasks.
+    :param drop_columns:    str/int or a list of strings/ints that represent the column names/indices to drop.
+    """
+    store_uri_prefix, _ = mlrun.datastore.parse_store_uri(dataset.artifact_url)
+
+    # Getting the dataset:
+    if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix:
+        label_columns = label_columns or dataset.meta.status.label_column
+        context.logger.info(f"label columns: {label_columns}")
+        # FeatureVector case:
+        try:
+            fv = mlrun.datastore.get_store_resource(dataset.artifact_url)
+            dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe()
+        except AttributeError:
+            # Leave here for backwards compatibility
+            dataset = fs.get_offline_features(
+                dataset.meta.uri, drop_columns=drop_columns
+            ).to_dataframe()
+
+    elif not label_columns:
+        context.logger.info(
+            "label_columns not provided, mandatory when dataset is not a FeatureVector"
+        )
+        raise ValueError
+
+    elif isinstance(dataset, (list, dict)):
+        # list/dict case:
+        dataset = pd.DataFrame(dataset)
+        # Checking if drop_columns provided by integer type:
+        if drop_columns:
+            if isinstance(drop_columns, str) or (
+                isinstance(drop_columns, list)
+                and any(isinstance(col, str) for col in drop_columns)
+            ):
+                context.logger.error(
+                    "drop_columns must be an integer/list of integers if not provided with a URI/FeatureVector dataset"
+                )
+                raise ValueError
+            dataset.drop(drop_columns, axis=1, inplace=True)
+
+    else:
+        # simple URL case:
+        dataset = dataset.as_df()
+        if drop_columns:
+            if all(col in dataset for col in drop_columns):
+                dataset = dataset.drop(drop_columns, axis=1)
+            else:
+                context.logger.info(
+                    "not all of the columns to drop in the dataset, drop columns process skipped"
+                )
+
+    return dataset, label_columns
+
+
+def train(
+    context: MLClientCtx,
+    dataset: DataItem,
+    model_class: str,
+    label_columns: Optional[Union[str, List[str]]] = None,
+    drop_columns: List[str] = None,
+    model_name: str = "model",
+    tag: str = "",
+    sample_set: DataItem = None,
+    test_set: DataItem = None,
+    train_test_split_size: float = None,
+    random_state: int = None,
+    labels: dict = None,
+    **kwargs,
+):
+    """
+    Training a model with the given dataset.
+
+    example::
+
+        import mlrun
+        project = mlrun.get_or_create_project("my-project")
+        project.set_function("hub://auto_trainer", "train")
+        trainer_run = project.run(
+            name="train",
+            handler="train",
+            inputs={"dataset": "./path/to/dataset.csv"},
+            params={
+                "model_class": "sklearn.linear_model.LogisticRegression",
+                "label_columns": "label",
+                "drop_columns": "id",
+                "model_name": "my-model",
+                "tag": "v1.0.0",
+                "sample_set": "./path/to/sample_set.csv",
+                "test_set": "./path/to/test_set.csv",
+                "CLASS_solver": "liblinear",
+            },
+        )
+
+    :param context:                 MLRun context
+    :param dataset:                 The dataset to train the model on. Can be either a URI or a FeatureVector
+    :param model_class:             The class of the model, e.g. `sklearn.linear_model.LogisticRegression`
+    :param label_columns:           The target label(s) of the column(s) in the dataset. for Regression or
+                                    Classification tasks. Mandatory when dataset is not a FeatureVector.
+    :param drop_columns:            str or a list of strings that represent the columns to drop
+    :param model_name:              The model's name to use for storing the model artifact, default to 'model'
+    :param tag:                     The model's tag to log with
+    :param sample_set:              A sample set of inputs for the model for logging its stats along the model in favour
+                                    of model monitoring. Can be either a URI or a FeatureVector
+    :param test_set:                The test set to train the model with.
+    :param train_test_split_size:   if test_set was provided then this argument is ignored.
+                                    Should be between 0.0 and 1.0 and represent the proportion of the dataset to include
+                                    in the test split. The size of the Training set is set to the complement of this
+                                    value. Default = 0.2
+    :param random_state:            Relevant only when using train_test_split_size.
+                                    A random state seed to shuffle the data. For more information, see:
+                                    https://scikit-learn.org/stable/glossary.html#term-random_state
+                                    Notice that here we only pass integer values.
+    :param labels:                  Labels to log with the model
+    :param kwargs:                  Here you can pass keyword arguments with prefixes,
+                                    that will be parsed and passed to the relevant function, by the following prefixes:
+                                    - `CLASS_` - for the model class arguments
+                                    - `FIT_` - for the `fit` function arguments
+                                    - `TRAIN_` - for the `train` function (in xgb or lgbm train function - future)
+
+    """
+    # Validate inputs:
+    # Check if exactly one of them is supplied:
+    if test_set is None:
+        if train_test_split_size is None:
+            context.logger.info(
+                "test_set or train_test_split_size are not provided, setting train_test_split_size to 0.2"
+            )
+            train_test_split_size = 0.2
+
+    elif train_test_split_size:
+        context.logger.info(
+            "test_set provided, ignoring given train_test_split_size value"
+        )
+        train_test_split_size = None
+
+    # Get DataFrame by URL or by FeatureVector:
+    dataset, label_columns = _get_dataframe(
+        context=context,
+        dataset=dataset,
+        label_columns=label_columns,
+        drop_columns=drop_columns,
+    )
+
+    # Getting the sample set:
+    if sample_set is None:
+        context.logger.info(
+            f"Sample set not given, using the whole training set as the sample set"
+        )
+        sample_set = dataset
+    else:
+        sample_set, _ = _get_dataframe(
+            context=context,
+            dataset=sample_set,
+            label_columns=label_columns,
+            drop_columns=drop_columns,
+        )
+
+    # Parsing kwargs:
+    # TODO: Use in xgb or lgbm train function.
+    train_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.TRAIN)
+    fit_kwargs = _get_sub_dict_by_prefix(src=kwargs, prefix_key=KWArgsPrefixes.FIT)
+    model_class_kwargs = _get_sub_dict_by_prefix(
+        src=kwargs, prefix_key=KWArgsPrefixes.MODEL_CLASS
+    )
+
+    # Check if model or function:
+    if hasattr(model_class, "train"):
+        # TODO: Need to call: model(), afterwards to start the train function.
+        # model = create_function(f"{model_class}.train")
+        raise NotImplementedError
+    else:
+        # Creating model instance:
+        model = create_class(model_class)(**model_class_kwargs)
+
+    x = dataset.drop(label_columns, axis=1)
+    y = dataset[label_columns]
+    if train_test_split_size:
+        x_train, x_test, y_train, y_test = train_test_split(
+            x, y, test_size=train_test_split_size, random_state=random_state
+        )
+    else:
+        x_train, y_train = x, y
+
+        test_set = test_set.as_df()
+        if drop_columns:
+            test_set = dataset.drop(drop_columns, axis=1)
+
+        x_test, y_test = test_set.drop(label_columns, axis=1), test_set[label_columns]
+
+    AutoMLRun.apply_mlrun(
+        model=model,
+        model_name=model_name,
+        context=context,
+        tag=tag,
+        sample_set=sample_set,
+        y_columns=label_columns,
+        test_set=test_set,
+        x_test=x_test,
+        y_test=y_test,
+        artifacts=context.artifacts,
+        labels=labels,
+    )
+    context.logger.info(f"training '{model_name}'")
+    model.fit(x_train, y_train, **fit_kwargs)
+
+
+def evaluate(
+    context: MLClientCtx,
+    model: str,
+    dataset: mlrun.DataItem,
+    drop_columns: List[str] = None,
+    label_columns: Optional[Union[str, List[str]]] = None,
+    **kwargs,
+):
+    """
+    Evaluating a model. Artifacts generated by the MLHandler.
+
+    :param context:                 MLRun context.
+    :param model:                   The model Store path.
+    :param dataset:                 The dataset to evaluate the model on. Can be either a URI or a FeatureVector.
+    :param drop_columns:            str or a list of strings that represent the columns to drop.
+    :param label_columns:           The target label(s) of the column(s) in the dataset. for Regression or
+                                    Classification tasks. Mandatory when dataset is not a FeatureVector.
+    :param kwargs:                  Here you can pass keyword arguments to the predict function
+                                    (PREDICT_ prefix is not required).
+    """
+    # Get dataset by URL or by FeatureVector:
+    dataset, label_columns = _get_dataframe(
+        context=context,
+        dataset=dataset,
+        label_columns=label_columns,
+        drop_columns=drop_columns,
+    )
+
+    # Parsing label_columns:
+    parsed_label_columns = []
+    if label_columns:
+        label_columns = (
+            label_columns if isinstance(label_columns, list) else [label_columns]
+        )
+        for lc in label_columns:
+            if fs.common.feature_separator in lc:
+                feature_set_name, label_name, alias = fs.common.parse_feature_string(lc)
+                parsed_label_columns.append(alias or label_name)
+        if parsed_label_columns:
+            label_columns = parsed_label_columns
+
+    x = dataset.drop(label_columns, axis=1)
+    y = dataset[label_columns]
+
+    # Loading the model and predicting:
+    model_handler = AutoMLRun.load_model(
+        model_path=model, context=context, model_name="model_LinearRegression"
+    )
+    AutoMLRun.apply_mlrun(model_handler.model, y_test=y, model_path=model)
+
+    context.logger.info(f"evaluating '{model_handler.model_name}'")
+    model_handler.model.predict(x, **kwargs)
+
+
+def predict(
+    context: MLClientCtx,
+    model: str,
+    dataset: mlrun.DataItem,
+    drop_columns: Union[str, List[str], int, List[int]] = None,
+    label_columns: Optional[Union[str, List[str]]] = None,
+    result_set: Optional[str] = None,
+    **kwargs,
+):
+    """
+    Predicting dataset by a model.
+
+    :param context:                 MLRun context.
+    :param model:                   The model Store path.
+    :param dataset:                 The dataset to predict the model on. Can be either a URI, a FeatureVector or a
+                                    sample in a shape of a list/dict.
+                                    When passing a sample, pass the dataset as a field in `params` instead of `inputs`.
+    :param drop_columns:            str/int or a list of strings/ints that represent the column names/indices to drop.
+                                    When the dataset is a list/dict this parameter should be represented by integers.
+    :param label_columns:           The target label(s) of the column(s) in the dataset. for Regression or
+                                    Classification tasks. Mandatory when dataset is not a FeatureVector.
+    :param result_set:              The db key to set name of the prediction result and the filename.
+                                    Default to 'prediction'.
+    :param kwargs:                  Here you can pass keyword arguments to the predict function
+                                    (PREDICT_ prefix is not required).
+    """
+    # Get dataset by URL or by FeatureVector:
+    dataset, label_columns = _get_dataframe(
+        context=context,
+        dataset=dataset,
+        label_columns=label_columns,
+        drop_columns=drop_columns,
+    )
+
+    # loading the model, and getting the model handler:
+    model_handler = AutoMLRun.load_model(model_path=model, context=context)
+
+    # Dropping label columns if necessary:
+    if not label_columns:
+        label_columns = []
+    elif isinstance(label_columns, str):
+        label_columns = [label_columns]
+
+    # Predicting:
+    context.logger.info(f"making prediction by '{model_handler.model_name}'")
+    y_pred = model_handler.model.predict(dataset, **kwargs)
+
+    # Preparing and validating label columns for the dataframe of the prediction result:
+    num_predicted = 1 if len(y_pred.shape) == 1 else y_pred.shape[1]
+
+    if num_predicted > len(label_columns):
+        if num_predicted == 1:
+            label_columns = ["predicted labels"]
+        else:
+            label_columns.extend(
+                [
+                    f"predicted_label_{i + 1 + len(label_columns)}"
+                    for i in range(num_predicted - len(label_columns))
+                ]
+            )
+    elif num_predicted < len(label_columns):
+        context.logger.error(
+            f"number of predicted labels: {num_predicted} is smaller than number of label columns: {len(label_columns)}"
+        )
+        raise ValueError
+
+    artifact_name = result_set or "prediction"
+    labels_inside_df = set(label_columns) & set(dataset.columns.tolist())
+    if labels_inside_df:
+        context.logger.error(
+            f"The labels: {labels_inside_df} are already existed in the dataframe"
+        )
+        raise ValueError
+    pred_df = pd.concat([dataset, pd.DataFrame(y_pred, columns=label_columns)], axis=1)
+    context.log_dataset(artifact_name, pred_df, db_key=result_set)
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/auto_trainer/latest/src/auto_trainer.py b/functions/master/auto_trainer/latest/src/auto_trainer.py index cb72cc2d..7b476470 100755 --- a/functions/master/auto_trainer/latest/src/auto_trainer.py +++ b/functions/master/auto_trainer/latest/src/auto_trainer.py @@ -71,13 +71,17 @@ def _get_dataframe( # Getting the dataset: if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix: - # FeatureVector case: label_columns = label_columns or dataset.meta.status.label_column - dataset = fs.get_offline_features( - dataset.meta.uri, drop_columns=drop_columns - ).to_dataframe() - context.logger.info(f"label columns: {label_columns}") + # FeatureVector case: + try: + fv = mlrun.datastore.get_store_resource(dataset.artifact_url) + dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe() + except AttributeError: + # Leave here for backwards compatibility + dataset = fs.get_offline_features( + dataset.meta.uri, drop_columns=drop_columns + ).to_dataframe() elif not label_columns: context.logger.info( diff --git a/functions/master/auto_trainer/latest/src/function.yaml b/functions/master/auto_trainer/latest/src/function.yaml index f4d090d3..0f86b7ea 100644 --- a/functions/master/auto_trainer/latest/src/function.yaml +++ b/functions/master/auto_trainer/latest/src/function.yaml @@ -2,7 +2,7 @@ kind: job metadata: name: auto-trainer tag: '' - hash: 95201dacf05c181e0257b5dd145cb79a503b6fbe + hash: 1c415e6d3bd79c9ca0ee537e008643660c13fbc7 project: '' labels: author: yonish @@ -14,7 +14,7 @@ spec: args: [] image: mlrun/mlrun build: - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgIyBGZWF0dXJlVmVjdG9yIGNhc2U6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBkYXRhc2V0ID0gZnMuZ2V0X29mZmxpbmVfZmVhdHVyZXMoCiAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICApLnRvX2RhdGFmcmFtZSgpCgogICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oZiJsYWJlbCBjb2x1bW5zOiB7bGFiZWxfY29sdW1uc30iKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo= + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibGFiZWwgY29sdW1uczoge2xhYmVsX2NvbHVtbnN9IikKICAgICAgICAjIEZlYXR1cmVWZWN0b3IgY2FzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ2ID0gbWxydW4uZGF0YXN0b3JlLmdldF9zdG9yZV9yZXNvdXJjZShkYXRhc2V0LmFydGlmYWN0X3VybCkKICAgICAgICAgICAgZGF0YXNldCA9IGZ2LmdldF9vZmZsaW5lX2ZlYXR1cmVzKGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMpLnRvX2RhdGFmcmFtZSgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIExlYXZlIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIGRhdGFzZXQgPSBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcygKICAgICAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICAgICAgKS50b19kYXRhZnJhbWUoKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo= commands: [] code_origin: '' origin_filename: '' @@ -86,7 +86,7 @@ spec: doc: Labels to log with the model default: null outputs: [] - lineno: 117 + lineno: 121 has_varargs: false has_kwargs: true evaluate: @@ -112,7 +112,7 @@ spec: Classification tasks. Mandatory when dataset is not a FeatureVector. default: null outputs: [] - lineno: 269 + lineno: 273 has_varargs: false has_kwargs: true predict: @@ -147,7 +147,7 @@ spec: to 'prediction'. default: null outputs: [] - lineno: 323 + lineno: 327 has_varargs: false has_kwargs: true description: Automatic train, evaluate and predict functions for the ML frameworks diff --git a/functions/master/auto_trainer/latest/src/item.yaml b/functions/master/auto_trainer/latest/src/item.yaml index 122c6804..ffa03bf0 100755 --- a/functions/master/auto_trainer/latest/src/item.yaml +++ b/functions/master/auto_trainer/latest/src/item.yaml @@ -23,4 +23,4 @@ spec: kind: job requirements: [] url: '' -version: 1.6.0 +version: 1.7.0 diff --git a/functions/master/auto_trainer/latest/static/auto_trainer.html b/functions/master/auto_trainer/latest/static/auto_trainer.html index ebee6e6d..a3db2659 100644 --- a/functions/master/auto_trainer/latest/static/auto_trainer.html +++ b/functions/master/auto_trainer/latest/static/auto_trainer.html @@ -187,13 +187,17 @@

Source code for auto_trainer.auto_trainer

 
     # Getting the dataset:
     if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix:
-        # FeatureVector case:
         label_columns = label_columns or dataset.meta.status.label_column
-        dataset = fs.get_offline_features(
-            dataset.meta.uri, drop_columns=drop_columns
-        ).to_dataframe()
-
         context.logger.info(f"label columns: {label_columns}")
+        # FeatureVector case:
+        try:
+            fv = mlrun.datastore.get_store_resource(dataset.artifact_url)
+            dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe()
+        except AttributeError:
+            # Leave here for backwards compatibility
+            dataset = fs.get_offline_features(
+                dataset.meta.uri, drop_columns=drop_columns
+            ).to_dataframe()
 
     elif not label_columns:
         context.logger.info(
diff --git a/functions/master/auto_trainer/latest/static/function.html b/functions/master/auto_trainer/latest/static/function.html
index 6b318b69..aed22593 100644
--- a/functions/master/auto_trainer/latest/static/function.html
+++ b/functions/master/auto_trainer/latest/static/function.html
@@ -19,7 +19,7 @@
 metadata:
   name: auto-trainer
   tag: ''
-  hash: 95201dacf05c181e0257b5dd145cb79a503b6fbe
+  hash: 1c415e6d3bd79c9ca0ee537e008643660c13fbc7
   project: ''
   labels:
     author: yonish
@@ -31,7 +31,7 @@
   args: []
   image: mlrun/mlrun
   build:
-    functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgIyBGZWF0dXJlVmVjdG9yIGNhc2U6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBkYXRhc2V0ID0gZnMuZ2V0X29mZmxpbmVfZmVhdHVyZXMoCiAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICApLnRvX2RhdGFmcmFtZSgpCgogICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oZiJsYWJlbCBjb2x1bW5zOiB7bGFiZWxfY29sdW1uc30iKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo=
+    functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmZyb20gdHlwaW5nIGltcG9ydCBBbnksIERpY3QsIExpc3QsIE9wdGlvbmFsLCBUdXBsZSwgVW5pb24KCmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgcGFuZGFzIGFzIHBkCmZyb20gbWxydW4gaW1wb3J0IGZlYXR1cmVfc3RvcmUgYXMgZnMKZnJvbSBtbHJ1bi5kYXRhc3RvcmUgaW1wb3J0IERhdGFJdGVtCmZyb20gbWxydW4uZXhlY3V0aW9uIGltcG9ydCBNTENsaWVudEN0eApmcm9tIG1scnVuLmZyYW1ld29ya3MuYXV0b19tbHJ1biBpbXBvcnQgQXV0b01MUnVuCmZyb20gbWxydW4udXRpbHMuaGVscGVycyBpbXBvcnQgY3JlYXRlX2NsYXNzLCBjcmVhdGVfZnVuY3Rpb24KZnJvbSBza2xlYXJuLm1vZGVsX3NlbGVjdGlvbiBpbXBvcnQgdHJhaW5fdGVzdF9zcGxpdAoKUGF0aFR5cGUgPSBVbmlvbltzdHIsIFBhdGhdCgoKY2xhc3MgS1dBcmdzUHJlZml4ZXM6CiAgICBNT0RFTF9DTEFTUyA9ICJDTEFTU18iCiAgICBGSVQgPSAiRklUXyIKICAgIFRSQUlOID0gIlRSQUlOXyIKCgpkZWYgX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoc3JjOiBEaWN0LCBwcmVmaXhfa2V5OiBzdHIpIC0+IERpY3Rbc3RyLCBBbnldOgogICAgIiIiCiAgICBDb2xsZWN0IGFsbCB0aGUga2V5cyBmcm9tIHRoZSBnaXZlbiBkaWN0IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeCBhbmQgY3JlYXRlcyBhIG5ldyBkaWN0aW9uYXJ5IHdpdGggdGhlc2UKICAgIGtleXMuCgogICAgOnBhcmFtIHNyYzogICAgICAgICBUaGUgc291cmNlIGRpY3QgdG8gZXh0cmFjdCB0aGUgdmFsdWVzIGZyb20uCiAgICA6cGFyYW0gcHJlZml4X2tleTogIE9ubHkga2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBrZXlzIGluIHRoZSByZXN1bHQgZGljdCB3aWxsIGJlIHdpdGhvdXQgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXguCiAgICAiIiIKICAgIHJldHVybiB7CiAgICAgICAga2V5LnJlcGxhY2UocHJlZml4X2tleSwgIiIpOiB2YWwKICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc3JjLml0ZW1zKCkKICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aChwcmVmaXhfa2V5KQogICAgfQoKCmRlZiBfZ2V0X2RhdGFmcmFtZSgKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCikgLT4gVHVwbGVbcGQuRGF0YUZyYW1lLCBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dXToKICAgICIiIgogICAgR2V0dGluZyB0aGUgRGF0YUZyYW1lIG9mIHRoZSBkYXRhc2V0IGFuZCBkcm9wIHRoZSBjb2x1bW5zIGFjY29yZGluZ2x5LgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICBUaGUgZGF0YXNldCB0byB0cmFpbiB0aGUgbW9kZWwgb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgZWl0aGVyIGEgbGlzdCBvZiBsaXN0cywgZGljdCwgVVJJIG9yIGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzaWZpY2F0aW9uIHRhc2tzLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgIiIiCiAgICBzdG9yZV91cmlfcHJlZml4LCBfID0gbWxydW4uZGF0YXN0b3JlLnBhcnNlX3N0b3JlX3VyaShkYXRhc2V0LmFydGlmYWN0X3VybCkKCiAgICAjIEdldHRpbmcgdGhlIGRhdGFzZXQ6CiAgICBpZiBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXg6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9IGxhYmVsX2NvbHVtbnMgb3IgZGF0YXNldC5tZXRhLnN0YXR1cy5sYWJlbF9jb2x1bW4KICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibGFiZWwgY29sdW1uczoge2xhYmVsX2NvbHVtbnN9IikKICAgICAgICAjIEZlYXR1cmVWZWN0b3IgY2FzZToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGZ2ID0gbWxydW4uZGF0YXN0b3JlLmdldF9zdG9yZV9yZXNvdXJjZShkYXRhc2V0LmFydGlmYWN0X3VybCkKICAgICAgICAgICAgZGF0YXNldCA9IGZ2LmdldF9vZmZsaW5lX2ZlYXR1cmVzKGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMpLnRvX2RhdGFmcmFtZSgpCiAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAjIExlYXZlIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIGRhdGFzZXQgPSBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcygKICAgICAgICAgICAgICAgIGRhdGFzZXQubWV0YS51cmksIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMKICAgICAgICAgICAgKS50b19kYXRhZnJhbWUoKQoKICAgIGVsaWYgbm90IGxhYmVsX2NvbHVtbnM6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMgbm90IHByb3ZpZGVkLCBtYW5kYXRvcnkgd2hlbiBkYXRhc2V0IGlzIG5vdCBhIEZlYXR1cmVWZWN0b3IiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKCiAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YXNldCwgKGxpc3QsIGRpY3QpKToKICAgICAgICAjIGxpc3QvZGljdCBjYXNlOgogICAgICAgIGRhdGFzZXQgPSBwZC5EYXRhRnJhbWUoZGF0YXNldCkKICAgICAgICAjIENoZWNraW5nIGlmIGRyb3BfY29sdW1ucyBwcm92aWRlZCBieSBpbnRlZ2VyIHR5cGU6CiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgc3RyKSBvciAoCiAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGRyb3BfY29sdW1ucywgbGlzdCkKICAgICAgICAgICAgICAgIGFuZCBhbnkoaXNpbnN0YW5jZShjb2wsIHN0cikgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpCiAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5lcnJvcigKICAgICAgICAgICAgICAgICAgICAiZHJvcF9jb2x1bW5zIG11c3QgYmUgYW4gaW50ZWdlci9saXN0IG9mIGludGVnZXJzIGlmIG5vdCBwcm92aWRlZCB3aXRoIGEgVVJJL0ZlYXR1cmVWZWN0b3IgZGF0YXNldCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgZGF0YXNldC5kcm9wKGRyb3BfY29sdW1ucywgYXhpcz0xLCBpbnBsYWNlPVRydWUpCgogICAgZWxzZToKICAgICAgICAjIHNpbXBsZSBVUkwgY2FzZToKICAgICAgICBkYXRhc2V0ID0gZGF0YXNldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICBpZiBhbGwoY29sIGluIGRhdGFzZXQgZm9yIGNvbCBpbiBkcm9wX2NvbHVtbnMpOgogICAgICAgICAgICAgICAgZGF0YXNldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oCiAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgb2YgdGhlIGNvbHVtbnMgdG8gZHJvcCBpbiB0aGUgZGF0YXNldCwgZHJvcCBjb2x1bW5zIHByb2Nlc3Mgc2tpcHBlZCIKICAgICAgICAgICAgICAgICkKCiAgICByZXR1cm4gZGF0YXNldCwgbGFiZWxfY29sdW1ucwoKCmRlZiB0cmFpbigKICAgIGNvbnRleHQ6IE1MQ2xpZW50Q3R4LAogICAgZGF0YXNldDogRGF0YUl0ZW0sCiAgICBtb2RlbF9jbGFzczogc3RyLAogICAgbGFiZWxfY29sdW1uczogT3B0aW9uYWxbVW5pb25bc3RyLCBMaXN0W3N0cl1dXSA9IE5vbmUsCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBtb2RlbF9uYW1lOiBzdHIgPSAibW9kZWwiLAogICAgdGFnOiBzdHIgPSAiIiwKICAgIHNhbXBsZV9zZXQ6IERhdGFJdGVtID0gTm9uZSwKICAgIHRlc3Rfc2V0OiBEYXRhSXRlbSA9IE5vbmUsCiAgICB0cmFpbl90ZXN0X3NwbGl0X3NpemU6IGZsb2F0ID0gTm9uZSwKICAgIHJhbmRvbV9zdGF0ZTogaW50ID0gTm9uZSwKICAgIGxhYmVsczogZGljdCA9IE5vbmUsCiAgICAqKmt3YXJncywKKToKICAgICIiIgogICAgVHJhaW5pbmcgYSBtb2RlbCB3aXRoIHRoZSBnaXZlbiBkYXRhc2V0LgoKICAgIGV4YW1wbGU6OgoKICAgICAgICBpbXBvcnQgbWxydW4KICAgICAgICBwcm9qZWN0ID0gbWxydW4uZ2V0X29yX2NyZWF0ZV9wcm9qZWN0KCJteS1wcm9qZWN0IikKICAgICAgICBwcm9qZWN0LnNldF9mdW5jdGlvbigiaHViOi8vYXV0b190cmFpbmVyIiwgInRyYWluIikKICAgICAgICB0cmFpbmVyX3J1biA9IHByb2plY3QucnVuKAogICAgICAgICAgICBuYW1lPSJ0cmFpbiIsCiAgICAgICAgICAgIGhhbmRsZXI9InRyYWluIiwKICAgICAgICAgICAgaW5wdXRzPXsiZGF0YXNldCI6ICIuL3BhdGgvdG8vZGF0YXNldC5jc3YifSwKICAgICAgICAgICAgcGFyYW1zPXsKICAgICAgICAgICAgICAgICJtb2RlbF9jbGFzcyI6ICJza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb24iLAogICAgICAgICAgICAgICAgImxhYmVsX2NvbHVtbnMiOiAibGFiZWwiLAogICAgICAgICAgICAgICAgImRyb3BfY29sdW1ucyI6ICJpZCIsCiAgICAgICAgICAgICAgICAibW9kZWxfbmFtZSI6ICJteS1tb2RlbCIsCiAgICAgICAgICAgICAgICAidGFnIjogInYxLjAuMCIsCiAgICAgICAgICAgICAgICAic2FtcGxlX3NldCI6ICIuL3BhdGgvdG8vc2FtcGxlX3NldC5jc3YiLAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IjogIi4vcGF0aC90by90ZXN0X3NldC5jc3YiLAogICAgICAgICAgICAgICAgIkNMQVNTX3NvbHZlciI6ICJsaWJsaW5lYXIiLAogICAgICAgICAgICB9LAogICAgICAgICkKCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQKICAgIDpwYXJhbSBkYXRhc2V0OiAgICAgICAgICAgICAgICAgVGhlIGRhdGFzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIG1vZGVsX2NsYXNzOiAgICAgICAgICAgICBUaGUgY2xhc3Mgb2YgdGhlIG1vZGVsLCBlLmcuIGBza2xlYXJuLmxpbmVhcl9tb2RlbC5Mb2dpc3RpY1JlZ3Jlc3Npb25gCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uczogICAgICAgICAgIFRoZSB0YXJnZXQgbGFiZWwocykgb2YgdGhlIGNvbHVtbihzKSBpbiB0aGUgZGF0YXNldC4gZm9yIFJlZ3Jlc3Npb24gb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NpZmljYXRpb24gdGFza3MuIE1hbmRhdG9yeSB3aGVuIGRhdGFzZXQgaXMgbm90IGEgRmVhdHVyZVZlY3Rvci4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyIG9yIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW5zIHRvIGRyb3AKICAgIDpwYXJhbSBtb2RlbF9uYW1lOiAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgbmFtZSB0byB1c2UgZm9yIHN0b3JpbmcgdGhlIG1vZGVsIGFydGlmYWN0LCBkZWZhdWx0IHRvICdtb2RlbCcKICAgIDpwYXJhbSB0YWc6ICAgICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsJ3MgdGFnIHRvIGxvZyB3aXRoCiAgICA6cGFyYW0gc2FtcGxlX3NldDogICAgICAgICAgICAgIEEgc2FtcGxlIHNldCBvZiBpbnB1dHMgZm9yIHRoZSBtb2RlbCBmb3IgbG9nZ2luZyBpdHMgc3RhdHMgYWxvbmcgdGhlIG1vZGVsIGluIGZhdm91cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBtb2RlbCBtb25pdG9yaW5nLiBDYW4gYmUgZWl0aGVyIGEgVVJJIG9yIGEgRmVhdHVyZVZlY3RvcgogICAgOnBhcmFtIHRlc3Rfc2V0OiAgICAgICAgICAgICAgICBUaGUgdGVzdCBzZXQgdG8gdHJhaW4gdGhlIG1vZGVsIHdpdGguCiAgICA6cGFyYW0gdHJhaW5fdGVzdF9zcGxpdF9zaXplOiAgIGlmIHRlc3Rfc2V0IHdhcyBwcm92aWRlZCB0aGVuIHRoaXMgYXJndW1lbnQgaXMgaWdub3JlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGJldHdlZW4gMC4wIGFuZCAxLjAgYW5kIHJlcHJlc2VudCB0aGUgcHJvcG9ydGlvbiBvZiB0aGUgZGF0YXNldCB0byBpbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSB0ZXN0IHNwbGl0LiBUaGUgc2l6ZSBvZiB0aGUgVHJhaW5pbmcgc2V0IGlzIHNldCB0byB0aGUgY29tcGxlbWVudCBvZiB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLiBEZWZhdWx0ID0gMC4yCiAgICA6cGFyYW0gcmFuZG9tX3N0YXRlOiAgICAgICAgICAgIFJlbGV2YW50IG9ubHkgd2hlbiB1c2luZyB0cmFpbl90ZXN0X3NwbGl0X3NpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcmFuZG9tIHN0YXRlIHNlZWQgdG8gc2h1ZmZsZSB0aGUgZGF0YS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9zY2lraXQtbGVhcm4ub3JnL3N0YWJsZS9nbG9zc2FyeS5odG1sI3Rlcm0tcmFuZG9tX3N0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGljZSB0aGF0IGhlcmUgd2Ugb25seSBwYXNzIGludGVnZXIgdmFsdWVzLgogICAgOnBhcmFtIGxhYmVsczogICAgICAgICAgICAgICAgICBMYWJlbHMgdG8gbG9nIHdpdGggdGhlIG1vZGVsCiAgICA6cGFyYW0ga3dhcmdzOiAgICAgICAgICAgICAgICAgIEhlcmUgeW91IGNhbiBwYXNzIGtleXdvcmQgYXJndW1lbnRzIHdpdGggcHJlZml4ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBwYXJzZWQgYW5kIHBhc3NlZCB0byB0aGUgcmVsZXZhbnQgZnVuY3Rpb24sIGJ5IHRoZSBmb2xsb3dpbmcgcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYENMQVNTX2AgLSBmb3IgdGhlIG1vZGVsIGNsYXNzIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGBGSVRfYCAtIGZvciB0aGUgYGZpdGAgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYFRSQUlOX2AgLSBmb3IgdGhlIGB0cmFpbmAgZnVuY3Rpb24gKGluIHhnYiBvciBsZ2JtIHRyYWluIGZ1bmN0aW9uIC0gZnV0dXJlKQoKICAgICIiIgogICAgIyBWYWxpZGF0ZSBpbnB1dHM6CiAgICAjIENoZWNrIGlmIGV4YWN0bHkgb25lIG9mIHRoZW0gaXMgc3VwcGxpZWQ6CiAgICBpZiB0ZXN0X3NldCBpcyBOb25lOgogICAgICAgIGlmIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBpcyBOb25lOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKAogICAgICAgICAgICAgICAgInRlc3Rfc2V0IG9yIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSBhcmUgbm90IHByb3ZpZGVkLCBzZXR0aW5nIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSB0byAwLjIiCiAgICAgICAgICAgICkKICAgICAgICAgICAgdHJhaW5fdGVzdF9zcGxpdF9zaXplID0gMC4yCgogICAgZWxpZiB0cmFpbl90ZXN0X3NwbGl0X3NpemU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgInRlc3Rfc2V0IHByb3ZpZGVkLCBpZ25vcmluZyBnaXZlbiB0cmFpbl90ZXN0X3NwbGl0X3NpemUgdmFsdWUiCiAgICAgICAgKQogICAgICAgIHRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSA9IE5vbmUKCiAgICAjIEdldCBEYXRhRnJhbWUgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIEdldHRpbmcgdGhlIHNhbXBsZSBzZXQ6CiAgICBpZiBzYW1wbGVfc2V0IGlzIE5vbmU6CiAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbygKICAgICAgICAgICAgZiJTYW1wbGUgc2V0IG5vdCBnaXZlbiwgdXNpbmcgdGhlIHdob2xlIHRyYWluaW5nIHNldCBhcyB0aGUgc2FtcGxlIHNldCIKICAgICAgICApCiAgICAgICAgc2FtcGxlX3NldCA9IGRhdGFzZXQKICAgIGVsc2U6CiAgICAgICAgc2FtcGxlX3NldCwgXyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgICAgIGRhdGFzZXQ9c2FtcGxlX3NldCwKICAgICAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgICAgICBkcm9wX2NvbHVtbnM9ZHJvcF9jb2x1bW5zLAogICAgICAgICkKCiAgICAjIFBhcnNpbmcga3dhcmdzOgogICAgIyBUT0RPOiBVc2UgaW4geGdiIG9yIGxnYm0gdHJhaW4gZnVuY3Rpb24uCiAgICB0cmFpbl9rd2FyZ3MgPSBfZ2V0X3N1Yl9kaWN0X2J5X3ByZWZpeChzcmM9a3dhcmdzLCBwcmVmaXhfa2V5PUtXQXJnc1ByZWZpeGVzLlRSQUlOKQogICAgZml0X2t3YXJncyA9IF9nZXRfc3ViX2RpY3RfYnlfcHJlZml4KHNyYz1rd2FyZ3MsIHByZWZpeF9rZXk9S1dBcmdzUHJlZml4ZXMuRklUKQogICAgbW9kZWxfY2xhc3Nfa3dhcmdzID0gX2dldF9zdWJfZGljdF9ieV9wcmVmaXgoCiAgICAgICAgc3JjPWt3YXJncywgcHJlZml4X2tleT1LV0FyZ3NQcmVmaXhlcy5NT0RFTF9DTEFTUwogICAgKQoKICAgICMgQ2hlY2sgaWYgbW9kZWwgb3IgZnVuY3Rpb246CiAgICBpZiBoYXNhdHRyKG1vZGVsX2NsYXNzLCAidHJhaW4iKToKICAgICAgICAjIFRPRE86IE5lZWQgdG8gY2FsbDogbW9kZWwoKSwgYWZ0ZXJ3YXJkcyB0byBzdGFydCB0aGUgdHJhaW4gZnVuY3Rpb24uCiAgICAgICAgIyBtb2RlbCA9IGNyZWF0ZV9mdW5jdGlvbihmInttb2RlbF9jbGFzc30udHJhaW4iKQogICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgIGVsc2U6CiAgICAgICAgIyBDcmVhdGluZyBtb2RlbCBpbnN0YW5jZToKICAgICAgICBtb2RlbCA9IGNyZWF0ZV9jbGFzcyhtb2RlbF9jbGFzcykoKiptb2RlbF9jbGFzc19rd2FyZ3MpCgogICAgeCA9IGRhdGFzZXQuZHJvcChsYWJlbF9jb2x1bW5zLCBheGlzPTEpCiAgICB5ID0gZGF0YXNldFtsYWJlbF9jb2x1bW5zXQogICAgaWYgdHJhaW5fdGVzdF9zcGxpdF9zaXplOgogICAgICAgIHhfdHJhaW4sIHhfdGVzdCwgeV90cmFpbiwgeV90ZXN0ID0gdHJhaW5fdGVzdF9zcGxpdCgKICAgICAgICAgICAgeCwgeSwgdGVzdF9zaXplPXRyYWluX3Rlc3Rfc3BsaXRfc2l6ZSwgcmFuZG9tX3N0YXRlPXJhbmRvbV9zdGF0ZQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgeF90cmFpbiwgeV90cmFpbiA9IHgsIHkKCiAgICAgICAgdGVzdF9zZXQgPSB0ZXN0X3NldC5hc19kZigpCiAgICAgICAgaWYgZHJvcF9jb2x1bW5zOgogICAgICAgICAgICB0ZXN0X3NldCA9IGRhdGFzZXQuZHJvcChkcm9wX2NvbHVtbnMsIGF4aXM9MSkKCiAgICAgICAgeF90ZXN0LCB5X3Rlc3QgPSB0ZXN0X3NldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSksIHRlc3Rfc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgQXV0b01MUnVuLmFwcGx5X21scnVuKAogICAgICAgIG1vZGVsPW1vZGVsLAogICAgICAgIG1vZGVsX25hbWU9bW9kZWxfbmFtZSwKICAgICAgICBjb250ZXh0PWNvbnRleHQsCiAgICAgICAgdGFnPXRhZywKICAgICAgICBzYW1wbGVfc2V0PXNhbXBsZV9zZXQsCiAgICAgICAgeV9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgdGVzdF9zZXQ9dGVzdF9zZXQsCiAgICAgICAgeF90ZXN0PXhfdGVzdCwKICAgICAgICB5X3Rlc3Q9eV90ZXN0LAogICAgICAgIGFydGlmYWN0cz1jb250ZXh0LmFydGlmYWN0cywKICAgICAgICBsYWJlbHM9bGFiZWxzLAogICAgKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInRyYWluaW5nICd7bW9kZWxfbmFtZX0nIikKICAgIG1vZGVsLmZpdCh4X3RyYWluLCB5X3RyYWluLCAqKmZpdF9rd2FyZ3MpCgoKZGVmIGV2YWx1YXRlKAogICAgY29udGV4dDogTUxDbGllbnRDdHgsCiAgICBtb2RlbDogc3RyLAogICAgZGF0YXNldDogbWxydW4uRGF0YUl0ZW0sCiAgICBkcm9wX2NvbHVtbnM6IExpc3Rbc3RyXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgICoqa3dhcmdzLAopOgogICAgIiIiCiAgICBFdmFsdWF0aW5nIGEgbW9kZWwuIEFydGlmYWN0cyBnZW5lcmF0ZWQgYnkgdGhlIE1MSGFuZGxlci4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgICAgIE1MUnVuIGNvbnRleHQuCiAgICA6cGFyYW0gbW9kZWw6ICAgICAgICAgICAgICAgICAgIFRoZSBtb2RlbCBTdG9yZSBwYXRoLgogICAgOnBhcmFtIGRhdGFzZXQ6ICAgICAgICAgICAgICAgICBUaGUgZGF0YXNldCB0byBldmFsdWF0ZSB0aGUgbW9kZWwgb24uIENhbiBiZSBlaXRoZXIgYSBVUkkgb3IgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGRyb3BfY29sdW1uczogICAgICAgICAgICBzdHIgb3IgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCByZXByZXNlbnQgdGhlIGNvbHVtbnMgdG8gZHJvcC4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIGt3YXJnczogICAgICAgICAgICAgICAgICBIZXJlIHlvdSBjYW4gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cyB0byB0aGUgcHJlZGljdCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFJFRElDVF8gcHJlZml4IGlzIG5vdCByZXF1aXJlZCkuCiAgICAiIiIKICAgICMgR2V0IGRhdGFzZXQgYnkgVVJMIG9yIGJ5IEZlYXR1cmVWZWN0b3I6CiAgICBkYXRhc2V0LCBsYWJlbF9jb2x1bW5zID0gX2dldF9kYXRhZnJhbWUoCiAgICAgICAgY29udGV4dD1jb250ZXh0LAogICAgICAgIGRhdGFzZXQ9ZGF0YXNldCwKICAgICAgICBsYWJlbF9jb2x1bW5zPWxhYmVsX2NvbHVtbnMsCiAgICAgICAgZHJvcF9jb2x1bW5zPWRyb3BfY29sdW1ucywKICAgICkKCiAgICAjIFBhcnNpbmcgbGFiZWxfY29sdW1uczoKICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zID0gW10KICAgIGlmIGxhYmVsX2NvbHVtbnM6CiAgICAgICAgbGFiZWxfY29sdW1ucyA9ICgKICAgICAgICAgICAgbGFiZWxfY29sdW1ucyBpZiBpc2luc3RhbmNlKGxhYmVsX2NvbHVtbnMsIGxpc3QpIGVsc2UgW2xhYmVsX2NvbHVtbnNdCiAgICAgICAgKQogICAgICAgIGZvciBsYyBpbiBsYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBpZiBmcy5jb21tb24uZmVhdHVyZV9zZXBhcmF0b3IgaW4gbGM6CiAgICAgICAgICAgICAgICBmZWF0dXJlX3NldF9uYW1lLCBsYWJlbF9uYW1lLCBhbGlhcyA9IGZzLmNvbW1vbi5wYXJzZV9mZWF0dXJlX3N0cmluZyhsYykKICAgICAgICAgICAgICAgIHBhcnNlZF9sYWJlbF9jb2x1bW5zLmFwcGVuZChhbGlhcyBvciBsYWJlbF9uYW1lKQogICAgICAgIGlmIHBhcnNlZF9sYWJlbF9jb2x1bW5zOgogICAgICAgICAgICBsYWJlbF9jb2x1bW5zID0gcGFyc2VkX2xhYmVsX2NvbHVtbnMKCiAgICB4ID0gZGF0YXNldC5kcm9wKGxhYmVsX2NvbHVtbnMsIGF4aXM9MSkKICAgIHkgPSBkYXRhc2V0W2xhYmVsX2NvbHVtbnNdCgogICAgIyBMb2FkaW5nIHRoZSBtb2RlbCBhbmQgcHJlZGljdGluZzoKICAgIG1vZGVsX2hhbmRsZXIgPSBBdXRvTUxSdW4ubG9hZF9tb2RlbCgKICAgICAgICBtb2RlbF9wYXRoPW1vZGVsLCBjb250ZXh0PWNvbnRleHQsIG1vZGVsX25hbWU9Im1vZGVsX0xpbmVhclJlZ3Jlc3Npb24iCiAgICApCiAgICBBdXRvTUxSdW4uYXBwbHlfbWxydW4obW9kZWxfaGFuZGxlci5tb2RlbCwgeV90ZXN0PXksIG1vZGVsX3BhdGg9bW9kZWwpCgogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmImV2YWx1YXRpbmcgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoeCwgKiprd2FyZ3MpCgoKZGVmIHByZWRpY3QoCiAgICBjb250ZXh0OiBNTENsaWVudEN0eCwKICAgIG1vZGVsOiBzdHIsCiAgICBkYXRhc2V0OiBtbHJ1bi5EYXRhSXRlbSwKICAgIGRyb3BfY29sdW1uczogVW5pb25bc3RyLCBMaXN0W3N0cl0sIGludCwgTGlzdFtpbnRdXSA9IE5vbmUsCiAgICBsYWJlbF9jb2x1bW5zOiBPcHRpb25hbFtVbmlvbltzdHIsIExpc3Rbc3RyXV1dID0gTm9uZSwKICAgIHJlc3VsdF9zZXQ6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAogICAgKiprd2FyZ3MsCik6CiAgICAiIiIKICAgIFByZWRpY3RpbmcgZGF0YXNldCBieSBhIG1vZGVsLgoKICAgIDpwYXJhbSBjb250ZXh0OiAgICAgICAgICAgICAgICAgTUxSdW4gY29udGV4dC4KICAgIDpwYXJhbSBtb2RlbDogICAgICAgICAgICAgICAgICAgVGhlIG1vZGVsIFN0b3JlIHBhdGguCiAgICA6cGFyYW0gZGF0YXNldDogICAgICAgICAgICAgICAgIFRoZSBkYXRhc2V0IHRvIHByZWRpY3QgdGhlIG1vZGVsIG9uLiBDYW4gYmUgZWl0aGVyIGEgVVJJLCBhIEZlYXR1cmVWZWN0b3Igb3IgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGUgaW4gYSBzaGFwZSBvZiBhIGxpc3QvZGljdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBwYXNzaW5nIGEgc2FtcGxlLCBwYXNzIHRoZSBkYXRhc2V0IGFzIGEgZmllbGQgaW4gYHBhcmFtc2AgaW5zdGVhZCBvZiBgaW5wdXRzYC4KICAgIDpwYXJhbSBkcm9wX2NvbHVtbnM6ICAgICAgICAgICAgc3RyL2ludCBvciBhIGxpc3Qgb2Ygc3RyaW5ncy9pbnRzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2x1bW4gbmFtZXMvaW5kaWNlcyB0byBkcm9wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHRoZSBkYXRhc2V0IGlzIGEgbGlzdC9kaWN0IHRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSByZXByZXNlbnRlZCBieSBpbnRlZ2Vycy4KICAgIDpwYXJhbSBsYWJlbF9jb2x1bW5zOiAgICAgICAgICAgVGhlIHRhcmdldCBsYWJlbChzKSBvZiB0aGUgY29sdW1uKHMpIGluIHRoZSBkYXRhc2V0LiBmb3IgUmVncmVzc2lvbiBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc2lmaWNhdGlvbiB0YXNrcy4gTWFuZGF0b3J5IHdoZW4gZGF0YXNldCBpcyBub3QgYSBGZWF0dXJlVmVjdG9yLgogICAgOnBhcmFtIHJlc3VsdF9zZXQ6ICAgICAgICAgICAgICBUaGUgZGIga2V5IHRvIHNldCBuYW1lIG9mIHRoZSBwcmVkaWN0aW9uIHJlc3VsdCBhbmQgdGhlIGZpbGVuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvICdwcmVkaWN0aW9uJy4KICAgIDpwYXJhbSBrd2FyZ3M6ICAgICAgICAgICAgICAgICAgSGVyZSB5b3UgY2FuIHBhc3Mga2V5d29yZCBhcmd1bWVudHMgdG8gdGhlIHByZWRpY3QgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBSRURJQ1RfIHByZWZpeCBpcyBub3QgcmVxdWlyZWQpLgogICAgIiIiCiAgICAjIEdldCBkYXRhc2V0IGJ5IFVSTCBvciBieSBGZWF0dXJlVmVjdG9yOgogICAgZGF0YXNldCwgbGFiZWxfY29sdW1ucyA9IF9nZXRfZGF0YWZyYW1lKAogICAgICAgIGNvbnRleHQ9Y29udGV4dCwKICAgICAgICBkYXRhc2V0PWRhdGFzZXQsCiAgICAgICAgbGFiZWxfY29sdW1ucz1sYWJlbF9jb2x1bW5zLAogICAgICAgIGRyb3BfY29sdW1ucz1kcm9wX2NvbHVtbnMsCiAgICApCgogICAgIyBsb2FkaW5nIHRoZSBtb2RlbCwgYW5kIGdldHRpbmcgdGhlIG1vZGVsIGhhbmRsZXI6CiAgICBtb2RlbF9oYW5kbGVyID0gQXV0b01MUnVuLmxvYWRfbW9kZWwobW9kZWxfcGF0aD1tb2RlbCwgY29udGV4dD1jb250ZXh0KQoKICAgICMgRHJvcHBpbmcgbGFiZWwgY29sdW1ucyBpZiBuZWNlc3Nhcnk6CiAgICBpZiBub3QgbGFiZWxfY29sdW1uczoKICAgICAgICBsYWJlbF9jb2x1bW5zID0gW10KICAgIGVsaWYgaXNpbnN0YW5jZShsYWJlbF9jb2x1bW5zLCBzdHIpOgogICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbbGFiZWxfY29sdW1uc10KCiAgICAjIFByZWRpY3Rpbmc6CiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYibWFraW5nIHByZWRpY3Rpb24gYnkgJ3ttb2RlbF9oYW5kbGVyLm1vZGVsX25hbWV9JyIpCiAgICB5X3ByZWQgPSBtb2RlbF9oYW5kbGVyLm1vZGVsLnByZWRpY3QoZGF0YXNldCwgKiprd2FyZ3MpCgogICAgIyBQcmVwYXJpbmcgYW5kIHZhbGlkYXRpbmcgbGFiZWwgY29sdW1ucyBmb3IgdGhlIGRhdGFmcmFtZSBvZiB0aGUgcHJlZGljdGlvbiByZXN1bHQ6CiAgICBudW1fcHJlZGljdGVkID0gMSBpZiBsZW4oeV9wcmVkLnNoYXBlKSA9PSAxIGVsc2UgeV9wcmVkLnNoYXBlWzFdCgogICAgaWYgbnVtX3ByZWRpY3RlZCA+IGxlbihsYWJlbF9jb2x1bW5zKToKICAgICAgICBpZiBudW1fcHJlZGljdGVkID09IDE6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMgPSBbInByZWRpY3RlZCBsYWJlbHMiXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGxhYmVsX2NvbHVtbnMuZXh0ZW5kKAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIGYicHJlZGljdGVkX2xhYmVsX3tpICsgMSArIGxlbihsYWJlbF9jb2x1bW5zKX0iCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3ByZWRpY3RlZCAtIGxlbihsYWJlbF9jb2x1bW5zKSkKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKQogICAgZWxpZiBudW1fcHJlZGljdGVkIDwgbGVuKGxhYmVsX2NvbHVtbnMpOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIm51bWJlciBvZiBwcmVkaWN0ZWQgbGFiZWxzOiB7bnVtX3ByZWRpY3RlZH0gaXMgc21hbGxlciB0aGFuIG51bWJlciBvZiBsYWJlbCBjb2x1bW5zOiB7bGVuKGxhYmVsX2NvbHVtbnMpfSIKICAgICAgICApCiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgoKICAgIGFydGlmYWN0X25hbWUgPSByZXN1bHRfc2V0IG9yICJwcmVkaWN0aW9uIgogICAgbGFiZWxzX2luc2lkZV9kZiA9IHNldChsYWJlbF9jb2x1bW5zKSAmIHNldChkYXRhc2V0LmNvbHVtbnMudG9saXN0KCkpCiAgICBpZiBsYWJlbHNfaW5zaWRlX2RmOgogICAgICAgIGNvbnRleHQubG9nZ2VyLmVycm9yKAogICAgICAgICAgICBmIlRoZSBsYWJlbHM6IHtsYWJlbHNfaW5zaWRlX2RmfSBhcmUgYWxyZWFkeSBleGlzdGVkIGluIHRoZSBkYXRhZnJhbWUiCiAgICAgICAgKQogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgIHByZWRfZGYgPSBwZC5jb25jYXQoW2RhdGFzZXQsIHBkLkRhdGFGcmFtZSh5X3ByZWQsIGNvbHVtbnM9bGFiZWxfY29sdW1ucyldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KGFydGlmYWN0X25hbWUsIHByZWRfZGYsIGRiX2tleT1yZXN1bHRfc2V0KQo=
     commands: []
     code_origin: ''
     origin_filename: ''
@@ -103,7 +103,7 @@
         doc: Labels to log with the model
         default: null
       outputs: []
-      lineno: 117
+      lineno: 121
       has_varargs: false
       has_kwargs: true
     evaluate:
@@ -129,7 +129,7 @@
           Classification tasks. Mandatory when dataset is not a FeatureVector.
         default: null
       outputs: []
-      lineno: 269
+      lineno: 273
       has_varargs: false
       has_kwargs: true
     predict:
@@ -164,7 +164,7 @@
           to 'prediction'.
         default: null
       outputs: []
-      lineno: 323
+      lineno: 327
       has_varargs: false
       has_kwargs: true
   description: Automatic train, evaluate and predict functions for the ML frameworks
diff --git a/functions/master/auto_trainer/latest/static/item.html b/functions/master/auto_trainer/latest/static/item.html
index 16e9b077..c11f37e4 100644
--- a/functions/master/auto_trainer/latest/static/item.html
+++ b/functions/master/auto_trainer/latest/static/item.html
@@ -40,7 +40,7 @@
   kind: job
   requirements: []
 url: ''
-version: 1.6.0
+version: 1.7.0
 
         
     
diff --git a/functions/master/auto_trainer/latest/static/source.html b/functions/master/auto_trainer/latest/static/source.html index df316659..1e132975 100644 --- a/functions/master/auto_trainer/latest/static/source.html +++ b/functions/master/auto_trainer/latest/static/source.html @@ -88,13 +88,17 @@ # Getting the dataset: if mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix: - # FeatureVector case: label_columns = label_columns or dataset.meta.status.label_column - dataset = fs.get_offline_features( - dataset.meta.uri, drop_columns=drop_columns - ).to_dataframe() - context.logger.info(f"label columns: {label_columns}") + # FeatureVector case: + try: + fv = mlrun.datastore.get_store_resource(dataset.artifact_url) + dataset = fv.get_offline_features(drop_columns=drop_columns).to_dataframe() + except AttributeError: + # Leave here for backwards compatibility + dataset = fs.get_offline_features( + dataset.meta.uri, drop_columns=drop_columns + ).to_dataframe() elif not label_columns: context.logger.info( diff --git a/functions/master/catalog.json b/functions/master/catalog.json index ec30d1f2..6c453e19 100644 --- a/functions/master/catalog.json +++ b/functions/master/catalog.json @@ -1 +1 @@ -{"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.5", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.7": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.7", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false, "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false, "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_serving.ipynb", "source": "src/azureml_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_serving.ipynb", "source": "src/azureml_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.4.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.3.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/hugging_face_serving.ipynb", "source": "src/hugging_face_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/hugging_face_serving.ipynb", "source": "src/hugging_face_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/validate_great_expectations.ipynb", "source": "src/validate_great_expectations.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/validate_great_expectations.ipynb", "source": "src/validate_great_expectations.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.1.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false, "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/huggingface_auto_trainer.ipynb", "source": "src/huggingface_auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/huggingface_auto_trainer.ipynb", "source": "src/huggingface_auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.4.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.4.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/silero_vad.ipynb", "source": "src/silero_vad.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/silero_vad.ipynb", "source": "src/silero_vad.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/pyannote_audio.ipynb", "source": "src/pyannote_audio.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/pyannote_audio.ipynb", "source": "src/pyannote_audio.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}} \ No newline at end of file +{"tf2_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving", "platformVersion": "", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server", "doc": "", "example": "tf2_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving.ipynb", "source": "src/tf2_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "load_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dask", "platformVersion": "3.2.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dask", "platformVersion": "", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "etl"], "description": "load dask cluster with data", "doc": "", "example": "load_dask.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dask", "platformVersion": "3.5.0", "spec": {"filename": "load_dask.py", "handler": "load_dask", "image": "mlrun/ml-models", "kind": "dask", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dask.ipynb", "source": "src/load_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "xgb_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "xgb_serving", "platformVersion": "3.2.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "xgb_serving", "platformVersion": "3.0.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.2": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "xgb_serving", "platformVersion": "3.5.3", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.2", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an XGBoost model server.", "doc": "", "example": "xgb_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "xgb_serving", "platformVersion": "3.5.0", "spec": {"filename": "xgb_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "remote", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/xgb_serving.ipynb", "source": "src/xgb_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "sql_to_file": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "sql-to-file", "platformVersion": "3.2.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "sql-to-file", "platformVersion": "", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "SQL To File - Ingest data using SQL query", "doc": "", "example": "sql_to_file.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "adih"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "sql-to-file", "platformVersion": "3.5.0", "spec": {"filename": "sql_to_file.py", "handler": "sql_to_file", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/sql_to_file.ipynb", "source": "src/sql_to_file.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "feature_selection": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.0", "name": "feature-selection", "platformVersion": "3.2.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "feature-selection", "platformVersion": "2.10.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection/feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.1", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Select features through multiple Statistical and Model filters", "doc": "", "example": "feature_selection.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-selection", "platformVersion": "3.5.0", "spec": {"filename": "feature_selection.py", "handler": "feature_selection", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/feature_selection.ipynb", "source": "src/feature_selection.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "slack_notify": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "slack-notify", "platformVersion": "3.2.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "slack-notify", "platformVersion": "", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Slack notification", "doc": "", "example": "slack_notify.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "mdl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "slack-notify", "platformVersion": "3.5.0", "spec": {"filename": "slack_notify.py", "handler": "slack_notify", "image": "python:3.6-jessie", "kind": "job", "requirements": ["requests"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/slack_notify.ipynb", "source": "src/slack_notify.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server", "platformVersion": "3.2.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server", "platformVersion": "", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server", "platformVersion": "3.5.0", "spec": {"filename": "model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server.ipynb", "source": "src/model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "ingest": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "ingest", "platformVersion": "", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "Feature Store ingest function that runs the transformation graph on the source of the featureset.", "doc": "", "example": "ingest.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "ingest", "platformVersion": "3.5.0", "spec": {"filename": "ingest.py", "handler": "ingest", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/ingest.ipynb", "source": "src/ingest.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "describe": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.2": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-26:10-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.2", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "describe", "platformVersion": "3.5.3", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-04-07:14-20", "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe", "platformVersion": "3.2.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "describe", "platformVersion": "2.10.0", "spec": {"filename": "describe.py", "handler": "summarize", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "describe and visualizes dataset stats", "doc": "", "example": "describe.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "describe", "platformVersion": "3.5.0", "spec": {"filename": "describe.py", "handler": "analyze", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe.ipynb", "source": "src/describe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "github_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "github-utils", "platformVersion": "3.2.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "github-utils", "platformVersion": "", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "add comments to github pull request", "doc": "", "example": "github_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "github-utils", "platformVersion": "3.5.0", "spec": {"filename": "github_utils.py", "handler": "run_summary_comment", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/github_utils.ipynb", "source": "src/github_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "aggregate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "aggregate", "platformVersion": "3.5.4", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.2", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "aggregate", "platformVersion": "3.2.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2021-05-19:22-31", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "aggregate", "platformVersion": "3.0.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Rolling aggregation over Metrics and Lables according to specifications", "doc": "", "example": "aggregate.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "avia"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "aggregate", "platformVersion": "3.5.0", "spec": {"filename": "aggregate.py", "handler": "aggregate", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/aggregate.ipynb", "source": "src/aggregate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "bert_embeddings": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "bert-embeddings", "platformVersion": "3.5.3", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": ["torch"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "bert-embeddings", "platformVersion": "3.2.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "bert-embeddings", "platformVersion": "2.10.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Get BERT based embeddings for given text", "doc": "", "example": "bert_embeddings.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"framework": "pytorch"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "bert-embeddings", "platformVersion": "3.5.0", "spec": {"filename": "bert_embeddings.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["torch==1.6.0"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/bert_embeddings.ipynb", "source": "src/bert_embeddings.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "concept_drift": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift", "platformVersion": "", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "Deploy a streaming Concept Drift detector on a labeled stream", "doc": "", "example": "concept_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift.py", "handler": "concept_drift_deployer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-multiflow"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift.ipynb", "source": "src/concept_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pandas_profiling_report": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "pandas-profiling-report", "platformVersion": "3.2.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "pandas-profiling-report", "platformVersion": "", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "Create Pandas Profiling Report from Dataset", "doc": "", "example": "pandas_profiling_report.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "nicks"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "pandas-profiling-report", "platformVersion": "3.5.0", "spec": {"filename": "pandas_profiling_report.py", "handler": "pandas_profiling_report", "image": "mlrun/mlrun", "kind": "job", "requirements": ["pandas_profiling"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/pandas_profiling_report.ipynb", "source": "src/pandas_profiling_report.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "load_dataset": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "load-dataset", "platformVersion": "3.2.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "load-dataset", "platformVersion": "", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "load a toy dataset from scikit-learn", "doc": "README.md", "example": "load_dataset.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "load-dataset", "platformVersion": "3.5.0", "spec": {"filename": "load_dataset.py", "handler": "load_dataset", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/load_dataset.ipynb", "source": "src/load_dataset.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "concept_drift_streaming": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "concept-drift-streaming", "platformVersion": "3.2.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "concept-drift-streaming", "platformVersion": "", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "monitoring"], "description": "Deploy a streaming Concept Drift detector on a labeled stream. the nuclio part of the concept_drift function", "doc": "", "example": "concept_drift_streaming.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "concept-drift-streaming", "platformVersion": "3.5.0", "spec": {"filename": "concept_drift_streaming.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": ["scikit-multiflow==0.4.1", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/concept_drift_streaming.ipynb", "source": "src/concept_drift_streaming.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.5", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.3": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.3", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.5.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.3.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.3.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.6": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.6", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.7.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.7.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.2": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-02-06:10-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.7": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-04-26:10-43", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.0", "name": "auto_trainer", "platformVersion": "", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.7", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.6.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train, evaluate and predict functions for the ML frameworks - Scikit-Learn, XGBoost and LightGBM.", "doc": "", "example": "auto_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "auto_trainer", "platformVersion": "3.5.0", "spec": {"filename": "auto_trainer.py", "handler": "train", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/auto_trainer.ipynb", "source": "src/auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "tf2_serving_v2": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf2-serving-v2", "platformVersion": "3.2.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf2-serving-v2", "platformVersion": "", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf2 image classification server v2", "doc": "", "example": "tf2_serving_v2.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf2-serving-v2", "platformVersion": "3.5.0", "spec": {"filename": "tf2_serving_v2.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["requests", "pillow", "tensorflow>=2.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf2_serving_v2.ipynb", "source": "src/tf2_serving_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "stream_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "stream-to-parquet", "platformVersion": "3.2.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "stream-to-parquet", "platformVersion": "", "spec": {"filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": [], "customFields": {"min_replicas": 1, "max_replicas": 1}}, "url": "", "version": "0.0.1", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "Saves a stream to Parquet and can lunch drift detection task on it", "doc": "", "example": "stream_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "stream-to-parquet", "platformVersion": "3.5.0", "spec": {"customFields": {"max_replicas": 1, "min_replicas": 1}, "filename": "stream_to_parquet.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/stream_to_parquet.ipynb", "source": "src/stream_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "v2_model_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-server", "platformVersion": "", "spec": {"filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": [], "customFields": {"default_class": "ClassifierModel"}}, "url": "", "version": "0.0.1", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "generic sklearn model server", "doc": "", "example": "v2_model_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh", "framework": "sklearn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ClassifierModel"}, "filename": "v2_model_server.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_server.ipynb", "source": "src/v2_model_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "feature_perms": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false, "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "feature-perms", "platformVersion": "3.2.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "feature-perms", "platformVersion": "", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "estimate feature importances using permutations", "doc": "", "example": "feature_perms.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "feature-perms", "platformVersion": "3.5.0", "spec": {"filename": "feature_perms.py", "handler": "permutation_importance", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "test_valid": false, "assets": {"example": "src/feature_perms.ipynb", "source": "src/feature_perms.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_server_tester": {"latest": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-server-tester", "platformVersion": "3.2.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-server-tester", "platformVersion": "", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring", "model-serving"], "description": "test model servers", "doc": "", "example": "model_server_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-server-tester", "platformVersion": "3.5.0", "spec": {"filename": "model_server_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_server_tester.ipynb", "source": "src/model_server_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "get_offline_features": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-01-17:17-56", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.1", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-05-25:10-58", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.0.1", "name": "get_offline_features", "platformVersion": "", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.2", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "data-analysis", "feature-store"], "description": "retrieve offline feature vector results", "doc": "", "example": "get_offline_features.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "get_offline_features", "platformVersion": "3.5.0", "spec": {"filename": "get_offline_features.py", "handler": "get_offline_features", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/get_offline_features.ipynb", "source": "src/get_offline_features.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "v2_model_tester": {"latest": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "v2-model-tester", "platformVersion": "3.2.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "v2-model-tester", "platformVersion": "", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-testing", "machine-learning"], "description": "test v2 model servers", "doc": "", "example": "v2_model_tester.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "v2-model-tester", "platformVersion": "3.5.0", "spec": {"filename": "v2_model_tester.py", "handler": "model_server_tester", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/v2_model_tester.ipynb", "source": "src/v2_model_tester.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "coxph_test": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "coxph-test", "platformVersion": "3.2.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "coxph-test", "platformVersion": "", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-testing"], "description": "Test cox proportional hazards model", "doc": "", "example": "coxph_test.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "survival"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "coxph-test", "platformVersion": "3.5.0", "spec": {"filename": "coxph_test.py", "handler": "cox_test", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/coxph_test.ipynb", "source": "src/coxph_test.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "virtual_drift": {"latest": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "virtual-drift", "platformVersion": "3.2.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "virtual-drift", "platformVersion": "", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis", "machine-learning"], "description": "Compute drift magnitude between Time-Samples T and U", "doc": "", "example": "virtual_drift.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "orz"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "virtual-drift", "platformVersion": "3.5.0", "spec": {"filename": "virtual_drift.py", "handler": "drift_magnitude", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "scipy", "v3io_frames"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/virtual_drift.ipynb", "source": "src/virtual_drift.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "rnn_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.8.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.0.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "rnn-serving", "platformVersion": "3.2.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "0.9.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "rnn-serving", "platformVersion": "", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["keras"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "deploy an rnn based stock analysis model server.", "doc": "", "example": "rnn_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "rnn-serving", "platformVersion": "3.5.0", "spec": {"filename": "rnn_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": null}, "url": "", "version": "1.1.0", "assets": {"example": "src/rnn_serving.ipynb", "source": "src/rnn_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "tf1_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "tf1-serving", "platformVersion": "3.2.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "tf1-serving", "platformVersion": "", "spec": {"filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": [], "env": {"MODEL_CLASS": "TFModel", "ENABLE_EXPLAINER": false}}, "url": "", "version": "0.0.1", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "tf1 image classification server", "doc": "", "example": "tf1_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "tf1-serving", "platformVersion": "3.5.0", "spec": {"env": {"ENABLE_EXPLAINER": false, "MODEL_CLASS": "TFModel"}, "filename": "tf1_serving.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio:serving", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/tf1_serving.ipynb", "source": "src/tf1_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_monitoring_batch": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-batch", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-batch", "platformVersion": "", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_batch.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-batch", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_batch.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_batch.ipynb", "source": "src/model_monitoring_batch.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "open_archive": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "open-archive", "platformVersion": "3.2.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "open-archive", "platformVersion": "", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Open a file/object archive into a target directory", "doc": "", "example": "open_archive.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yaronh"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "open-archive", "platformVersion": "3.5.0", "spec": {"filename": "open_archive.py", "handler": "open_archive", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/open_archive.ipynb", "source": "src/open_archive.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "onnx_utils": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/mlrun", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.2.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.2": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.10.0", "name": "onnx_utils", "platformVersion": "3.2.0", "spec": {"filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.10.2", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.13.0", "onnxruntime~=1.14.0", "onnxoptimizer~=0.3.0", "onnxmltools~=1.11.0", "tf2onnx~=1.13.0"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "ONNX intigration in MLRun, some utils functions for the ONNX framework, optimizing and converting models from different framework to ONNX using MLRun.", "doc": "", "example": "onnx_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "onnx_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "onnx_utils.py", "handler": "to_onnx", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "onnxoptimizer~=0.2.0", "onnxmltools~=1.9.0", "tf2onnx~=1.9.0"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/onnx_utils.ipynb", "source": "src/onnx_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "gen_class_data": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "gen_class_data", "platformVersion": "3.5.3", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.6.2", "name": "gen_class_data", "platformVersion": "3.0.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "gen_class_data", "platformVersion": "3.5.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.10.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Create a binary classification sample dataset and save.", "doc": "", "example": "gen_class_data.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Daniel"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "gen_class_data", "platformVersion": "3.2.0", "spec": {"filename": "gen_class_data.py", "handler": "gen_class_data", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.10.0", "assets": {"example": "src/gen_class_data.ipynb", "source": "src/gen_class_data.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "azureml_utils": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.5": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-04-20:15-18", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "0.9.5", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "azureml_utils", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["apt-get update && apt-get install -y --no-install-recommends git", "apt install -y liblttng-ust0"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.9-bullseye", "kind": "job", "requirements": ["azureml-core==1.54.0.post1", "azureml-train-automl-client==1.54.0.post1", "plotly~=5.4"]}, "url": "", "version": "1.3.0", "test_valid": true, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.2.0", "test_valid": false, "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "commands": null, "image": "", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.4": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2021-11-13:00-15", "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "azureml_utils", "platformVersion": "", "spec": {"filename": "azureml_utils.py", "handler": "train", "extra_spec": {"build": {"commands": ["python -m pip install pip==21.2.4", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true, "auto_build": true}, "allow_empty_resources": true}, "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.33.0", "azureml-train-automl-client==1.33.0", "plotly~=5.4"]}, "url": "", "version": "0.9.4", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Azure AutoML integration in MLRun, including utils functions for training models on Azure AutoML platfrom.", "doc": "", "example": "azureml_utils.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_utils", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "commands": ["python -m pip install pip==22.1.2", "apt-get update && apt-get install -y --no-install-recommends git"], "with_mlrun": true}}, "filename": "azureml_utils.py", "handler": "train", "image": "python:3.7.9-slim", "kind": "job", "requirements": ["azureml-core==1.40.0", "azureml-train-automl-client==1.40.0", "plotly~=5.4"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_utils.ipynb", "source": "src/azureml_utils.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "churn_server": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.8.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "churn-server", "platformVersion": "3.2.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "0.9.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "churn-server", "platformVersion": "", "spec": {"filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": [], "env": {"ENABLE_EXPLAINER": "False"}, "customFields": {"default_class": "ChurnModel"}}, "url": "", "version": "0.0.1", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "churn classification and predictor", "doc": "", "example": "churn_server.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "Iguazio", "framework": "churn"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "churn-server", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "ChurnModel"}, "env": {"ENABLE_EXPLAINER": "False"}, "filename": "churn_server.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["xgboost==1.3.1", "lifelines==0.22.8"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/churn_server.ipynb", "source": "src/churn_server.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "describe_spark": {"latest": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "describe-spark", "platformVersion": "3.2.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2021-05-19:22-41", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "describe-spark", "platformVersion": "", "spec": {"filename": "describe-spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe-spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-analysis"], "description": "", "doc": "", "example": "describe_spark.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "describe-spark", "platformVersion": "3.5.0", "spec": {"filename": "describe_spark.py", "handler": "describe_spark", "image": "iguazio/shell:3.0_b5565_20201026062233_wsdf", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/describe_spark.ipynb", "source": "src/describe_spark.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "model_monitoring_stream": {"latest": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "model-monitoring-stream", "platformVersion": "3.2.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.9.1", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "model-monitoring-stream", "platformVersion": "", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "mlrun/mlrun", "kind": "nuclio", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["monitoring"], "description": "", "doc": "", "example": "model_monitoring_stream.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "model-monitoring-stream", "platformVersion": "3.5.0", "spec": {"filename": "model_monitoring_stream.py", "handler": "handler", "image": "livsmichael/mlrun-api:automation", "kind": "nuclio", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/model_monitoring_stream.ipynb", "source": "src/model_monitoring_stream.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "send_email": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "send-email", "platformVersion": "3.5.3", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "send-email", "platformVersion": "3.2.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2021-05-19:23-13", "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "", "name": "send-email", "platformVersion": "", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Send Email messages through SMTP server", "doc": "", "example": "send_email.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "saarc"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "send-email", "platformVersion": "3.5.0", "spec": {"filename": "send_email.py", "handler": "send_email", "image": "mlrun/ml-models", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/send_email.ipynb", "source": "src/send_email.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "arc_to_parquet": {"latest": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.8.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.8.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "avi"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "arc-to-parquet", "platformVersion": "3.5.4", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.4.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.2.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-11-18:12-28", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.8.0", "name": "arc-to-parquet", "platformVersion": "3.2.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2021-05-19:22-04", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.5.4", "name": "arc-to-parquet", "platformVersion": "2.10.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "0.0.1", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["etl"], "description": "retrieve remote archive, open and save as parquet", "doc": "", "example": "arc_to_parquet.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "yjb"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "arc-to-parquet", "platformVersion": "3.5.0", "spec": {"filename": "arc_to_parquet.py", "handler": "arc_to_parquet", "image": "mlrun/ml-base", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/arc_to_parquet.ipynb", "source": "src/arc_to_parquet.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "snowflake_dask": {"latest": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.9.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-03-20:12-28", "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "0.9.1", "name": "snowflake_dask", "platformVersion": "3.2.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "0.9.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation"], "description": "Snowflake Dask - Ingest snowflake data in parallel with Dask cluster", "doc": "", "example": "snowflake-dask-mlrun.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "xingsheng", "framework": "dask"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "snowflake_dask", "platformVersion": "3.5.0", "spec": {"filename": "snowflake_dask.py", "handler": "load_results", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.1.0", "assets": {"example": "src/snowflake-dask-mlrun.ipynb", "source": "src/snowflake_dask.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "azureml_serving": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_serving.ipynb", "source": "src/azureml_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-serving"], "description": "AzureML serving function", "doc": "", "example": "azureml_serving.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "azureml_serving", "platformVersion": "3.5.0", "spec": {"customFields": {"default_class": "mlrun.frameworks.sklearn.PickleModelServer"}, "filename": "azureml_serving.py", "image": "mlrun/mlrun", "kind": "serving", "requirements": ["azureml-automl-runtime~=1.38.1"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/azureml_serving.ipynb", "source": "src/azureml_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "batch_inference": {"latest": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.4.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.4.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.3.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.2.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.2.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.7.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.7.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.1", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.1": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.1", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["utils"], "description": "Batch inference ( also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference.ipynb", "generationDate": "2022-08-28:17-25", "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "batch_inference", "platformVersion": "3.5.0", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": true, "with_mlrun": false}}, "filename": "batch_inference.py", "handler": "infer", "image": "mlrun/ml-models", "kind": "job", "requirements": ["scikit-learn", "plotly"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/batch_inference.ipynb", "source": "src/batch_inference.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "hugging_face_serving": {"latest": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/hugging_face_serving.ipynb", "source": "src/hugging_face_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["model-serving", "machine-learning"], "description": "Generic Hugging Face model server.", "doc": "", "example": "hugging_face_serving.ipynb", "generationDate": "2022-09-05:17-00", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "hugging_face_serving", "platformVersion": "", "spec": {"customFields": {"default_class": "HuggingFaceModelServer"}, "filename": "hugging_face_serving.py", "handler": "handler", "image": "mlrun/ml-models", "kind": "serving", "requirements": ["transformers==4.21.3", "tensorflow==2.9.2"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/hugging_face_serving.ipynb", "source": "src/hugging_face_serving.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "hugging_face_classifier_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.1.0", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "Automatic train and optimize functions for HuggingFace framework", "doc": "", "example": "hugging_face_classifier_trainer.ipynb", "generationDate": "2022-08-28:17-25", "hidden": false, "icon": "", "labels": {"author": "davids"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.2.0", "name": "hugging_face_classifier_trainer", "platformVersion": "3.5.0", "spec": {"filename": "hugging_face_classifier_trainer.py", "handler": "train", "image": "mlrun/ml-models", "kind": "job", "requirements": ["onnx~=1.10.1", "onnxruntime~=1.8.1", "optimum~=1.6.4", "transformers~=4.26.1", "datasets~=2.10.1", "scikit-learn~=1.0.2"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/hugging_face_classifier_trainer.ipynb", "source": "src/hugging_face_classifier_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "validate_great_expectations": {"latest": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/validate_great_expectations.ipynb", "source": "src/validate_great_expectations.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-validation", "data-analysis"], "description": "Validate a dataset using Great Expectations", "doc": "", "example": "validate_great_expectations.ipynb", "generationDate": "2022-04-26:12-28", "hidden": false, "icon": "", "labels": {"author": "nicks", "framework": "great-expectations"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.1.0", "name": "validate-great-expectations", "platformVersion": "3.5.2", "spec": {"filename": "validate_great_expectations.py", "handler": "validate_expectations", "image": "mlrun/mlrun", "kind": "job", "requirements": ["great-expectations==0.15.41"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/validate_great_expectations.ipynb", "source": "src/validate_great_expectations.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "question_answering": {"latest": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.2.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.1.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.3.1": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "torch", "tqdm"]}, "url": "", "version": "0.3.1", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.3.0": {"apiVersion": "v1", "categories": ["machine-learning"], "description": "GenAI approach of question answering on a given data", "doc": "", "example": "question_answering.ipynb", "generationDate": "2023-08-07:11-30", "hidden": false, "icon": "", "labels": {"author": "yonish"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "question_answering", "platformVersion": "3.5.0", "spec": {"filename": "question_answering.py", "handler": "answer_questions", "image": "mlrun/mlrun", "kind": "job", "requirements": "transformers torch tqdm"}, "url": "", "version": "0.3.0", "assets": {"example": "src/question_answering.ipynb", "source": "src/question_answering.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "transcribe": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "tqdm", "torchaudio", "torch", "accelerate"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Transcribe audio files into text files", "doc": "", "example": "transcribe.ipynb", "generationDate": "2023-07-13:11-20", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "transcribe", "platformVersion": "3.5.3", "spec": {"filename": "transcribe.py", "handler": "transcribe", "image": "mlrun/mlrun", "kind": "job", "requirements": ["openai-whisper", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": false, "assets": {"example": "src/transcribe.ipynb", "source": "src/transcribe.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pii_recognizer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.2.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.2.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.1.0", "test_valid": false, "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["machine-learning", "data-preparation"], "description": "This function is used to recognize PII in a directory of text files", "doc": "", "example": "pii_recognizer.ipynb", "generationDate": "2023-08-15:10-24", "hidden": false, "icon": "", "labels": {"author": "pgw"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "pii-recognizer", "platformVersion": "3.5.3", "spec": {"filename": "pii_recognizer.py", "handler": "recognize_pii", "image": "mlrun/mlrun", "kind": "job", "requirements": ["nltk", "pandas", "presidio-anonymizer", "presidio-analyzer", "torch", "flair@git+https://github.com/flairNLP/flair.git@d4ed67bf663e4066517f00397412510d90043653", "st-annotated-text", "https://huggingface.co/beki/en_spacy_pii_distilbert/resolve/main/en_spacy_pii_distilbert-any-py3-none-any.whl"]}, "url": "", "version": "0.0.1", "assets": {"example": "src/pii_recognizer.ipynb", "source": "src/pii_recognizer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "huggingface_auto_trainer": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/huggingface_auto_trainer.ipynb", "source": "src/huggingface_auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "model-training"], "description": "fine-tune llm model with ease", "doc": "", "example": "huggingface_auto_trainer.ipynb", "generationDate": "2023-08-21:17-25", "hidden": false, "icon": "", "labels": {"author": "Zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.4.0", "name": "huggingface-auto-trainer", "platformVersion": "3.5.0", "spec": {"filename": "huggingface_auto_trainer.py", "handler": "finetune_llm", "image": "mlrun/mlrun", "kind": "job", "requirements": []}, "url": "", "version": "1.0.0", "assets": {"example": "src/huggingface_auto_trainer.ipynb", "source": "src/huggingface_auto_trainer.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "batch_inference_v2": {"latest": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.4.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.4.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.8.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc13", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.8.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.0.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.0.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.5.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.5.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.2.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.2.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "2.1.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "2.1.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.6.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc9", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.6.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.9.0": {"apiVersion": "v1", "categories": ["utils", "data-analysis", "monitoring"], "description": "Batch inference (also knows as prediction) for the common ML frameworks (SciKit-Learn, XGBoost and LightGBM) while performing data drift analysis.", "doc": "", "example": "batch_inference_v2.ipynb", "generationDate": "2023-08-07:12-25", "hidden": false, "icon": "", "labels": {"author": "eyald"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.0-rc16", "name": "batch_inference_v2", "platformVersion": "3.5.3", "spec": {"extra_spec": {"allow_empty_resources": true, "build": {"auto_build": false, "with_mlrun": false}}, "filename": "batch_inference_v2.py", "handler": "infer", "image": "mlrun/mlrun", "kind": "job", "requirements": null}, "url": "", "version": "1.9.0", "assets": {"example": "src/batch_inference_v2.ipynb", "source": "src/batch_inference_v2.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "translate": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.2": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning", "deep-learning", "NLP"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.2", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "0.0.1": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Translate text files from one language to another", "doc": "", "example": "translate.ipynb", "generationDate": "2023-12-05:17-20", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "translate", "platformVersion": "3.5.3", "spec": {"filename": "translate.py", "handler": "translate", "image": "mlrun/mlrun", "kind": "job", "requirements": ["transformers", "sentencepiece", "torch", "tqdm"]}, "url": "", "version": "0.0.1", "test_valid": true, "assets": {"example": "src/translate.ipynb", "source": "src/translate.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "structured_data_generator": {"latest": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.3.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.3.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["machine-learning", "Data Preparation", "Data Generation", "GenAI"], "description": "GenAI approach of generating structured data according to a given schema", "doc": "", "example": "structured_data_generator.ipynb", "generationDate": "2023-12-14:10-50", "hidden": false, "icon": "", "labels": {"author": "zeevr"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "structured_data_generator", "platformVersion": "3.5.0", "spec": {"filename": "structured_data_generator.py", "handler": "generate_data", "image": "mlrun/mlrun", "kind": "job", "requirements": ["langchain", "tqdm"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/structured_data_generator.ipynb", "source": "src/structured_data_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "text_to_audio_generator": {"latest": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.0.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["data-preparation", "machine-learning"], "description": "Generate audio file from text using different speakers", "doc": "", "example": "text_to_audio_generator.ipynb", "generationDate": "2023-12-03:15-30", "hidden": false, "icon": "", "labels": {"author": "yonatans"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.1", "name": "text_to_audio_generator", "platformVersion": "3.5.3", "spec": {"filename": "text_to_audio_generator.py", "handler": "generate_multi_speakers_audio", "image": "mlrun/mlrun", "kind": "job", "requirements": ["bark", "torchaudio"]}, "url": "", "version": "1.1.0", "test_valid": true, "assets": {"example": "src/text_to_audio_generator.ipynb", "source": "src/text_to_audio_generator.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "silero_vad": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/silero_vad.ipynb", "source": "src/silero_vad.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.1.0": {"apiVersion": "v1", "categories": ["Deep Learning", "PyTorch", "Audio"], "description": "Silero VAD (Voice Activity Detection) functions.", "doc": "", "example": "silero_vad.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "silero_vad", "platformVersion": "3.5.3", "spec": {"filename": "silero_vad.py", "handler": "detect_voice", "image": "mlrun/mlrun", "kind": "job", "requirements": ["torch", "torchaudio", "tqdm", "onnxruntime"]}, "url": "", "version": "1.1.0", "assets": {"example": "src/silero_vad.ipynb", "source": "src/silero_vad.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}, "pyannote_audio": {"latest": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/pyannote_audio.ipynb", "source": "src/pyannote_audio.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}, "1.0.0": {"apiVersion": "v1", "categories": ["Deep Learning", "Huggingface", "Audio"], "description": "pyannote's speech diarization of audio files", "doc": "", "example": "pyannote_audio.ipynb", "generationDate": "2023-12-03:14-30", "hidden": false, "icon": "", "labels": {"author": "guyl"}, "maintainers": [], "marketplaceType": "", "mlrunVersion": "1.5.2", "name": "pyannote-audio", "platformVersion": "3.5.3", "spec": {"filename": "pyannote_audio.py", "handler": "diarize", "image": "mlrun/mlrun-gpu", "kind": "job", "requirements": ["pyannote.audio", "pyannote.core", "torchaudio", "tqdm"]}, "url": "", "version": "1.0.0", "assets": {"example": "src/pyannote_audio.ipynb", "source": "src/pyannote_audio.py", "function": "src/function.yaml", "docs": "static/documentation.html"}}}} \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/src/data/metrics.pq b/functions/master/feature_selection/1.4.0/src/data/metrics.pq new file mode 100644 index 0000000000000000000000000000000000000000..3dc61e0f1cb5e9d1206c83d283361f89f7a588d2 GIT binary patch literal 170843 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 z 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℞2`nH` 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 I+@*H^2To9edjJ3c literal 0 HcmV?d00001 diff --git a/functions/master/feature_selection/1.4.0/src/feature_selection.ipynb b/functions/master/feature_selection/1.4.0/src/feature_selection.ipynb new file mode 100644 index 00000000..f7141591 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/feature_selection.ipynb @@ -0,0 +1,1283 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Feature Selection" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import mlrun" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "%nuclio: setting kind to 'job'\n", + "%nuclio: setting spec.image to 'mlrun/ml-models'\n" + ] + } + ], + "source": [ + "%nuclio config kind = \"job\"\n", + "%nuclio config spec.image = \"mlrun/ml-models\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# nuclio: start-code" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "import os\n", + "import json\n", + "\n", + "# Feature selection strategies\n", + "from sklearn.feature_selection import SelectKBest\n", + "from sklearn.feature_selection import SelectFromModel\n", + "\n", + "# Model based feature selection\n", + "from sklearn.ensemble import ExtraTreesClassifier\n", + "from sklearn.svm import LinearSVC\n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "# Scale feature scores\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "# SKLearn estimators list\n", + "from sklearn.utils import all_estimators\n", + "\n", + "# MLRun utils\n", + "from mlrun.mlutils.plots import gcf_clear\n", + "from mlrun.utils.helpers import create_class\n", + "from mlrun.artifacts import PlotArtifact\n", + "\n", + "# Feature Selection\n", + "from feature_selection import feature_selection, show_values_on_bars, plot_stat" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# nuclio: end-code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from mlrun import code_to_function, mount_v3io, mlconf, NewTask, run_local" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "mlconf.artifact_path = os.path.abspath('./artifacts')\n", + "mlconf.db_path = 'http://mlrun-api:8080'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Local Test" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "task = NewTask(params={'k': 2,\n", + " 'min_votes': 0.3,\n", + " 'label_column': 'is_error'},\n", + " inputs={'df_artifact': os.path.abspath('data/metrics.pq')})" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2021-08-11 10:12:05,721 [info] starting run feature_selection uid=8765f9e7fde94efeb662fbe2c37a0e1a DB=http://mlrun-api:8080\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Pass k=2 as keyword args. From version 0.25 passing these as positional arguments will result in an error\n", + "Liblinear failed to converge, increase the number of iterations.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2021-08-11 10:12:08,257 [info] votes needed to be selected: 2\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Converting input from bool to for compatibility.\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
default0Aug 11 10:12:05completedfeature_selection
v3io_user=admin
kind=handler
owner=admin
host=jupyter-az-ffcb58655-7l9pl
df_artifact
k=2
min_votes=0.3
label_column=is_error
f_classif
mutual_info_classif
chi2
f_regression
LinearSVC
LogisticRegression
ExtraTreesClassifier
feature_scores
max_scaled_scores_feature_scores
selected_features_count
selected_features
\n", + "
\n", + "
\n", + "
\n", + " Title\n", + " ×\n", + "
\n", + " \n", + "
\n", + "
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "to track results use .show() or .logs() or in CLI: \n", + "!mlrun get run 8765f9e7fde94efeb662fbe2c37a0e1a --project default , !mlrun logs 8765f9e7fde94efeb662fbe2c37a0e1a --project default\n", + "> 2021-08-11 10:12:08,438 [info] run executed, status=completed\n" + ] + } + ], + "source": [ + "from feature_selection import feature_selection, show_values_on_bars, plot_stat\n", + "\n", + "runl = run_local(task=task,\n", + " name='feature_selection',\n", + " handler=feature_selection,\n", + " artifact_path=os.path.join(os.path.abspath('./'), 'artifacts'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Job Test" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2021-08-11 10:12:22,071 [info] function spec saved to path: function.yaml\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fn = code_to_function(name='feature_selection',\n", + " handler='feature_selection')\n", + "fn.spec.default_handler = 'feature_selection'\n", + "fn.spec.description = \"Select features through multiple Statistical and Model filters\"\n", + "fn.metadata.categories = ['data-prep', 'ml']\n", + "fn.metadata.labels = {\"author\": \"alexz\"}\n", + "fn.export('function.yaml')\n", + "fn.apply(mount_v3io())" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> 2021-08-11 10:12:22,083 [info] starting run feature-selection-feature_selection uid=a702d89990924e10b093ee1571b47dc2 DB=http://mlrun-api:8080\n", + "> 2021-08-11 10:12:22,347 [info] Job is running in the background, pod: feature-selection-feature-selection-8wkf8\n", + "> 2021-08-11 10:14:12,748 [info] votes needed to be selected: 2\n", + "> 2021-08-11 10:14:12,877 [info] run executed, status=completed\n", + "Pass k=2 as keyword args. From version 0.25 passing these as positional arguments will result in an error\n", + "Liblinear failed to converge, increase the number of iterations.\n", + "lbfgs failed to converge (status=1):\n", + "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", + "\n", + "Increase the number of iterations (max_iter) or scale the data as shown in:\n", + " https://scikit-learn.org/stable/modules/preprocessing.html\n", + "Please also refer to the documentation for alternative solver options:\n", + " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", + "Converting input from bool to for compatibility.\n", + "final state: completed\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
default0Aug 11 10:14:09completedfeature-selection-feature_selection
v3io_user=admin
kind=job
owner=admin
host=feature-selection-feature-selection-8wkf8
df_artifact
k=2
min_votes=0.3
label_column=is_error
f_classif
mutual_info_classif
chi2
f_regression
LinearSVC
LogisticRegression
ExtraTreesClassifier
feature_scores
max_scaled_scores_feature_scores
selected_features_count
selected_features
\n", + "
\n", + "
\n", + "
\n", + " Title\n", + " ×\n", + "
\n", + " \n", + "
\n", + "
\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "to track results use .show() or .logs() or in CLI: \n", + "!mlrun get run a702d89990924e10b093ee1571b47dc2 --project default , !mlrun logs a702d89990924e10b093ee1571b47dc2 --project default\n", + "> 2021-08-11 10:14:21,908 [info] run executed, status=completed\n" + ] + } + ], + "source": [ + "fn_run = fn.run(task)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cpu_utilizationlatencypacket_lossthroughputis_error
timestampcompanydata_centerdevice
2021-04-27 14:46:46.780Smith_GroupDenise_Crest512420905723175.5988910.0000000.000000252.445971False
289175586571250.0903733.2808490.000000229.889187False
Debra_Gateway038802029531173.2430639.3723412.170138260.883807False
963381369144160.83042012.2418782.295717244.238613False
Ferrell_LtdMurphy_Meadow151712976593172.6479640.5354630.000000212.944943False
...........................
2021-04-27 15:46:46.780Smith_GroupDebra_Gateway963381369144177.8759543.2505840.000000245.150281False
Ferrell_LtdMurphy_Meadow151712976593177.8314590.0000000.000000235.109321False
696448669938355.9785142.9774470.533963277.622402False
Nicholas_Estate800289709816758.2654464.0902072.048268272.717982False
849988073510471.2450410.0000002.929407235.659211False
\n", + "

5768 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " cpu_utilization \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 75.598891 \n", + " 2891755865712 50.090373 \n", + " Debra_Gateway 0388020295311 73.243063 \n", + " 9633813691441 60.830420 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 72.647964 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 77.875954 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 77.831459 \n", + " 6964486699383 55.978514 \n", + " Nicholas_Estate 8002897098167 58.265446 \n", + " 8499880735104 71.245041 \n", + "\n", + " latency \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 0.000000 \n", + " 2891755865712 3.280849 \n", + " Debra_Gateway 0388020295311 9.372341 \n", + " 9633813691441 12.241878 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.535463 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 3.250584 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + " 6964486699383 2.977447 \n", + " Nicholas_Estate 8002897098167 4.090207 \n", + " 8499880735104 0.000000 \n", + "\n", + " packet_loss \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 0.000000 \n", + " 2891755865712 0.000000 \n", + " Debra_Gateway 0388020295311 2.170138 \n", + " 9633813691441 2.295717 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 0.000000 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + " 6964486699383 0.533963 \n", + " Nicholas_Estate 8002897098167 2.048268 \n", + " 8499880735104 2.929407 \n", + "\n", + " throughput \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 252.445971 \n", + " 2891755865712 229.889187 \n", + " Debra_Gateway 0388020295311 260.883807 \n", + " 9633813691441 244.238613 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 212.944943 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 245.150281 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 235.109321 \n", + " 6964486699383 277.622402 \n", + " Nicholas_Estate 8002897098167 272.717982 \n", + " 8499880735104 235.659211 \n", + "\n", + " is_error \n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 False \n", + " 2891755865712 False \n", + " Debra_Gateway 0388020295311 False \n", + " 9633813691441 False \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 False \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 False \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 False \n", + " 6964486699383 False \n", + " Nicholas_Estate 8002897098167 False \n", + " 8499880735104 False \n", + "\n", + "[5768 rows x 5 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mlrun.get_dataitem(fn_run.spec.inputs['df_artifact']).as_df()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
f_classifmutual_info_classifchi2f_regressionLinearSVCLogisticRegressionExtraTreesClassifier
cpu_utilization2520.0158090.1850454457.4293602520.015809-0.0450400.2327600.026625
latency10152.1519950.198947272872.89019410152.1519950.0342510.0690640.026625
packet_loss14120.4905470.210517157191.42752414120.4905470.0481880.2236730.026625
throughput20421.7210300.230557109129.51166520421.721030-0.009259-0.0647330.026625
\n", + "
" + ], + "text/plain": [ + " f_classif mutual_info_classif chi2 \\\n", + "cpu_utilization 2520.015809 0.185045 4457.429360 \n", + "latency 10152.151995 0.198947 272872.890194 \n", + "packet_loss 14120.490547 0.210517 157191.427524 \n", + "throughput 20421.721030 0.230557 109129.511665 \n", + "\n", + " f_regression LinearSVC LogisticRegression \\\n", + "cpu_utilization 2520.015809 -0.045040 0.232760 \n", + "latency 10152.151995 0.034251 0.069064 \n", + "packet_loss 14120.490547 0.048188 0.223673 \n", + "throughput 20421.721030 -0.009259 -0.064733 \n", + "\n", + " ExtraTreesClassifier \n", + "cpu_utilization 0.026625 \n", + "latency 0.026625 \n", + "packet_loss 0.026625 \n", + "throughput 0.026625 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mlrun.get_dataitem(fn_run.outputs['feature_scores']).as_df()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cpu_utilizationlatencypacket_lossthroughputis_error
timestampcompanydata_centerdevice
2021-04-27 14:46:46.780Smith_GroupDenise_Crest512420905723175.5988910.0000000.000000252.445971False
289175586571250.0903733.2808490.000000229.889187False
Debra_Gateway038802029531173.2430639.3723412.170138260.883807False
963381369144160.83042012.2418782.295717244.238613False
Ferrell_LtdMurphy_Meadow151712976593172.6479640.5354630.000000212.944943False
...........................
2021-04-27 15:46:46.780Smith_GroupDebra_Gateway963381369144177.8759543.2505840.000000245.150281False
Ferrell_LtdMurphy_Meadow151712976593177.8314590.0000000.000000235.109321False
696448669938355.9785142.9774470.533963277.622402False
Nicholas_Estate800289709816758.2654464.0902072.048268272.717982False
849988073510471.2450410.0000002.929407235.659211False
\n", + "

5768 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " cpu_utilization \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 75.598891 \n", + " 2891755865712 50.090373 \n", + " Debra_Gateway 0388020295311 73.243063 \n", + " 9633813691441 60.830420 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 72.647964 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 77.875954 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 77.831459 \n", + " 6964486699383 55.978514 \n", + " Nicholas_Estate 8002897098167 58.265446 \n", + " 8499880735104 71.245041 \n", + "\n", + " latency \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 0.000000 \n", + " 2891755865712 3.280849 \n", + " Debra_Gateway 0388020295311 9.372341 \n", + " 9633813691441 12.241878 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.535463 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 3.250584 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + " 6964486699383 2.977447 \n", + " Nicholas_Estate 8002897098167 4.090207 \n", + " 8499880735104 0.000000 \n", + "\n", + " packet_loss \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 0.000000 \n", + " 2891755865712 0.000000 \n", + " Debra_Gateway 0388020295311 2.170138 \n", + " 9633813691441 2.295717 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 0.000000 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 0.000000 \n", + " 6964486699383 0.533963 \n", + " Nicholas_Estate 8002897098167 2.048268 \n", + " 8499880735104 2.929407 \n", + "\n", + " throughput \\\n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 252.445971 \n", + " 2891755865712 229.889187 \n", + " Debra_Gateway 0388020295311 260.883807 \n", + " 9633813691441 244.238613 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 212.944943 \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 245.150281 \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 235.109321 \n", + " 6964486699383 277.622402 \n", + " Nicholas_Estate 8002897098167 272.717982 \n", + " 8499880735104 235.659211 \n", + "\n", + " is_error \n", + "timestamp company data_center device \n", + "2021-04-27 14:46:46.780 Smith_Group Denise_Crest 5124209057231 False \n", + " 2891755865712 False \n", + " Debra_Gateway 0388020295311 False \n", + " 9633813691441 False \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 False \n", + "... ... \n", + "2021-04-27 15:46:46.780 Smith_Group Debra_Gateway 9633813691441 False \n", + " Ferrell_Ltd Murphy_Meadow 1517129765931 False \n", + " 6964486699383 False \n", + " Nicholas_Estate 8002897098167 False \n", + " 8499880735104 False \n", + "\n", + "[5768 rows x 5 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mlrun.get_dataitem(fn_run.outputs['selected_features']).as_df()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:root] *", + "language": "python", + "name": "conda-root-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/functions/master/feature_selection/1.4.0/src/feature_selection.py b/functions/master/feature_selection/1.4.0/src/feature_selection.py new file mode 100644 index 00000000..630a0969 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/feature_selection.py @@ -0,0 +1,347 @@ +# Copyright 2019 Iguazio +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import json +import os + +import matplotlib.pyplot as plt +import mlrun +import mlrun.datastore +import mlrun.utils +import mlrun.feature_store as fs +import numpy as np +import pandas as pd +import seaborn as sns +from mlrun.artifacts import PlotArtifact +from mlrun.datastore.targets import ParquetTarget +# MLRun utils +from mlrun.utils.helpers import create_class +# Feature selection strategies +from sklearn.feature_selection import SelectFromModel, SelectKBest +# Scale feature scoresgit st +from sklearn.preprocessing import MinMaxScaler +# SKLearn estimators list +from sklearn.utils import all_estimators + +DEFAULT_STAT_FILTERS = ["f_classif", "mutual_info_classif", "chi2", "f_regression"] +DEFAULT_MODEL_FILTERS = { + "LinearSVC": "LinearSVC", + "LogisticRegression": "LogisticRegression", + "ExtraTreesClassifier": "ExtraTreesClassifier", +} + + +def _clear_current_figure(): + """ + Clear matplotlib current figure. + """ + plt.cla() + plt.clf() + plt.close() + + +def show_values_on_bars(axs, h_v="v", space=0.4): + def _show_on_single_plot(ax_): + if h_v == "v": + for p in ax_.patches: + _x = p.get_x() + p.get_width() / 2 + _y = p.get_y() + p.get_height() + value = int(p.get_height()) + ax_.text(_x, _y, value, ha="center") + elif h_v == "h": + for p in ax_.patches: + _x = p.get_x() + p.get_width() + float(space) + _y = p.get_y() + p.get_height() + value = int(p.get_width()) + ax_.text(_x, _y, value, ha="left") + + if isinstance(axs, np.ndarray): + for idx, ax in np.ndenumerate(axs): + _show_on_single_plot(ax) + else: + _show_on_single_plot(axs) + + +def plot_stat(context, stat_name, stat_df): + _clear_current_figure() + + # Add chart + ax = plt.axes() + stat_chart = sns.barplot( + x=stat_name, + y="index", + data=stat_df.sort_values(stat_name, ascending=False).reset_index(), + ax=ax, + ) + plt.tight_layout() + + for p in stat_chart.patches: + width = p.get_width() + plt.text( + 5 + p.get_width(), + p.get_y() + 0.55 * p.get_height(), + "{:1.2f}".format(width), + ha="center", + va="center", + ) + + context.log_artifact( + PlotArtifact(f"{stat_name}", body=plt.gcf()), + local_path=os.path.join("plots", "feature_selection", f"{stat_name}.html"), + ) + _clear_current_figure() + + +def feature_selection( + context, + df_artifact, + k: int = 5, + min_votes: float = 0.5, + label_column: str = None, + stat_filters: list = None, + model_filters: dict = None, + max_scaled_scores: bool = True, + sample_ratio: float = None, + output_vector_name: float = None, + ignore_type_errors: bool = False, + is_feature_vector: bool = False, +): + """ + Applies selected feature selection statistical functions or models on our 'df_artifact'. + + Each statistical function or model will vote for it's best K selected features. + If a feature has >= 'min_votes' votes, it will be selected. + + :param context: the function context. + :param df_artifact: dataframe to pass as input. + :param k: number of top features to select from each statistical + function or model. + :param min_votes: minimal number of votes (from a model or by statistical + function) needed for a feature to be selected. + Can be specified by percentage of votes or absolute + number of votes. + :param label_column: ground-truth (y) labels. + :param stat_filters: statistical functions to apply to the features + (from sklearn.feature_selection). + :param model_filters: models to use for feature evaluation, can be specified by + model name (ex. LinearSVC), formalized json (contains 'CLASS', + 'FIT', 'META') or a path to such json file. + :param max_scaled_scores: produce feature scores table scaled with max_scaler. + :param sample_ratio: percentage of the dataset the user whishes to compute the feature selection process on. + :param output_vector_name: creates a new feature vector containing only the identifies features. + :param ignore_type_errors: skips datatypes that are neither float nor int within the feature vector. + :param is_feature_vector: bool stating if the data is passed as a feature vector. + """ + stat_filters = stat_filters or DEFAULT_STAT_FILTERS + model_filters = model_filters or DEFAULT_MODEL_FILTERS + # Check if df.meta is valid, if it is, look for a feature vector + store_uri_prefix, _ = mlrun.datastore.parse_store_uri(df_artifact.artifact_url) + is_feature_vector = mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix + + # Look inside meta.spec.label_feature to identify the label_column if the user did not specify it + if label_column is None: + if is_feature_vector: + label_column = df_artifact.meta.spec.label_feature.split(".")[1] + else: + raise ValueError("No label_column was given, please add a label_column.") + + # Use the feature vector as dataframe + df = df_artifact.as_df() + + # Ensure k is not bigger than the total number of features + if k > df.shape[1]: + raise ValueError( + f"K cannot be bigger than the total number of features ({df.shape[1]}). Please choose a smaller K." + ) + elif k < 1: + raise ValueError("K cannot be smaller than 1. Please choose a bigger K.") + + # Create a sample dataframe of the original feature vector + if sample_ratio: + df = ( + df.groupby(label_column) + .apply(lambda x: x.sample(frac=sample_ratio)) + .reset_index(drop=True) + ) + df = df.dropna() + + # Set feature vector and labels + y = df.pop(label_column) + X = df + + if np.object_ in list(X.dtypes) and ignore_type_errors is False: + raise ValueError( + f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int." + ) + + # Create selected statistical estimators + stat_functions_list = { + stat_name: SelectKBest( + score_func=create_class(f"sklearn.feature_selection.{stat_name}"), k=k + ) + for stat_name in stat_filters + } + requires_abs = ["chi2"] + + # Run statistic filters + selected_features_agg = {} + stats_df = pd.DataFrame(index=X.columns).dropna() + + for stat_name, stat_func in stat_functions_list.items(): + try: + params = (X, y) if stat_name in requires_abs else (abs(X), y) + stat = stat_func.fit(*params) + + # Collect stat function results + stat_df = pd.DataFrame( + index=X.columns, columns=[stat_name], data=stat.scores_ + ) + plot_stat(context, stat_name, stat_df) + stats_df = stats_df.join(stat_df) + + # Select K Best features + selected_features = X.columns[stat_func.get_support()] + selected_features_agg[stat_name] = selected_features + + except Exception as e: + context.logger.info(f"Couldn't calculate {stat_name} because of: {e}") + + # Create models from class name / json file / json params + all_sklearn_estimators = dict(all_estimators()) if len(model_filters) > 0 else {} + selected_models = {} + for model_name, model in model_filters.items(): + if ".json" in model: + current_model = json.load(open(model, "r")) + classifier_class = create_class(current_model["META"]["class"]) + selected_models[model_name] = classifier_class(**current_model["CLASS"]) + elif model in all_sklearn_estimators: + selected_models[model_name] = all_sklearn_estimators[model_name]() + + else: + try: + current_model = json.loads(model) + classifier_class = create_class(current_model["META"]["class"]) + selected_models[model_name] = classifier_class(**current_model["CLASS"]) + except Exception as e: + context.logger.info(f"unable to load {model} because of: {e}") + + # Run model filters + models_df = pd.DataFrame(index=X.columns) + for model_name, model in selected_models.items(): + + if model_name == "LogisticRegression": + model.set_params(solver="liblinear") + + # Train model and get feature importance + select_from_model = SelectFromModel(model).fit(X, y) + feature_idx = select_from_model.get_support() + feature_names = X.columns[feature_idx] + selected_features_agg[model_name] = feature_names.tolist() + + # Collect model feature importance + if hasattr(select_from_model.estimator_, "coef_"): + stat_df = select_from_model.estimator_.coef_ + elif hasattr(select_from_model.estimator_, "feature_importances_"): + stat_df = select_from_model.estimator_.feature_importances_ + + stat_df = pd.DataFrame(index=X.columns, columns=[model_name], data=stat_df[0]) + models_df = models_df.join(stat_df) + + plot_stat(context, model_name, stat_df) + + # Create feature_scores DF with stat & model filters scores + result_matrix_df = pd.concat([stats_df, models_df], axis=1, sort=False) + context.log_dataset( + key="feature_scores", + df=result_matrix_df, + local_path="feature_scores.parquet", + format="parquet", + ) + if max_scaled_scores: + normalized_df = result_matrix_df.replace([np.inf, -np.inf], np.nan).values + min_max_scaler = MinMaxScaler() + normalized_df = min_max_scaler.fit_transform(normalized_df) + normalized_df = pd.DataFrame( + data=normalized_df, + columns=result_matrix_df.columns, + index=result_matrix_df.index, + ) + context.log_dataset( + key="max_scaled_scores_feature_scores", + df=normalized_df, + local_path="max_scaled_scores_feature_scores.parquet", + format="parquet", + ) + + # Create feature count DataFrame + for test_name in selected_features_agg: + result_matrix_df[test_name] = [ + 1 if x in selected_features_agg[test_name] else 0 for x in X.columns + ] + result_matrix_df.loc[:, "num_votes"] = result_matrix_df.sum(axis=1) + context.log_dataset( + key="selected_features_count", + df=result_matrix_df, + local_path="selected_features_count.parquet", + format="parquet", + ) + + # How many votes are needed for a feature to be selected? + if isinstance(min_votes, int): + votes_needed = min_votes + else: + num_filters = len(stat_filters) + len(model_filters) + votes_needed = int(np.floor(num_filters * max(min(min_votes, 1), 0))) + context.logger.info(f"votes needed to be selected: {votes_needed}") + + # Create final feature dataframe + selected_features = result_matrix_df[ + result_matrix_df.num_votes >= votes_needed + ].index.tolist() + good_feature_df = df.loc[:, selected_features] + final_df = pd.concat([good_feature_df, y], axis=1) + context.log_dataset( + key="selected_features", + df=final_df, + local_path="selected_features.parquet", + format="parquet", + ) + + # Creating a new feature vector containing only the identified top features + if is_feature_vector and df_artifact.meta.spec.features and output_vector_name: + # Selecting the top K features from our top feature dataframe + selected_features = result_matrix_df.head(k).index + + # Match the selected feature names to the FS Feature annotations + matched_selections = [ + feature + for feature in list(df_artifact.meta.spec.features) + for selected in list(selected_features) + if feature.endswith(selected) + ] + + # Defining our new feature vector + top_features_fv = fs.FeatureVector( + output_vector_name, + matched_selections, + label_feature="labels.label", + description="feature vector composed strictly of our top features", + ) + + # Saving + top_features_fv.save() + fs.get_offline_features(top_features_fv, target=ParquetTarget()) + + # Logging our new feature vector URI + context.log_result("top_features_vector", top_features_fv.uri) diff --git a/functions/master/feature_selection/1.4.0/src/function.yaml b/functions/master/feature_selection/1.4.0/src/function.yaml new file mode 100644 index 00000000..0851f54d --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/function.yaml @@ -0,0 +1,120 @@ +kind: job +metadata: + name: feature-selection + tag: '' + hash: 6dba16d062d81f78d3d210fee75edfe8b1def9b3 + project: '' + labels: + author: orz + categories: + - data-preparation + - machine-learning +spec: + command: '' + args: [] + image: mlrun/mlrun + build: + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdF8gaW4gbGlzdChYLmR0eXBlcykgYW5kIGlnbm9yZV90eXBlX2Vycm9ycyBpcyBGYWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIntkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9WydvYmplY3QnXSkuY29sdW1ucy50b2xpc3QoKX0gYXJlIG5laXRoZXIgZmxvYXQgb3IgaW50LiIKICAgICAgICApCgogICAgIyBDcmVhdGUgc2VsZWN0ZWQgc3RhdGlzdGljYWwgZXN0aW1hdG9ycwogICAgc3RhdF9mdW5jdGlvbnNfbGlzdCA9IHsKICAgICAgICBzdGF0X25hbWU6IFNlbGVjdEtCZXN0KAogICAgICAgICAgICBzY29yZV9mdW5jPWNyZWF0ZV9jbGFzcyhmInNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24ue3N0YXRfbmFtZX0iKSwgaz1rCiAgICAgICAgKQogICAgICAgIGZvciBzdGF0X25hbWUgaW4gc3RhdF9maWx0ZXJzCiAgICB9CiAgICByZXF1aXJlc19hYnMgPSBbImNoaTIiXQoKICAgICMgUnVuIHN0YXRpc3RpYyBmaWx0ZXJzCiAgICBzZWxlY3RlZF9mZWF0dXJlc19hZ2cgPSB7fQogICAgc3RhdHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKS5kcm9wbmEoKQoKICAgIGZvciBzdGF0X25hbWUsIHN0YXRfZnVuYyBpbiBzdGF0X2Z1bmN0aW9uc19saXN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJhbXMgPSAoWCwgeSkgaWYgc3RhdF9uYW1lIGluIHJlcXVpcmVzX2FicyBlbHNlIChhYnMoWCksIHkpCiAgICAgICAgICAgIHN0YXQgPSBzdGF0X2Z1bmMuZml0KCpwYXJhbXMpCgogICAgICAgICAgICAjIENvbGxlY3Qgc3RhdCBmdW5jdGlvbiByZXN1bHRzCiAgICAgICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICBpbmRleD1YLmNvbHVtbnMsIGNvbHVtbnM9W3N0YXRfbmFtZV0sIGRhdGE9c3RhdC5zY29yZXNfCiAgICAgICAgICAgICkKICAgICAgICAgICAgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZikKICAgICAgICAgICAgc3RhdHNfZGYgPSBzdGF0c19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgICAgICAjIFNlbGVjdCBLIEJlc3QgZmVhdHVyZXMKICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXMgPSBYLmNvbHVtbnNbc3RhdF9mdW5jLmdldF9zdXBwb3J0KCldCiAgICAgICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1tzdGF0X25hbWVdID0gc2VsZWN0ZWRfZmVhdHVyZXMKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiQ291bGRuJ3QgY2FsY3VsYXRlIHtzdGF0X25hbWV9IGJlY2F1c2Ugb2Y6IHtlfSIpCgogICAgIyBDcmVhdGUgbW9kZWxzIGZyb20gY2xhc3MgbmFtZSAvIGpzb24gZmlsZSAvIGpzb24gcGFyYW1zCiAgICBhbGxfc2tsZWFybl9lc3RpbWF0b3JzID0gZGljdChhbGxfZXN0aW1hdG9ycygpKSBpZiBsZW4obW9kZWxfZmlsdGVycykgPiAwIGVsc2Uge30KICAgIHNlbGVjdGVkX21vZGVscyA9IHt9CiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gbW9kZWxfZmlsdGVycy5pdGVtcygpOgogICAgICAgIGlmICIuanNvbiIgaW4gbW9kZWw6CiAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWQob3Blbihtb2RlbCwgInIiKSkKICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgIGVsaWYgbW9kZWwgaW4gYWxsX3NrbGVhcm5fZXN0aW1hdG9yczoKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gYWxsX3NrbGVhcm5fZXN0aW1hdG9yc1ttb2RlbF9uYW1lXSgpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWRzKG1vZGVsKQogICAgICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBjbGFzc2lmaWVyX2NsYXNzKCoqY3VycmVudF9tb2RlbFsiQ0xBU1MiXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInVuYWJsZSB0byBsb2FkIHttb2RlbH0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIFJ1biBtb2RlbCBmaWx0ZXJzCiAgICBtb2RlbHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKQogICAgZm9yIG1vZGVsX25hbWUsIG1vZGVsIGluIHNlbGVjdGVkX21vZGVscy5pdGVtcygpOgoKICAgICAgICBpZiBtb2RlbF9uYW1lID09ICJMb2dpc3RpY1JlZ3Jlc3Npb24iOgogICAgICAgICAgICBtb2RlbC5zZXRfcGFyYW1zKHNvbHZlcj0ibGlibGluZWFyIikKCiAgICAgICAgIyBUcmFpbiBtb2RlbCBhbmQgZ2V0IGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIHNlbGVjdF9mcm9tX21vZGVsID0gU2VsZWN0RnJvbU1vZGVsKG1vZGVsKS5maXQoWCwgeSkKICAgICAgICBmZWF0dXJlX2lkeCA9IHNlbGVjdF9mcm9tX21vZGVsLmdldF9zdXBwb3J0KCkKICAgICAgICBmZWF0dXJlX25hbWVzID0gWC5jb2x1bW5zW2ZlYXR1cmVfaWR4XQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1ttb2RlbF9uYW1lXSA9IGZlYXR1cmVfbmFtZXMudG9saXN0KCkKCiAgICAgICAgIyBDb2xsZWN0IG1vZGVsIGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImNvZWZfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmNvZWZfCiAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8sICJmZWF0dXJlX2ltcG9ydGFuY2VzXyIpOgogICAgICAgICAgICBzdGF0X2RmID0gc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXy5mZWF0dXJlX2ltcG9ydGFuY2VzXwoKICAgICAgICBzdGF0X2RmID0gcGQuRGF0YUZyYW1lKGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bbW9kZWxfbmFtZV0sIGRhdGE9c3RhdF9kZlswXSkKICAgICAgICBtb2RlbHNfZGYgPSBtb2RlbHNfZGYuam9pbihzdGF0X2RmKQoKICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgbW9kZWxfbmFtZSwgc3RhdF9kZikKCiAgICAjIENyZWF0ZSBmZWF0dXJlX3Njb3JlcyBERiB3aXRoIHN0YXQgJiBtb2RlbCBmaWx0ZXJzIHNjb3JlcwogICAgcmVzdWx0X21hdHJpeF9kZiA9IHBkLmNvbmNhdChbc3RhdHNfZGYsIG1vZGVsc19kZl0sIGF4aXM9MSwgc29ydD1GYWxzZSkKICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAga2V5PSJmZWF0dXJlX3Njb3JlcyIsCiAgICAgICAgZGY9cmVzdWx0X21hdHJpeF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJmZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQogICAgaWYgbWF4X3NjYWxlZF9zY29yZXM6CiAgICAgICAgbm9ybWFsaXplZF9kZiA9IHJlc3VsdF9tYXRyaXhfZGYucmVwbGFjZShbbnAuaW5mLCAtbnAuaW5mXSwgbnAubmFuKS52YWx1ZXMKICAgICAgICBtaW5fbWF4X3NjYWxlciA9IE1pbk1heFNjYWxlcigpCiAgICAgICAgbm9ybWFsaXplZF9kZiA9IG1pbl9tYXhfc2NhbGVyLmZpdF90cmFuc2Zvcm0obm9ybWFsaXplZF9kZikKICAgICAgICBub3JtYWxpemVkX2RmID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICBkYXRhPW5vcm1hbGl6ZWRfZGYsCiAgICAgICAgICAgIGNvbHVtbnM9cmVzdWx0X21hdHJpeF9kZi5jb2x1bW5zLAogICAgICAgICAgICBpbmRleD1yZXN1bHRfbWF0cml4X2RmLmluZGV4LAogICAgICAgICkKICAgICAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgICAgICBrZXk9Im1heF9zY2FsZWRfc2NvcmVzX2ZlYXR1cmVfc2NvcmVzIiwKICAgICAgICAgICAgZGY9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgbG9jYWxfcGF0aD0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMucGFycXVldCIsCiAgICAgICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICAgICAgKQoKICAgICMgQ3JlYXRlIGZlYXR1cmUgY291bnQgRGF0YUZyYW1lCiAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZzoKICAgICAgICByZXN1bHRfbWF0cml4X2RmW3Rlc3RfbmFtZV0gPSBbCiAgICAgICAgICAgIDEgaWYgeCBpbiBzZWxlY3RlZF9mZWF0dXJlc19hZ2dbdGVzdF9uYW1lXSBlbHNlIDAgZm9yIHggaW4gWC5jb2x1bW5zCiAgICAgICAgXQogICAgcmVzdWx0X21hdHJpeF9kZi5sb2NbOiwgIm51bV92b3RlcyJdID0gcmVzdWx0X21hdHJpeF9kZi5zdW0oYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50IiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50LnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBIb3cgbWFueSB2b3RlcyBhcmUgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQ/CiAgICBpZiBpc2luc3RhbmNlKG1pbl92b3RlcywgaW50KToKICAgICAgICB2b3Rlc19uZWVkZWQgPSBtaW5fdm90ZXMKICAgIGVsc2U6CiAgICAgICAgbnVtX2ZpbHRlcnMgPSBsZW4oc3RhdF9maWx0ZXJzKSArIGxlbihtb2RlbF9maWx0ZXJzKQogICAgICAgIHZvdGVzX25lZWRlZCA9IGludChucC5mbG9vcihudW1fZmlsdGVycyAqIG1heChtaW4obWluX3ZvdGVzLCAxKSwgMCkpKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInZvdGVzIG5lZWRlZCB0byBiZSBzZWxlY3RlZDoge3ZvdGVzX25lZWRlZH0iKQoKICAgICMgQ3JlYXRlIGZpbmFsIGZlYXR1cmUgZGF0YWZyYW1lCiAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGZbCiAgICAgICAgcmVzdWx0X21hdHJpeF9kZi5udW1fdm90ZXMgPj0gdm90ZXNfbmVlZGVkCiAgICBdLmluZGV4LnRvbGlzdCgpCiAgICBnb29kX2ZlYXR1cmVfZGYgPSBkZi5sb2NbOiwgc2VsZWN0ZWRfZmVhdHVyZXNdCiAgICBmaW5hbF9kZiA9IHBkLmNvbmNhdChbZ29vZF9mZWF0dXJlX2RmLCB5XSwgYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzIiwKICAgICAgICBkZj1maW5hbF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJzZWxlY3RlZF9mZWF0dXJlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQoKICAgICMgQ3JlYXRpbmcgYSBuZXcgZmVhdHVyZSB2ZWN0b3IgY29udGFpbmluZyBvbmx5IHRoZSBpZGVudGlmaWVkIHRvcCBmZWF0dXJlcwogICAgaWYgaXNfZmVhdHVyZV92ZWN0b3IgYW5kIGRmX2FydGlmYWN0Lm1ldGEuc3BlYy5mZWF0dXJlcyBhbmQgb3V0cHV0X3ZlY3Rvcl9uYW1lOgogICAgICAgICMgU2VsZWN0aW5nIHRoZSB0b3AgSyBmZWF0dXJlcyBmcm9tIG91ciB0b3AgZmVhdHVyZSBkYXRhZnJhbWUKICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGYuaGVhZChrKS5pbmRleAoKICAgICAgICAjIE1hdGNoIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG5hbWVzIHRvIHRoZSBGUyBGZWF0dXJlIGFubm90YXRpb25zCiAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zID0gWwogICAgICAgICAgICBmZWF0dXJlCiAgICAgICAgICAgIGZvciBmZWF0dXJlIGluIGxpc3QoZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzKQogICAgICAgICAgICBmb3Igc2VsZWN0ZWQgaW4gbGlzdChzZWxlY3RlZF9mZWF0dXJlcykKICAgICAgICAgICAgaWYgZmVhdHVyZS5lbmRzd2l0aChzZWxlY3RlZCkKICAgICAgICBdCgogICAgICAgICMgRGVmaW5pbmcgb3VyIG5ldyBmZWF0dXJlIHZlY3RvcgogICAgICAgIHRvcF9mZWF0dXJlc19mdiA9IGZzLkZlYXR1cmVWZWN0b3IoCiAgICAgICAgICAgIG91dHB1dF92ZWN0b3JfbmFtZSwKICAgICAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zLAogICAgICAgICAgICBsYWJlbF9mZWF0dXJlPSJsYWJlbHMubGFiZWwiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj0iZmVhdHVyZSB2ZWN0b3IgY29tcG9zZWQgc3RyaWN0bHkgb2Ygb3VyIHRvcCBmZWF0dXJlcyIsCiAgICAgICAgKQoKICAgICAgICAjIFNhdmluZwogICAgICAgIHRvcF9mZWF0dXJlc19mdi5zYXZlKCkKICAgICAgICBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcyh0b3BfZmVhdHVyZXNfZnYsIHRhcmdldD1QYXJxdWV0VGFyZ2V0KCkpCgogICAgICAgICMgTG9nZ2luZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yIFVSSQogICAgICAgIGNvbnRleHQubG9nX3Jlc3VsdCgidG9wX2ZlYXR1cmVzX3ZlY3RvciIsIHRvcF9mZWF0dXJlc19mdi51cmkpCg== + commands: [] + code_origin: '' + origin_filename: '' + requirements: [] + entry_points: + show_values_on_bars: + name: show_values_on_bars + doc: '' + parameters: + - name: axs + - name: h_v + default: v + - name: space + default: 0.4 + outputs: [] + lineno: 54 + has_varargs: false + has_kwargs: false + plot_stat: + name: plot_stat + doc: '' + parameters: + - name: context + - name: stat_name + - name: stat_df + outputs: [] + lineno: 76 + has_varargs: false + has_kwargs: false + feature_selection: + name: feature_selection + doc: 'Applies selected feature selection statistical functions or models on + our ''df_artifact''. + + + Each statistical function or model will vote for it''s best K selected features. + + If a feature has >= ''min_votes'' votes, it will be selected.' + parameters: + - name: context + doc: the function context. + - name: df_artifact + doc: dataframe to pass as input. + - name: k + type: int + doc: number of top features to select from each statistical function or model. + default: 5 + - name: min_votes + type: float + doc: minimal number of votes (from a model or by statistical function) needed + for a feature to be selected. Can be specified by percentage of votes or + absolute number of votes. + default: 0.5 + - name: label_column + type: str + doc: ground-truth (y) labels. + default: null + - name: stat_filters + type: list + doc: statistical functions to apply to the features (from sklearn.feature_selection). + default: null + - name: model_filters + type: dict + doc: models to use for feature evaluation, can be specified by model name + (ex. LinearSVC), formalized json (contains 'CLASS', 'FIT', 'META') or a + path to such json file. + default: null + - name: max_scaled_scores + type: bool + doc: produce feature scores table scaled with max_scaler. + default: true + - name: sample_ratio + type: float + doc: percentage of the dataset the user whishes to compute the feature selection + process on. + default: null + - name: output_vector_name + type: float + doc: creates a new feature vector containing only the identifies features. + default: null + - name: ignore_type_errors + type: bool + doc: skips datatypes that are neither float nor int within the feature vector. + default: false + - name: is_feature_vector + type: bool + doc: bool stating if the data is passed as a feature vector. + default: false + outputs: [] + lineno: 106 + has_varargs: false + has_kwargs: false + description: Select features through multiple Statistical and Model filters + default_handler: feature_selection + disable_auto_mount: false + clone_target_dir: '' + env: [] + priority_class_name: '' + preemption_mode: prevent + affinity: null + tolerations: null + security_context: {} +verbose: false diff --git a/functions/master/feature_selection/1.4.0/src/item.yaml b/functions/master/feature_selection/1.4.0/src/item.yaml new file mode 100644 index 00000000..7e80a417 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/item.yaml @@ -0,0 +1,25 @@ +apiVersion: v1 +categories: +- data-preparation +- machine-learning +description: Select features through multiple Statistical and Model filters +doc: '' +example: feature_selection.ipynb +generationDate: 2022-08-28:17-25 +hidden: false +icon: '' +labels: + author: orz +maintainers: [] +marketplaceType: '' +mlrunVersion: 1.1.0 +name: feature-selection +platformVersion: 3.5.0 +spec: + filename: feature_selection.py + handler: feature_selection + image: mlrun/mlrun + kind: job + requirements: [] +url: '' +version: 1.4.0 diff --git a/functions/master/feature_selection/1.4.0/src/requirements.txt b/functions/master/feature_selection/1.4.0/src/requirements.txt new file mode 100644 index 00000000..961f64ea --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/requirements.txt @@ -0,0 +1,5 @@ +scikit-learn~=1.0.2 +matplotlib +seaborn +scikit-plot + diff --git a/functions/master/feature_selection/1.4.0/src/test_feature_selection.py b/functions/master/feature_selection/1.4.0/src/test_feature_selection.py new file mode 100644 index 00000000..6289648f --- /dev/null +++ b/functions/master/feature_selection/1.4.0/src/test_feature_selection.py @@ -0,0 +1,48 @@ +# Copyright 2019 Iguazio +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from mlrun import code_to_function +from pathlib import Path +import shutil + +METRICS_PATH = 'data/metrics.pq' +ARTIFACTS_PATH = 'artifacts' +RUNS_PATH = 'runs' +SCHEDULES_PATH = 'schedules' + + +def _delete_outputs(paths): + for path in paths: + if Path(path).is_dir(): + shutil.rmtree(path) + + +def test_run_local_feature_selection(): + fn = code_to_function(name='test_run_local_feature_selection', + filename="feature_selection.py", + handler="feature_selection", + kind="local", + ) + fn.spec.command = "feature_selection.py" + run = fn.run( + params={ + 'k': 2, + 'min_votes': 0.3, + 'label_column': 'is_error', + }, + inputs={'df_artifact': 'data/metrics.pq'}, + artifact_path='artifacts/', + ) + assert run.artifact('feature_scores').get() and run.artifact('selected_features').get() + _delete_outputs({ARTIFACTS_PATH, RUNS_PATH, SCHEDULES_PATH}) diff --git a/functions/master/feature_selection/1.4.0/static/documentation.html b/functions/master/feature_selection/1.4.0/static/documentation.html new file mode 100644 index 00000000..101d2e4e --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/documentation.html @@ -0,0 +1,262 @@ + + + + + + + +feature_selection package + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + + + +
+
+ + +
+
+
+ +
+

feature_selection package

+ +
+ +
+
+
+
+
+

feature_selection package#

+
+

Submodules#

+
+
+

feature_selection.feature_selection module#

+
+
+feature_selection.feature_selection.feature_selection(context, df_artifact, k: int = 5, min_votes: float = 0.5, label_column: Optional[str] = None, stat_filters: Optional[list] = None, model_filters: Optional[dict] = None, max_scaled_scores: bool = True, sample_ratio: Optional[float] = None, output_vector_name: Optional[float] = None, ignore_type_errors: bool = False, is_feature_vector: bool = False)[source]#
+

Applies selected feature selection statistical functions or models on our ‘df_artifact’.

+

Each statistical function or model will vote for it’s best K selected features. +If a feature has >= ‘min_votes’ votes, it will be selected.

+
+
Parameters
+
    +
  • context – the function context.

  • +
  • df_artifact – dataframe to pass as input.

  • +
  • k – number of top features to select from each statistical +function or model.

  • +
  • min_votes – minimal number of votes (from a model or by statistical +function) needed for a feature to be selected. +Can be specified by percentage of votes or absolute +number of votes.

  • +
  • label_column – ground-truth (y) labels.

  • +
  • stat_filters – statistical functions to apply to the features +(from sklearn.feature_selection).

  • +
  • model_filters – models to use for feature evaluation, can be specified by +model name (ex. LinearSVC), formalized json (contains ‘CLASS’, +‘FIT’, ‘META’) or a path to such json file.

  • +
  • max_scaled_scores – produce feature scores table scaled with max_scaler.

  • +
  • sample_ratio – percentage of the dataset the user whishes to compute the feature selection process on.

  • +
  • output_vector_name – creates a new feature vector containing only the identifies features.

  • +
  • ignore_type_errors – skips datatypes that are neither float nor int within the feature vector.

  • +
  • is_feature_vector – bool stating if the data is passed as a feature vector.

  • +
+
+
+
+
+
+feature_selection.feature_selection.plot_stat(context, stat_name, stat_df)[source]#
+
+
+
+feature_selection.feature_selection.show_values_on_bars(axs, h_v='v', space=0.4)[source]#
+
+
+
+

Module contents#

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/static/example.html b/functions/master/feature_selection/1.4.0/static/example.html new file mode 100644 index 00000000..201e836c --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/example.html @@ -0,0 +1,1185 @@ + + + + + + + +Feature Selection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + + + +
+
+ +
+
+ Contents +
+ +
+
+
+
+ +
+

Feature Selection

+ +
+
+
+

Contents

+
+ +
+
+
+
+
+
+

Feature Selection#

+
+
+
import mlrun
+
+
+
+
+
+
+
%nuclio config kind = "job"
+%nuclio config spec.image = "mlrun/ml-models"
+
+
+
+
+
%nuclio: setting kind to 'job'
+%nuclio: setting spec.image to 'mlrun/ml-models'
+
+
+
+
+
+
+
# nuclio: start-code
+
+
+
+
+
+
+
import pandas as pd
+import matplotlib.pyplot as plt
+import seaborn as sns
+import numpy as np
+import os
+import json
+
+# Feature selection strategies
+from sklearn.feature_selection import SelectKBest
+from sklearn.feature_selection import SelectFromModel
+
+# Model based feature selection
+from sklearn.ensemble import ExtraTreesClassifier
+from sklearn.svm import LinearSVC
+from sklearn.linear_model import LogisticRegression
+
+# Scale feature scores
+from sklearn.preprocessing import MinMaxScaler
+
+# SKLearn estimators list
+from sklearn.utils import all_estimators
+
+# MLRun utils
+from mlrun.mlutils.plots import gcf_clear
+from mlrun.utils.helpers import create_class
+from mlrun.artifacts import PlotArtifact
+
+# Feature Selection
+from feature_selection import feature_selection, show_values_on_bars, plot_stat
+
+
+
+
+
+
+
# nuclio: end-code
+
+
+
+
+
+

Test#

+
+
+
from mlrun import code_to_function, mount_v3io, mlconf, NewTask, run_local
+
+
+
+
+
+
+
mlconf.artifact_path = os.path.abspath('./artifacts')
+mlconf.db_path = 'http://mlrun-api:8080'
+
+
+
+
+
+

Local Test#

+
+
+
task = NewTask(params={'k': 2,
+                       'min_votes': 0.3,
+                       'label_column': 'is_error'},
+               inputs={'df_artifact': os.path.abspath('data/metrics.pq')})
+
+
+
+
+
+
+
from feature_selection import feature_selection, show_values_on_bars, plot_stat
+
+runl = run_local(task=task,
+          name='feature_selection',
+          handler=feature_selection,
+          artifact_path=os.path.join(os.path.abspath('./'), 'artifacts'))
+
+
+
+
+
> 2021-08-11 10:12:05,721 [info] starting run feature_selection uid=8765f9e7fde94efeb662fbe2c37a0e1a DB=http://mlrun-api:8080
+
+
+
Pass k=2 as keyword args. From version 0.25 passing these as positional arguments will result in an error
+Liblinear failed to converge, increase the number of iterations.
+
+
+
> 2021-08-11 10:12:08,257 [info] votes needed to be selected: 2
+
+
+
Converting input from bool to <class 'numpy.uint8'> for compatibility.
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
default0Aug 11 10:12:05completedfeature_selection
v3io_user=admin
kind=handler
owner=admin
host=jupyter-az-ffcb58655-7l9pl
df_artifact
k=2
min_votes=0.3
label_column=is_error
f_classif
mutual_info_classif
chi2
f_regression
LinearSVC
LogisticRegression
ExtraTreesClassifier
feature_scores
max_scaled_scores_feature_scores
selected_features_count
selected_features
+
+ +
+
to track results use .show() or .logs() or in CLI: 
+!mlrun get run 8765f9e7fde94efeb662fbe2c37a0e1a --project default , !mlrun logs 8765f9e7fde94efeb662fbe2c37a0e1a --project default
+> 2021-08-11 10:12:08,438 [info] run executed, status=completed
+
+
+
+
+
+
+
+

Job Test#

+
+
+
fn = code_to_function(name='feature_selection',
+                      handler='feature_selection')
+fn.spec.default_handler = 'feature_selection'
+fn.spec.description = "Select features through multiple Statistical and Model filters"
+fn.metadata.categories = ['data-prep', 'ml']
+fn.metadata.labels = {"author": "alexz"}
+fn.export('function.yaml')
+fn.apply(mount_v3io())
+
+
+
+
+
> 2021-08-11 10:12:22,071 [info] function spec saved to path: function.yaml
+
+
+
<mlrun.runtimes.kubejob.KubejobRuntime at 0x7fa98e912890>
+
+
+
+
+
+
+
fn_run = fn.run(task)
+
+
+
+
+
> 2021-08-11 10:12:22,083 [info] starting run feature-selection-feature_selection uid=a702d89990924e10b093ee1571b47dc2 DB=http://mlrun-api:8080
+> 2021-08-11 10:12:22,347 [info] Job is running in the background, pod: feature-selection-feature-selection-8wkf8
+> 2021-08-11 10:14:12,748 [info] votes needed to be selected: 2
+> 2021-08-11 10:14:12,877 [info] run executed, status=completed
+Pass k=2 as keyword args. From version 0.25 passing these as positional arguments will result in an error
+Liblinear failed to converge, increase the number of iterations.
+lbfgs failed to converge (status=1):
+STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
+
+Increase the number of iterations (max_iter) or scale the data as shown in:
+    https://scikit-learn.org/stable/modules/preprocessing.html
+Please also refer to the documentation for alternative solver options:
+    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression
+Converting input from bool to <class 'numpy.uint8'> for compatibility.
+final state: completed
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
projectuiditerstartstatenamelabelsinputsparametersresultsartifacts
default0Aug 11 10:14:09completedfeature-selection-feature_selection
v3io_user=admin
kind=job
owner=admin
host=feature-selection-feature-selection-8wkf8
df_artifact
k=2
min_votes=0.3
label_column=is_error
f_classif
mutual_info_classif
chi2
f_regression
LinearSVC
LogisticRegression
ExtraTreesClassifier
feature_scores
max_scaled_scores_feature_scores
selected_features_count
selected_features
+
+ +
+
to track results use .show() or .logs() or in CLI: 
+!mlrun get run a702d89990924e10b093ee1571b47dc2 --project default , !mlrun logs a702d89990924e10b093ee1571b47dc2 --project default
+> 2021-08-11 10:14:21,908 [info] run executed, status=completed
+
+
+
+
+
+
+
mlrun.get_dataitem(fn_run.spec.inputs['df_artifact']).as_df()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cpu_utilizationlatencypacket_lossthroughputis_error
timestampcompanydata_centerdevice
2021-04-27 14:46:46.780Smith_GroupDenise_Crest512420905723175.5988910.0000000.000000252.445971False
289175586571250.0903733.2808490.000000229.889187False
Debra_Gateway038802029531173.2430639.3723412.170138260.883807False
963381369144160.83042012.2418782.295717244.238613False
Ferrell_LtdMurphy_Meadow151712976593172.6479640.5354630.000000212.944943False
...........................
2021-04-27 15:46:46.780Smith_GroupDebra_Gateway963381369144177.8759543.2505840.000000245.150281False
Ferrell_LtdMurphy_Meadow151712976593177.8314590.0000000.000000235.109321False
696448669938355.9785142.9774470.533963277.622402False
Nicholas_Estate800289709816758.2654464.0902072.048268272.717982False
849988073510471.2450410.0000002.929407235.659211False
+

5768 rows × 5 columns

+
+
+
+
+
mlrun.get_dataitem(fn_run.outputs['feature_scores']).as_df()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
f_classifmutual_info_classifchi2f_regressionLinearSVCLogisticRegressionExtraTreesClassifier
cpu_utilization2520.0158090.1850454457.4293602520.015809-0.0450400.2327600.026625
latency10152.1519950.198947272872.89019410152.1519950.0342510.0690640.026625
packet_loss14120.4905470.210517157191.42752414120.4905470.0481880.2236730.026625
throughput20421.7210300.230557109129.51166520421.721030-0.009259-0.0647330.026625
+
+
+
+
+
mlrun.get_dataitem(fn_run.outputs['selected_features']).as_df()
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cpu_utilizationlatencypacket_lossthroughputis_error
timestampcompanydata_centerdevice
2021-04-27 14:46:46.780Smith_GroupDenise_Crest512420905723175.5988910.0000000.000000252.445971False
289175586571250.0903733.2808490.000000229.889187False
Debra_Gateway038802029531173.2430639.3723412.170138260.883807False
963381369144160.83042012.2418782.295717244.238613False
Ferrell_LtdMurphy_Meadow151712976593172.6479640.5354630.000000212.944943False
...........................
2021-04-27 15:46:46.780Smith_GroupDebra_Gateway963381369144177.8759543.2505840.000000245.150281False
Ferrell_LtdMurphy_Meadow151712976593177.8314590.0000000.000000235.109321False
696448669938355.9785142.9774470.533963277.622402False
Nicholas_Estate800289709816758.2654464.0902072.048268272.717982False
849988073510471.2450410.0000002.929407235.659211False
+

5768 rows × 5 columns

+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/static/feature_selection.html b/functions/master/feature_selection/1.4.0/static/feature_selection.html new file mode 100644 index 00000000..2c26b03b --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/feature_selection.html @@ -0,0 +1,487 @@ + + + + + + + +feature_selection.feature_selection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + +
+ +
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+ +
+

+ +
+
+
+
+
+
+
+

Source code for feature_selection.feature_selection

+# Copyright 2019 Iguazio
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+import json
+import os
+
+import matplotlib.pyplot as plt
+import mlrun
+import mlrun.datastore
+import mlrun.utils
+import mlrun.feature_store as fs
+import numpy as np
+import pandas as pd
+import seaborn as sns
+from mlrun.artifacts import PlotArtifact
+from mlrun.datastore.targets import ParquetTarget
+# MLRun utils
+from mlrun.utils.helpers import create_class
+# Feature selection strategies
+from sklearn.feature_selection import SelectFromModel, SelectKBest
+# Scale feature scoresgit st
+from sklearn.preprocessing import MinMaxScaler
+# SKLearn estimators list
+from sklearn.utils import all_estimators
+
+DEFAULT_STAT_FILTERS = ["f_classif", "mutual_info_classif", "chi2", "f_regression"]
+DEFAULT_MODEL_FILTERS = {
+    "LinearSVC": "LinearSVC",
+    "LogisticRegression": "LogisticRegression",
+    "ExtraTreesClassifier": "ExtraTreesClassifier",
+}
+
+
+def _clear_current_figure():
+    """
+    Clear matplotlib current figure.
+    """
+    plt.cla()
+    plt.clf()
+    plt.close()
+
+
+
[docs]def show_values_on_bars(axs, h_v="v", space=0.4): + def _show_on_single_plot(ax_): + if h_v == "v": + for p in ax_.patches: + _x = p.get_x() + p.get_width() / 2 + _y = p.get_y() + p.get_height() + value = int(p.get_height()) + ax_.text(_x, _y, value, ha="center") + elif h_v == "h": + for p in ax_.patches: + _x = p.get_x() + p.get_width() + float(space) + _y = p.get_y() + p.get_height() + value = int(p.get_width()) + ax_.text(_x, _y, value, ha="left") + + if isinstance(axs, np.ndarray): + for idx, ax in np.ndenumerate(axs): + _show_on_single_plot(ax) + else: + _show_on_single_plot(axs)
+ + +
[docs]def plot_stat(context, stat_name, stat_df): + _clear_current_figure() + + # Add chart + ax = plt.axes() + stat_chart = sns.barplot( + x=stat_name, + y="index", + data=stat_df.sort_values(stat_name, ascending=False).reset_index(), + ax=ax, + ) + plt.tight_layout() + + for p in stat_chart.patches: + width = p.get_width() + plt.text( + 5 + p.get_width(), + p.get_y() + 0.55 * p.get_height(), + "{:1.2f}".format(width), + ha="center", + va="center", + ) + + context.log_artifact( + PlotArtifact(f"{stat_name}", body=plt.gcf()), + local_path=os.path.join("plots", "feature_selection", f"{stat_name}.html"), + ) + _clear_current_figure()
+ + +
[docs]def feature_selection( + context, + df_artifact, + k: int = 5, + min_votes: float = 0.5, + label_column: str = None, + stat_filters: list = None, + model_filters: dict = None, + max_scaled_scores: bool = True, + sample_ratio: float = None, + output_vector_name: float = None, + ignore_type_errors: bool = False, + is_feature_vector: bool = False, +): + """ + Applies selected feature selection statistical functions or models on our 'df_artifact'. + + Each statistical function or model will vote for it's best K selected features. + If a feature has >= 'min_votes' votes, it will be selected. + + :param context: the function context. + :param df_artifact: dataframe to pass as input. + :param k: number of top features to select from each statistical + function or model. + :param min_votes: minimal number of votes (from a model or by statistical + function) needed for a feature to be selected. + Can be specified by percentage of votes or absolute + number of votes. + :param label_column: ground-truth (y) labels. + :param stat_filters: statistical functions to apply to the features + (from sklearn.feature_selection). + :param model_filters: models to use for feature evaluation, can be specified by + model name (ex. LinearSVC), formalized json (contains 'CLASS', + 'FIT', 'META') or a path to such json file. + :param max_scaled_scores: produce feature scores table scaled with max_scaler. + :param sample_ratio: percentage of the dataset the user whishes to compute the feature selection process on. + :param output_vector_name: creates a new feature vector containing only the identifies features. + :param ignore_type_errors: skips datatypes that are neither float nor int within the feature vector. + :param is_feature_vector: bool stating if the data is passed as a feature vector. + """ + stat_filters = stat_filters or DEFAULT_STAT_FILTERS + model_filters = model_filters or DEFAULT_MODEL_FILTERS + # Check if df.meta is valid, if it is, look for a feature vector + store_uri_prefix, _ = mlrun.datastore.parse_store_uri(df_artifact.artifact_url) + is_feature_vector = mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix + + # Look inside meta.spec.label_feature to identify the label_column if the user did not specify it + if label_column is None: + if is_feature_vector: + label_column = df_artifact.meta.spec.label_feature.split(".")[1] + else: + raise ValueError("No label_column was given, please add a label_column.") + + # Use the feature vector as dataframe + df = df_artifact.as_df() + + # Ensure k is not bigger than the total number of features + if k > df.shape[1]: + raise ValueError( + f"K cannot be bigger than the total number of features ({df.shape[1]}). Please choose a smaller K." + ) + elif k < 1: + raise ValueError("K cannot be smaller than 1. Please choose a bigger K.") + + # Create a sample dataframe of the original feature vector + if sample_ratio: + df = ( + df.groupby(label_column) + .apply(lambda x: x.sample(frac=sample_ratio)) + .reset_index(drop=True) + ) + df = df.dropna() + + # Set feature vector and labels + y = df.pop(label_column) + X = df + + if np.object_ in list(X.dtypes) and ignore_type_errors is False: + raise ValueError( + f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int." + ) + + # Create selected statistical estimators + stat_functions_list = { + stat_name: SelectKBest( + score_func=create_class(f"sklearn.feature_selection.{stat_name}"), k=k + ) + for stat_name in stat_filters + } + requires_abs = ["chi2"] + + # Run statistic filters + selected_features_agg = {} + stats_df = pd.DataFrame(index=X.columns).dropna() + + for stat_name, stat_func in stat_functions_list.items(): + try: + params = (X, y) if stat_name in requires_abs else (abs(X), y) + stat = stat_func.fit(*params) + + # Collect stat function results + stat_df = pd.DataFrame( + index=X.columns, columns=[stat_name], data=stat.scores_ + ) + plot_stat(context, stat_name, stat_df) + stats_df = stats_df.join(stat_df) + + # Select K Best features + selected_features = X.columns[stat_func.get_support()] + selected_features_agg[stat_name] = selected_features + + except Exception as e: + context.logger.info(f"Couldn't calculate {stat_name} because of: {e}") + + # Create models from class name / json file / json params + all_sklearn_estimators = dict(all_estimators()) if len(model_filters) > 0 else {} + selected_models = {} + for model_name, model in model_filters.items(): + if ".json" in model: + current_model = json.load(open(model, "r")) + classifier_class = create_class(current_model["META"]["class"]) + selected_models[model_name] = classifier_class(**current_model["CLASS"]) + elif model in all_sklearn_estimators: + selected_models[model_name] = all_sklearn_estimators[model_name]() + + else: + try: + current_model = json.loads(model) + classifier_class = create_class(current_model["META"]["class"]) + selected_models[model_name] = classifier_class(**current_model["CLASS"]) + except Exception as e: + context.logger.info(f"unable to load {model} because of: {e}") + + # Run model filters + models_df = pd.DataFrame(index=X.columns) + for model_name, model in selected_models.items(): + + if model_name == "LogisticRegression": + model.set_params(solver="liblinear") + + # Train model and get feature importance + select_from_model = SelectFromModel(model).fit(X, y) + feature_idx = select_from_model.get_support() + feature_names = X.columns[feature_idx] + selected_features_agg[model_name] = feature_names.tolist() + + # Collect model feature importance + if hasattr(select_from_model.estimator_, "coef_"): + stat_df = select_from_model.estimator_.coef_ + elif hasattr(select_from_model.estimator_, "feature_importances_"): + stat_df = select_from_model.estimator_.feature_importances_ + + stat_df = pd.DataFrame(index=X.columns, columns=[model_name], data=stat_df[0]) + models_df = models_df.join(stat_df) + + plot_stat(context, model_name, stat_df) + + # Create feature_scores DF with stat & model filters scores + result_matrix_df = pd.concat([stats_df, models_df], axis=1, sort=False) + context.log_dataset( + key="feature_scores", + df=result_matrix_df, + local_path="feature_scores.parquet", + format="parquet", + ) + if max_scaled_scores: + normalized_df = result_matrix_df.replace([np.inf, -np.inf], np.nan).values + min_max_scaler = MinMaxScaler() + normalized_df = min_max_scaler.fit_transform(normalized_df) + normalized_df = pd.DataFrame( + data=normalized_df, + columns=result_matrix_df.columns, + index=result_matrix_df.index, + ) + context.log_dataset( + key="max_scaled_scores_feature_scores", + df=normalized_df, + local_path="max_scaled_scores_feature_scores.parquet", + format="parquet", + ) + + # Create feature count DataFrame + for test_name in selected_features_agg: + result_matrix_df[test_name] = [ + 1 if x in selected_features_agg[test_name] else 0 for x in X.columns + ] + result_matrix_df.loc[:, "num_votes"] = result_matrix_df.sum(axis=1) + context.log_dataset( + key="selected_features_count", + df=result_matrix_df, + local_path="selected_features_count.parquet", + format="parquet", + ) + + # How many votes are needed for a feature to be selected? + if isinstance(min_votes, int): + votes_needed = min_votes + else: + num_filters = len(stat_filters) + len(model_filters) + votes_needed = int(np.floor(num_filters * max(min(min_votes, 1), 0))) + context.logger.info(f"votes needed to be selected: {votes_needed}") + + # Create final feature dataframe + selected_features = result_matrix_df[ + result_matrix_df.num_votes >= votes_needed + ].index.tolist() + good_feature_df = df.loc[:, selected_features] + final_df = pd.concat([good_feature_df, y], axis=1) + context.log_dataset( + key="selected_features", + df=final_df, + local_path="selected_features.parquet", + format="parquet", + ) + + # Creating a new feature vector containing only the identified top features + if is_feature_vector and df_artifact.meta.spec.features and output_vector_name: + # Selecting the top K features from our top feature dataframe + selected_features = result_matrix_df.head(k).index + + # Match the selected feature names to the FS Feature annotations + matched_selections = [ + feature + for feature in list(df_artifact.meta.spec.features) + for selected in list(selected_features) + if feature.endswith(selected) + ] + + # Defining our new feature vector + top_features_fv = fs.FeatureVector( + output_vector_name, + matched_selections, + label_feature="labels.label", + description="feature vector composed strictly of our top features", + ) + + # Saving + top_features_fv.save() + fs.get_offline_features(top_features_fv, target=ParquetTarget()) + + # Logging our new feature vector URI + context.log_result("top_features_vector", top_features_fv.uri)
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/static/function.html b/functions/master/feature_selection/1.4.0/static/function.html new file mode 100644 index 00000000..b09632f5 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/function.html @@ -0,0 +1,142 @@ + + + + + + + + + + + Source + + + + +
+        
+kind: job
+metadata:
+  name: feature-selection
+  tag: ''
+  hash: 6dba16d062d81f78d3d210fee75edfe8b1def9b3
+  project: ''
+  labels:
+    author: orz
+  categories:
+  - data-preparation
+  - machine-learning
+spec:
+  command: ''
+  args: []
+  image: mlrun/mlrun
+  build:
+    functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdF8gaW4gbGlzdChYLmR0eXBlcykgYW5kIGlnbm9yZV90eXBlX2Vycm9ycyBpcyBGYWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIntkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9WydvYmplY3QnXSkuY29sdW1ucy50b2xpc3QoKX0gYXJlIG5laXRoZXIgZmxvYXQgb3IgaW50LiIKICAgICAgICApCgogICAgIyBDcmVhdGUgc2VsZWN0ZWQgc3RhdGlzdGljYWwgZXN0aW1hdG9ycwogICAgc3RhdF9mdW5jdGlvbnNfbGlzdCA9IHsKICAgICAgICBzdGF0X25hbWU6IFNlbGVjdEtCZXN0KAogICAgICAgICAgICBzY29yZV9mdW5jPWNyZWF0ZV9jbGFzcyhmInNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24ue3N0YXRfbmFtZX0iKSwgaz1rCiAgICAgICAgKQogICAgICAgIGZvciBzdGF0X25hbWUgaW4gc3RhdF9maWx0ZXJzCiAgICB9CiAgICByZXF1aXJlc19hYnMgPSBbImNoaTIiXQoKICAgICMgUnVuIHN0YXRpc3RpYyBmaWx0ZXJzCiAgICBzZWxlY3RlZF9mZWF0dXJlc19hZ2cgPSB7fQogICAgc3RhdHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKS5kcm9wbmEoKQoKICAgIGZvciBzdGF0X25hbWUsIHN0YXRfZnVuYyBpbiBzdGF0X2Z1bmN0aW9uc19saXN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJhbXMgPSAoWCwgeSkgaWYgc3RhdF9uYW1lIGluIHJlcXVpcmVzX2FicyBlbHNlIChhYnMoWCksIHkpCiAgICAgICAgICAgIHN0YXQgPSBzdGF0X2Z1bmMuZml0KCpwYXJhbXMpCgogICAgICAgICAgICAjIENvbGxlY3Qgc3RhdCBmdW5jdGlvbiByZXN1bHRzCiAgICAgICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICBpbmRleD1YLmNvbHVtbnMsIGNvbHVtbnM9W3N0YXRfbmFtZV0sIGRhdGE9c3RhdC5zY29yZXNfCiAgICAgICAgICAgICkKICAgICAgICAgICAgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZikKICAgICAgICAgICAgc3RhdHNfZGYgPSBzdGF0c19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgICAgICAjIFNlbGVjdCBLIEJlc3QgZmVhdHVyZXMKICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXMgPSBYLmNvbHVtbnNbc3RhdF9mdW5jLmdldF9zdXBwb3J0KCldCiAgICAgICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1tzdGF0X25hbWVdID0gc2VsZWN0ZWRfZmVhdHVyZXMKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiQ291bGRuJ3QgY2FsY3VsYXRlIHtzdGF0X25hbWV9IGJlY2F1c2Ugb2Y6IHtlfSIpCgogICAgIyBDcmVhdGUgbW9kZWxzIGZyb20gY2xhc3MgbmFtZSAvIGpzb24gZmlsZSAvIGpzb24gcGFyYW1zCiAgICBhbGxfc2tsZWFybl9lc3RpbWF0b3JzID0gZGljdChhbGxfZXN0aW1hdG9ycygpKSBpZiBsZW4obW9kZWxfZmlsdGVycykgPiAwIGVsc2Uge30KICAgIHNlbGVjdGVkX21vZGVscyA9IHt9CiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gbW9kZWxfZmlsdGVycy5pdGVtcygpOgogICAgICAgIGlmICIuanNvbiIgaW4gbW9kZWw6CiAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWQob3Blbihtb2RlbCwgInIiKSkKICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgIGVsaWYgbW9kZWwgaW4gYWxsX3NrbGVhcm5fZXN0aW1hdG9yczoKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gYWxsX3NrbGVhcm5fZXN0aW1hdG9yc1ttb2RlbF9uYW1lXSgpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWRzKG1vZGVsKQogICAgICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBjbGFzc2lmaWVyX2NsYXNzKCoqY3VycmVudF9tb2RlbFsiQ0xBU1MiXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInVuYWJsZSB0byBsb2FkIHttb2RlbH0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIFJ1biBtb2RlbCBmaWx0ZXJzCiAgICBtb2RlbHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKQogICAgZm9yIG1vZGVsX25hbWUsIG1vZGVsIGluIHNlbGVjdGVkX21vZGVscy5pdGVtcygpOgoKICAgICAgICBpZiBtb2RlbF9uYW1lID09ICJMb2dpc3RpY1JlZ3Jlc3Npb24iOgogICAgICAgICAgICBtb2RlbC5zZXRfcGFyYW1zKHNvbHZlcj0ibGlibGluZWFyIikKCiAgICAgICAgIyBUcmFpbiBtb2RlbCBhbmQgZ2V0IGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIHNlbGVjdF9mcm9tX21vZGVsID0gU2VsZWN0RnJvbU1vZGVsKG1vZGVsKS5maXQoWCwgeSkKICAgICAgICBmZWF0dXJlX2lkeCA9IHNlbGVjdF9mcm9tX21vZGVsLmdldF9zdXBwb3J0KCkKICAgICAgICBmZWF0dXJlX25hbWVzID0gWC5jb2x1bW5zW2ZlYXR1cmVfaWR4XQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1ttb2RlbF9uYW1lXSA9IGZlYXR1cmVfbmFtZXMudG9saXN0KCkKCiAgICAgICAgIyBDb2xsZWN0IG1vZGVsIGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImNvZWZfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmNvZWZfCiAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8sICJmZWF0dXJlX2ltcG9ydGFuY2VzXyIpOgogICAgICAgICAgICBzdGF0X2RmID0gc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXy5mZWF0dXJlX2ltcG9ydGFuY2VzXwoKICAgICAgICBzdGF0X2RmID0gcGQuRGF0YUZyYW1lKGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bbW9kZWxfbmFtZV0sIGRhdGE9c3RhdF9kZlswXSkKICAgICAgICBtb2RlbHNfZGYgPSBtb2RlbHNfZGYuam9pbihzdGF0X2RmKQoKICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgbW9kZWxfbmFtZSwgc3RhdF9kZikKCiAgICAjIENyZWF0ZSBmZWF0dXJlX3Njb3JlcyBERiB3aXRoIHN0YXQgJiBtb2RlbCBmaWx0ZXJzIHNjb3JlcwogICAgcmVzdWx0X21hdHJpeF9kZiA9IHBkLmNvbmNhdChbc3RhdHNfZGYsIG1vZGVsc19kZl0sIGF4aXM9MSwgc29ydD1GYWxzZSkKICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAga2V5PSJmZWF0dXJlX3Njb3JlcyIsCiAgICAgICAgZGY9cmVzdWx0X21hdHJpeF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJmZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQogICAgaWYgbWF4X3NjYWxlZF9zY29yZXM6CiAgICAgICAgbm9ybWFsaXplZF9kZiA9IHJlc3VsdF9tYXRyaXhfZGYucmVwbGFjZShbbnAuaW5mLCAtbnAuaW5mXSwgbnAubmFuKS52YWx1ZXMKICAgICAgICBtaW5fbWF4X3NjYWxlciA9IE1pbk1heFNjYWxlcigpCiAgICAgICAgbm9ybWFsaXplZF9kZiA9IG1pbl9tYXhfc2NhbGVyLmZpdF90cmFuc2Zvcm0obm9ybWFsaXplZF9kZikKICAgICAgICBub3JtYWxpemVkX2RmID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICBkYXRhPW5vcm1hbGl6ZWRfZGYsCiAgICAgICAgICAgIGNvbHVtbnM9cmVzdWx0X21hdHJpeF9kZi5jb2x1bW5zLAogICAgICAgICAgICBpbmRleD1yZXN1bHRfbWF0cml4X2RmLmluZGV4LAogICAgICAgICkKICAgICAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgICAgICBrZXk9Im1heF9zY2FsZWRfc2NvcmVzX2ZlYXR1cmVfc2NvcmVzIiwKICAgICAgICAgICAgZGY9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgbG9jYWxfcGF0aD0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMucGFycXVldCIsCiAgICAgICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICAgICAgKQoKICAgICMgQ3JlYXRlIGZlYXR1cmUgY291bnQgRGF0YUZyYW1lCiAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZzoKICAgICAgICByZXN1bHRfbWF0cml4X2RmW3Rlc3RfbmFtZV0gPSBbCiAgICAgICAgICAgIDEgaWYgeCBpbiBzZWxlY3RlZF9mZWF0dXJlc19hZ2dbdGVzdF9uYW1lXSBlbHNlIDAgZm9yIHggaW4gWC5jb2x1bW5zCiAgICAgICAgXQogICAgcmVzdWx0X21hdHJpeF9kZi5sb2NbOiwgIm51bV92b3RlcyJdID0gcmVzdWx0X21hdHJpeF9kZi5zdW0oYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50IiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50LnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBIb3cgbWFueSB2b3RlcyBhcmUgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQ/CiAgICBpZiBpc2luc3RhbmNlKG1pbl92b3RlcywgaW50KToKICAgICAgICB2b3Rlc19uZWVkZWQgPSBtaW5fdm90ZXMKICAgIGVsc2U6CiAgICAgICAgbnVtX2ZpbHRlcnMgPSBsZW4oc3RhdF9maWx0ZXJzKSArIGxlbihtb2RlbF9maWx0ZXJzKQogICAgICAgIHZvdGVzX25lZWRlZCA9IGludChucC5mbG9vcihudW1fZmlsdGVycyAqIG1heChtaW4obWluX3ZvdGVzLCAxKSwgMCkpKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInZvdGVzIG5lZWRlZCB0byBiZSBzZWxlY3RlZDoge3ZvdGVzX25lZWRlZH0iKQoKICAgICMgQ3JlYXRlIGZpbmFsIGZlYXR1cmUgZGF0YWZyYW1lCiAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGZbCiAgICAgICAgcmVzdWx0X21hdHJpeF9kZi5udW1fdm90ZXMgPj0gdm90ZXNfbmVlZGVkCiAgICBdLmluZGV4LnRvbGlzdCgpCiAgICBnb29kX2ZlYXR1cmVfZGYgPSBkZi5sb2NbOiwgc2VsZWN0ZWRfZmVhdHVyZXNdCiAgICBmaW5hbF9kZiA9IHBkLmNvbmNhdChbZ29vZF9mZWF0dXJlX2RmLCB5XSwgYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzIiwKICAgICAgICBkZj1maW5hbF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJzZWxlY3RlZF9mZWF0dXJlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQoKICAgICMgQ3JlYXRpbmcgYSBuZXcgZmVhdHVyZSB2ZWN0b3IgY29udGFpbmluZyBvbmx5IHRoZSBpZGVudGlmaWVkIHRvcCBmZWF0dXJlcwogICAgaWYgaXNfZmVhdHVyZV92ZWN0b3IgYW5kIGRmX2FydGlmYWN0Lm1ldGEuc3BlYy5mZWF0dXJlcyBhbmQgb3V0cHV0X3ZlY3Rvcl9uYW1lOgogICAgICAgICMgU2VsZWN0aW5nIHRoZSB0b3AgSyBmZWF0dXJlcyBmcm9tIG91ciB0b3AgZmVhdHVyZSBkYXRhZnJhbWUKICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGYuaGVhZChrKS5pbmRleAoKICAgICAgICAjIE1hdGNoIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG5hbWVzIHRvIHRoZSBGUyBGZWF0dXJlIGFubm90YXRpb25zCiAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zID0gWwogICAgICAgICAgICBmZWF0dXJlCiAgICAgICAgICAgIGZvciBmZWF0dXJlIGluIGxpc3QoZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzKQogICAgICAgICAgICBmb3Igc2VsZWN0ZWQgaW4gbGlzdChzZWxlY3RlZF9mZWF0dXJlcykKICAgICAgICAgICAgaWYgZmVhdHVyZS5lbmRzd2l0aChzZWxlY3RlZCkKICAgICAgICBdCgogICAgICAgICMgRGVmaW5pbmcgb3VyIG5ldyBmZWF0dXJlIHZlY3RvcgogICAgICAgIHRvcF9mZWF0dXJlc19mdiA9IGZzLkZlYXR1cmVWZWN0b3IoCiAgICAgICAgICAgIG91dHB1dF92ZWN0b3JfbmFtZSwKICAgICAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zLAogICAgICAgICAgICBsYWJlbF9mZWF0dXJlPSJsYWJlbHMubGFiZWwiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj0iZmVhdHVyZSB2ZWN0b3IgY29tcG9zZWQgc3RyaWN0bHkgb2Ygb3VyIHRvcCBmZWF0dXJlcyIsCiAgICAgICAgKQoKICAgICAgICAjIFNhdmluZwogICAgICAgIHRvcF9mZWF0dXJlc19mdi5zYXZlKCkKICAgICAgICBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcyh0b3BfZmVhdHVyZXNfZnYsIHRhcmdldD1QYXJxdWV0VGFyZ2V0KCkpCgogICAgICAgICMgTG9nZ2luZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yIFVSSQogICAgICAgIGNvbnRleHQubG9nX3Jlc3VsdCgidG9wX2ZlYXR1cmVzX3ZlY3RvciIsIHRvcF9mZWF0dXJlc19mdi51cmkpCg==
+    commands: []
+    code_origin: ''
+    origin_filename: ''
+    requirements: []
+  entry_points:
+    show_values_on_bars:
+      name: show_values_on_bars
+      doc: ''
+      parameters:
+      - name: axs
+      - name: h_v
+        default: v
+      - name: space
+        default: 0.4
+      outputs: []
+      lineno: 54
+      has_varargs: false
+      has_kwargs: false
+    plot_stat:
+      name: plot_stat
+      doc: ''
+      parameters:
+      - name: context
+      - name: stat_name
+      - name: stat_df
+      outputs: []
+      lineno: 76
+      has_varargs: false
+      has_kwargs: false
+    feature_selection:
+      name: feature_selection
+      doc: 'Applies selected feature selection statistical functions or models on
+        our ''df_artifact''.
+
+
+        Each statistical function or model will vote for it''s best K selected features.
+
+        If a feature has >= ''min_votes'' votes, it will be selected.'
+      parameters:
+      - name: context
+        doc: the function context.
+      - name: df_artifact
+        doc: dataframe to pass as input.
+      - name: k
+        type: int
+        doc: number of top features to select from each statistical function or model.
+        default: 5
+      - name: min_votes
+        type: float
+        doc: minimal number of votes (from a model or by statistical function) needed
+          for a feature to be selected. Can be specified by percentage of votes or
+          absolute number of votes.
+        default: 0.5
+      - name: label_column
+        type: str
+        doc: ground-truth (y) labels.
+        default: null
+      - name: stat_filters
+        type: list
+        doc: statistical functions to apply to the features (from sklearn.feature_selection).
+        default: null
+      - name: model_filters
+        type: dict
+        doc: models to use for feature evaluation, can be specified by model name
+          (ex. LinearSVC), formalized json (contains 'CLASS', 'FIT', 'META') or a
+          path to such json file.
+        default: null
+      - name: max_scaled_scores
+        type: bool
+        doc: produce feature scores table scaled with max_scaler.
+        default: true
+      - name: sample_ratio
+        type: float
+        doc: percentage of the dataset the user whishes to compute the feature selection
+          process on.
+        default: null
+      - name: output_vector_name
+        type: float
+        doc: creates a new feature vector containing only the identifies features.
+        default: null
+      - name: ignore_type_errors
+        type: bool
+        doc: skips datatypes that are neither float nor int within the feature vector.
+        default: false
+      - name: is_feature_vector
+        type: bool
+        doc: bool stating if the data is passed as a feature vector.
+        default: false
+      outputs: []
+      lineno: 106
+      has_varargs: false
+      has_kwargs: false
+  description: Select features through multiple Statistical and Model filters
+  default_handler: feature_selection
+  disable_auto_mount: false
+  clone_target_dir: ''
+  env: []
+  priority_class_name: ''
+  preemption_mode: prevent
+  affinity: null
+  tolerations: null
+  security_context: {}
+verbose: false
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/static/item.html b/functions/master/feature_selection/1.4.0/static/item.html new file mode 100644 index 00000000..9f497252 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/item.html @@ -0,0 +1,47 @@ + + + + + + + + + + + Source + + + + +
+        
+apiVersion: v1
+categories:
+- data-preparation
+- machine-learning
+description: Select features through multiple Statistical and Model filters
+doc: ''
+example: feature_selection.ipynb
+generationDate: 2022-08-28:17-25
+hidden: false
+icon: ''
+labels:
+  author: orz
+maintainers: []
+marketplaceType: ''
+mlrunVersion: 1.1.0
+name: feature-selection
+platformVersion: 3.5.0
+spec:
+  filename: feature_selection.py
+  handler: feature_selection
+  image: mlrun/mlrun
+  kind: job
+  requirements: []
+url: ''
+version: 1.4.0
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/feature_selection/1.4.0/static/source.html b/functions/master/feature_selection/1.4.0/static/source.html new file mode 100644 index 00000000..40198374 --- /dev/null +++ b/functions/master/feature_selection/1.4.0/static/source.html @@ -0,0 +1,369 @@ + + + + + + + + + + + Source + + + + +
+        
+# Copyright 2019 Iguazio
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+import json
+import os
+
+import matplotlib.pyplot as plt
+import mlrun
+import mlrun.datastore
+import mlrun.utils
+import mlrun.feature_store as fs
+import numpy as np
+import pandas as pd
+import seaborn as sns
+from mlrun.artifacts import PlotArtifact
+from mlrun.datastore.targets import ParquetTarget
+# MLRun utils
+from mlrun.utils.helpers import create_class
+# Feature selection strategies
+from sklearn.feature_selection import SelectFromModel, SelectKBest
+# Scale feature scoresgit st
+from sklearn.preprocessing import MinMaxScaler
+# SKLearn estimators list
+from sklearn.utils import all_estimators
+
+DEFAULT_STAT_FILTERS = ["f_classif", "mutual_info_classif", "chi2", "f_regression"]
+DEFAULT_MODEL_FILTERS = {
+    "LinearSVC": "LinearSVC",
+    "LogisticRegression": "LogisticRegression",
+    "ExtraTreesClassifier": "ExtraTreesClassifier",
+}
+
+
+def _clear_current_figure():
+    """
+    Clear matplotlib current figure.
+    """
+    plt.cla()
+    plt.clf()
+    plt.close()
+
+
+def show_values_on_bars(axs, h_v="v", space=0.4):
+    def _show_on_single_plot(ax_):
+        if h_v == "v":
+            for p in ax_.patches:
+                _x = p.get_x() + p.get_width() / 2
+                _y = p.get_y() + p.get_height()
+                value = int(p.get_height())
+                ax_.text(_x, _y, value, ha="center")
+        elif h_v == "h":
+            for p in ax_.patches:
+                _x = p.get_x() + p.get_width() + float(space)
+                _y = p.get_y() + p.get_height()
+                value = int(p.get_width())
+                ax_.text(_x, _y, value, ha="left")
+
+    if isinstance(axs, np.ndarray):
+        for idx, ax in np.ndenumerate(axs):
+            _show_on_single_plot(ax)
+    else:
+        _show_on_single_plot(axs)
+
+
+def plot_stat(context, stat_name, stat_df):
+    _clear_current_figure()
+
+    # Add chart
+    ax = plt.axes()
+    stat_chart = sns.barplot(
+        x=stat_name,
+        y="index",
+        data=stat_df.sort_values(stat_name, ascending=False).reset_index(),
+        ax=ax,
+    )
+    plt.tight_layout()
+
+    for p in stat_chart.patches:
+        width = p.get_width()
+        plt.text(
+            5 + p.get_width(),
+            p.get_y() + 0.55 * p.get_height(),
+            "{:1.2f}".format(width),
+            ha="center",
+            va="center",
+        )
+
+    context.log_artifact(
+        PlotArtifact(f"{stat_name}", body=plt.gcf()),
+        local_path=os.path.join("plots", "feature_selection", f"{stat_name}.html"),
+    )
+    _clear_current_figure()
+
+
+def feature_selection(
+    context,
+    df_artifact,
+    k: int = 5,
+    min_votes: float = 0.5,
+    label_column: str = None,
+    stat_filters: list = None,
+    model_filters: dict = None,
+    max_scaled_scores: bool = True,
+    sample_ratio: float = None,
+    output_vector_name: float = None,
+    ignore_type_errors: bool = False,
+    is_feature_vector: bool = False,
+):
+    """
+    Applies selected feature selection statistical functions or models on our 'df_artifact'.
+
+    Each statistical function or model will vote for it's best K selected features.
+    If a feature has >= 'min_votes' votes, it will be selected.
+
+    :param context:             the function context.
+    :param df_artifact:         dataframe to pass as input.
+    :param k:                   number of top features to select from each statistical
+                                function or model.
+    :param min_votes:           minimal number of votes (from a model or by statistical
+                                function) needed for a feature to be selected.
+                                Can be specified by percentage of votes or absolute
+                                number of votes.
+    :param label_column:        ground-truth (y) labels.
+    :param stat_filters:        statistical functions to apply to the features
+                                (from sklearn.feature_selection).
+    :param model_filters:       models to use for feature evaluation, can be specified by
+                                model name (ex. LinearSVC), formalized json (contains 'CLASS',
+                                'FIT', 'META') or a path to such json file.
+    :param max_scaled_scores:   produce feature scores table scaled with max_scaler.
+    :param sample_ratio:        percentage of the dataset the user whishes to compute the feature selection process on.
+    :param output_vector_name:  creates a new feature vector containing only the identifies features.
+    :param ignore_type_errors:  skips datatypes that are neither float nor int within the feature vector.
+    :param is_feature_vector:   bool stating if the data is passed as a feature vector.
+    """
+    stat_filters = stat_filters or DEFAULT_STAT_FILTERS
+    model_filters = model_filters or DEFAULT_MODEL_FILTERS
+    # Check if df.meta is valid, if it is, look for a feature vector
+    store_uri_prefix, _ = mlrun.datastore.parse_store_uri(df_artifact.artifact_url)
+    is_feature_vector = mlrun.utils.StorePrefix.FeatureVector == store_uri_prefix
+
+    # Look inside meta.spec.label_feature to identify the label_column if the user did not specify it
+    if label_column is None:
+        if is_feature_vector:
+            label_column = df_artifact.meta.spec.label_feature.split(".")[1]
+        else:
+            raise ValueError("No label_column was given, please add a label_column.")
+
+    # Use the feature vector as dataframe
+    df = df_artifact.as_df()
+
+    # Ensure k is not bigger than the total number of features
+    if k > df.shape[1]:
+        raise ValueError(
+            f"K cannot be bigger than the total number of features ({df.shape[1]}). Please choose a smaller K."
+        )
+    elif k < 1:
+        raise ValueError("K cannot be smaller than 1. Please choose a bigger K.")
+
+    # Create a sample dataframe of the original feature vector
+    if sample_ratio:
+        df = (
+            df.groupby(label_column)
+            .apply(lambda x: x.sample(frac=sample_ratio))
+            .reset_index(drop=True)
+        )
+        df = df.dropna()
+
+    # Set feature vector and labels
+    y = df.pop(label_column)
+    X = df
+
+    if np.object_ in list(X.dtypes) and ignore_type_errors is False:
+        raise ValueError(
+            f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int."
+        )
+
+    # Create selected statistical estimators
+    stat_functions_list = {
+        stat_name: SelectKBest(
+            score_func=create_class(f"sklearn.feature_selection.{stat_name}"), k=k
+        )
+        for stat_name in stat_filters
+    }
+    requires_abs = ["chi2"]
+
+    # Run statistic filters
+    selected_features_agg = {}
+    stats_df = pd.DataFrame(index=X.columns).dropna()
+
+    for stat_name, stat_func in stat_functions_list.items():
+        try:
+            params = (X, y) if stat_name in requires_abs else (abs(X), y)
+            stat = stat_func.fit(*params)
+
+            # Collect stat function results
+            stat_df = pd.DataFrame(
+                index=X.columns, columns=[stat_name], data=stat.scores_
+            )
+            plot_stat(context, stat_name, stat_df)
+            stats_df = stats_df.join(stat_df)
+
+            # Select K Best features
+            selected_features = X.columns[stat_func.get_support()]
+            selected_features_agg[stat_name] = selected_features
+
+        except Exception as e:
+            context.logger.info(f"Couldn't calculate {stat_name} because of: {e}")
+
+    # Create models from class name / json file / json params
+    all_sklearn_estimators = dict(all_estimators()) if len(model_filters) > 0 else {}
+    selected_models = {}
+    for model_name, model in model_filters.items():
+        if ".json" in model:
+            current_model = json.load(open(model, "r"))
+            classifier_class = create_class(current_model["META"]["class"])
+            selected_models[model_name] = classifier_class(**current_model["CLASS"])
+        elif model in all_sklearn_estimators:
+            selected_models[model_name] = all_sklearn_estimators[model_name]()
+
+        else:
+            try:
+                current_model = json.loads(model)
+                classifier_class = create_class(current_model["META"]["class"])
+                selected_models[model_name] = classifier_class(**current_model["CLASS"])
+            except Exception as e:
+                context.logger.info(f"unable to load {model} because of: {e}")
+
+    # Run model filters
+    models_df = pd.DataFrame(index=X.columns)
+    for model_name, model in selected_models.items():
+
+        if model_name == "LogisticRegression":
+            model.set_params(solver="liblinear")
+
+        # Train model and get feature importance
+        select_from_model = SelectFromModel(model).fit(X, y)
+        feature_idx = select_from_model.get_support()
+        feature_names = X.columns[feature_idx]
+        selected_features_agg[model_name] = feature_names.tolist()
+
+        # Collect model feature importance
+        if hasattr(select_from_model.estimator_, "coef_"):
+            stat_df = select_from_model.estimator_.coef_
+        elif hasattr(select_from_model.estimator_, "feature_importances_"):
+            stat_df = select_from_model.estimator_.feature_importances_
+
+        stat_df = pd.DataFrame(index=X.columns, columns=[model_name], data=stat_df[0])
+        models_df = models_df.join(stat_df)
+
+        plot_stat(context, model_name, stat_df)
+
+    # Create feature_scores DF with stat & model filters scores
+    result_matrix_df = pd.concat([stats_df, models_df], axis=1, sort=False)
+    context.log_dataset(
+        key="feature_scores",
+        df=result_matrix_df,
+        local_path="feature_scores.parquet",
+        format="parquet",
+    )
+    if max_scaled_scores:
+        normalized_df = result_matrix_df.replace([np.inf, -np.inf], np.nan).values
+        min_max_scaler = MinMaxScaler()
+        normalized_df = min_max_scaler.fit_transform(normalized_df)
+        normalized_df = pd.DataFrame(
+            data=normalized_df,
+            columns=result_matrix_df.columns,
+            index=result_matrix_df.index,
+        )
+        context.log_dataset(
+            key="max_scaled_scores_feature_scores",
+            df=normalized_df,
+            local_path="max_scaled_scores_feature_scores.parquet",
+            format="parquet",
+        )
+
+    # Create feature count DataFrame
+    for test_name in selected_features_agg:
+        result_matrix_df[test_name] = [
+            1 if x in selected_features_agg[test_name] else 0 for x in X.columns
+        ]
+    result_matrix_df.loc[:, "num_votes"] = result_matrix_df.sum(axis=1)
+    context.log_dataset(
+        key="selected_features_count",
+        df=result_matrix_df,
+        local_path="selected_features_count.parquet",
+        format="parquet",
+    )
+
+    # How many votes are needed for a feature to be selected?
+    if isinstance(min_votes, int):
+        votes_needed = min_votes
+    else:
+        num_filters = len(stat_filters) + len(model_filters)
+        votes_needed = int(np.floor(num_filters * max(min(min_votes, 1), 0)))
+    context.logger.info(f"votes needed to be selected: {votes_needed}")
+
+    # Create final feature dataframe
+    selected_features = result_matrix_df[
+        result_matrix_df.num_votes >= votes_needed
+    ].index.tolist()
+    good_feature_df = df.loc[:, selected_features]
+    final_df = pd.concat([good_feature_df, y], axis=1)
+    context.log_dataset(
+        key="selected_features",
+        df=final_df,
+        local_path="selected_features.parquet",
+        format="parquet",
+    )
+
+    # Creating a new feature vector containing only the identified top features
+    if is_feature_vector and df_artifact.meta.spec.features and output_vector_name:
+        # Selecting the top K features from our top feature dataframe
+        selected_features = result_matrix_df.head(k).index
+
+        # Match the selected feature names to the FS Feature annotations
+        matched_selections = [
+            feature
+            for feature in list(df_artifact.meta.spec.features)
+            for selected in list(selected_features)
+            if feature.endswith(selected)
+        ]
+
+        # Defining our new feature vector
+        top_features_fv = fs.FeatureVector(
+            output_vector_name,
+            matched_selections,
+            label_feature="labels.label",
+            description="feature vector composed strictly of our top features",
+        )
+
+        # Saving
+        top_features_fv.save()
+        fs.get_offline_features(top_features_fv, target=ParquetTarget())
+
+        # Logging our new feature vector URI
+        context.log_result("top_features_vector", top_features_fv.uri)
+
+        
+    
+ + \ No newline at end of file diff --git a/functions/master/feature_selection/latest/src/feature_selection.py b/functions/master/feature_selection/latest/src/feature_selection.py index fddf3ed1..630a0969 100644 --- a/functions/master/feature_selection/latest/src/feature_selection.py +++ b/functions/master/feature_selection/latest/src/feature_selection.py @@ -180,7 +180,7 @@ def feature_selection( y = df.pop(label_column) X = df - if np.object in list(X.dtypes) and ignore_type_errors is False: + if np.object_ in list(X.dtypes) and ignore_type_errors is False: raise ValueError( f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int." ) diff --git a/functions/master/feature_selection/latest/src/function.yaml b/functions/master/feature_selection/latest/src/function.yaml index 37f5b2b7..0851f54d 100644 --- a/functions/master/feature_selection/latest/src/function.yaml +++ b/functions/master/feature_selection/latest/src/function.yaml @@ -2,7 +2,7 @@ kind: job metadata: name: feature-selection tag: '' - hash: 26a0b503f3248f852667d083b5a35b112254d067 + hash: 6dba16d062d81f78d3d210fee75edfe8b1def9b3 project: '' labels: author: orz @@ -14,10 +14,10 @@ spec: args: [] image: mlrun/mlrun build: - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdCBpbiBsaXN0KFguZHR5cGVzKSBhbmQgaWdub3JlX3R5cGVfZXJyb3JzIGlzIEZhbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYie2RmLnNlbGVjdF9kdHlwZXMoaW5jbHVkZT1bJ29iamVjdCddKS5jb2x1bW5zLnRvbGlzdCgpfSBhcmUgbmVpdGhlciBmbG9hdCBvciBpbnQuIgogICAgICAgICkKCiAgICAjIENyZWF0ZSBzZWxlY3RlZCBzdGF0aXN0aWNhbCBlc3RpbWF0b3JzCiAgICBzdGF0X2Z1bmN0aW9uc19saXN0ID0gewogICAgICAgIHN0YXRfbmFtZTogU2VsZWN0S0Jlc3QoCiAgICAgICAgICAgIHNjb3JlX2Z1bmM9Y3JlYXRlX2NsYXNzKGYic2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbi57c3RhdF9uYW1lfSIpLCBrPWsKICAgICAgICApCiAgICAgICAgZm9yIHN0YXRfbmFtZSBpbiBzdGF0X2ZpbHRlcnMKICAgIH0KICAgIHJlcXVpcmVzX2FicyA9IFsiY2hpMiJdCgogICAgIyBSdW4gc3RhdGlzdGljIGZpbHRlcnMKICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZyA9IHt9CiAgICBzdGF0c19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpLmRyb3BuYSgpCgogICAgZm9yIHN0YXRfbmFtZSwgc3RhdF9mdW5jIGluIHN0YXRfZnVuY3Rpb25zX2xpc3QuaXRlbXMoKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcmFtcyA9IChYLCB5KSBpZiBzdGF0X25hbWUgaW4gcmVxdWlyZXNfYWJzIGVsc2UgKGFicyhYKSwgeSkKICAgICAgICAgICAgc3RhdCA9IHN0YXRfZnVuYy5maXQoKnBhcmFtcykKCiAgICAgICAgICAgICMgQ29sbGVjdCBzdGF0IGZ1bmN0aW9uIHJlc3VsdHMKICAgICAgICAgICAgc3RhdF9kZiA9IHBkLkRhdGFGcmFtZSgKICAgICAgICAgICAgICAgIGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bc3RhdF9uYW1lXSwgZGF0YT1zdGF0LnNjb3Jlc18KICAgICAgICAgICAgKQogICAgICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgc3RhdF9uYW1lLCBzdGF0X2RmKQogICAgICAgICAgICBzdGF0c19kZiA9IHN0YXRzX2RmLmpvaW4oc3RhdF9kZikKCiAgICAgICAgICAgICMgU2VsZWN0IEsgQmVzdCBmZWF0dXJlcwogICAgICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IFguY29sdW1uc1tzdGF0X2Z1bmMuZ2V0X3N1cHBvcnQoKV0KICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW3N0YXRfbmFtZV0gPSBzZWxlY3RlZF9mZWF0dXJlcwoKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oZiJDb3VsZG4ndCBjYWxjdWxhdGUge3N0YXRfbmFtZX0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIENyZWF0ZSBtb2RlbHMgZnJvbSBjbGFzcyBuYW1lIC8ganNvbiBmaWxlIC8ganNvbiBwYXJhbXMKICAgIGFsbF9za2xlYXJuX2VzdGltYXRvcnMgPSBkaWN0KGFsbF9lc3RpbWF0b3JzKCkpIGlmIGxlbihtb2RlbF9maWx0ZXJzKSA+IDAgZWxzZSB7fQogICAgc2VsZWN0ZWRfbW9kZWxzID0ge30KICAgIGZvciBtb2RlbF9uYW1lLCBtb2RlbCBpbiBtb2RlbF9maWx0ZXJzLml0ZW1zKCk6CiAgICAgICAgaWYgIi5qc29uIiBpbiBtb2RlbDoKICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZChvcGVuKG1vZGVsLCAiciIpKQogICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gY2xhc3NpZmllcl9jbGFzcygqKmN1cnJlbnRfbW9kZWxbIkNMQVNTIl0pCiAgICAgICAgZWxpZiBtb2RlbCBpbiBhbGxfc2tsZWFybl9lc3RpbWF0b3JzOgogICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBhbGxfc2tsZWFybl9lc3RpbWF0b3JzW21vZGVsX25hbWVdKCkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZHMobW9kZWwpCiAgICAgICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidW5hYmxlIHRvIGxvYWQge21vZGVsfSBiZWNhdXNlIG9mOiB7ZX0iKQoKICAgICMgUnVuIG1vZGVsIGZpbHRlcnMKICAgIG1vZGVsc19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpCiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gc2VsZWN0ZWRfbW9kZWxzLml0ZW1zKCk6CgogICAgICAgIGlmIG1vZGVsX25hbWUgPT0gIkxvZ2lzdGljUmVncmVzc2lvbiI6CiAgICAgICAgICAgIG1vZGVsLnNldF9wYXJhbXMoc29sdmVyPSJsaWJsaW5lYXIiKQoKICAgICAgICAjIFRyYWluIG1vZGVsIGFuZCBnZXQgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgc2VsZWN0X2Zyb21fbW9kZWwgPSBTZWxlY3RGcm9tTW9kZWwobW9kZWwpLmZpdChYLCB5KQogICAgICAgIGZlYXR1cmVfaWR4ID0gc2VsZWN0X2Zyb21fbW9kZWwuZ2V0X3N1cHBvcnQoKQogICAgICAgIGZlYXR1cmVfbmFtZXMgPSBYLmNvbHVtbnNbZmVhdHVyZV9pZHhdCiAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW21vZGVsX25hbWVdID0gZmVhdHVyZV9uYW1lcy50b2xpc3QoKQoKICAgICAgICAjIENvbGxlY3QgbW9kZWwgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLCAiY29lZl8iKToKICAgICAgICAgICAgc3RhdF9kZiA9IHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8uY29lZl8KICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImZlYXR1cmVfaW1wb3J0YW5jZXNfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmZlYXR1cmVfaW1wb3J0YW5jZXNfCgogICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zLCBjb2x1bW5zPVttb2RlbF9uYW1lXSwgZGF0YT1zdGF0X2RmWzBdKQogICAgICAgIG1vZGVsc19kZiA9IG1vZGVsc19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgIHBsb3Rfc3RhdChjb250ZXh0LCBtb2RlbF9uYW1lLCBzdGF0X2RmKQoKICAgICMgQ3JlYXRlIGZlYXR1cmVfc2NvcmVzIERGIHdpdGggc3RhdCAmIG1vZGVsIGZpbHRlcnMgc2NvcmVzCiAgICByZXN1bHRfbWF0cml4X2RmID0gcGQuY29uY2F0KFtzdGF0c19kZiwgbW9kZWxzX2RmXSwgYXhpcz0xLCBzb3J0PUZhbHNlKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9ImZlYXR1cmVfc2NvcmVzIiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9ImZlYXR1cmVfc2NvcmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCiAgICBpZiBtYXhfc2NhbGVkX3Njb3JlczoKICAgICAgICBub3JtYWxpemVkX2RmID0gcmVzdWx0X21hdHJpeF9kZi5yZXBsYWNlKFtucC5pbmYsIC1ucC5pbmZdLCBucC5uYW4pLnZhbHVlcwogICAgICAgIG1pbl9tYXhfc2NhbGVyID0gTWluTWF4U2NhbGVyKCkKICAgICAgICBub3JtYWxpemVkX2RmID0gbWluX21heF9zY2FsZXIuZml0X3RyYW5zZm9ybShub3JtYWxpemVkX2RmKQogICAgICAgIG5vcm1hbGl6ZWRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgIGRhdGE9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgY29sdW1ucz1yZXN1bHRfbWF0cml4X2RmLmNvbHVtbnMsCiAgICAgICAgICAgIGluZGV4PXJlc3VsdF9tYXRyaXhfZGYuaW5kZXgsCiAgICAgICAgKQogICAgICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAgICAgIGtleT0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMiLAogICAgICAgICAgICBkZj1ub3JtYWxpemVkX2RmLAogICAgICAgICAgICBsb2NhbF9wYXRoPSJtYXhfc2NhbGVkX3Njb3Jlc19mZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICAgICApCgogICAgIyBDcmVhdGUgZmVhdHVyZSBjb3VudCBEYXRhRnJhbWUKICAgIGZvciB0ZXN0X25hbWUgaW4gc2VsZWN0ZWRfZmVhdHVyZXNfYWdnOgogICAgICAgIHJlc3VsdF9tYXRyaXhfZGZbdGVzdF9uYW1lXSA9IFsKICAgICAgICAgICAgMSBpZiB4IGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1t0ZXN0X25hbWVdIGVsc2UgMCBmb3IgeCBpbiBYLmNvbHVtbnMKICAgICAgICBdCiAgICByZXN1bHRfbWF0cml4X2RmLmxvY1s6LCAibnVtX3ZvdGVzIl0gPSByZXN1bHRfbWF0cml4X2RmLnN1bShheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQiLAogICAgICAgIGRmPXJlc3VsdF9tYXRyaXhfZGYsCiAgICAgICAgbG9jYWxfcGF0aD0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQucGFycXVldCIsCiAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICkKCiAgICAjIEhvdyBtYW55IHZvdGVzIGFyZSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZD8KICAgIGlmIGlzaW5zdGFuY2UobWluX3ZvdGVzLCBpbnQpOgogICAgICAgIHZvdGVzX25lZWRlZCA9IG1pbl92b3RlcwogICAgZWxzZToKICAgICAgICBudW1fZmlsdGVycyA9IGxlbihzdGF0X2ZpbHRlcnMpICsgbGVuKG1vZGVsX2ZpbHRlcnMpCiAgICAgICAgdm90ZXNfbmVlZGVkID0gaW50KG5wLmZsb29yKG51bV9maWx0ZXJzICogbWF4KG1pbihtaW5fdm90ZXMsIDEpLCAwKSkpCiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidm90ZXMgbmVlZGVkIHRvIGJlIHNlbGVjdGVkOiB7dm90ZXNfbmVlZGVkfSIpCgogICAgIyBDcmVhdGUgZmluYWwgZmVhdHVyZSBkYXRhZnJhbWUKICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZlsKICAgICAgICByZXN1bHRfbWF0cml4X2RmLm51bV92b3RlcyA+PSB2b3Rlc19uZWVkZWQKICAgIF0uaW5kZXgudG9saXN0KCkKICAgIGdvb2RfZmVhdHVyZV9kZiA9IGRmLmxvY1s6LCBzZWxlY3RlZF9mZWF0dXJlc10KICAgIGZpbmFsX2RmID0gcGQuY29uY2F0KFtnb29kX2ZlYXR1cmVfZGYsIHldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXMiLAogICAgICAgIGRmPWZpbmFsX2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBDcmVhdGluZyBhIG5ldyBmZWF0dXJlIHZlY3RvciBjb250YWluaW5nIG9ubHkgdGhlIGlkZW50aWZpZWQgdG9wIGZlYXR1cmVzCiAgICBpZiBpc19mZWF0dXJlX3ZlY3RvciBhbmQgZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzIGFuZCBvdXRwdXRfdmVjdG9yX25hbWU6CiAgICAgICAgIyBTZWxlY3RpbmcgdGhlIHRvcCBLIGZlYXR1cmVzIGZyb20gb3VyIHRvcCBmZWF0dXJlIGRhdGFmcmFtZQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZi5oZWFkKGspLmluZGV4CgogICAgICAgICMgTWF0Y2ggdGhlIHNlbGVjdGVkIGZlYXR1cmUgbmFtZXMgdG8gdGhlIEZTIEZlYXR1cmUgYW5ub3RhdGlvbnMKICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMgPSBbCiAgICAgICAgICAgIGZlYXR1cmUKICAgICAgICAgICAgZm9yIGZlYXR1cmUgaW4gbGlzdChkZl9hcnRpZmFjdC5tZXRhLnNwZWMuZmVhdHVyZXMpCiAgICAgICAgICAgIGZvciBzZWxlY3RlZCBpbiBsaXN0KHNlbGVjdGVkX2ZlYXR1cmVzKQogICAgICAgICAgICBpZiBmZWF0dXJlLmVuZHN3aXRoKHNlbGVjdGVkKQogICAgICAgIF0KCiAgICAgICAgIyBEZWZpbmluZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2ID0gZnMuRmVhdHVyZVZlY3RvcigKICAgICAgICAgICAgb3V0cHV0X3ZlY3Rvcl9uYW1lLAogICAgICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMsCiAgICAgICAgICAgIGxhYmVsX2ZlYXR1cmU9ImxhYmVscy5sYWJlbCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJmZWF0dXJlIHZlY3RvciBjb21wb3NlZCBzdHJpY3RseSBvZiBvdXIgdG9wIGZlYXR1cmVzIiwKICAgICAgICApCgogICAgICAgICMgU2F2aW5nCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2LnNhdmUoKQogICAgICAgIGZzLmdldF9vZmZsaW5lX2ZlYXR1cmVzKHRvcF9mZWF0dXJlc19mdiwgdGFyZ2V0PVBhcnF1ZXRUYXJnZXQoKSkKCiAgICAgICAgIyBMb2dnaW5nIG91ciBuZXcgZmVhdHVyZSB2ZWN0b3IgVVJJCiAgICAgICAgY29udGV4dC5sb2dfcmVzdWx0KCJ0b3BfZmVhdHVyZXNfdmVjdG9yIiwgdG9wX2ZlYXR1cmVzX2Z2LnVyaSkK + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdF8gaW4gbGlzdChYLmR0eXBlcykgYW5kIGlnbm9yZV90eXBlX2Vycm9ycyBpcyBGYWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIntkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9WydvYmplY3QnXSkuY29sdW1ucy50b2xpc3QoKX0gYXJlIG5laXRoZXIgZmxvYXQgb3IgaW50LiIKICAgICAgICApCgogICAgIyBDcmVhdGUgc2VsZWN0ZWQgc3RhdGlzdGljYWwgZXN0aW1hdG9ycwogICAgc3RhdF9mdW5jdGlvbnNfbGlzdCA9IHsKICAgICAgICBzdGF0X25hbWU6IFNlbGVjdEtCZXN0KAogICAgICAgICAgICBzY29yZV9mdW5jPWNyZWF0ZV9jbGFzcyhmInNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24ue3N0YXRfbmFtZX0iKSwgaz1rCiAgICAgICAgKQogICAgICAgIGZvciBzdGF0X25hbWUgaW4gc3RhdF9maWx0ZXJzCiAgICB9CiAgICByZXF1aXJlc19hYnMgPSBbImNoaTIiXQoKICAgICMgUnVuIHN0YXRpc3RpYyBmaWx0ZXJzCiAgICBzZWxlY3RlZF9mZWF0dXJlc19hZ2cgPSB7fQogICAgc3RhdHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKS5kcm9wbmEoKQoKICAgIGZvciBzdGF0X25hbWUsIHN0YXRfZnVuYyBpbiBzdGF0X2Z1bmN0aW9uc19saXN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJhbXMgPSAoWCwgeSkgaWYgc3RhdF9uYW1lIGluIHJlcXVpcmVzX2FicyBlbHNlIChhYnMoWCksIHkpCiAgICAgICAgICAgIHN0YXQgPSBzdGF0X2Z1bmMuZml0KCpwYXJhbXMpCgogICAgICAgICAgICAjIENvbGxlY3Qgc3RhdCBmdW5jdGlvbiByZXN1bHRzCiAgICAgICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICBpbmRleD1YLmNvbHVtbnMsIGNvbHVtbnM9W3N0YXRfbmFtZV0sIGRhdGE9c3RhdC5zY29yZXNfCiAgICAgICAgICAgICkKICAgICAgICAgICAgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZikKICAgICAgICAgICAgc3RhdHNfZGYgPSBzdGF0c19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgICAgICAjIFNlbGVjdCBLIEJlc3QgZmVhdHVyZXMKICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXMgPSBYLmNvbHVtbnNbc3RhdF9mdW5jLmdldF9zdXBwb3J0KCldCiAgICAgICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1tzdGF0X25hbWVdID0gc2VsZWN0ZWRfZmVhdHVyZXMKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiQ291bGRuJ3QgY2FsY3VsYXRlIHtzdGF0X25hbWV9IGJlY2F1c2Ugb2Y6IHtlfSIpCgogICAgIyBDcmVhdGUgbW9kZWxzIGZyb20gY2xhc3MgbmFtZSAvIGpzb24gZmlsZSAvIGpzb24gcGFyYW1zCiAgICBhbGxfc2tsZWFybl9lc3RpbWF0b3JzID0gZGljdChhbGxfZXN0aW1hdG9ycygpKSBpZiBsZW4obW9kZWxfZmlsdGVycykgPiAwIGVsc2Uge30KICAgIHNlbGVjdGVkX21vZGVscyA9IHt9CiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gbW9kZWxfZmlsdGVycy5pdGVtcygpOgogICAgICAgIGlmICIuanNvbiIgaW4gbW9kZWw6CiAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWQob3Blbihtb2RlbCwgInIiKSkKICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgIGVsaWYgbW9kZWwgaW4gYWxsX3NrbGVhcm5fZXN0aW1hdG9yczoKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gYWxsX3NrbGVhcm5fZXN0aW1hdG9yc1ttb2RlbF9uYW1lXSgpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWRzKG1vZGVsKQogICAgICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBjbGFzc2lmaWVyX2NsYXNzKCoqY3VycmVudF9tb2RlbFsiQ0xBU1MiXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInVuYWJsZSB0byBsb2FkIHttb2RlbH0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIFJ1biBtb2RlbCBmaWx0ZXJzCiAgICBtb2RlbHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKQogICAgZm9yIG1vZGVsX25hbWUsIG1vZGVsIGluIHNlbGVjdGVkX21vZGVscy5pdGVtcygpOgoKICAgICAgICBpZiBtb2RlbF9uYW1lID09ICJMb2dpc3RpY1JlZ3Jlc3Npb24iOgogICAgICAgICAgICBtb2RlbC5zZXRfcGFyYW1zKHNvbHZlcj0ibGlibGluZWFyIikKCiAgICAgICAgIyBUcmFpbiBtb2RlbCBhbmQgZ2V0IGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIHNlbGVjdF9mcm9tX21vZGVsID0gU2VsZWN0RnJvbU1vZGVsKG1vZGVsKS5maXQoWCwgeSkKICAgICAgICBmZWF0dXJlX2lkeCA9IHNlbGVjdF9mcm9tX21vZGVsLmdldF9zdXBwb3J0KCkKICAgICAgICBmZWF0dXJlX25hbWVzID0gWC5jb2x1bW5zW2ZlYXR1cmVfaWR4XQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1ttb2RlbF9uYW1lXSA9IGZlYXR1cmVfbmFtZXMudG9saXN0KCkKCiAgICAgICAgIyBDb2xsZWN0IG1vZGVsIGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImNvZWZfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmNvZWZfCiAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8sICJmZWF0dXJlX2ltcG9ydGFuY2VzXyIpOgogICAgICAgICAgICBzdGF0X2RmID0gc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXy5mZWF0dXJlX2ltcG9ydGFuY2VzXwoKICAgICAgICBzdGF0X2RmID0gcGQuRGF0YUZyYW1lKGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bbW9kZWxfbmFtZV0sIGRhdGE9c3RhdF9kZlswXSkKICAgICAgICBtb2RlbHNfZGYgPSBtb2RlbHNfZGYuam9pbihzdGF0X2RmKQoKICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgbW9kZWxfbmFtZSwgc3RhdF9kZikKCiAgICAjIENyZWF0ZSBmZWF0dXJlX3Njb3JlcyBERiB3aXRoIHN0YXQgJiBtb2RlbCBmaWx0ZXJzIHNjb3JlcwogICAgcmVzdWx0X21hdHJpeF9kZiA9IHBkLmNvbmNhdChbc3RhdHNfZGYsIG1vZGVsc19kZl0sIGF4aXM9MSwgc29ydD1GYWxzZSkKICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAga2V5PSJmZWF0dXJlX3Njb3JlcyIsCiAgICAgICAgZGY9cmVzdWx0X21hdHJpeF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJmZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQogICAgaWYgbWF4X3NjYWxlZF9zY29yZXM6CiAgICAgICAgbm9ybWFsaXplZF9kZiA9IHJlc3VsdF9tYXRyaXhfZGYucmVwbGFjZShbbnAuaW5mLCAtbnAuaW5mXSwgbnAubmFuKS52YWx1ZXMKICAgICAgICBtaW5fbWF4X3NjYWxlciA9IE1pbk1heFNjYWxlcigpCiAgICAgICAgbm9ybWFsaXplZF9kZiA9IG1pbl9tYXhfc2NhbGVyLmZpdF90cmFuc2Zvcm0obm9ybWFsaXplZF9kZikKICAgICAgICBub3JtYWxpemVkX2RmID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICBkYXRhPW5vcm1hbGl6ZWRfZGYsCiAgICAgICAgICAgIGNvbHVtbnM9cmVzdWx0X21hdHJpeF9kZi5jb2x1bW5zLAogICAgICAgICAgICBpbmRleD1yZXN1bHRfbWF0cml4X2RmLmluZGV4LAogICAgICAgICkKICAgICAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgICAgICBrZXk9Im1heF9zY2FsZWRfc2NvcmVzX2ZlYXR1cmVfc2NvcmVzIiwKICAgICAgICAgICAgZGY9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgbG9jYWxfcGF0aD0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMucGFycXVldCIsCiAgICAgICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICAgICAgKQoKICAgICMgQ3JlYXRlIGZlYXR1cmUgY291bnQgRGF0YUZyYW1lCiAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZzoKICAgICAgICByZXN1bHRfbWF0cml4X2RmW3Rlc3RfbmFtZV0gPSBbCiAgICAgICAgICAgIDEgaWYgeCBpbiBzZWxlY3RlZF9mZWF0dXJlc19hZ2dbdGVzdF9uYW1lXSBlbHNlIDAgZm9yIHggaW4gWC5jb2x1bW5zCiAgICAgICAgXQogICAgcmVzdWx0X21hdHJpeF9kZi5sb2NbOiwgIm51bV92b3RlcyJdID0gcmVzdWx0X21hdHJpeF9kZi5zdW0oYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50IiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50LnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBIb3cgbWFueSB2b3RlcyBhcmUgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQ/CiAgICBpZiBpc2luc3RhbmNlKG1pbl92b3RlcywgaW50KToKICAgICAgICB2b3Rlc19uZWVkZWQgPSBtaW5fdm90ZXMKICAgIGVsc2U6CiAgICAgICAgbnVtX2ZpbHRlcnMgPSBsZW4oc3RhdF9maWx0ZXJzKSArIGxlbihtb2RlbF9maWx0ZXJzKQogICAgICAgIHZvdGVzX25lZWRlZCA9IGludChucC5mbG9vcihudW1fZmlsdGVycyAqIG1heChtaW4obWluX3ZvdGVzLCAxKSwgMCkpKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInZvdGVzIG5lZWRlZCB0byBiZSBzZWxlY3RlZDoge3ZvdGVzX25lZWRlZH0iKQoKICAgICMgQ3JlYXRlIGZpbmFsIGZlYXR1cmUgZGF0YWZyYW1lCiAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGZbCiAgICAgICAgcmVzdWx0X21hdHJpeF9kZi5udW1fdm90ZXMgPj0gdm90ZXNfbmVlZGVkCiAgICBdLmluZGV4LnRvbGlzdCgpCiAgICBnb29kX2ZlYXR1cmVfZGYgPSBkZi5sb2NbOiwgc2VsZWN0ZWRfZmVhdHVyZXNdCiAgICBmaW5hbF9kZiA9IHBkLmNvbmNhdChbZ29vZF9mZWF0dXJlX2RmLCB5XSwgYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzIiwKICAgICAgICBkZj1maW5hbF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJzZWxlY3RlZF9mZWF0dXJlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQoKICAgICMgQ3JlYXRpbmcgYSBuZXcgZmVhdHVyZSB2ZWN0b3IgY29udGFpbmluZyBvbmx5IHRoZSBpZGVudGlmaWVkIHRvcCBmZWF0dXJlcwogICAgaWYgaXNfZmVhdHVyZV92ZWN0b3IgYW5kIGRmX2FydGlmYWN0Lm1ldGEuc3BlYy5mZWF0dXJlcyBhbmQgb3V0cHV0X3ZlY3Rvcl9uYW1lOgogICAgICAgICMgU2VsZWN0aW5nIHRoZSB0b3AgSyBmZWF0dXJlcyBmcm9tIG91ciB0b3AgZmVhdHVyZSBkYXRhZnJhbWUKICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGYuaGVhZChrKS5pbmRleAoKICAgICAgICAjIE1hdGNoIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG5hbWVzIHRvIHRoZSBGUyBGZWF0dXJlIGFubm90YXRpb25zCiAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zID0gWwogICAgICAgICAgICBmZWF0dXJlCiAgICAgICAgICAgIGZvciBmZWF0dXJlIGluIGxpc3QoZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzKQogICAgICAgICAgICBmb3Igc2VsZWN0ZWQgaW4gbGlzdChzZWxlY3RlZF9mZWF0dXJlcykKICAgICAgICAgICAgaWYgZmVhdHVyZS5lbmRzd2l0aChzZWxlY3RlZCkKICAgICAgICBdCgogICAgICAgICMgRGVmaW5pbmcgb3VyIG5ldyBmZWF0dXJlIHZlY3RvcgogICAgICAgIHRvcF9mZWF0dXJlc19mdiA9IGZzLkZlYXR1cmVWZWN0b3IoCiAgICAgICAgICAgIG91dHB1dF92ZWN0b3JfbmFtZSwKICAgICAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zLAogICAgICAgICAgICBsYWJlbF9mZWF0dXJlPSJsYWJlbHMubGFiZWwiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj0iZmVhdHVyZSB2ZWN0b3IgY29tcG9zZWQgc3RyaWN0bHkgb2Ygb3VyIHRvcCBmZWF0dXJlcyIsCiAgICAgICAgKQoKICAgICAgICAjIFNhdmluZwogICAgICAgIHRvcF9mZWF0dXJlc19mdi5zYXZlKCkKICAgICAgICBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcyh0b3BfZmVhdHVyZXNfZnYsIHRhcmdldD1QYXJxdWV0VGFyZ2V0KCkpCgogICAgICAgICMgTG9nZ2luZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yIFVSSQogICAgICAgIGNvbnRleHQubG9nX3Jlc3VsdCgidG9wX2ZlYXR1cmVzX3ZlY3RvciIsIHRvcF9mZWF0dXJlc19mdi51cmkpCg== commands: [] - code_origin: https://github.com/yonishelach/functions.git#ce312b8eb32691f56a57f53c0423c6c909b43d27:/Users/Yonatan_Shelach/projects/functions/feature_selection/feature_selection.py - origin_filename: /Users/Yonatan_Shelach/projects/functions/feature_selection/feature_selection.py + code_origin: '' + origin_filename: '' requirements: [] entry_points: show_values_on_bars: @@ -25,27 +25,25 @@ spec: doc: '' parameters: - name: axs - default: '' - name: h_v default: v - name: space default: 0.4 - outputs: - - default: '' + outputs: [] lineno: 54 + has_varargs: false + has_kwargs: false plot_stat: name: plot_stat doc: '' parameters: - name: context - default: '' - name: stat_name - default: '' - name: stat_df - default: '' - outputs: - - default: '' + outputs: [] lineno: 76 + has_varargs: false + has_kwargs: false feature_selection: name: feature_selection doc: 'Applies selected feature selection statistical functions or models on @@ -58,10 +56,8 @@ spec: parameters: - name: context doc: the function context. - default: '' - name: df_artifact doc: dataframe to pass as input. - default: '' - name: k type: int doc: number of top features to select from each statistical function or model. @@ -107,9 +103,10 @@ spec: type: bool doc: bool stating if the data is passed as a feature vector. default: false - outputs: - - default: '' + outputs: [] lineno: 106 + has_varargs: false + has_kwargs: false description: Select features through multiple Statistical and Model filters default_handler: feature_selection disable_auto_mount: false diff --git a/functions/master/feature_selection/latest/src/item.yaml b/functions/master/feature_selection/latest/src/item.yaml index eeea353b..7e80a417 100644 --- a/functions/master/feature_selection/latest/src/item.yaml +++ b/functions/master/feature_selection/latest/src/item.yaml @@ -22,4 +22,4 @@ spec: kind: job requirements: [] url: '' -version: 1.3.0 +version: 1.4.0 diff --git a/functions/master/feature_selection/latest/static/feature_selection.html b/functions/master/feature_selection/latest/static/feature_selection.html index c7f9aacf..2c26b03b 100644 --- a/functions/master/feature_selection/latest/static/feature_selection.html +++ b/functions/master/feature_selection/latest/static/feature_selection.html @@ -296,7 +296,7 @@

Source code for feature_selection.feature_selection

y = df.pop(label_column) X = df - if np.object in list(X.dtypes) and ignore_type_errors is False: + if np.object_ in list(X.dtypes) and ignore_type_errors is False: raise ValueError( f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int." ) diff --git a/functions/master/feature_selection/latest/static/function.html b/functions/master/feature_selection/latest/static/function.html index 448b2170..b09632f5 100644 --- a/functions/master/feature_selection/latest/static/function.html +++ b/functions/master/feature_selection/latest/static/function.html @@ -19,7 +19,7 @@ metadata: name: feature-selection tag: '' - hash: 26a0b503f3248f852667d083b5a35b112254d067 + hash: 6dba16d062d81f78d3d210fee75edfe8b1def9b3 project: '' labels: author: orz @@ -31,10 +31,10 @@ args: [] image: mlrun/mlrun build: - functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdCBpbiBsaXN0KFguZHR5cGVzKSBhbmQgaWdub3JlX3R5cGVfZXJyb3JzIGlzIEZhbHNlOgogICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgIGYie2RmLnNlbGVjdF9kdHlwZXMoaW5jbHVkZT1bJ29iamVjdCddKS5jb2x1bW5zLnRvbGlzdCgpfSBhcmUgbmVpdGhlciBmbG9hdCBvciBpbnQuIgogICAgICAgICkKCiAgICAjIENyZWF0ZSBzZWxlY3RlZCBzdGF0aXN0aWNhbCBlc3RpbWF0b3JzCiAgICBzdGF0X2Z1bmN0aW9uc19saXN0ID0gewogICAgICAgIHN0YXRfbmFtZTogU2VsZWN0S0Jlc3QoCiAgICAgICAgICAgIHNjb3JlX2Z1bmM9Y3JlYXRlX2NsYXNzKGYic2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbi57c3RhdF9uYW1lfSIpLCBrPWsKICAgICAgICApCiAgICAgICAgZm9yIHN0YXRfbmFtZSBpbiBzdGF0X2ZpbHRlcnMKICAgIH0KICAgIHJlcXVpcmVzX2FicyA9IFsiY2hpMiJdCgogICAgIyBSdW4gc3RhdGlzdGljIGZpbHRlcnMKICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZyA9IHt9CiAgICBzdGF0c19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpLmRyb3BuYSgpCgogICAgZm9yIHN0YXRfbmFtZSwgc3RhdF9mdW5jIGluIHN0YXRfZnVuY3Rpb25zX2xpc3QuaXRlbXMoKToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHBhcmFtcyA9IChYLCB5KSBpZiBzdGF0X25hbWUgaW4gcmVxdWlyZXNfYWJzIGVsc2UgKGFicyhYKSwgeSkKICAgICAgICAgICAgc3RhdCA9IHN0YXRfZnVuYy5maXQoKnBhcmFtcykKCiAgICAgICAgICAgICMgQ29sbGVjdCBzdGF0IGZ1bmN0aW9uIHJlc3VsdHMKICAgICAgICAgICAgc3RhdF9kZiA9IHBkLkRhdGFGcmFtZSgKICAgICAgICAgICAgICAgIGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bc3RhdF9uYW1lXSwgZGF0YT1zdGF0LnNjb3Jlc18KICAgICAgICAgICAgKQogICAgICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgc3RhdF9uYW1lLCBzdGF0X2RmKQogICAgICAgICAgICBzdGF0c19kZiA9IHN0YXRzX2RmLmpvaW4oc3RhdF9kZikKCiAgICAgICAgICAgICMgU2VsZWN0IEsgQmVzdCBmZWF0dXJlcwogICAgICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IFguY29sdW1uc1tzdGF0X2Z1bmMuZ2V0X3N1cHBvcnQoKV0KICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW3N0YXRfbmFtZV0gPSBzZWxlY3RlZF9mZWF0dXJlcwoKICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLmluZm8oZiJDb3VsZG4ndCBjYWxjdWxhdGUge3N0YXRfbmFtZX0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIENyZWF0ZSBtb2RlbHMgZnJvbSBjbGFzcyBuYW1lIC8ganNvbiBmaWxlIC8ganNvbiBwYXJhbXMKICAgIGFsbF9za2xlYXJuX2VzdGltYXRvcnMgPSBkaWN0KGFsbF9lc3RpbWF0b3JzKCkpIGlmIGxlbihtb2RlbF9maWx0ZXJzKSA+IDAgZWxzZSB7fQogICAgc2VsZWN0ZWRfbW9kZWxzID0ge30KICAgIGZvciBtb2RlbF9uYW1lLCBtb2RlbCBpbiBtb2RlbF9maWx0ZXJzLml0ZW1zKCk6CiAgICAgICAgaWYgIi5qc29uIiBpbiBtb2RlbDoKICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZChvcGVuKG1vZGVsLCAiciIpKQogICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gY2xhc3NpZmllcl9jbGFzcygqKmN1cnJlbnRfbW9kZWxbIkNMQVNTIl0pCiAgICAgICAgZWxpZiBtb2RlbCBpbiBhbGxfc2tsZWFybl9lc3RpbWF0b3JzOgogICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBhbGxfc2tsZWFybl9lc3RpbWF0b3JzW21vZGVsX25hbWVdKCkKCiAgICAgICAgZWxzZToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY3VycmVudF9tb2RlbCA9IGpzb24ubG9hZHMobW9kZWwpCiAgICAgICAgICAgICAgICBjbGFzc2lmaWVyX2NsYXNzID0gY3JlYXRlX2NsYXNzKGN1cnJlbnRfbW9kZWxbIk1FVEEiXVsiY2xhc3MiXSkKICAgICAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidW5hYmxlIHRvIGxvYWQge21vZGVsfSBiZWNhdXNlIG9mOiB7ZX0iKQoKICAgICMgUnVuIG1vZGVsIGZpbHRlcnMKICAgIG1vZGVsc19kZiA9IHBkLkRhdGFGcmFtZShpbmRleD1YLmNvbHVtbnMpCiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gc2VsZWN0ZWRfbW9kZWxzLml0ZW1zKCk6CgogICAgICAgIGlmIG1vZGVsX25hbWUgPT0gIkxvZ2lzdGljUmVncmVzc2lvbiI6CiAgICAgICAgICAgIG1vZGVsLnNldF9wYXJhbXMoc29sdmVyPSJsaWJsaW5lYXIiKQoKICAgICAgICAjIFRyYWluIG1vZGVsIGFuZCBnZXQgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgc2VsZWN0X2Zyb21fbW9kZWwgPSBTZWxlY3RGcm9tTW9kZWwobW9kZWwpLmZpdChYLCB5KQogICAgICAgIGZlYXR1cmVfaWR4ID0gc2VsZWN0X2Zyb21fbW9kZWwuZ2V0X3N1cHBvcnQoKQogICAgICAgIGZlYXR1cmVfbmFtZXMgPSBYLmNvbHVtbnNbZmVhdHVyZV9pZHhdCiAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXNfYWdnW21vZGVsX25hbWVdID0gZmVhdHVyZV9uYW1lcy50b2xpc3QoKQoKICAgICAgICAjIENvbGxlY3QgbW9kZWwgZmVhdHVyZSBpbXBvcnRhbmNlCiAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLCAiY29lZl8iKToKICAgICAgICAgICAgc3RhdF9kZiA9IHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8uY29lZl8KICAgICAgICBlbGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImZlYXR1cmVfaW1wb3J0YW5jZXNfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmZlYXR1cmVfaW1wb3J0YW5jZXNfCgogICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zLCBjb2x1bW5zPVttb2RlbF9uYW1lXSwgZGF0YT1zdGF0X2RmWzBdKQogICAgICAgIG1vZGVsc19kZiA9IG1vZGVsc19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgIHBsb3Rfc3RhdChjb250ZXh0LCBtb2RlbF9uYW1lLCBzdGF0X2RmKQoKICAgICMgQ3JlYXRlIGZlYXR1cmVfc2NvcmVzIERGIHdpdGggc3RhdCAmIG1vZGVsIGZpbHRlcnMgc2NvcmVzCiAgICByZXN1bHRfbWF0cml4X2RmID0gcGQuY29uY2F0KFtzdGF0c19kZiwgbW9kZWxzX2RmXSwgYXhpcz0xLCBzb3J0PUZhbHNlKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9ImZlYXR1cmVfc2NvcmVzIiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9ImZlYXR1cmVfc2NvcmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCiAgICBpZiBtYXhfc2NhbGVkX3Njb3JlczoKICAgICAgICBub3JtYWxpemVkX2RmID0gcmVzdWx0X21hdHJpeF9kZi5yZXBsYWNlKFtucC5pbmYsIC1ucC5pbmZdLCBucC5uYW4pLnZhbHVlcwogICAgICAgIG1pbl9tYXhfc2NhbGVyID0gTWluTWF4U2NhbGVyKCkKICAgICAgICBub3JtYWxpemVkX2RmID0gbWluX21heF9zY2FsZXIuZml0X3RyYW5zZm9ybShub3JtYWxpemVkX2RmKQogICAgICAgIG5vcm1hbGl6ZWRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgIGRhdGE9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgY29sdW1ucz1yZXN1bHRfbWF0cml4X2RmLmNvbHVtbnMsCiAgICAgICAgICAgIGluZGV4PXJlc3VsdF9tYXRyaXhfZGYuaW5kZXgsCiAgICAgICAgKQogICAgICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAgICAgIGtleT0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMiLAogICAgICAgICAgICBkZj1ub3JtYWxpemVkX2RmLAogICAgICAgICAgICBsb2NhbF9wYXRoPSJtYXhfc2NhbGVkX3Njb3Jlc19mZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICAgICApCgogICAgIyBDcmVhdGUgZmVhdHVyZSBjb3VudCBEYXRhRnJhbWUKICAgIGZvciB0ZXN0X25hbWUgaW4gc2VsZWN0ZWRfZmVhdHVyZXNfYWdnOgogICAgICAgIHJlc3VsdF9tYXRyaXhfZGZbdGVzdF9uYW1lXSA9IFsKICAgICAgICAgICAgMSBpZiB4IGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1t0ZXN0X25hbWVdIGVsc2UgMCBmb3IgeCBpbiBYLmNvbHVtbnMKICAgICAgICBdCiAgICByZXN1bHRfbWF0cml4X2RmLmxvY1s6LCAibnVtX3ZvdGVzIl0gPSByZXN1bHRfbWF0cml4X2RmLnN1bShheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQiLAogICAgICAgIGRmPXJlc3VsdF9tYXRyaXhfZGYsCiAgICAgICAgbG9jYWxfcGF0aD0ic2VsZWN0ZWRfZmVhdHVyZXNfY291bnQucGFycXVldCIsCiAgICAgICAgZm9ybWF0PSJwYXJxdWV0IiwKICAgICkKCiAgICAjIEhvdyBtYW55IHZvdGVzIGFyZSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZD8KICAgIGlmIGlzaW5zdGFuY2UobWluX3ZvdGVzLCBpbnQpOgogICAgICAgIHZvdGVzX25lZWRlZCA9IG1pbl92b3RlcwogICAgZWxzZToKICAgICAgICBudW1fZmlsdGVycyA9IGxlbihzdGF0X2ZpbHRlcnMpICsgbGVuKG1vZGVsX2ZpbHRlcnMpCiAgICAgICAgdm90ZXNfbmVlZGVkID0gaW50KG5wLmZsb29yKG51bV9maWx0ZXJzICogbWF4KG1pbihtaW5fdm90ZXMsIDEpLCAwKSkpCiAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYidm90ZXMgbmVlZGVkIHRvIGJlIHNlbGVjdGVkOiB7dm90ZXNfbmVlZGVkfSIpCgogICAgIyBDcmVhdGUgZmluYWwgZmVhdHVyZSBkYXRhZnJhbWUKICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZlsKICAgICAgICByZXN1bHRfbWF0cml4X2RmLm51bV92b3RlcyA+PSB2b3Rlc19uZWVkZWQKICAgIF0uaW5kZXgudG9saXN0KCkKICAgIGdvb2RfZmVhdHVyZV9kZiA9IGRmLmxvY1s6LCBzZWxlY3RlZF9mZWF0dXJlc10KICAgIGZpbmFsX2RmID0gcGQuY29uY2F0KFtnb29kX2ZlYXR1cmVfZGYsIHldLCBheGlzPTEpCiAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgIGtleT0ic2VsZWN0ZWRfZmVhdHVyZXMiLAogICAgICAgIGRmPWZpbmFsX2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzLnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBDcmVhdGluZyBhIG5ldyBmZWF0dXJlIHZlY3RvciBjb250YWluaW5nIG9ubHkgdGhlIGlkZW50aWZpZWQgdG9wIGZlYXR1cmVzCiAgICBpZiBpc19mZWF0dXJlX3ZlY3RvciBhbmQgZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzIGFuZCBvdXRwdXRfdmVjdG9yX25hbWU6CiAgICAgICAgIyBTZWxlY3RpbmcgdGhlIHRvcCBLIGZlYXR1cmVzIGZyb20gb3VyIHRvcCBmZWF0dXJlIGRhdGFmcmFtZQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzID0gcmVzdWx0X21hdHJpeF9kZi5oZWFkKGspLmluZGV4CgogICAgICAgICMgTWF0Y2ggdGhlIHNlbGVjdGVkIGZlYXR1cmUgbmFtZXMgdG8gdGhlIEZTIEZlYXR1cmUgYW5ub3RhdGlvbnMKICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMgPSBbCiAgICAgICAgICAgIGZlYXR1cmUKICAgICAgICAgICAgZm9yIGZlYXR1cmUgaW4gbGlzdChkZl9hcnRpZmFjdC5tZXRhLnNwZWMuZmVhdHVyZXMpCiAgICAgICAgICAgIGZvciBzZWxlY3RlZCBpbiBsaXN0KHNlbGVjdGVkX2ZlYXR1cmVzKQogICAgICAgICAgICBpZiBmZWF0dXJlLmVuZHN3aXRoKHNlbGVjdGVkKQogICAgICAgIF0KCiAgICAgICAgIyBEZWZpbmluZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2ID0gZnMuRmVhdHVyZVZlY3RvcigKICAgICAgICAgICAgb3V0cHV0X3ZlY3Rvcl9uYW1lLAogICAgICAgICAgICBtYXRjaGVkX3NlbGVjdGlvbnMsCiAgICAgICAgICAgIGxhYmVsX2ZlYXR1cmU9ImxhYmVscy5sYWJlbCIsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJmZWF0dXJlIHZlY3RvciBjb21wb3NlZCBzdHJpY3RseSBvZiBvdXIgdG9wIGZlYXR1cmVzIiwKICAgICAgICApCgogICAgICAgICMgU2F2aW5nCiAgICAgICAgdG9wX2ZlYXR1cmVzX2Z2LnNhdmUoKQogICAgICAgIGZzLmdldF9vZmZsaW5lX2ZlYXR1cmVzKHRvcF9mZWF0dXJlc19mdiwgdGFyZ2V0PVBhcnF1ZXRUYXJnZXQoKSkKCiAgICAgICAgIyBMb2dnaW5nIG91ciBuZXcgZmVhdHVyZSB2ZWN0b3IgVVJJCiAgICAgICAgY29udGV4dC5sb2dfcmVzdWx0KCJ0b3BfZmVhdHVyZXNfdmVjdG9yIiwgdG9wX2ZlYXR1cmVzX2Z2LnVyaSkK + functionSourceCode: IyBDb3B5cmlnaHQgMjAxOSBJZ3VhemlvCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiMKaW1wb3J0IGpzb24KaW1wb3J0IG9zCgppbXBvcnQgbWF0cGxvdGxpYi5weXBsb3QgYXMgcGx0CmltcG9ydCBtbHJ1bgppbXBvcnQgbWxydW4uZGF0YXN0b3JlCmltcG9ydCBtbHJ1bi51dGlscwppbXBvcnQgbWxydW4uZmVhdHVyZV9zdG9yZSBhcyBmcwppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHBhbmRhcyBhcyBwZAppbXBvcnQgc2VhYm9ybiBhcyBzbnMKZnJvbSBtbHJ1bi5hcnRpZmFjdHMgaW1wb3J0IFBsb3RBcnRpZmFjdApmcm9tIG1scnVuLmRhdGFzdG9yZS50YXJnZXRzIGltcG9ydCBQYXJxdWV0VGFyZ2V0CiMgTUxSdW4gdXRpbHMKZnJvbSBtbHJ1bi51dGlscy5oZWxwZXJzIGltcG9ydCBjcmVhdGVfY2xhc3MKIyBGZWF0dXJlIHNlbGVjdGlvbiBzdHJhdGVnaWVzCmZyb20gc2tsZWFybi5mZWF0dXJlX3NlbGVjdGlvbiBpbXBvcnQgU2VsZWN0RnJvbU1vZGVsLCBTZWxlY3RLQmVzdAojIFNjYWxlIGZlYXR1cmUgc2NvcmVzZ2l0IHN0CmZyb20gc2tsZWFybi5wcmVwcm9jZXNzaW5nIGltcG9ydCBNaW5NYXhTY2FsZXIKIyBTS0xlYXJuIGVzdGltYXRvcnMgbGlzdApmcm9tIHNrbGVhcm4udXRpbHMgaW1wb3J0IGFsbF9lc3RpbWF0b3JzCgpERUZBVUxUX1NUQVRfRklMVEVSUyA9IFsiZl9jbGFzc2lmIiwgIm11dHVhbF9pbmZvX2NsYXNzaWYiLCAiY2hpMiIsICJmX3JlZ3Jlc3Npb24iXQpERUZBVUxUX01PREVMX0ZJTFRFUlMgPSB7CiAgICAiTGluZWFyU1ZDIjogIkxpbmVhclNWQyIsCiAgICAiTG9naXN0aWNSZWdyZXNzaW9uIjogIkxvZ2lzdGljUmVncmVzc2lvbiIsCiAgICAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiOiAiRXh0cmFUcmVlc0NsYXNzaWZpZXIiLAp9CgoKZGVmIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpOgogICAgIiIiCiAgICBDbGVhciBtYXRwbG90bGliIGN1cnJlbnQgZmlndXJlLgogICAgIiIiCiAgICBwbHQuY2xhKCkKICAgIHBsdC5jbGYoKQogICAgcGx0LmNsb3NlKCkKCgpkZWYgc2hvd192YWx1ZXNfb25fYmFycyhheHMsIGhfdj0idiIsIHNwYWNlPTAuNCk6CiAgICBkZWYgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXhfKToKICAgICAgICBpZiBoX3YgPT0gInYiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSAvIDIKICAgICAgICAgICAgICAgIF95ID0gcC5nZXRfeSgpICsgcC5nZXRfaGVpZ2h0KCkKICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHAuZ2V0X2hlaWdodCgpKQogICAgICAgICAgICAgICAgYXhfLnRleHQoX3gsIF95LCB2YWx1ZSwgaGE9ImNlbnRlciIpCiAgICAgICAgZWxpZiBoX3YgPT0gImgiOgogICAgICAgICAgICBmb3IgcCBpbiBheF8ucGF0Y2hlczoKICAgICAgICAgICAgICAgIF94ID0gcC5nZXRfeCgpICsgcC5nZXRfd2lkdGgoKSArIGZsb2F0KHNwYWNlKQogICAgICAgICAgICAgICAgX3kgPSBwLmdldF95KCkgKyBwLmdldF9oZWlnaHQoKQogICAgICAgICAgICAgICAgdmFsdWUgPSBpbnQocC5nZXRfd2lkdGgoKSkKICAgICAgICAgICAgICAgIGF4Xy50ZXh0KF94LCBfeSwgdmFsdWUsIGhhPSJsZWZ0IikKCiAgICBpZiBpc2luc3RhbmNlKGF4cywgbnAubmRhcnJheSk6CiAgICAgICAgZm9yIGlkeCwgYXggaW4gbnAubmRlbnVtZXJhdGUoYXhzKToKICAgICAgICAgICAgX3Nob3dfb25fc2luZ2xlX3Bsb3QoYXgpCiAgICBlbHNlOgogICAgICAgIF9zaG93X29uX3NpbmdsZV9wbG90KGF4cykKCgpkZWYgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZik6CiAgICBfY2xlYXJfY3VycmVudF9maWd1cmUoKQoKICAgICMgQWRkIGNoYXJ0CiAgICBheCA9IHBsdC5heGVzKCkKICAgIHN0YXRfY2hhcnQgPSBzbnMuYmFycGxvdCgKICAgICAgICB4PXN0YXRfbmFtZSwKICAgICAgICB5PSJpbmRleCIsCiAgICAgICAgZGF0YT1zdGF0X2RmLnNvcnRfdmFsdWVzKHN0YXRfbmFtZSwgYXNjZW5kaW5nPUZhbHNlKS5yZXNldF9pbmRleCgpLAogICAgICAgIGF4PWF4LAogICAgKQogICAgcGx0LnRpZ2h0X2xheW91dCgpCgogICAgZm9yIHAgaW4gc3RhdF9jaGFydC5wYXRjaGVzOgogICAgICAgIHdpZHRoID0gcC5nZXRfd2lkdGgoKQogICAgICAgIHBsdC50ZXh0KAogICAgICAgICAgICA1ICsgcC5nZXRfd2lkdGgoKSwKICAgICAgICAgICAgcC5nZXRfeSgpICsgMC41NSAqIHAuZ2V0X2hlaWdodCgpLAogICAgICAgICAgICAiezoxLjJmfSIuZm9ybWF0KHdpZHRoKSwKICAgICAgICAgICAgaGE9ImNlbnRlciIsCiAgICAgICAgICAgIHZhPSJjZW50ZXIiLAogICAgICAgICkKCiAgICBjb250ZXh0LmxvZ19hcnRpZmFjdCgKICAgICAgICBQbG90QXJ0aWZhY3QoZiJ7c3RhdF9uYW1lfSIsIGJvZHk9cGx0LmdjZigpKSwKICAgICAgICBsb2NhbF9wYXRoPW9zLnBhdGguam9pbigicGxvdHMiLCAiZmVhdHVyZV9zZWxlY3Rpb24iLCBmIntzdGF0X25hbWV9Lmh0bWwiKSwKICAgICkKICAgIF9jbGVhcl9jdXJyZW50X2ZpZ3VyZSgpCgoKZGVmIGZlYXR1cmVfc2VsZWN0aW9uKAogICAgY29udGV4dCwKICAgIGRmX2FydGlmYWN0LAogICAgazogaW50ID0gNSwKICAgIG1pbl92b3RlczogZmxvYXQgPSAwLjUsCiAgICBsYWJlbF9jb2x1bW46IHN0ciA9IE5vbmUsCiAgICBzdGF0X2ZpbHRlcnM6IGxpc3QgPSBOb25lLAogICAgbW9kZWxfZmlsdGVyczogZGljdCA9IE5vbmUsCiAgICBtYXhfc2NhbGVkX3Njb3JlczogYm9vbCA9IFRydWUsCiAgICBzYW1wbGVfcmF0aW86IGZsb2F0ID0gTm9uZSwKICAgIG91dHB1dF92ZWN0b3JfbmFtZTogZmxvYXQgPSBOb25lLAogICAgaWdub3JlX3R5cGVfZXJyb3JzOiBib29sID0gRmFsc2UsCiAgICBpc19mZWF0dXJlX3ZlY3RvcjogYm9vbCA9IEZhbHNlLAopOgogICAgIiIiCiAgICBBcHBsaWVzIHNlbGVjdGVkIGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRpc3RpY2FsIGZ1bmN0aW9ucyBvciBtb2RlbHMgb24gb3VyICdkZl9hcnRpZmFjdCcuCgogICAgRWFjaCBzdGF0aXN0aWNhbCBmdW5jdGlvbiBvciBtb2RlbCB3aWxsIHZvdGUgZm9yIGl0J3MgYmVzdCBLIHNlbGVjdGVkIGZlYXR1cmVzLgogICAgSWYgYSBmZWF0dXJlIGhhcyA+PSAnbWluX3ZvdGVzJyB2b3RlcywgaXQgd2lsbCBiZSBzZWxlY3RlZC4KCiAgICA6cGFyYW0gY29udGV4dDogICAgICAgICAgICAgdGhlIGZ1bmN0aW9uIGNvbnRleHQuCiAgICA6cGFyYW0gZGZfYXJ0aWZhY3Q6ICAgICAgICAgZGF0YWZyYW1lIHRvIHBhc3MgYXMgaW5wdXQuCiAgICA6cGFyYW0gazogICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRvcCBmZWF0dXJlcyB0byBzZWxlY3QgZnJvbSBlYWNoIHN0YXRpc3RpY2FsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgbW9kZWwuCiAgICA6cGFyYW0gbWluX3ZvdGVzOiAgICAgICAgICAgbWluaW1hbCBudW1iZXIgb2Ygdm90ZXMgKGZyb20gYSBtb2RlbCBvciBieSBzdGF0aXN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKSBuZWVkZWQgZm9yIGEgZmVhdHVyZSB0byBiZSBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgc3BlY2lmaWVkIGJ5IHBlcmNlbnRhZ2Ugb2Ygdm90ZXMgb3IgYWJzb2x1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygdm90ZXMuCiAgICA6cGFyYW0gbGFiZWxfY29sdW1uOiAgICAgICAgZ3JvdW5kLXRydXRoICh5KSBsYWJlbHMuCiAgICA6cGFyYW0gc3RhdF9maWx0ZXJzOiAgICAgICAgc3RhdGlzdGljYWwgZnVuY3Rpb25zIHRvIGFwcGx5IHRvIHRoZSBmZWF0dXJlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tIHNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24pLgogICAgOnBhcmFtIG1vZGVsX2ZpbHRlcnM6ICAgICAgIG1vZGVscyB0byB1c2UgZm9yIGZlYXR1cmUgZXZhbHVhdGlvbiwgY2FuIGJlIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsIG5hbWUgKGV4LiBMaW5lYXJTVkMpLCBmb3JtYWxpemVkIGpzb24gKGNvbnRhaW5zICdDTEFTUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJVCcsICdNRVRBJykgb3IgYSBwYXRoIHRvIHN1Y2gganNvbiBmaWxlLgogICAgOnBhcmFtIG1heF9zY2FsZWRfc2NvcmVzOiAgIHByb2R1Y2UgZmVhdHVyZSBzY29yZXMgdGFibGUgc2NhbGVkIHdpdGggbWF4X3NjYWxlci4KICAgIDpwYXJhbSBzYW1wbGVfcmF0aW86ICAgICAgICBwZXJjZW50YWdlIG9mIHRoZSBkYXRhc2V0IHRoZSB1c2VyIHdoaXNoZXMgdG8gY29tcHV0ZSB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gcHJvY2VzcyBvbi4KICAgIDpwYXJhbSBvdXRwdXRfdmVjdG9yX25hbWU6ICBjcmVhdGVzIGEgbmV3IGZlYXR1cmUgdmVjdG9yIGNvbnRhaW5pbmcgb25seSB0aGUgaWRlbnRpZmllcyBmZWF0dXJlcy4KICAgIDpwYXJhbSBpZ25vcmVfdHlwZV9lcnJvcnM6ICBza2lwcyBkYXRhdHlwZXMgdGhhdCBhcmUgbmVpdGhlciBmbG9hdCBub3IgaW50IHdpdGhpbiB0aGUgZmVhdHVyZSB2ZWN0b3IuCiAgICA6cGFyYW0gaXNfZmVhdHVyZV92ZWN0b3I6ICAgYm9vbCBzdGF0aW5nIGlmIHRoZSBkYXRhIGlzIHBhc3NlZCBhcyBhIGZlYXR1cmUgdmVjdG9yLgogICAgIiIiCiAgICBzdGF0X2ZpbHRlcnMgPSBzdGF0X2ZpbHRlcnMgb3IgREVGQVVMVF9TVEFUX0ZJTFRFUlMKICAgIG1vZGVsX2ZpbHRlcnMgPSBtb2RlbF9maWx0ZXJzIG9yIERFRkFVTFRfTU9ERUxfRklMVEVSUwogICAgIyBDaGVjayBpZiBkZi5tZXRhIGlzIHZhbGlkLCBpZiBpdCBpcywgbG9vayBmb3IgYSBmZWF0dXJlIHZlY3RvcgogICAgc3RvcmVfdXJpX3ByZWZpeCwgXyA9IG1scnVuLmRhdGFzdG9yZS5wYXJzZV9zdG9yZV91cmkoZGZfYXJ0aWZhY3QuYXJ0aWZhY3RfdXJsKQogICAgaXNfZmVhdHVyZV92ZWN0b3IgPSBtbHJ1bi51dGlscy5TdG9yZVByZWZpeC5GZWF0dXJlVmVjdG9yID09IHN0b3JlX3VyaV9wcmVmaXgKCiAgICAjIExvb2sgaW5zaWRlIG1ldGEuc3BlYy5sYWJlbF9mZWF0dXJlIHRvIGlkZW50aWZ5IHRoZSBsYWJlbF9jb2x1bW4gaWYgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5IGl0CiAgICBpZiBsYWJlbF9jb2x1bW4gaXMgTm9uZToKICAgICAgICBpZiBpc19mZWF0dXJlX3ZlY3RvcjoKICAgICAgICAgICAgbGFiZWxfY29sdW1uID0gZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmxhYmVsX2ZlYXR1cmUuc3BsaXQoIi4iKVsxXQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGxhYmVsX2NvbHVtbiB3YXMgZ2l2ZW4sIHBsZWFzZSBhZGQgYSBsYWJlbF9jb2x1bW4uIikKCiAgICAjIFVzZSB0aGUgZmVhdHVyZSB2ZWN0b3IgYXMgZGF0YWZyYW1lCiAgICBkZiA9IGRmX2FydGlmYWN0LmFzX2RmKCkKCiAgICAjIEVuc3VyZSBrIGlzIG5vdCBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzCiAgICBpZiBrID4gZGYuc2hhcGVbMV06CiAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgZiJLIGNhbm5vdCBiZSBiaWdnZXIgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZlYXR1cmVzICh7ZGYuc2hhcGVbMV19KS4gUGxlYXNlIGNob29zZSBhIHNtYWxsZXIgSy4iCiAgICAgICAgKQogICAgZWxpZiBrIDwgMToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJLIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gMS4gUGxlYXNlIGNob29zZSBhIGJpZ2dlciBLLiIpCgogICAgIyBDcmVhdGUgYSBzYW1wbGUgZGF0YWZyYW1lIG9mIHRoZSBvcmlnaW5hbCBmZWF0dXJlIHZlY3RvcgogICAgaWYgc2FtcGxlX3JhdGlvOgogICAgICAgIGRmID0gKAogICAgICAgICAgICBkZi5ncm91cGJ5KGxhYmVsX2NvbHVtbikKICAgICAgICAgICAgLmFwcGx5KGxhbWJkYSB4OiB4LnNhbXBsZShmcmFjPXNhbXBsZV9yYXRpbykpCiAgICAgICAgICAgIC5yZXNldF9pbmRleChkcm9wPVRydWUpCiAgICAgICAgKQogICAgICAgIGRmID0gZGYuZHJvcG5hKCkKCiAgICAjIFNldCBmZWF0dXJlIHZlY3RvciBhbmQgbGFiZWxzCiAgICB5ID0gZGYucG9wKGxhYmVsX2NvbHVtbikKICAgIFggPSBkZgoKICAgIGlmIG5wLm9iamVjdF8gaW4gbGlzdChYLmR0eXBlcykgYW5kIGlnbm9yZV90eXBlX2Vycm9ycyBpcyBGYWxzZToKICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICBmIntkZi5zZWxlY3RfZHR5cGVzKGluY2x1ZGU9WydvYmplY3QnXSkuY29sdW1ucy50b2xpc3QoKX0gYXJlIG5laXRoZXIgZmxvYXQgb3IgaW50LiIKICAgICAgICApCgogICAgIyBDcmVhdGUgc2VsZWN0ZWQgc3RhdGlzdGljYWwgZXN0aW1hdG9ycwogICAgc3RhdF9mdW5jdGlvbnNfbGlzdCA9IHsKICAgICAgICBzdGF0X25hbWU6IFNlbGVjdEtCZXN0KAogICAgICAgICAgICBzY29yZV9mdW5jPWNyZWF0ZV9jbGFzcyhmInNrbGVhcm4uZmVhdHVyZV9zZWxlY3Rpb24ue3N0YXRfbmFtZX0iKSwgaz1rCiAgICAgICAgKQogICAgICAgIGZvciBzdGF0X25hbWUgaW4gc3RhdF9maWx0ZXJzCiAgICB9CiAgICByZXF1aXJlc19hYnMgPSBbImNoaTIiXQoKICAgICMgUnVuIHN0YXRpc3RpYyBmaWx0ZXJzCiAgICBzZWxlY3RlZF9mZWF0dXJlc19hZ2cgPSB7fQogICAgc3RhdHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKS5kcm9wbmEoKQoKICAgIGZvciBzdGF0X25hbWUsIHN0YXRfZnVuYyBpbiBzdGF0X2Z1bmN0aW9uc19saXN0Lml0ZW1zKCk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBwYXJhbXMgPSAoWCwgeSkgaWYgc3RhdF9uYW1lIGluIHJlcXVpcmVzX2FicyBlbHNlIChhYnMoWCksIHkpCiAgICAgICAgICAgIHN0YXQgPSBzdGF0X2Z1bmMuZml0KCpwYXJhbXMpCgogICAgICAgICAgICAjIENvbGxlY3Qgc3RhdCBmdW5jdGlvbiByZXN1bHRzCiAgICAgICAgICAgIHN0YXRfZGYgPSBwZC5EYXRhRnJhbWUoCiAgICAgICAgICAgICAgICBpbmRleD1YLmNvbHVtbnMsIGNvbHVtbnM9W3N0YXRfbmFtZV0sIGRhdGE9c3RhdC5zY29yZXNfCiAgICAgICAgICAgICkKICAgICAgICAgICAgcGxvdF9zdGF0KGNvbnRleHQsIHN0YXRfbmFtZSwgc3RhdF9kZikKICAgICAgICAgICAgc3RhdHNfZGYgPSBzdGF0c19kZi5qb2luKHN0YXRfZGYpCgogICAgICAgICAgICAjIFNlbGVjdCBLIEJlc3QgZmVhdHVyZXMKICAgICAgICAgICAgc2VsZWN0ZWRfZmVhdHVyZXMgPSBYLmNvbHVtbnNbc3RhdF9mdW5jLmdldF9zdXBwb3J0KCldCiAgICAgICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1tzdGF0X25hbWVdID0gc2VsZWN0ZWRfZmVhdHVyZXMKCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICBjb250ZXh0LmxvZ2dlci5pbmZvKGYiQ291bGRuJ3QgY2FsY3VsYXRlIHtzdGF0X25hbWV9IGJlY2F1c2Ugb2Y6IHtlfSIpCgogICAgIyBDcmVhdGUgbW9kZWxzIGZyb20gY2xhc3MgbmFtZSAvIGpzb24gZmlsZSAvIGpzb24gcGFyYW1zCiAgICBhbGxfc2tsZWFybl9lc3RpbWF0b3JzID0gZGljdChhbGxfZXN0aW1hdG9ycygpKSBpZiBsZW4obW9kZWxfZmlsdGVycykgPiAwIGVsc2Uge30KICAgIHNlbGVjdGVkX21vZGVscyA9IHt9CiAgICBmb3IgbW9kZWxfbmFtZSwgbW9kZWwgaW4gbW9kZWxfZmlsdGVycy5pdGVtcygpOgogICAgICAgIGlmICIuanNvbiIgaW4gbW9kZWw6CiAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWQob3Blbihtb2RlbCwgInIiKSkKICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgIHNlbGVjdGVkX21vZGVsc1ttb2RlbF9uYW1lXSA9IGNsYXNzaWZpZXJfY2xhc3MoKipjdXJyZW50X21vZGVsWyJDTEFTUyJdKQogICAgICAgIGVsaWYgbW9kZWwgaW4gYWxsX3NrbGVhcm5fZXN0aW1hdG9yczoKICAgICAgICAgICAgc2VsZWN0ZWRfbW9kZWxzW21vZGVsX25hbWVdID0gYWxsX3NrbGVhcm5fZXN0aW1hdG9yc1ttb2RlbF9uYW1lXSgpCgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZWwgPSBqc29uLmxvYWRzKG1vZGVsKQogICAgICAgICAgICAgICAgY2xhc3NpZmllcl9jbGFzcyA9IGNyZWF0ZV9jbGFzcyhjdXJyZW50X21vZGVsWyJNRVRBIl1bImNsYXNzIl0pCiAgICAgICAgICAgICAgICBzZWxlY3RlZF9tb2RlbHNbbW9kZWxfbmFtZV0gPSBjbGFzc2lmaWVyX2NsYXNzKCoqY3VycmVudF9tb2RlbFsiQ0xBU1MiXSkKICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInVuYWJsZSB0byBsb2FkIHttb2RlbH0gYmVjYXVzZSBvZjoge2V9IikKCiAgICAjIFJ1biBtb2RlbCBmaWx0ZXJzCiAgICBtb2RlbHNfZGYgPSBwZC5EYXRhRnJhbWUoaW5kZXg9WC5jb2x1bW5zKQogICAgZm9yIG1vZGVsX25hbWUsIG1vZGVsIGluIHNlbGVjdGVkX21vZGVscy5pdGVtcygpOgoKICAgICAgICBpZiBtb2RlbF9uYW1lID09ICJMb2dpc3RpY1JlZ3Jlc3Npb24iOgogICAgICAgICAgICBtb2RlbC5zZXRfcGFyYW1zKHNvbHZlcj0ibGlibGluZWFyIikKCiAgICAgICAgIyBUcmFpbiBtb2RlbCBhbmQgZ2V0IGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIHNlbGVjdF9mcm9tX21vZGVsID0gU2VsZWN0RnJvbU1vZGVsKG1vZGVsKS5maXQoWCwgeSkKICAgICAgICBmZWF0dXJlX2lkeCA9IHNlbGVjdF9mcm9tX21vZGVsLmdldF9zdXBwb3J0KCkKICAgICAgICBmZWF0dXJlX25hbWVzID0gWC5jb2x1bW5zW2ZlYXR1cmVfaWR4XQogICAgICAgIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZ1ttb2RlbF9uYW1lXSA9IGZlYXR1cmVfbmFtZXMudG9saXN0KCkKCiAgICAgICAgIyBDb2xsZWN0IG1vZGVsIGZlYXR1cmUgaW1wb3J0YW5jZQogICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXywgImNvZWZfIik6CiAgICAgICAgICAgIHN0YXRfZGYgPSBzZWxlY3RfZnJvbV9tb2RlbC5lc3RpbWF0b3JfLmNvZWZfCiAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGVjdF9mcm9tX21vZGVsLmVzdGltYXRvcl8sICJmZWF0dXJlX2ltcG9ydGFuY2VzXyIpOgogICAgICAgICAgICBzdGF0X2RmID0gc2VsZWN0X2Zyb21fbW9kZWwuZXN0aW1hdG9yXy5mZWF0dXJlX2ltcG9ydGFuY2VzXwoKICAgICAgICBzdGF0X2RmID0gcGQuRGF0YUZyYW1lKGluZGV4PVguY29sdW1ucywgY29sdW1ucz1bbW9kZWxfbmFtZV0sIGRhdGE9c3RhdF9kZlswXSkKICAgICAgICBtb2RlbHNfZGYgPSBtb2RlbHNfZGYuam9pbihzdGF0X2RmKQoKICAgICAgICBwbG90X3N0YXQoY29udGV4dCwgbW9kZWxfbmFtZSwgc3RhdF9kZikKCiAgICAjIENyZWF0ZSBmZWF0dXJlX3Njb3JlcyBERiB3aXRoIHN0YXQgJiBtb2RlbCBmaWx0ZXJzIHNjb3JlcwogICAgcmVzdWx0X21hdHJpeF9kZiA9IHBkLmNvbmNhdChbc3RhdHNfZGYsIG1vZGVsc19kZl0sIGF4aXM9MSwgc29ydD1GYWxzZSkKICAgIGNvbnRleHQubG9nX2RhdGFzZXQoCiAgICAgICAga2V5PSJmZWF0dXJlX3Njb3JlcyIsCiAgICAgICAgZGY9cmVzdWx0X21hdHJpeF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJmZWF0dXJlX3Njb3Jlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQogICAgaWYgbWF4X3NjYWxlZF9zY29yZXM6CiAgICAgICAgbm9ybWFsaXplZF9kZiA9IHJlc3VsdF9tYXRyaXhfZGYucmVwbGFjZShbbnAuaW5mLCAtbnAuaW5mXSwgbnAubmFuKS52YWx1ZXMKICAgICAgICBtaW5fbWF4X3NjYWxlciA9IE1pbk1heFNjYWxlcigpCiAgICAgICAgbm9ybWFsaXplZF9kZiA9IG1pbl9tYXhfc2NhbGVyLmZpdF90cmFuc2Zvcm0obm9ybWFsaXplZF9kZikKICAgICAgICBub3JtYWxpemVkX2RmID0gcGQuRGF0YUZyYW1lKAogICAgICAgICAgICBkYXRhPW5vcm1hbGl6ZWRfZGYsCiAgICAgICAgICAgIGNvbHVtbnM9cmVzdWx0X21hdHJpeF9kZi5jb2x1bW5zLAogICAgICAgICAgICBpbmRleD1yZXN1bHRfbWF0cml4X2RmLmluZGV4LAogICAgICAgICkKICAgICAgICBjb250ZXh0LmxvZ19kYXRhc2V0KAogICAgICAgICAgICBrZXk9Im1heF9zY2FsZWRfc2NvcmVzX2ZlYXR1cmVfc2NvcmVzIiwKICAgICAgICAgICAgZGY9bm9ybWFsaXplZF9kZiwKICAgICAgICAgICAgbG9jYWxfcGF0aD0ibWF4X3NjYWxlZF9zY29yZXNfZmVhdHVyZV9zY29yZXMucGFycXVldCIsCiAgICAgICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICAgICAgKQoKICAgICMgQ3JlYXRlIGZlYXR1cmUgY291bnQgRGF0YUZyYW1lCiAgICBmb3IgdGVzdF9uYW1lIGluIHNlbGVjdGVkX2ZlYXR1cmVzX2FnZzoKICAgICAgICByZXN1bHRfbWF0cml4X2RmW3Rlc3RfbmFtZV0gPSBbCiAgICAgICAgICAgIDEgaWYgeCBpbiBzZWxlY3RlZF9mZWF0dXJlc19hZ2dbdGVzdF9uYW1lXSBlbHNlIDAgZm9yIHggaW4gWC5jb2x1bW5zCiAgICAgICAgXQogICAgcmVzdWx0X21hdHJpeF9kZi5sb2NbOiwgIm51bV92b3RlcyJdID0gcmVzdWx0X21hdHJpeF9kZi5zdW0oYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50IiwKICAgICAgICBkZj1yZXN1bHRfbWF0cml4X2RmLAogICAgICAgIGxvY2FsX3BhdGg9InNlbGVjdGVkX2ZlYXR1cmVzX2NvdW50LnBhcnF1ZXQiLAogICAgICAgIGZvcm1hdD0icGFycXVldCIsCiAgICApCgogICAgIyBIb3cgbWFueSB2b3RlcyBhcmUgbmVlZGVkIGZvciBhIGZlYXR1cmUgdG8gYmUgc2VsZWN0ZWQ/CiAgICBpZiBpc2luc3RhbmNlKG1pbl92b3RlcywgaW50KToKICAgICAgICB2b3Rlc19uZWVkZWQgPSBtaW5fdm90ZXMKICAgIGVsc2U6CiAgICAgICAgbnVtX2ZpbHRlcnMgPSBsZW4oc3RhdF9maWx0ZXJzKSArIGxlbihtb2RlbF9maWx0ZXJzKQogICAgICAgIHZvdGVzX25lZWRlZCA9IGludChucC5mbG9vcihudW1fZmlsdGVycyAqIG1heChtaW4obWluX3ZvdGVzLCAxKSwgMCkpKQogICAgY29udGV4dC5sb2dnZXIuaW5mbyhmInZvdGVzIG5lZWRlZCB0byBiZSBzZWxlY3RlZDoge3ZvdGVzX25lZWRlZH0iKQoKICAgICMgQ3JlYXRlIGZpbmFsIGZlYXR1cmUgZGF0YWZyYW1lCiAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGZbCiAgICAgICAgcmVzdWx0X21hdHJpeF9kZi5udW1fdm90ZXMgPj0gdm90ZXNfbmVlZGVkCiAgICBdLmluZGV4LnRvbGlzdCgpCiAgICBnb29kX2ZlYXR1cmVfZGYgPSBkZi5sb2NbOiwgc2VsZWN0ZWRfZmVhdHVyZXNdCiAgICBmaW5hbF9kZiA9IHBkLmNvbmNhdChbZ29vZF9mZWF0dXJlX2RmLCB5XSwgYXhpcz0xKQogICAgY29udGV4dC5sb2dfZGF0YXNldCgKICAgICAgICBrZXk9InNlbGVjdGVkX2ZlYXR1cmVzIiwKICAgICAgICBkZj1maW5hbF9kZiwKICAgICAgICBsb2NhbF9wYXRoPSJzZWxlY3RlZF9mZWF0dXJlcy5wYXJxdWV0IiwKICAgICAgICBmb3JtYXQ9InBhcnF1ZXQiLAogICAgKQoKICAgICMgQ3JlYXRpbmcgYSBuZXcgZmVhdHVyZSB2ZWN0b3IgY29udGFpbmluZyBvbmx5IHRoZSBpZGVudGlmaWVkIHRvcCBmZWF0dXJlcwogICAgaWYgaXNfZmVhdHVyZV92ZWN0b3IgYW5kIGRmX2FydGlmYWN0Lm1ldGEuc3BlYy5mZWF0dXJlcyBhbmQgb3V0cHV0X3ZlY3Rvcl9uYW1lOgogICAgICAgICMgU2VsZWN0aW5nIHRoZSB0b3AgSyBmZWF0dXJlcyBmcm9tIG91ciB0b3AgZmVhdHVyZSBkYXRhZnJhbWUKICAgICAgICBzZWxlY3RlZF9mZWF0dXJlcyA9IHJlc3VsdF9tYXRyaXhfZGYuaGVhZChrKS5pbmRleAoKICAgICAgICAjIE1hdGNoIHRoZSBzZWxlY3RlZCBmZWF0dXJlIG5hbWVzIHRvIHRoZSBGUyBGZWF0dXJlIGFubm90YXRpb25zCiAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zID0gWwogICAgICAgICAgICBmZWF0dXJlCiAgICAgICAgICAgIGZvciBmZWF0dXJlIGluIGxpc3QoZGZfYXJ0aWZhY3QubWV0YS5zcGVjLmZlYXR1cmVzKQogICAgICAgICAgICBmb3Igc2VsZWN0ZWQgaW4gbGlzdChzZWxlY3RlZF9mZWF0dXJlcykKICAgICAgICAgICAgaWYgZmVhdHVyZS5lbmRzd2l0aChzZWxlY3RlZCkKICAgICAgICBdCgogICAgICAgICMgRGVmaW5pbmcgb3VyIG5ldyBmZWF0dXJlIHZlY3RvcgogICAgICAgIHRvcF9mZWF0dXJlc19mdiA9IGZzLkZlYXR1cmVWZWN0b3IoCiAgICAgICAgICAgIG91dHB1dF92ZWN0b3JfbmFtZSwKICAgICAgICAgICAgbWF0Y2hlZF9zZWxlY3Rpb25zLAogICAgICAgICAgICBsYWJlbF9mZWF0dXJlPSJsYWJlbHMubGFiZWwiLAogICAgICAgICAgICBkZXNjcmlwdGlvbj0iZmVhdHVyZSB2ZWN0b3IgY29tcG9zZWQgc3RyaWN0bHkgb2Ygb3VyIHRvcCBmZWF0dXJlcyIsCiAgICAgICAgKQoKICAgICAgICAjIFNhdmluZwogICAgICAgIHRvcF9mZWF0dXJlc19mdi5zYXZlKCkKICAgICAgICBmcy5nZXRfb2ZmbGluZV9mZWF0dXJlcyh0b3BfZmVhdHVyZXNfZnYsIHRhcmdldD1QYXJxdWV0VGFyZ2V0KCkpCgogICAgICAgICMgTG9nZ2luZyBvdXIgbmV3IGZlYXR1cmUgdmVjdG9yIFVSSQogICAgICAgIGNvbnRleHQubG9nX3Jlc3VsdCgidG9wX2ZlYXR1cmVzX3ZlY3RvciIsIHRvcF9mZWF0dXJlc19mdi51cmkpCg== commands: [] - code_origin: https://github.com/yonishelach/functions.git#ce312b8eb32691f56a57f53c0423c6c909b43d27:/Users/Yonatan_Shelach/projects/functions/feature_selection/feature_selection.py - origin_filename: /Users/Yonatan_Shelach/projects/functions/feature_selection/feature_selection.py + code_origin: '' + origin_filename: '' requirements: [] entry_points: show_values_on_bars: @@ -42,27 +42,25 @@ doc: '' parameters: - name: axs - default: '' - name: h_v default: v - name: space default: 0.4 - outputs: - - default: '' + outputs: [] lineno: 54 + has_varargs: false + has_kwargs: false plot_stat: name: plot_stat doc: '' parameters: - name: context - default: '' - name: stat_name - default: '' - name: stat_df - default: '' - outputs: - - default: '' + outputs: [] lineno: 76 + has_varargs: false + has_kwargs: false feature_selection: name: feature_selection doc: 'Applies selected feature selection statistical functions or models on @@ -75,10 +73,8 @@ parameters: - name: context doc: the function context. - default: '' - name: df_artifact doc: dataframe to pass as input. - default: '' - name: k type: int doc: number of top features to select from each statistical function or model. @@ -124,9 +120,10 @@ type: bool doc: bool stating if the data is passed as a feature vector. default: false - outputs: - - default: '' + outputs: [] lineno: 106 + has_varargs: false + has_kwargs: false description: Select features through multiple Statistical and Model filters default_handler: feature_selection disable_auto_mount: false diff --git a/functions/master/feature_selection/latest/static/item.html b/functions/master/feature_selection/latest/static/item.html index 834427c5..9f497252 100644 --- a/functions/master/feature_selection/latest/static/item.html +++ b/functions/master/feature_selection/latest/static/item.html @@ -39,7 +39,7 @@ kind: job requirements: [] url: '' -version: 1.3.0 +version: 1.4.0 diff --git a/functions/master/feature_selection/latest/static/source.html b/functions/master/feature_selection/latest/static/source.html index ce04cd56..40198374 100644 --- a/functions/master/feature_selection/latest/static/source.html +++ b/functions/master/feature_selection/latest/static/source.html @@ -197,7 +197,7 @@ y = df.pop(label_column) X = df - if np.object in list(X.dtypes) and ignore_type_errors is False: + if np.object_ in list(X.dtypes) and ignore_type_errors is False: raise ValueError( f"{df.select_dtypes(include=['object']).columns.tolist()} are neither float or int." ) diff --git a/functions/master/tags.json b/functions/master/tags.json index 7e664987..104092f3 100644 --- a/functions/master/tags.json +++ b/functions/master/tags.json @@ -1 +1 @@ -{"kind": ["serving", "nuclio:serving", "dask", "nuclio", "job"], "categories": ["data-validation", "monitoring", "Audio", "NLP", "utils", "machine-learning", "Data Generation", "feature-store", "Deep Learning", "data-preparation", "PyTorch", "data-analysis", "deep-learning", "model-training", "model-testing", "Data Preparation", "Huggingface", "model-serving", "GenAI", "etl"]} \ No newline at end of file +{"kind": ["nuclio:serving", "job", "serving", "dask", "nuclio"], "categories": ["Data Preparation", "model-testing", "etl", "data-analysis", "machine-learning", "model-serving", "PyTorch", "feature-store", "NLP", "GenAI", "Data Generation", "data-preparation", "model-training", "data-validation", "Audio", "Deep Learning", "deep-learning", "utils", "monitoring", "Huggingface"]} \ No newline at end of file