mlrun 1.10.0rc17__tar.gz → 1.10.0rc18__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.0rc17 → mlrun-1.10.0rc18}/Makefile +0 -16
- {mlrun-1.10.0rc17/mlrun.egg-info → mlrun-1.10.0rc18}/PKG-INFO +2 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/dev-requirements.txt +2 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/artifact.py +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/constants.py +14 -6
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/config.py +14 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/datastore.py +4 -4
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/datastore_profile.py +26 -0
- mlrun-1.10.0rc18/mlrun/datastore/model_provider/huggingface_provider.py +183 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/model_provider.py +6 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/openai_provider.py +24 -12
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/utils.py +6 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/api.py +5 -3
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/base.py +107 -28
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/results.py +4 -7
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/run.py +3 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/states.py +1 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/helpers.py +6 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/logger.py +3 -1
- mlrun-1.10.0rc18/mlrun/utils/version/version.json +4 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18/mlrun.egg-info}/PKG-INFO +2 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/SOURCES.txt +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/requires.txt +1 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/requirements.txt +1 -1
- mlrun-1.10.0rc17/mlrun/utils/version/version.json +0 -4
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/LICENSE +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/MANIFEST.in +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/README.md +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/dependencies.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/dockerfiles/mlrun-api/requirements.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/archive.zip +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/infile.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/load-project.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_basics.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_dask.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_db.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_export_import.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_jobs.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_sparkk8s.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/mlrun_vault.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/model.bst +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/new-project.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/nulltst.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/params.csv +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/remote-spark.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/secrets.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/spark-function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/training.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/v2_model_server.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/examples/xgb_serving.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/extras-requirements.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/__main__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/alerts/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/alerts/alert.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/api/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/dataset.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/document.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/llm_prompt.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/model.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/artifacts/plots.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/constants.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/db/dialects.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/feature_set.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/model_endpoint.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/pipeline.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/formatters/run.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/runtimes/constants.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/alert.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/api_gateway.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/artifact.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/auth.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/background_task.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/client_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/clusterization_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/common.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/constants.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/datastore_profile.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/events.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/feature_store.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/frontend_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/hub.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/k8s.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/memory_reports.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/notification.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/object.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/pagination.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/partition.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/pipeline.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/regex.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/runs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/runtime_resource.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/schedule.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/secret.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/tag.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/schemas/workflow.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/secrets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/common/types.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/data_types/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/data_types/data_types.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/data_types/infer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/data_types/spark.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/data_types/to_pandas.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/alibaba_oss.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/azure_blob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/dbfs_store.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/filestore.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/google_cloud_storage.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/hdfs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/inmem.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/redis.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/remote_client.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/s3.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/snowflake_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/sources.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/spark_udf.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/spark_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/store_resources.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/storeytargets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/targets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/v3io.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/vectorstore.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/wasbfs/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/datastore/wasbfs/fs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/auth_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/factory.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/httpdb.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/db/nopdb.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/errors.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/execution.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/api.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/common.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_set.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_vector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_vector_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/ingestion.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/job.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/local_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/feature_store/steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/features.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/producer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/producer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/huggingface/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/huggingface/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/dataset.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/parallel_coordinates.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/estimator.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/metric.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/k8s_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/client.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/factory.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/local.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/launcher/remote.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/lists.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/context.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/controller.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/_schedules.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/_stats.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/features_drift_table.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/metrics/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/stream_processing.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/model_monitoring/writer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/context_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/errors.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers/default_packager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers/numpy_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers/pandas_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/packagers_manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/_archiver.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/_formatter.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/_pickler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/_supported_format.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/log_hint_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/package/utils/type_hint_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/platforms/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/platforms/iguazio.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/projects/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/projects/operations.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/projects/pipelines.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/projects/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/render.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/daskjob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/funcdoc.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/function_reference.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/generators.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/kubejob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/local.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/mounts.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/abstract.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/v1.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/application.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/nuclio.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/pod.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/remotesparkjob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/sparkjob/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/runtimes/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/secrets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/remote.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/routers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/serving_wrapper.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/system_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/v1_serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/serving/v2_serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/track/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/track/tracker.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/track/tracker_manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/track/trackers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/track/trackers/mlflow_tracker.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/async_http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/azure_vault.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/clones.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/condition_evaluator.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/console.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/git.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/ipython.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/mail.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/slack.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/webhook.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification_pusher.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/regex.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/retryer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/singleton.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/v3io_clients.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/vault.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/version/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun/utils/version/version.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/dependency_links.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/entry_points.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/not-zip-safe +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/mlrun.egg-info/top_level.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/packages.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/pyproject.toml +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/setup.cfg +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc18}/setup.py +0 -0
|
@@ -752,22 +752,6 @@ run-api: api ## Run mlrun api (dockerized)
|
|
|
752
752
|
--env MLRUN_HTTPDB__REAL_PATH=$(MLRUN_HTTPDB__REAL_PATH) \
|
|
753
753
|
$(MLRUN_API_IMAGE_NAME_TAGGED)
|
|
754
754
|
|
|
755
|
-
.PHONY: run-test-db
|
|
756
|
-
run-test-db:
|
|
757
|
-
# clean up any previous test db container. Don't remove it after run to be able to debug failures
|
|
758
|
-
docker rm test-db --force || true
|
|
759
|
-
docker run \
|
|
760
|
-
--name=test-db \
|
|
761
|
-
--volume $(shell pwd):/mlrun \
|
|
762
|
-
--publish 3306:3306 \
|
|
763
|
-
--env MYSQL_ROOT_PASSWORD="" \
|
|
764
|
-
--env MYSQL_ALLOW_EMPTY_PASSWORD="true" \
|
|
765
|
-
--env MYSQL_ROOT_HOST=% \
|
|
766
|
-
--env MYSQL_DATABASE="mlrun" \
|
|
767
|
-
--detach \
|
|
768
|
-
gcr.io/iguazio/mlrun-mysql:8.0 \
|
|
769
|
-
--character-set-server=utf8 \
|
|
770
|
-
--collation-server=utf8_bin
|
|
771
755
|
|
|
772
756
|
.PHONY: clean-html-docs
|
|
773
757
|
clean-html-docs: ## Clean html docs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mlrun
|
|
3
|
-
Version: 1.10.
|
|
3
|
+
Version: 1.10.0rc18
|
|
4
4
|
Summary: Tracking and config of machine learning runs
|
|
5
5
|
Home-page: https://github.com/mlrun/mlrun
|
|
6
6
|
Author: Yaron Haviv
|
|
@@ -44,7 +44,7 @@ Requires-Dist: semver~=3.0
|
|
|
44
44
|
Requires-Dist: dependency-injector~=4.41
|
|
45
45
|
Requires-Dist: fsspec<2024.7,>=2023.9.2
|
|
46
46
|
Requires-Dist: v3iofs~=0.1.17
|
|
47
|
-
Requires-Dist: storey~=1.10.
|
|
47
|
+
Requires-Dist: storey~=1.10.9
|
|
48
48
|
Requires-Dist: inflection~=0.5.0
|
|
49
49
|
Requires-Dist: python-dotenv~=1.0
|
|
50
50
|
Requires-Dist: setuptools>=75.2
|
|
@@ -12,7 +12,8 @@ pytest-alembic~=0.11.0
|
|
|
12
12
|
pytest-httpserver~=1.0
|
|
13
13
|
pytest-timeout~=2.0
|
|
14
14
|
pytest-mock-resources[mysql]~=2.12
|
|
15
|
-
|
|
15
|
+
# pin to 4.10.0 to avoid issues with k3s compatibility
|
|
16
|
+
testcontainers[k3s]~=4.10.0
|
|
16
17
|
aioresponses~=0.7
|
|
17
18
|
requests-mock~=1.8
|
|
18
19
|
httpx~=0.27.0
|
|
@@ -487,25 +487,33 @@ class ModelMonitoringLabels:
|
|
|
487
487
|
|
|
488
488
|
_RESERVED_FUNCTION_NAMES = MonitoringFunctionNames.list() + [SpecialApps.MLRUN_INFRA]
|
|
489
489
|
|
|
490
|
+
_RESERVED_EVALUATE_FUNCTION_SUFFIX = "-batch"
|
|
491
|
+
|
|
490
492
|
|
|
491
493
|
class ModelEndpointMonitoringMetricType(StrEnum):
|
|
492
494
|
RESULT = "result"
|
|
493
495
|
METRIC = "metric"
|
|
494
496
|
|
|
495
497
|
|
|
498
|
+
# refer to `mlrun.utils.regex.project_name`
|
|
499
|
+
_INNER_PROJECT_PATTERN = r"[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?"
|
|
500
|
+
PROJECT_PATTERN = rf"^{_INNER_PROJECT_PATTERN}$"
|
|
501
|
+
|
|
502
|
+
MODEL_ENDPOINT_ID_PATTERN = r"^[a-zA-Z0-9_-]+$"
|
|
503
|
+
|
|
496
504
|
_FQN_PART_PATTERN = r"[a-zA-Z0-9_-]+"
|
|
505
|
+
_RESULT_NAME_PATTERN = r"[a-zA-Z_][a-zA-Z0-9_]*"
|
|
506
|
+
|
|
497
507
|
FQN_PATTERN = (
|
|
498
|
-
rf"^(?P<project>{
|
|
508
|
+
rf"^(?P<project>{_INNER_PROJECT_PATTERN})\."
|
|
499
509
|
rf"(?P<app>{_FQN_PART_PATTERN})\."
|
|
500
510
|
rf"(?P<type>{ModelEndpointMonitoringMetricType.RESULT}|{ModelEndpointMonitoringMetricType.METRIC})\."
|
|
501
|
-
rf"(?P<name>{
|
|
511
|
+
rf"(?P<name>{_RESULT_NAME_PATTERN})$"
|
|
502
512
|
)
|
|
503
513
|
FQN_REGEX = re.compile(FQN_PATTERN)
|
|
514
|
+
APP_NAME_REGEX = re.compile(_FQN_PART_PATTERN)
|
|
515
|
+
RESULT_NAME_REGEX = re.compile(_RESULT_NAME_PATTERN)
|
|
504
516
|
|
|
505
|
-
# refer to `mlrun.utils.regex.project_name`
|
|
506
|
-
PROJECT_PATTERN = r"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$"
|
|
507
|
-
MODEL_ENDPOINT_ID_PATTERN = r"^[a-zA-Z0-9_-]+$"
|
|
508
|
-
RESULT_NAME_PATTERN = r"[a-zA-Z_][a-zA-Z0-9_]*"
|
|
509
517
|
|
|
510
518
|
INTERSECT_DICT_KEYS = {
|
|
511
519
|
ModelEndpointMonitoringMetricType.METRIC: "intersect_metrics",
|
|
@@ -194,6 +194,7 @@ default_config = {
|
|
|
194
194
|
"v3io_framesd": "http://framesd:8080",
|
|
195
195
|
"model_providers": {
|
|
196
196
|
"openai_default_model": "gpt-4o",
|
|
197
|
+
"huggingface_default_model": "microsoft/Phi-3-mini-4k-instruct",
|
|
197
198
|
},
|
|
198
199
|
# default node selector to be applied to all functions - json string base64 encoded format
|
|
199
200
|
"default_function_node_selector": "e30=",
|
|
@@ -1238,6 +1239,19 @@ class Config:
|
|
|
1238
1239
|
"""
|
|
1239
1240
|
return self.is_running_on_iguazio()
|
|
1240
1241
|
|
|
1242
|
+
@staticmethod
|
|
1243
|
+
def get_run_retry_staleness_threshold_timedelta() -> timedelta:
|
|
1244
|
+
"""
|
|
1245
|
+
Get the staleness threshold in timedelta for run retries.
|
|
1246
|
+
This is used to determine if a run is stale and should be retried.
|
|
1247
|
+
|
|
1248
|
+
:return: The staleness threshold in timedelta.
|
|
1249
|
+
"""
|
|
1250
|
+
staleness_threshold = int(
|
|
1251
|
+
mlrun.mlconf.monitoring.runs.retry.staleness_threshold
|
|
1252
|
+
)
|
|
1253
|
+
return timedelta(minutes=staleness_threshold)
|
|
1254
|
+
|
|
1241
1255
|
def to_dict(self):
|
|
1242
1256
|
return copy.deepcopy(self._cfg)
|
|
1243
1257
|
|
|
@@ -38,6 +38,7 @@ from ..utils import DB_SCHEMA, RunKeys
|
|
|
38
38
|
from .base import DataItem, DataStore, HttpStore
|
|
39
39
|
from .filestore import FileStore
|
|
40
40
|
from .inmem import InMemoryStore
|
|
41
|
+
from .model_provider.huggingface_provider import HuggingFaceProvider
|
|
41
42
|
from .model_provider.openai_provider import OpenAIProvider
|
|
42
43
|
from .store_resources import get_store_resource, is_store_uri
|
|
43
44
|
from .v3io import V3ioStore
|
|
@@ -102,8 +103,7 @@ def schema_to_store(schema) -> DataStore.__subclasses__():
|
|
|
102
103
|
def schema_to_model_provider(
|
|
103
104
|
schema: str, raise_missing_schema_exception=True
|
|
104
105
|
) -> type[ModelProvider]:
|
|
105
|
-
|
|
106
|
-
schema_dict = {"openai": OpenAIProvider}
|
|
106
|
+
schema_dict = {"openai": OpenAIProvider, "huggingface": HuggingFaceProvider}
|
|
107
107
|
provider_class = schema_dict.get(schema, None)
|
|
108
108
|
if not provider_class:
|
|
109
109
|
if raise_missing_schema_exception:
|
|
@@ -247,7 +247,7 @@ class StoreManager:
|
|
|
247
247
|
|
|
248
248
|
if schema == "ds":
|
|
249
249
|
datastore_profile = datastore_profile_read(url, project_name, secrets)
|
|
250
|
-
secrets = merge(secrets or {}, datastore_profile.secrets() or {})
|
|
250
|
+
secrets = merge({}, secrets or {}, datastore_profile.secrets() or {})
|
|
251
251
|
url = datastore_profile.url(subpath)
|
|
252
252
|
schema, endpoint, parsed_url = parse_url(url)
|
|
253
253
|
subpath = parsed_url.path
|
|
@@ -281,7 +281,7 @@ class StoreManager:
|
|
|
281
281
|
endpoint, subpath
|
|
282
282
|
)
|
|
283
283
|
remote_client = remote_client_class(
|
|
284
|
-
self, schema, cache_key,
|
|
284
|
+
self, schema, cache_key, endpoint, secrets=secrets, **kwargs
|
|
285
285
|
)
|
|
286
286
|
if not secrets and not mlrun.config.is_running_as_api():
|
|
287
287
|
cache[cache_key] = remote_client
|
|
@@ -486,6 +486,31 @@ class OpenAIProfile(DatastoreProfile):
|
|
|
486
486
|
return f"{self.type}://{subpath.lstrip('/')}"
|
|
487
487
|
|
|
488
488
|
|
|
489
|
+
class HuggingFaceProfile(DatastoreProfile):
|
|
490
|
+
type: str = pydantic.v1.Field("huggingface")
|
|
491
|
+
_private_attributes = ("token", "model_kwargs")
|
|
492
|
+
task: typing.Optional[str] = None
|
|
493
|
+
token: typing.Optional[str] = None
|
|
494
|
+
device: typing.Optional[typing.Union[int, str]] = None
|
|
495
|
+
device_map: typing.Union[str, dict[str, typing.Union[int, str]], None] = None
|
|
496
|
+
trust_remote_code: bool = None
|
|
497
|
+
model_kwargs: typing.Optional[dict[str, typing.Any]] = None
|
|
498
|
+
|
|
499
|
+
def secrets(self) -> dict:
|
|
500
|
+
keys = {
|
|
501
|
+
"HF_TASK": self.task,
|
|
502
|
+
"HF_TOKEN": self.token,
|
|
503
|
+
"HF_DEVICE": self.device,
|
|
504
|
+
"HF_DEVICE_MAP": self.device_map,
|
|
505
|
+
"HF_TRUST_REMOTE_CODE": self.trust_remote_code,
|
|
506
|
+
"HF_MODEL_KWARGS": self.model_kwargs,
|
|
507
|
+
}
|
|
508
|
+
return {k: v for k, v in keys.items() if v}
|
|
509
|
+
|
|
510
|
+
def url(self, subpath):
|
|
511
|
+
return f"{self.type}://{subpath.lstrip('/')}"
|
|
512
|
+
|
|
513
|
+
|
|
489
514
|
_DATASTORE_TYPE_TO_PROFILE_CLASS: dict[str, type[DatastoreProfile]] = {
|
|
490
515
|
"v3io": DatastoreProfileV3io,
|
|
491
516
|
"s3": DatastoreProfileS3,
|
|
@@ -500,6 +525,7 @@ _DATASTORE_TYPE_TO_PROFILE_CLASS: dict[str, type[DatastoreProfile]] = {
|
|
|
500
525
|
"taosws": DatastoreProfileTDEngine,
|
|
501
526
|
"config": ConfigProfile,
|
|
502
527
|
"openai": OpenAIProfile,
|
|
528
|
+
"huggingface": HuggingFaceProfile,
|
|
503
529
|
}
|
|
504
530
|
|
|
505
531
|
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Copyright 2025 Iguazio
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from typing import TYPE_CHECKING, Optional, TypeVar, Union
|
|
16
|
+
|
|
17
|
+
import mlrun
|
|
18
|
+
from mlrun.datastore.model_provider.model_provider import ModelProvider
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from transformers.pipelines.base import Pipeline
|
|
22
|
+
|
|
23
|
+
T = TypeVar("T")
|
|
24
|
+
ChatType = list[dict[str, str]] # according to transformers.pipelines.text_generation
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class HuggingFaceProvider(ModelProvider):
|
|
28
|
+
"""
|
|
29
|
+
HuggingFaceProvider is a wrapper around the Hugging Face Transformers pipeline
|
|
30
|
+
that provides an interface for interacting with a wide range of Hugging Face models.
|
|
31
|
+
|
|
32
|
+
It supports synchronous operations, enabling flexible integration into various workflows.
|
|
33
|
+
|
|
34
|
+
This class extends the ModelProvider base class and implements Hugging Face-specific
|
|
35
|
+
functionality, including pipeline initialization, default text generation operations,
|
|
36
|
+
and custom operations tailored to the Hugging Face Transformers pipeline API.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(
|
|
40
|
+
self,
|
|
41
|
+
parent,
|
|
42
|
+
schema,
|
|
43
|
+
name,
|
|
44
|
+
endpoint="",
|
|
45
|
+
secrets: Optional[dict] = None,
|
|
46
|
+
default_invoke_kwargs: Optional[dict] = None,
|
|
47
|
+
):
|
|
48
|
+
endpoint = endpoint or mlrun.mlconf.model_providers.huggingface_default_model
|
|
49
|
+
if schema != "huggingface":
|
|
50
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
51
|
+
"HuggingFaceProvider supports only 'huggingface' as the provider kind."
|
|
52
|
+
)
|
|
53
|
+
super().__init__(
|
|
54
|
+
parent=parent,
|
|
55
|
+
kind=schema,
|
|
56
|
+
name=name,
|
|
57
|
+
endpoint=endpoint,
|
|
58
|
+
secrets=secrets,
|
|
59
|
+
default_invoke_kwargs=default_invoke_kwargs,
|
|
60
|
+
)
|
|
61
|
+
self.options = self.get_client_options()
|
|
62
|
+
self._expected_operation_type = None
|
|
63
|
+
self.load_client()
|
|
64
|
+
|
|
65
|
+
@staticmethod
|
|
66
|
+
def _extract_string_output(result) -> str:
|
|
67
|
+
"""
|
|
68
|
+
Extracts the first generated string from Hugging Face pipeline output,
|
|
69
|
+
regardless of whether it's plain text-generation or chat-style output.
|
|
70
|
+
"""
|
|
71
|
+
if not isinstance(result, list) or len(result) == 0:
|
|
72
|
+
raise ValueError("Empty or invalid pipeline output")
|
|
73
|
+
|
|
74
|
+
return result[0].get("generated_text")
|
|
75
|
+
|
|
76
|
+
@classmethod
|
|
77
|
+
def parse_endpoint_and_path(cls, endpoint, subpath) -> (str, str):
|
|
78
|
+
if endpoint and subpath:
|
|
79
|
+
endpoint = endpoint + subpath
|
|
80
|
+
# In HuggingFace, "/" in a model name is part of the name — `subpath` is not used.
|
|
81
|
+
subpath = ""
|
|
82
|
+
return endpoint, subpath
|
|
83
|
+
|
|
84
|
+
def load_client(self) -> None:
|
|
85
|
+
"""
|
|
86
|
+
Initializes the Hugging Face pipeline using the provided options.
|
|
87
|
+
|
|
88
|
+
This method imports the `pipeline` function from the `transformers` package,
|
|
89
|
+
creates a pipeline instance with the specified task and model (from `self.options`),
|
|
90
|
+
and assigns it to `self._client`.
|
|
91
|
+
|
|
92
|
+
Note: Hugging Face pipelines are synchronous and do not support async invocation.
|
|
93
|
+
|
|
94
|
+
Raises:
|
|
95
|
+
ImportError: If the `transformers` package is not installed.
|
|
96
|
+
"""
|
|
97
|
+
try:
|
|
98
|
+
from transformers import pipeline, AutoModelForCausalLM # noqa
|
|
99
|
+
from transformers import AutoTokenizer # noqa
|
|
100
|
+
from transformers.pipelines.base import Pipeline # noqa
|
|
101
|
+
|
|
102
|
+
self._client = pipeline(model=self.model, **self.options)
|
|
103
|
+
self._expected_operation_type = Pipeline
|
|
104
|
+
except ImportError as exc:
|
|
105
|
+
raise ImportError("transformers package is not installed") from exc
|
|
106
|
+
|
|
107
|
+
def get_client_options(self):
|
|
108
|
+
res = dict(
|
|
109
|
+
task=self._get_secret_or_env("HF_TASK") or "text-generation",
|
|
110
|
+
token=self._get_secret_or_env("HF_TOKEN"),
|
|
111
|
+
device=self._get_secret_or_env("HF_DEVICE"),
|
|
112
|
+
device_map=self._get_secret_or_env("HF_DEVICE_MAP"),
|
|
113
|
+
trust_remote_code=self._get_secret_or_env("HF_TRUST_REMOTE_CODE"),
|
|
114
|
+
model_kwargs=self._get_secret_or_env("HF_MODEL_KWARGS"),
|
|
115
|
+
)
|
|
116
|
+
return self._sanitize_options(res)
|
|
117
|
+
|
|
118
|
+
def custom_invoke(
|
|
119
|
+
self, operation: Optional["Pipeline"] = None, **invoke_kwargs
|
|
120
|
+
) -> Optional[T]:
|
|
121
|
+
"""
|
|
122
|
+
HuggingFace implementation of `ModelProvider.custom_invoke`.
|
|
123
|
+
Use the default config in provider client/ user defined client:
|
|
124
|
+
|
|
125
|
+
Example:
|
|
126
|
+
```python
|
|
127
|
+
image = Image.open(image_path)
|
|
128
|
+
pipeline_object = pipeline("image-classification", model="microsoft/resnet-50")
|
|
129
|
+
result = hf_provider.custom_invoke(
|
|
130
|
+
pipeline_object,
|
|
131
|
+
inputs=image,
|
|
132
|
+
)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
:param operation: A pipeline object
|
|
137
|
+
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
138
|
+
:return: The full response returned by the operation.
|
|
139
|
+
|
|
140
|
+
"""
|
|
141
|
+
invoke_kwargs = self.get_invoke_kwargs(invoke_kwargs)
|
|
142
|
+
if operation:
|
|
143
|
+
if not isinstance(operation, self._expected_operation_type):
|
|
144
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
145
|
+
"Huggingface operation must inherit" " from 'Pipeline' object"
|
|
146
|
+
)
|
|
147
|
+
return operation(**invoke_kwargs)
|
|
148
|
+
else:
|
|
149
|
+
return self.client(**invoke_kwargs)
|
|
150
|
+
|
|
151
|
+
def invoke(
|
|
152
|
+
self,
|
|
153
|
+
messages: Union[str, list[str], ChatType, list[ChatType]] = None,
|
|
154
|
+
as_str: bool = False,
|
|
155
|
+
**invoke_kwargs,
|
|
156
|
+
) -> Optional[Union[str, list, T]]:
|
|
157
|
+
"""
|
|
158
|
+
HuggingFace-specific implementation of `ModelProvider.invoke`.
|
|
159
|
+
Invokes a HuggingFace model operation using the synchronous client.
|
|
160
|
+
For complete usage details, refer to `ModelProvider.invoke`.
|
|
161
|
+
:param messages:
|
|
162
|
+
Same as ModelProvider.invoke.
|
|
163
|
+
|
|
164
|
+
:param as_str:
|
|
165
|
+
If `True`, returns only the main content from a single response
|
|
166
|
+
(intended for single-response use cases).
|
|
167
|
+
If `False`, returns the full response object, whose type depends on
|
|
168
|
+
the client (e.g., `pipeline`).
|
|
169
|
+
|
|
170
|
+
:param invoke_kwargs:
|
|
171
|
+
Same as ModelProvider.invoke.
|
|
172
|
+
:return: Same as ModelProvider.invoke.
|
|
173
|
+
"""
|
|
174
|
+
if self.client.task != "text-generation":
|
|
175
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
176
|
+
"HuggingFaceProvider.invoke supports text-generation task only"
|
|
177
|
+
)
|
|
178
|
+
if as_str:
|
|
179
|
+
invoke_kwargs["return_full_text"] = False
|
|
180
|
+
response = self.custom_invoke(text_inputs=messages, **invoke_kwargs)
|
|
181
|
+
if as_str:
|
|
182
|
+
return self._extract_string_output(response)
|
|
183
|
+
return response
|
|
@@ -148,7 +148,12 @@ class ModelProvider(BaseRemoteClient):
|
|
|
148
148
|
|
|
149
149
|
@property
|
|
150
150
|
def model(self) -> Optional[str]:
|
|
151
|
-
|
|
151
|
+
"""
|
|
152
|
+
Returns the model identifier used by the underlying SDK.
|
|
153
|
+
|
|
154
|
+
:return: A string representing the model ID, or None if not set.
|
|
155
|
+
"""
|
|
156
|
+
return self.endpoint
|
|
152
157
|
|
|
153
158
|
def get_invoke_kwargs(self, invoke_kwargs) -> dict:
|
|
154
159
|
kwargs = self.default_invoke_kwargs.copy()
|
|
@@ -11,11 +11,13 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
+
import inspect
|
|
14
15
|
from collections.abc import Awaitable
|
|
15
16
|
from typing import Callable, Optional, TypeVar, Union
|
|
16
17
|
|
|
17
18
|
import mlrun
|
|
18
19
|
from mlrun.datastore.model_provider.model_provider import ModelProvider
|
|
20
|
+
from mlrun.datastore.utils import accepts_param
|
|
19
21
|
|
|
20
22
|
T = TypeVar("T")
|
|
21
23
|
|
|
@@ -68,10 +70,6 @@ class OpenAIProvider(ModelProvider):
|
|
|
68
70
|
subpath = ""
|
|
69
71
|
return endpoint, subpath
|
|
70
72
|
|
|
71
|
-
@property
|
|
72
|
-
def model(self) -> Optional[str]:
|
|
73
|
-
return self.endpoint
|
|
74
|
-
|
|
75
73
|
def load_client(self) -> None:
|
|
76
74
|
"""
|
|
77
75
|
Initializes the OpenAI SDK client using the provided options.
|
|
@@ -126,12 +124,18 @@ class OpenAIProvider(ModelProvider):
|
|
|
126
124
|
|
|
127
125
|
"""
|
|
128
126
|
invoke_kwargs = self.get_invoke_kwargs(invoke_kwargs)
|
|
127
|
+
model_kwargs = {"model": invoke_kwargs.pop("model", None) or self.model}
|
|
128
|
+
|
|
129
129
|
if operation:
|
|
130
|
-
|
|
130
|
+
if not callable(operation):
|
|
131
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
132
|
+
"OpenAI custom_invoke operation must be a callable"
|
|
133
|
+
)
|
|
134
|
+
if not accepts_param(operation, "model"):
|
|
135
|
+
model_kwargs = {}
|
|
136
|
+
return operation(**invoke_kwargs, **model_kwargs)
|
|
131
137
|
else:
|
|
132
|
-
return self.client.chat.completions.create(
|
|
133
|
-
**invoke_kwargs, model=self.model
|
|
134
|
-
)
|
|
138
|
+
return self.client.chat.completions.create(**invoke_kwargs, **model_kwargs)
|
|
135
139
|
|
|
136
140
|
async def async_custom_invoke(
|
|
137
141
|
self,
|
|
@@ -145,25 +149,33 @@ class OpenAIProvider(ModelProvider):
|
|
|
145
149
|
`ModelProvider.async_custom_invoke`.
|
|
146
150
|
|
|
147
151
|
Example:
|
|
148
|
-
|
|
152
|
+
```python
|
|
149
153
|
result = openai_model_provider.invoke(
|
|
150
154
|
openai_model_provider.async_client.images.generate,
|
|
151
155
|
prompt="A futuristic cityscape at sunset",
|
|
152
156
|
n=1,
|
|
153
157
|
size="1024x1024",
|
|
154
158
|
)
|
|
155
|
-
|
|
159
|
+
```
|
|
160
|
+
|
|
156
161
|
:param operation: Same as ModelProvider.async_custom_invoke.
|
|
157
162
|
:param invoke_kwargs: Same as ModelProvider.async_custom_invoke.
|
|
158
163
|
:return: Same as ModelProvider.async_custom_invoke.
|
|
159
164
|
|
|
160
165
|
"""
|
|
161
166
|
invoke_kwargs = self.get_invoke_kwargs(invoke_kwargs)
|
|
167
|
+
model_kwargs = {"model": invoke_kwargs.pop("model", None) or self.model}
|
|
162
168
|
if operation:
|
|
163
|
-
|
|
169
|
+
if not inspect.iscoroutinefunction(operation):
|
|
170
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
171
|
+
"OpenAI async_custom_invoke operation must be a coroutine function"
|
|
172
|
+
)
|
|
173
|
+
if not accepts_param(operation, "model"):
|
|
174
|
+
model_kwargs = {}
|
|
175
|
+
return await operation(**invoke_kwargs, **model_kwargs)
|
|
164
176
|
else:
|
|
165
177
|
return await self.async_client.chat.completions.create(
|
|
166
|
-
**invoke_kwargs,
|
|
178
|
+
**invoke_kwargs, **model_kwargs
|
|
167
179
|
)
|
|
168
180
|
|
|
169
181
|
def invoke(
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import inspect
|
|
15
16
|
import math
|
|
16
17
|
import tarfile
|
|
17
18
|
import tempfile
|
|
@@ -333,3 +334,8 @@ def parse_url(url):
|
|
|
333
334
|
if parsed_url.port:
|
|
334
335
|
endpoint += f":{parsed_url.port}"
|
|
335
336
|
return schema, endpoint, parsed_url
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
def accepts_param(func: callable, param_name):
|
|
340
|
+
sig = inspect.signature(func)
|
|
341
|
+
return param_name in sig.parameters
|
|
@@ -19,8 +19,6 @@ from datetime import datetime
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
import pandas as pd
|
|
21
21
|
|
|
22
|
-
import mlrun.artifacts
|
|
23
|
-
import mlrun.common.helpers
|
|
24
22
|
import mlrun.common.schemas.model_monitoring.constants as mm_constants
|
|
25
23
|
import mlrun.datastore.base
|
|
26
24
|
import mlrun.feature_store
|
|
@@ -538,10 +536,14 @@ def _create_model_monitoring_function_base(
|
|
|
538
536
|
This function does not set the labels or mounts v3io.
|
|
539
537
|
"""
|
|
540
538
|
if name in mm_constants._RESERVED_FUNCTION_NAMES:
|
|
541
|
-
raise mlrun.errors.
|
|
539
|
+
raise mlrun.errors.MLRunValueError(
|
|
542
540
|
"An application cannot have the following names: "
|
|
543
541
|
f"{mm_constants._RESERVED_FUNCTION_NAMES}"
|
|
544
542
|
)
|
|
543
|
+
if name and name.endswith(mm_constants._RESERVED_EVALUATE_FUNCTION_SUFFIX):
|
|
544
|
+
raise mlrun.errors.MLRunValueError(
|
|
545
|
+
"Model monitoring application names cannot end with `-batch`"
|
|
546
|
+
)
|
|
545
547
|
if func is None:
|
|
546
548
|
func = ""
|
|
547
549
|
func_obj = typing.cast(
|