mlrun 1.10.0rc16__tar.gz → 1.10.0rc17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mlrun might be problematic. Click here for more details.
- {mlrun-1.10.0rc16/mlrun.egg-info → mlrun-1.10.0rc17}/PKG-INFO +1 -1
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/constants.py +2 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/__init__.py +1 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/model_monitoring/__init__.py +1 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/model_monitoring/constants.py +19 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/serving.py +3 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/workflow.py +1 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/config.py +1 -5
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/base.py +1 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/httpdb.py +4 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/controller.py +175 -121
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/stream_processing.py +29 -2
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/projects/project.py +7 -2
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/server.py +98 -11
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/states.py +7 -18
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/system_steps.py +20 -10
- mlrun-1.10.0rc17/mlrun/utils/version/version.json +4 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17/mlrun.egg-info}/PKG-INFO +1 -1
- mlrun-1.10.0rc16/mlrun/utils/version/version.json +0 -4
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/LICENSE +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/MANIFEST.in +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/Makefile +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/README.md +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/dependencies.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/dev-requirements.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/dockerfiles/mlrun-api/requirements.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/archive.zip +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/function.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/infile.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/load-project.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_basics.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_dask.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_db.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_export_import.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_jobs.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_sparkk8s.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/mlrun_vault.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/model.bst +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/new-project.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/nulltst.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/params.csv +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/remote-spark.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/secrets.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/spark-function.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/training.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/v2_model_server.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/examples/xgb_serving.ipynb +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/extras-requirements.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/__main__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/alerts/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/alerts/alert.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/api/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/dataset.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/document.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/llm_prompt.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/manager.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/model.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/artifacts/plots.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/db/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/db/dialects.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/artifact.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/feature_set.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/function.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/model_endpoint.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/pipeline.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/project.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/formatters/run.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/runtimes/constants.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/alert.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/api_gateway.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/artifact.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/auth.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/background_task.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/client_spec.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/clusterization_spec.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/common.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/constants.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/datastore_profile.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/events.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/feature_store.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/frontend_spec.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/function.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/http.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/hub.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/k8s.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/memory_reports.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/notification.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/object.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/pagination.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/partition.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/pipeline.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/project.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/regex.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/runs.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/runtime_resource.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/schedule.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/secret.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/schemas/tag.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/secrets.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/common/types.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/data_types/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/data_types/data_types.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/data_types/infer.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/data_types/spark.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/data_types/to_pandas.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/alibaba_oss.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/azure_blob.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/datastore.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/datastore_profile.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/dbfs_store.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/filestore.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/google_cloud_storage.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/hdfs.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/inmem.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/model_provider/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/model_provider/model_provider.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/model_provider/openai_provider.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/redis.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/remote_client.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/s3.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/snowflake_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/sources.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/spark_udf.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/spark_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/store_resources.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/storeytargets.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/targets.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/v3io.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/vectorstore.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/wasbfs/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/datastore/wasbfs/fs.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/auth_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/factory.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/db/nopdb.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/errors.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/execution.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/api.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/common.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/feature_set.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/feature_vector.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/feature_vector_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/ingestion.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/job.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/local_merger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/feature_store/steps.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/features.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/producer.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_common/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_dl_common/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/producer.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/_ml_common/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/huggingface/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/huggingface/model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/lgbm/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/onnx/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/onnx/dataset.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/onnx/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/onnx/model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/parallel_coordinates.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/pytorch/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/estimator.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/metric.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/sklearn/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/model_server.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/tf_keras/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/xgboost/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/xgboost/model_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/frameworks/xgboost/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/k8s_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/client.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/factory.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/local.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/launcher/remote.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/lists.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/api.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/context.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/applications/results.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/_schedules.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/_stats.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/features_drift_table.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/metrics/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/model_monitoring/writer.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/context_handler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/errors.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packager.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers/default_packager.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers/numpy_packagers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers/pandas_packagers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/packagers_manager.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/_archiver.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/_formatter.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/_pickler.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/_supported_format.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/log_hint_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/package/utils/type_hint_utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/platforms/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/platforms/iguazio.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/projects/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/projects/operations.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/projects/pipelines.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/render.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/run.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/daskjob.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/databricks_job/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/funcdoc.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/function_reference.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/generators.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/kubejob.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/local.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/mounts.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/mpijob/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/mpijob/abstract.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/mpijob/v1.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/application/application.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/function.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/nuclio.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/nuclio/serving.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/pod.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/remotesparkjob.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/sparkjob/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/runtimes/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/secrets.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/merger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/remote.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/routers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/serving_wrapper.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/utils.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/v1_serving.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/serving/v2_serving.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/track/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/track/tracker.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/track/tracker_manager.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/track/trackers/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/track/trackers/mlflow_tracker.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/async_http.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/azure_vault.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/clones.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/condition_evaluator.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/helpers.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/http.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/logger.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/base.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/console.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/git.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/ipython.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/mail.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/slack.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification/webhook.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/notifications/notification_pusher.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/regex.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/retryer.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/singleton.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/v3io_clients.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/vault.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/version/__init__.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun/utils/version/version.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/SOURCES.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/dependency_links.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/entry_points.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/not-zip-safe +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/requires.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/mlrun.egg-info/top_level.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/packages.py +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/pyproject.toml +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/requirements.txt +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/setup.cfg +0 -0
- {mlrun-1.10.0rc16 → mlrun-1.10.0rc17}/setup.py +0 -0
|
@@ -133,6 +133,7 @@ from .k8s import NodeSelectorOperator, Resources, ResourceSpec
|
|
|
133
133
|
from .memory_reports import MostCommonObjectTypesReport, ObjectTypeReport
|
|
134
134
|
from .model_monitoring import (
|
|
135
135
|
DriftStatus,
|
|
136
|
+
EndpointMode,
|
|
136
137
|
EndpointType,
|
|
137
138
|
EndpointUID,
|
|
138
139
|
EventFieldType,
|
|
@@ -205,6 +205,11 @@ class ControllerEvent(MonitoringStrEnum):
|
|
|
205
205
|
FIRST_REQUEST = "first_request"
|
|
206
206
|
FEATURE_SET_URI = "feature_set_uri"
|
|
207
207
|
ENDPOINT_TYPE = "endpoint_type"
|
|
208
|
+
|
|
209
|
+
# first_timestamp and last_timestamp are used to batch completed events
|
|
210
|
+
FIRST_TIMESTAMP = "first_timestamp"
|
|
211
|
+
LAST_TIMESTAMP = "last_timestamp"
|
|
212
|
+
|
|
208
213
|
ENDPOINT_POLICY = "endpoint_policy"
|
|
209
214
|
# Note: currently under endpoint policy we will have a dictionary including the keys: "application_names"
|
|
210
215
|
# "base_period", and "updated_endpoint" stand for when the MEP was updated
|
|
@@ -219,6 +224,7 @@ class ControllerEventEndpointPolicy(MonitoringStrEnum):
|
|
|
219
224
|
class ControllerEventKind(MonitoringStrEnum):
|
|
220
225
|
NOP_EVENT = "nop_event"
|
|
221
226
|
REGULAR_EVENT = "regular_event"
|
|
227
|
+
BATCH_COMPLETE = "batch_complete"
|
|
222
228
|
|
|
223
229
|
|
|
224
230
|
class MetricData(MonitoringStrEnum):
|
|
@@ -320,6 +326,19 @@ class EndpointType(IntEnum):
|
|
|
320
326
|
def top_level_list(cls):
|
|
321
327
|
return [cls.NODE_EP, cls.ROUTER, cls.BATCH_EP]
|
|
322
328
|
|
|
329
|
+
@classmethod
|
|
330
|
+
def real_time_list(cls):
|
|
331
|
+
return [cls.NODE_EP, cls.ROUTER, cls.LEAF_EP]
|
|
332
|
+
|
|
333
|
+
@classmethod
|
|
334
|
+
def batch_list(cls):
|
|
335
|
+
return [cls.BATCH_EP]
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class EndpointMode(StrEnum):
|
|
339
|
+
REAL_TIME = "real_time"
|
|
340
|
+
BATCH = "batch"
|
|
341
|
+
|
|
323
342
|
|
|
324
343
|
class MonitoringFunctionNames(MonitoringStrEnum):
|
|
325
344
|
STREAM = "model-monitoring-stream"
|
|
@@ -53,6 +53,7 @@ class RerunWorkflowRequest(pydantic.v1.BaseModel):
|
|
|
53
53
|
workflow_runner_node_selector: typing.Optional[dict[str, str]] = None
|
|
54
54
|
original_workflow_runner_uid: typing.Optional[str] = None
|
|
55
55
|
original_workflow_name: typing.Optional[str] = None
|
|
56
|
+
rerun_index: typing.Optional[int] = None
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
class WorkflowResponse(pydantic.v1.BaseModel):
|
|
@@ -406,11 +406,7 @@ default_config = {
|
|
|
406
406
|
#
|
|
407
407
|
# if set to "nil" or "none", nothing would be set
|
|
408
408
|
"modes": (
|
|
409
|
-
"STRICT_TRANS_TABLES"
|
|
410
|
-
",NO_ZERO_IN_DATE"
|
|
411
|
-
",NO_ZERO_DATE"
|
|
412
|
-
",ERROR_FOR_DIVISION_BY_ZERO"
|
|
413
|
-
",NO_ENGINE_SUBSTITUTION",
|
|
409
|
+
"STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
|
|
414
410
|
)
|
|
415
411
|
},
|
|
416
412
|
},
|
|
@@ -741,6 +741,7 @@ class RunDBInterface(ABC):
|
|
|
741
741
|
tsdb_metrics: bool = False,
|
|
742
742
|
metric_list: Optional[list[str]] = None,
|
|
743
743
|
top_level: bool = False,
|
|
744
|
+
mode: Optional[mlrun.common.schemas.EndpointMode] = None,
|
|
744
745
|
uids: Optional[list[str]] = None,
|
|
745
746
|
latest_only: bool = False,
|
|
746
747
|
) -> mlrun.common.schemas.ModelEndpointList:
|
|
@@ -3813,6 +3813,7 @@ class HTTPRunDB(RunDBInterface):
|
|
|
3813
3813
|
tsdb_metrics: bool = False,
|
|
3814
3814
|
metric_list: Optional[list[str]] = None,
|
|
3815
3815
|
top_level: bool = False,
|
|
3816
|
+
mode: mm_constants.EndpointMode = None,
|
|
3816
3817
|
uids: Optional[list[str]] = None,
|
|
3817
3818
|
latest_only: bool = False,
|
|
3818
3819
|
) -> mlrun.common.schemas.ModelEndpointList:
|
|
@@ -3833,6 +3834,8 @@ class HTTPRunDB(RunDBInterface):
|
|
|
3833
3834
|
If tsdb_metrics=False, this parameter will be ignored and no tsdb metrics
|
|
3834
3835
|
will be included.
|
|
3835
3836
|
:param top_level: Whether to return only top level model endpoints.
|
|
3837
|
+
:param mode: Specifies the mode of the model endpoint. Can be "real-time", "batch", or both if set
|
|
3838
|
+
to None.
|
|
3836
3839
|
:param uids: A list of unique ids to filter by.
|
|
3837
3840
|
:param latest_only: Whether to return only the latest model endpoint version.
|
|
3838
3841
|
:return: A list of model endpoints.
|
|
@@ -3856,6 +3859,7 @@ class HTTPRunDB(RunDBInterface):
|
|
|
3856
3859
|
"tsdb-metrics": tsdb_metrics,
|
|
3857
3860
|
"metric": metric_list,
|
|
3858
3861
|
"top-level": top_level,
|
|
3862
|
+
"mode": mode,
|
|
3859
3863
|
"uid": uids,
|
|
3860
3864
|
"latest-only": latest_only,
|
|
3861
3865
|
},
|
|
@@ -12,13 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
import collections
|
|
16
15
|
import concurrent.futures
|
|
17
16
|
import datetime
|
|
18
17
|
import json
|
|
19
18
|
import os
|
|
20
19
|
import traceback
|
|
21
|
-
from collections import OrderedDict
|
|
22
20
|
from collections.abc import Iterator
|
|
23
21
|
from contextlib import AbstractContextManager
|
|
24
22
|
from types import TracebackType
|
|
@@ -29,20 +27,17 @@ import pandas as pd
|
|
|
29
27
|
|
|
30
28
|
import mlrun
|
|
31
29
|
import mlrun.common.schemas.model_monitoring.constants as mm_constants
|
|
32
|
-
import mlrun.feature_store as fstore
|
|
33
30
|
import mlrun.model_monitoring
|
|
34
31
|
import mlrun.model_monitoring.db._schedules as schedules
|
|
35
32
|
import mlrun.model_monitoring.helpers
|
|
36
33
|
import mlrun.platforms.iguazio
|
|
37
|
-
from mlrun.common.schemas import EndpointType
|
|
38
34
|
from mlrun.common.schemas.model_monitoring.constants import (
|
|
39
35
|
ControllerEvent,
|
|
40
36
|
ControllerEventEndpointPolicy,
|
|
41
|
-
ControllerEventKind,
|
|
42
37
|
)
|
|
43
38
|
from mlrun.errors import err_to_str
|
|
44
39
|
from mlrun.model_monitoring.helpers import batch_dict2timedelta
|
|
45
|
-
from mlrun.utils import
|
|
40
|
+
from mlrun.utils import logger
|
|
46
41
|
|
|
47
42
|
_SECONDS_IN_DAY = int(datetime.timedelta(days=1).total_seconds())
|
|
48
43
|
_SECONDS_IN_MINUTE = 60
|
|
@@ -62,6 +57,7 @@ class _BatchWindow:
|
|
|
62
57
|
timedelta_seconds: int,
|
|
63
58
|
last_updated: int,
|
|
64
59
|
first_request: int,
|
|
60
|
+
endpoint_mode: mm_constants.EndpointMode = mm_constants.EndpointMode.REAL_TIME,
|
|
65
61
|
) -> None:
|
|
66
62
|
"""
|
|
67
63
|
Initialize a batch window object that handles the batch interval time range
|
|
@@ -74,6 +70,7 @@ class _BatchWindow:
|
|
|
74
70
|
self._stop = last_updated
|
|
75
71
|
self._step = timedelta_seconds
|
|
76
72
|
self._db = schedules_file
|
|
73
|
+
self._endpoint_mode = endpoint_mode
|
|
77
74
|
self._start = self._get_last_analyzed()
|
|
78
75
|
|
|
79
76
|
def _get_saved_last_analyzed(self) -> Optional[int]:
|
|
@@ -85,10 +82,20 @@ class _BatchWindow:
|
|
|
85
82
|
)
|
|
86
83
|
|
|
87
84
|
def _get_initial_last_analyzed(self) -> int:
|
|
85
|
+
if self._endpoint_mode == mm_constants.EndpointMode.BATCH:
|
|
86
|
+
logger.info(
|
|
87
|
+
"No last analyzed time was found for this endpoint and application, as this is "
|
|
88
|
+
"probably the first time this application is running. Initializing last analyzed "
|
|
89
|
+
"to the start of the batch time",
|
|
90
|
+
application=self._application,
|
|
91
|
+
start_batch_time=self._first_request,
|
|
92
|
+
)
|
|
93
|
+
return self._first_request
|
|
88
94
|
logger.info(
|
|
89
95
|
"No last analyzed time was found for this endpoint and application, as this is "
|
|
90
96
|
"probably the first time this application is running. Initializing last analyzed "
|
|
91
|
-
"to the latest between first request
|
|
97
|
+
"to the latest between first request the latest between first request time or last "
|
|
98
|
+
"update time minus one day",
|
|
92
99
|
application=self._application,
|
|
93
100
|
first_request=self._first_request,
|
|
94
101
|
last_updated=self._stop,
|
|
@@ -103,6 +110,9 @@ class _BatchWindow:
|
|
|
103
110
|
def _get_last_analyzed(self) -> int:
|
|
104
111
|
saved_last_analyzed = self._get_saved_last_analyzed()
|
|
105
112
|
if saved_last_analyzed is not None:
|
|
113
|
+
if self._endpoint_mode == mm_constants.EndpointMode.BATCH:
|
|
114
|
+
# Use the maximum between the saved last analyzed and the start of the batch
|
|
115
|
+
return max(saved_last_analyzed, self._first_request)
|
|
106
116
|
return saved_last_analyzed
|
|
107
117
|
else:
|
|
108
118
|
last_analyzed = self._get_initial_last_analyzed()
|
|
@@ -113,6 +123,7 @@ class _BatchWindow:
|
|
|
113
123
|
def get_intervals(self) -> Iterator[_Interval]:
|
|
114
124
|
"""Generate the batch interval time ranges."""
|
|
115
125
|
entered = False
|
|
126
|
+
last_analyzed = None
|
|
116
127
|
# Iterate timestamp from start until timestamp <= stop - step
|
|
117
128
|
# so that the last interval will end at (timestamp + step) <= stop.
|
|
118
129
|
# Add 1 to stop - step to get <= and not <.
|
|
@@ -134,6 +145,40 @@ class _BatchWindow:
|
|
|
134
145
|
last_analyzed=last_analyzed,
|
|
135
146
|
)
|
|
136
147
|
|
|
148
|
+
if self._endpoint_mode == mm_constants.EndpointMode.BATCH:
|
|
149
|
+
# If the endpoint is a batch endpoint, we need to update the last analyzed time
|
|
150
|
+
# to the end of the batch time.
|
|
151
|
+
if last_analyzed:
|
|
152
|
+
if last_analyzed < self._stop:
|
|
153
|
+
# If the last analyzed time is earlier than the stop time,
|
|
154
|
+
# yield the final partial interval from last_analyzed to stop
|
|
155
|
+
yield _Interval(
|
|
156
|
+
datetime.datetime.fromtimestamp(
|
|
157
|
+
last_analyzed, tz=datetime.timezone.utc
|
|
158
|
+
),
|
|
159
|
+
datetime.datetime.fromtimestamp(
|
|
160
|
+
self._stop, tz=datetime.timezone.utc
|
|
161
|
+
),
|
|
162
|
+
)
|
|
163
|
+
else:
|
|
164
|
+
# The time span between the start and end of the batch is shorter than the step,
|
|
165
|
+
# so we need to yield a partial interval covering that range.
|
|
166
|
+
yield _Interval(
|
|
167
|
+
datetime.datetime.fromtimestamp(
|
|
168
|
+
self._start, tz=datetime.timezone.utc
|
|
169
|
+
),
|
|
170
|
+
datetime.datetime.fromtimestamp(
|
|
171
|
+
self._stop, tz=datetime.timezone.utc
|
|
172
|
+
),
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
self._update_last_analyzed(last_analyzed=self._stop)
|
|
176
|
+
logger.debug(
|
|
177
|
+
"Updated the last analyzed time for this endpoint and application to the end of the batch time",
|
|
178
|
+
application=self._application,
|
|
179
|
+
last_analyzed=self._stop,
|
|
180
|
+
)
|
|
181
|
+
|
|
137
182
|
if not entered:
|
|
138
183
|
logger.debug(
|
|
139
184
|
"All the data is set, but no complete intervals were found. "
|
|
@@ -183,28 +228,25 @@ class _BatchWindowGenerator(AbstractContextManager):
|
|
|
183
228
|
|
|
184
229
|
@classmethod
|
|
185
230
|
def _get_last_updated_time(
|
|
186
|
-
cls,
|
|
231
|
+
cls,
|
|
232
|
+
last_request: datetime.datetime,
|
|
233
|
+
endpoint_mode: mm_constants.EndpointMode,
|
|
187
234
|
) -> int:
|
|
188
235
|
"""
|
|
189
236
|
Get the last updated time of a model endpoint.
|
|
190
237
|
"""
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
# If the endpoint does not have a stream, `last_updated` should be
|
|
200
|
-
# the minimum between the current time and the last updated time.
|
|
201
|
-
# This compensates for the bumping mechanism - see
|
|
202
|
-
# `update_model_endpoint_last_request`.
|
|
203
|
-
last_updated = min(int(datetime_now().timestamp()), last_updated)
|
|
204
|
-
logger.debug(
|
|
205
|
-
"The endpoint does not have a stream", last_updated=last_updated
|
|
238
|
+
|
|
239
|
+
if endpoint_mode == mm_constants.EndpointMode.REAL_TIME:
|
|
240
|
+
last_updated = int(
|
|
241
|
+
last_request.timestamp()
|
|
242
|
+
- cast(
|
|
243
|
+
float,
|
|
244
|
+
mlrun.mlconf.model_endpoint_monitoring.parquet_batching_timeout_secs,
|
|
245
|
+
)
|
|
206
246
|
)
|
|
207
|
-
|
|
247
|
+
|
|
248
|
+
return last_updated
|
|
249
|
+
return int(last_request.timestamp())
|
|
208
250
|
|
|
209
251
|
def get_intervals(
|
|
210
252
|
self,
|
|
@@ -212,19 +254,21 @@ class _BatchWindowGenerator(AbstractContextManager):
|
|
|
212
254
|
application: str,
|
|
213
255
|
first_request: datetime.datetime,
|
|
214
256
|
last_request: datetime.datetime,
|
|
215
|
-
|
|
257
|
+
endpoint_mode: mm_constants.EndpointMode,
|
|
216
258
|
) -> Iterator[_Interval]:
|
|
217
259
|
"""
|
|
218
260
|
Get the batch window for a specific endpoint and application.
|
|
219
261
|
`first_request` and `last_request` are the timestamps of the first request and last
|
|
220
262
|
request to the endpoint, respectively. They are guaranteed to be nonempty at this point.
|
|
221
263
|
"""
|
|
264
|
+
|
|
222
265
|
self.batch_window = _BatchWindow(
|
|
223
266
|
schedules_file=self._schedules_file,
|
|
224
267
|
application=application,
|
|
225
268
|
timedelta_seconds=self._timedelta,
|
|
226
|
-
last_updated=self._get_last_updated_time(last_request,
|
|
269
|
+
last_updated=self._get_last_updated_time(last_request, endpoint_mode),
|
|
227
270
|
first_request=int(first_request.timestamp()),
|
|
271
|
+
endpoint_mode=endpoint_mode,
|
|
228
272
|
)
|
|
229
273
|
yield from self.batch_window.get_intervals()
|
|
230
274
|
|
|
@@ -247,8 +291,6 @@ class MonitoringApplicationController:
|
|
|
247
291
|
Note that the MonitoringApplicationController object requires access keys along with valid project configurations.
|
|
248
292
|
"""
|
|
249
293
|
|
|
250
|
-
_MAX_FEATURE_SET_PER_WORKER = 1000
|
|
251
|
-
|
|
252
294
|
def __init__(self) -> None:
|
|
253
295
|
"""Initialize Monitoring Application Controller"""
|
|
254
296
|
self.project = cast(str, mlrun.mlconf.active_project)
|
|
@@ -282,9 +324,6 @@ class MonitoringApplicationController:
|
|
|
282
324
|
mlrun.platforms.iguazio.KafkaOutputStream,
|
|
283
325
|
],
|
|
284
326
|
] = {}
|
|
285
|
-
self.feature_sets: OrderedDict[str, mlrun.feature_store.FeatureSet] = (
|
|
286
|
-
collections.OrderedDict()
|
|
287
|
-
)
|
|
288
327
|
self.tsdb_connector = mlrun.model_monitoring.get_tsdb_connector(
|
|
289
328
|
project=self.project
|
|
290
329
|
)
|
|
@@ -421,7 +460,6 @@ class MonitoringApplicationController:
|
|
|
421
460
|
last_request=endpoint.status.last_request,
|
|
422
461
|
first_request=endpoint.status.first_request,
|
|
423
462
|
endpoint_type=endpoint.metadata.endpoint_type,
|
|
424
|
-
feature_set_uri=endpoint.spec.monitoring_feature_set_uri,
|
|
425
463
|
)
|
|
426
464
|
return False
|
|
427
465
|
|
|
@@ -477,24 +515,67 @@ class MonitoringApplicationController:
|
|
|
477
515
|
try:
|
|
478
516
|
project_name = event[ControllerEvent.PROJECT]
|
|
479
517
|
endpoint_id = event[ControllerEvent.ENDPOINT_ID]
|
|
480
|
-
endpoint_name = event[ControllerEvent.ENDPOINT_NAME]
|
|
481
|
-
applications_names = event[ControllerEvent.ENDPOINT_POLICY][
|
|
482
|
-
ControllerEventEndpointPolicy.MONITORING_APPLICATIONS
|
|
483
|
-
]
|
|
484
518
|
|
|
485
|
-
|
|
486
|
-
event[ControllerEvent.
|
|
487
|
-
|
|
519
|
+
if (
|
|
520
|
+
event[ControllerEvent.KIND]
|
|
521
|
+
== mm_constants.ControllerEventKind.BATCH_COMPLETE
|
|
522
|
+
):
|
|
523
|
+
monitoring_functions = (
|
|
524
|
+
self.project_obj.list_model_monitoring_functions()
|
|
525
|
+
)
|
|
526
|
+
if monitoring_functions:
|
|
527
|
+
applications_names = list(
|
|
528
|
+
{app.metadata.name for app in monitoring_functions}
|
|
529
|
+
)
|
|
530
|
+
last_stream_timestamp = datetime.datetime.fromisoformat(
|
|
531
|
+
event[ControllerEvent.LAST_TIMESTAMP]
|
|
532
|
+
)
|
|
533
|
+
first_request = datetime.datetime.fromisoformat(
|
|
534
|
+
event[ControllerEvent.FIRST_TIMESTAMP]
|
|
535
|
+
)
|
|
536
|
+
endpoint_mode = mm_constants.EndpointMode.BATCH
|
|
537
|
+
model_endpoint = self.project_obj.list_model_endpoints(
|
|
538
|
+
uids=[endpoint_id],
|
|
539
|
+
latest_only=True,
|
|
540
|
+
).endpoints
|
|
541
|
+
|
|
542
|
+
if not model_endpoint:
|
|
543
|
+
logger.error(
|
|
544
|
+
"Batch model endpoint not found",
|
|
545
|
+
endpoint_id=endpoint_id,
|
|
546
|
+
project=project_name,
|
|
547
|
+
)
|
|
548
|
+
return
|
|
549
|
+
|
|
550
|
+
endpoint_name = model_endpoint[0].metadata.name
|
|
551
|
+
endpoint_updated = model_endpoint[0].metadata.updated.isoformat()
|
|
552
|
+
|
|
553
|
+
else:
|
|
554
|
+
logger.info("No monitoring functions found", project=self.project)
|
|
555
|
+
return
|
|
556
|
+
|
|
557
|
+
else:
|
|
558
|
+
endpoint_name = event[ControllerEvent.ENDPOINT_NAME]
|
|
559
|
+
applications_names = event[ControllerEvent.ENDPOINT_POLICY][
|
|
560
|
+
ControllerEventEndpointPolicy.MONITORING_APPLICATIONS
|
|
561
|
+
]
|
|
562
|
+
last_stream_timestamp = datetime.datetime.fromisoformat(
|
|
563
|
+
event[ControllerEvent.TIMESTAMP]
|
|
564
|
+
)
|
|
565
|
+
first_request = datetime.datetime.fromisoformat(
|
|
566
|
+
event[ControllerEvent.FIRST_REQUEST]
|
|
567
|
+
)
|
|
568
|
+
|
|
569
|
+
endpoint_updated = event[ControllerEvent.ENDPOINT_POLICY][
|
|
570
|
+
ControllerEventEndpointPolicy.ENDPOINT_UPDATED
|
|
571
|
+
]
|
|
572
|
+
|
|
573
|
+
endpoint_mode = mm_constants.EndpointMode.REAL_TIME
|
|
488
574
|
|
|
489
575
|
logger.info(
|
|
490
|
-
"Starting
|
|
491
|
-
)
|
|
492
|
-
last_stream_timestamp = datetime.datetime.fromisoformat(
|
|
493
|
-
event[ControllerEvent.TIMESTAMP]
|
|
494
|
-
)
|
|
495
|
-
first_request = datetime.datetime.fromisoformat(
|
|
496
|
-
event[ControllerEvent.FIRST_REQUEST]
|
|
576
|
+
"Starting to analyze", timestamp=last_stream_timestamp.isoformat()
|
|
497
577
|
)
|
|
578
|
+
|
|
498
579
|
with _BatchWindowGenerator(
|
|
499
580
|
project=project_name,
|
|
500
581
|
endpoint_id=endpoint_id,
|
|
@@ -506,42 +587,20 @@ class MonitoringApplicationController:
|
|
|
506
587
|
end_infer_time,
|
|
507
588
|
) in batch_window_generator.get_intervals(
|
|
508
589
|
application=application,
|
|
509
|
-
not_batch_endpoint=not_batch_endpoint,
|
|
510
590
|
first_request=first_request,
|
|
511
591
|
last_request=last_stream_timestamp,
|
|
592
|
+
endpoint_mode=endpoint_mode,
|
|
512
593
|
):
|
|
513
594
|
data_in_window = False
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
else:
|
|
524
|
-
if endpoint_id not in self.feature_sets:
|
|
525
|
-
self.feature_sets[endpoint_id] = fstore.get_feature_set(
|
|
526
|
-
event[ControllerEvent.FEATURE_SET_URI]
|
|
527
|
-
)
|
|
528
|
-
self.feature_sets.move_to_end(endpoint_id, last=False)
|
|
529
|
-
if (
|
|
530
|
-
len(self.feature_sets)
|
|
531
|
-
> self._MAX_FEATURE_SET_PER_WORKER
|
|
532
|
-
):
|
|
533
|
-
self.feature_sets.popitem(last=True)
|
|
534
|
-
m_fs = self.feature_sets.get(endpoint_id)
|
|
535
|
-
|
|
536
|
-
# Batch endpoint - get the relevant window data from the parquet target
|
|
537
|
-
df = m_fs.to_dataframe(
|
|
538
|
-
start_time=start_infer_time,
|
|
539
|
-
end_time=end_infer_time,
|
|
540
|
-
time_column=mm_constants.EventFieldType.TIMESTAMP,
|
|
541
|
-
storage_options=self.storage_options,
|
|
542
|
-
)
|
|
543
|
-
if len(df) > 0:
|
|
544
|
-
data_in_window = True
|
|
595
|
+
# Serving endpoint - get the relevant window data from the TSDB
|
|
596
|
+
prediction_metric = self.tsdb_connector.read_predictions(
|
|
597
|
+
start=start_infer_time,
|
|
598
|
+
end=end_infer_time,
|
|
599
|
+
endpoint_id=endpoint_id,
|
|
600
|
+
)
|
|
601
|
+
if prediction_metric.data:
|
|
602
|
+
data_in_window = True
|
|
603
|
+
|
|
545
604
|
if not data_in_window:
|
|
546
605
|
logger.info(
|
|
547
606
|
"No data found for the given interval",
|
|
@@ -564,49 +623,47 @@ class MonitoringApplicationController:
|
|
|
564
623
|
project=project_name,
|
|
565
624
|
applications_names=[application],
|
|
566
625
|
model_monitoring_access_key=self.model_monitoring_access_key,
|
|
567
|
-
endpoint_updated=
|
|
568
|
-
ControllerEventEndpointPolicy.ENDPOINT_UPDATED
|
|
569
|
-
],
|
|
626
|
+
endpoint_updated=endpoint_updated,
|
|
570
627
|
)
|
|
571
|
-
|
|
572
|
-
ControllerEventEndpointPolicy.BASE_PERIOD
|
|
573
|
-
]
|
|
574
|
-
current_time = mlrun.utils.datetime_now()
|
|
628
|
+
|
|
575
629
|
if (
|
|
576
|
-
|
|
630
|
+
event[ControllerEvent.KIND]
|
|
631
|
+
== mm_constants.ControllerEventKind.REGULAR_EVENT
|
|
632
|
+
):
|
|
633
|
+
base_period = event[ControllerEvent.ENDPOINT_POLICY][
|
|
634
|
+
ControllerEventEndpointPolicy.BASE_PERIOD
|
|
635
|
+
]
|
|
636
|
+
current_time = mlrun.utils.datetime_now()
|
|
637
|
+
if self._should_send_nop_event(
|
|
577
638
|
base_period,
|
|
578
639
|
batch_window_generator.get_min_last_analyzed(),
|
|
579
640
|
current_time,
|
|
580
|
-
)
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
ControllerEvent.
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
ControllerEvent.
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
}
|
|
604
|
-
self._push_to_main_stream(
|
|
605
|
-
event=event,
|
|
606
|
-
endpoint_id=endpoint_id,
|
|
607
|
-
)
|
|
641
|
+
):
|
|
642
|
+
event = {
|
|
643
|
+
ControllerEvent.KIND: mm_constants.ControllerEventKind.NOP_EVENT,
|
|
644
|
+
ControllerEvent.PROJECT: project_name,
|
|
645
|
+
ControllerEvent.ENDPOINT_ID: endpoint_id,
|
|
646
|
+
ControllerEvent.ENDPOINT_NAME: endpoint_name,
|
|
647
|
+
ControllerEvent.TIMESTAMP: current_time.isoformat(
|
|
648
|
+
timespec="microseconds"
|
|
649
|
+
),
|
|
650
|
+
ControllerEvent.ENDPOINT_POLICY: event[
|
|
651
|
+
ControllerEvent.ENDPOINT_POLICY
|
|
652
|
+
],
|
|
653
|
+
ControllerEvent.ENDPOINT_TYPE: event[
|
|
654
|
+
ControllerEvent.ENDPOINT_TYPE
|
|
655
|
+
],
|
|
656
|
+
ControllerEvent.FIRST_REQUEST: event[
|
|
657
|
+
ControllerEvent.FIRST_REQUEST
|
|
658
|
+
],
|
|
659
|
+
}
|
|
660
|
+
self._push_to_main_stream(
|
|
661
|
+
event=event,
|
|
662
|
+
endpoint_id=endpoint_id,
|
|
663
|
+
)
|
|
608
664
|
logger.info(
|
|
609
|
-
"Finish analyze for",
|
|
665
|
+
"Finish analyze for",
|
|
666
|
+
timestamp=last_stream_timestamp,
|
|
610
667
|
)
|
|
611
668
|
|
|
612
669
|
except Exception:
|
|
@@ -674,7 +731,9 @@ class MonitoringApplicationController:
|
|
|
674
731
|
"""
|
|
675
732
|
logger.info("Starting monitoring controller chief")
|
|
676
733
|
applications_names = []
|
|
677
|
-
endpoints = self.project_obj.list_model_endpoints(
|
|
734
|
+
endpoints = self.project_obj.list_model_endpoints(
|
|
735
|
+
tsdb_metrics=False, mode=mm_constants.EndpointMode.REAL_TIME
|
|
736
|
+
).endpoints
|
|
678
737
|
last_request_dict = self.tsdb_connector.get_last_request(
|
|
679
738
|
endpoint_ids=[mep.metadata.uid for mep in endpoints]
|
|
680
739
|
)
|
|
@@ -783,7 +842,6 @@ class MonitoringApplicationController:
|
|
|
783
842
|
sep=" ", timespec="microseconds"
|
|
784
843
|
),
|
|
785
844
|
endpoint_type=endpoint.metadata.endpoint_type,
|
|
786
|
-
feature_set_uri=endpoint.spec.monitoring_feature_set_uri,
|
|
787
845
|
endpoint_policy=json.dumps(policy),
|
|
788
846
|
)
|
|
789
847
|
policy[ControllerEventEndpointPolicy.ENDPOINT_UPDATED] = (
|
|
@@ -801,7 +859,6 @@ class MonitoringApplicationController:
|
|
|
801
859
|
sep=" ", timespec="microseconds"
|
|
802
860
|
),
|
|
803
861
|
endpoint_type=endpoint.metadata.endpoint_type.value,
|
|
804
|
-
feature_set_uri=endpoint.spec.monitoring_feature_set_uri,
|
|
805
862
|
endpoint_policy=policy,
|
|
806
863
|
)
|
|
807
864
|
|
|
@@ -814,7 +871,6 @@ class MonitoringApplicationController:
|
|
|
814
871
|
timestamp: str,
|
|
815
872
|
first_request: str,
|
|
816
873
|
endpoint_type: int,
|
|
817
|
-
feature_set_uri: str,
|
|
818
874
|
endpoint_policy: dict[str, Any],
|
|
819
875
|
) -> None:
|
|
820
876
|
"""
|
|
@@ -827,7 +883,6 @@ class MonitoringApplicationController:
|
|
|
827
883
|
:param endpoint_id: endpoint id string
|
|
828
884
|
:param endpoint_name: the endpoint name string
|
|
829
885
|
:param endpoint_type: Enum of the endpoint type
|
|
830
|
-
:param feature_set_uri: the feature set uri string
|
|
831
886
|
"""
|
|
832
887
|
event = {
|
|
833
888
|
ControllerEvent.KIND.value: kind,
|
|
@@ -837,7 +892,6 @@ class MonitoringApplicationController:
|
|
|
837
892
|
ControllerEvent.TIMESTAMP.value: timestamp,
|
|
838
893
|
ControllerEvent.FIRST_REQUEST.value: first_request,
|
|
839
894
|
ControllerEvent.ENDPOINT_TYPE.value: endpoint_type,
|
|
840
|
-
ControllerEvent.FEATURE_SET_URI.value: feature_set_uri,
|
|
841
895
|
ControllerEvent.ENDPOINT_POLICY.value: endpoint_policy,
|
|
842
896
|
}
|
|
843
897
|
logger.info(
|