mlrun 1.10.0rc17__tar.gz → 1.10.0rc19__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.0rc19}/Makefile +0 -16
- {mlrun-1.10.0rc17/mlrun.egg-info → mlrun-1.10.0rc19}/PKG-INFO +2 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/dev-requirements.txt +3 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/__init__.py +21 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/constants.py +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/artifact.py +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/model_monitoring/constants.py +14 -6
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/config.py +14 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/__init__.py +9 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/datastore.py +4 -4
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/datastore_profile.py +26 -0
- mlrun-1.10.0rc19/mlrun/datastore/model_provider/huggingface_provider.py +182 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/model_provider/model_provider.py +57 -56
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/model_provider/openai_provider.py +34 -20
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/utils.py +6 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/base.py +13 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/api.py +5 -3
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/base.py +107 -28
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/results.py +4 -7
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/run.py +4 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/base.py +5 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/daskjob.py +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/application/application.py +84 -5
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/function.py +3 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/server.py +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/states.py +5 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/helpers.py +16 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/logger.py +3 -1
- mlrun-1.10.0rc19/mlrun/utils/version/version.json +4 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19/mlrun.egg-info}/PKG-INFO +2 -2
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/SOURCES.txt +1 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/requires.txt +1 -1
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/requirements.txt +1 -1
- mlrun-1.10.0rc17/mlrun/utils/version/version.json +0 -4
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/LICENSE +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/MANIFEST.in +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/README.md +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/dependencies.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/dockerfiles/mlrun-api/requirements.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/archive.zip +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/infile.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/load-project.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_basics.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_dask.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_db.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_export_import.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_jobs.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_sparkk8s.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/mlrun_vault.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/model.bst +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/new-project.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/nulltst.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/params.csv +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/remote-spark.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/secrets.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/spark-function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/training.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/v2_model_server.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/examples/xgb_serving.ipynb +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/extras-requirements.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/__main__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/alerts/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/alerts/alert.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/api/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/dataset.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/document.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/llm_prompt.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/model.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/artifacts/plots.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/db/dialects.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/feature_set.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/model_endpoint.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/pipeline.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/formatters/run.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/runtimes/constants.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/alert.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/api_gateway.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/artifact.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/auth.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/background_task.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/client_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/clusterization_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/common.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/constants.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/datastore_profile.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/events.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/feature_store.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/frontend_spec.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/function.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/hub.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/k8s.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/memory_reports.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/notification.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/object.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/pagination.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/partition.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/pipeline.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/regex.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/runs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/runtime_resource.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/schedule.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/secret.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/tag.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/schemas/workflow.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/secrets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/common/types.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/data_types/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/data_types/data_types.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/data_types/infer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/data_types/spark.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/data_types/to_pandas.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/alibaba_oss.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/azure_blob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/dbfs_store.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/filestore.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/google_cloud_storage.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/hdfs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/inmem.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/model_provider/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/redis.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/remote_client.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/s3.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/snowflake_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/sources.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/spark_udf.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/spark_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/store_resources.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/storeytargets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/targets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/v3io.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/vectorstore.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/wasbfs/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/datastore/wasbfs/fs.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/auth_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/factory.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/httpdb.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/db/nopdb.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/errors.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/execution.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/api.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/common.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/feature_set.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/feature_vector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/feature_vector_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/ingestion.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/job.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/local_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/feature_store/steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/features.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/producer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_dl_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/producer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/_ml_common/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/huggingface/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/huggingface/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/lgbm/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/onnx/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/onnx/dataset.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/onnx/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/onnx/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/parallel_coordinates.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/pytorch/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/estimator.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/metric.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/sklearn/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/model_server.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/tf_keras/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/xgboost/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/xgboost/model_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/frameworks/xgboost/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/k8s_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/client.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/factory.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/local.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/launcher/remote.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/lists.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/context.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/controller.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/_schedules.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/_stats.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/features_drift_table.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/helpers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/metrics/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/stream_processing.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/model_monitoring/writer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/context_handler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/errors.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers/default_packager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers/numpy_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers/pandas_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/packagers_manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/_archiver.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/_formatter.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/_pickler.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/_supported_format.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/log_hint_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/package/utils/type_hint_utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/platforms/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/platforms/iguazio.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/projects/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/projects/operations.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/projects/pipelines.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/projects/project.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/render.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/databricks_job/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/funcdoc.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/function_reference.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/generators.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/kubejob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/local.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/mounts.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/mpijob/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/mpijob/abstract.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/mpijob/v1.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/nuclio.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/nuclio/serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/pod.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/remotesparkjob.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/sparkjob/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/runtimes/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/secrets.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/merger.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/remote.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/routers.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/serving_wrapper.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/system_steps.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/utils.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/v1_serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/serving/v2_serving.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/track/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/track/tracker.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/track/tracker_manager.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/track/trackers/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/track/trackers/mlflow_tracker.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/async_http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/azure_vault.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/clones.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/condition_evaluator.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/http.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/base.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/console.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/git.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/ipython.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/mail.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/slack.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification/webhook.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/notifications/notification_pusher.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/regex.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/retryer.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/singleton.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/v3io_clients.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/vault.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/version/__init__.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun/utils/version/version.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/dependency_links.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/entry_points.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/not-zip-safe +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/mlrun.egg-info/top_level.txt +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/packages.py +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/pyproject.toml +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/setup.cfg +0 -0
- {mlrun-1.10.0rc17 → mlrun-1.10.0rc19}/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.0rc19
|
|
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
|
|
@@ -47,3 +48,4 @@ openai~=1.88
|
|
|
47
48
|
transformers~=4.53
|
|
48
49
|
# for hugging face image classifier test:
|
|
49
50
|
tf-keras~=2.18
|
|
51
|
+
pillow~=11.3
|
|
@@ -31,6 +31,7 @@ from typing import Optional
|
|
|
31
31
|
|
|
32
32
|
import dotenv
|
|
33
33
|
|
|
34
|
+
from .common.constants import MLRUN_ACTIVE_PROJECT
|
|
34
35
|
from .config import config as mlconf
|
|
35
36
|
from .datastore import DataItem, ModelProvider, store_manager
|
|
36
37
|
from .db import get_run_db
|
|
@@ -167,11 +168,29 @@ def set_environment(
|
|
|
167
168
|
|
|
168
169
|
|
|
169
170
|
def get_current_project(silent: bool = False) -> Optional[MlrunProject]:
|
|
170
|
-
if
|
|
171
|
+
if pipeline_context.project:
|
|
172
|
+
return pipeline_context.project
|
|
173
|
+
|
|
174
|
+
project_name = environ.get(MLRUN_ACTIVE_PROJECT, None)
|
|
175
|
+
if not project_name:
|
|
176
|
+
if not silent:
|
|
177
|
+
raise MLRunInvalidArgumentError(
|
|
178
|
+
"No current project is initialized. Use new, get or load project functions first."
|
|
179
|
+
)
|
|
180
|
+
return None
|
|
181
|
+
|
|
182
|
+
project = load_project(
|
|
183
|
+
name=project_name,
|
|
184
|
+
url=project_name,
|
|
185
|
+
save=False,
|
|
186
|
+
sync_functions=False,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
if not project and not silent:
|
|
171
190
|
raise MLRunInvalidArgumentError(
|
|
172
191
|
"No current project is initialized. Use new, get or load project functions first."
|
|
173
192
|
)
|
|
174
|
-
return
|
|
193
|
+
return project
|
|
175
194
|
|
|
176
195
|
|
|
177
196
|
def get_sample_path(subpath=""):
|
|
@@ -30,6 +30,7 @@ RESERVED_TAG_NAME_LATEST = "latest"
|
|
|
30
30
|
JOB_TYPE_WORKFLOW_RUNNER = "workflow-runner"
|
|
31
31
|
JOB_TYPE_PROJECT_LOADER = "project-loader"
|
|
32
32
|
JOB_TYPE_RERUN_WORKFLOW_RUNNER = "rerun-workflow-runner"
|
|
33
|
+
MLRUN_ACTIVE_PROJECT = "MLRUN_ACTIVE_PROJECT"
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
class MLRunInternalLabels:
|
|
@@ -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
|
|
|
@@ -39,6 +39,7 @@ __all__ = [
|
|
|
39
39
|
from urllib.parse import urlparse
|
|
40
40
|
|
|
41
41
|
import fsspec
|
|
42
|
+
import storey
|
|
42
43
|
|
|
43
44
|
import mlrun.datastore.wasbfs
|
|
44
45
|
from mlrun.datastore.datastore_profile import (
|
|
@@ -168,11 +169,12 @@ def get_stream_pusher(stream_path: str, **kwargs):
|
|
|
168
169
|
raise ValueError(f"unsupported stream path {stream_path}")
|
|
169
170
|
|
|
170
171
|
|
|
171
|
-
class _DummyStream:
|
|
172
|
+
class _DummyStream(storey.MapClass):
|
|
172
173
|
"""stream emulator for tests and debug"""
|
|
173
174
|
|
|
174
175
|
def __init__(self, event_list=None, **kwargs):
|
|
175
176
|
self.event_list = event_list or []
|
|
177
|
+
super().__init__(**kwargs)
|
|
176
178
|
|
|
177
179
|
def push(self, data, **kwargs):
|
|
178
180
|
if not isinstance(data, list):
|
|
@@ -180,3 +182,9 @@ class _DummyStream:
|
|
|
180
182
|
for item in data:
|
|
181
183
|
logger.info(f"dummy stream got event: {item}, kwargs={kwargs}")
|
|
182
184
|
self.event_list.append(item)
|
|
185
|
+
|
|
186
|
+
def do(self, event):
|
|
187
|
+
if not isinstance(event, list):
|
|
188
|
+
event = [event]
|
|
189
|
+
for item in event:
|
|
190
|
+
self.event_list.append(item)
|
|
@@ -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,182 @@
|
|
|
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, Any, Optional, 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
|
+
from transformers.pipelines.text_generation import ChatType
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class HuggingFaceProvider(ModelProvider):
|
|
26
|
+
"""
|
|
27
|
+
HuggingFaceProvider is a wrapper around the Hugging Face Transformers pipeline
|
|
28
|
+
that provides an interface for interacting with a wide range of Hugging Face models.
|
|
29
|
+
|
|
30
|
+
It supports synchronous operations, enabling flexible integration into various workflows.
|
|
31
|
+
|
|
32
|
+
This class extends the ModelProvider base class and implements Hugging Face-specific
|
|
33
|
+
functionality, including pipeline initialization, default text generation operations,
|
|
34
|
+
and custom operations tailored to the Hugging Face Transformers pipeline API.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
def __init__(
|
|
38
|
+
self,
|
|
39
|
+
parent,
|
|
40
|
+
schema,
|
|
41
|
+
name,
|
|
42
|
+
endpoint="",
|
|
43
|
+
secrets: Optional[dict] = None,
|
|
44
|
+
default_invoke_kwargs: Optional[dict] = None,
|
|
45
|
+
):
|
|
46
|
+
endpoint = endpoint or mlrun.mlconf.model_providers.huggingface_default_model
|
|
47
|
+
if schema != "huggingface":
|
|
48
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
49
|
+
"HuggingFaceProvider supports only 'huggingface' as the provider kind."
|
|
50
|
+
)
|
|
51
|
+
super().__init__(
|
|
52
|
+
parent=parent,
|
|
53
|
+
kind=schema,
|
|
54
|
+
name=name,
|
|
55
|
+
endpoint=endpoint,
|
|
56
|
+
secrets=secrets,
|
|
57
|
+
default_invoke_kwargs=default_invoke_kwargs,
|
|
58
|
+
)
|
|
59
|
+
self.options = self.get_client_options()
|
|
60
|
+
self._expected_operation_type = None
|
|
61
|
+
self.load_client()
|
|
62
|
+
|
|
63
|
+
@staticmethod
|
|
64
|
+
def _extract_string_output(result) -> str:
|
|
65
|
+
"""
|
|
66
|
+
Extracts the first generated string from Hugging Face pipeline output,
|
|
67
|
+
regardless of whether it's plain text-generation or chat-style output.
|
|
68
|
+
"""
|
|
69
|
+
if not isinstance(result, list) or len(result) == 0:
|
|
70
|
+
raise ValueError("Empty or invalid pipeline output")
|
|
71
|
+
|
|
72
|
+
return result[0].get("generated_text")
|
|
73
|
+
|
|
74
|
+
@classmethod
|
|
75
|
+
def parse_endpoint_and_path(cls, endpoint, subpath) -> (str, str):
|
|
76
|
+
if endpoint and subpath:
|
|
77
|
+
endpoint = endpoint + subpath
|
|
78
|
+
# In HuggingFace, "/" in a model name is part of the name — `subpath` is not used.
|
|
79
|
+
subpath = ""
|
|
80
|
+
return endpoint, subpath
|
|
81
|
+
|
|
82
|
+
def load_client(self) -> None:
|
|
83
|
+
"""
|
|
84
|
+
Initializes the Hugging Face pipeline using the provided options.
|
|
85
|
+
|
|
86
|
+
This method imports the `pipeline` function from the `transformers` package,
|
|
87
|
+
creates a pipeline instance with the specified task and model (from `self.options`),
|
|
88
|
+
and assigns it to `self._client`.
|
|
89
|
+
|
|
90
|
+
Note: Hugging Face pipelines are synchronous and do not support async invocation.
|
|
91
|
+
|
|
92
|
+
Raises:
|
|
93
|
+
ImportError: If the `transformers` package is not installed.
|
|
94
|
+
"""
|
|
95
|
+
try:
|
|
96
|
+
from transformers import pipeline, AutoModelForCausalLM # noqa
|
|
97
|
+
from transformers import AutoTokenizer # noqa
|
|
98
|
+
from transformers.pipelines.base import Pipeline # noqa
|
|
99
|
+
|
|
100
|
+
self._client = pipeline(model=self.model, **self.options)
|
|
101
|
+
self._expected_operation_type = Pipeline
|
|
102
|
+
except ImportError as exc:
|
|
103
|
+
raise ImportError("transformers package is not installed") from exc
|
|
104
|
+
|
|
105
|
+
def get_client_options(self):
|
|
106
|
+
res = dict(
|
|
107
|
+
task=self._get_secret_or_env("HF_TASK") or "text-generation",
|
|
108
|
+
token=self._get_secret_or_env("HF_TOKEN"),
|
|
109
|
+
device=self._get_secret_or_env("HF_DEVICE"),
|
|
110
|
+
device_map=self._get_secret_or_env("HF_DEVICE_MAP"),
|
|
111
|
+
trust_remote_code=self._get_secret_or_env("HF_TRUST_REMOTE_CODE"),
|
|
112
|
+
model_kwargs=self._get_secret_or_env("HF_MODEL_KWARGS"),
|
|
113
|
+
)
|
|
114
|
+
return self._sanitize_options(res)
|
|
115
|
+
|
|
116
|
+
def custom_invoke(
|
|
117
|
+
self, operation: Optional["Pipeline"] = None, **invoke_kwargs
|
|
118
|
+
) -> Union[list, dict, Any]:
|
|
119
|
+
"""
|
|
120
|
+
HuggingFace implementation of `ModelProvider.custom_invoke`.
|
|
121
|
+
Use the default config in provider client/ user defined client:
|
|
122
|
+
|
|
123
|
+
Example:
|
|
124
|
+
```python
|
|
125
|
+
image = Image.open(image_path)
|
|
126
|
+
pipeline_object = pipeline("image-classification", model="microsoft/resnet-50")
|
|
127
|
+
result = hf_provider.custom_invoke(
|
|
128
|
+
pipeline_object,
|
|
129
|
+
inputs=image,
|
|
130
|
+
)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
:param operation: A pipeline object
|
|
135
|
+
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
136
|
+
:return: The full response returned by the operation.
|
|
137
|
+
|
|
138
|
+
"""
|
|
139
|
+
invoke_kwargs = self.get_invoke_kwargs(invoke_kwargs)
|
|
140
|
+
if operation:
|
|
141
|
+
if not isinstance(operation, self._expected_operation_type):
|
|
142
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
143
|
+
"Huggingface operation must inherit" " from 'Pipeline' object"
|
|
144
|
+
)
|
|
145
|
+
return operation(**invoke_kwargs)
|
|
146
|
+
else:
|
|
147
|
+
return self.client(**invoke_kwargs)
|
|
148
|
+
|
|
149
|
+
def invoke(
|
|
150
|
+
self,
|
|
151
|
+
messages: Union[str, list[str], "ChatType", list["ChatType"]] = None,
|
|
152
|
+
as_str: bool = False,
|
|
153
|
+
**invoke_kwargs,
|
|
154
|
+
) -> Union[str, list]:
|
|
155
|
+
"""
|
|
156
|
+
HuggingFace-specific implementation of `ModelProvider.invoke`.
|
|
157
|
+
Invokes a HuggingFace model operation using the synchronous client.
|
|
158
|
+
For complete usage details, refer to `ModelProvider.invoke`.
|
|
159
|
+
|
|
160
|
+
:param messages:
|
|
161
|
+
Same as ModelProvider.invoke.
|
|
162
|
+
|
|
163
|
+
:param as_str:
|
|
164
|
+
If `True`, return only the main content (e.g., generated text) from a
|
|
165
|
+
**single-response output** — intended for use cases where you expect exactly one result.
|
|
166
|
+
|
|
167
|
+
If `False`, return the **full raw response object**, which is a list of dictionaries.
|
|
168
|
+
|
|
169
|
+
:param invoke_kwargs:
|
|
170
|
+
Same as ModelProvider.invoke.
|
|
171
|
+
:return: Same as ModelProvider.invoke.
|
|
172
|
+
"""
|
|
173
|
+
if self.client.task != "text-generation":
|
|
174
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
175
|
+
"HuggingFaceProvider.invoke supports text-generation task only"
|
|
176
|
+
)
|
|
177
|
+
if as_str:
|
|
178
|
+
invoke_kwargs["return_full_text"] = False
|
|
179
|
+
response = self.custom_invoke(text_inputs=messages, **invoke_kwargs)
|
|
180
|
+
if as_str:
|
|
181
|
+
return self._extract_string_output(response)
|
|
182
|
+
return response
|
|
@@ -12,15 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
from collections.abc import Awaitable
|
|
15
|
-
from typing import Any, Callable, Optional,
|
|
15
|
+
from typing import Any, Callable, Optional, Union
|
|
16
16
|
|
|
17
17
|
import mlrun.errors
|
|
18
18
|
from mlrun.datastore.remote_client import (
|
|
19
19
|
BaseRemoteClient,
|
|
20
20
|
)
|
|
21
21
|
|
|
22
|
-
T = TypeVar("T")
|
|
23
|
-
|
|
24
22
|
|
|
25
23
|
class ModelProvider(BaseRemoteClient):
|
|
26
24
|
"""
|
|
@@ -79,12 +77,66 @@ class ModelProvider(BaseRemoteClient):
|
|
|
79
77
|
|
|
80
78
|
raise NotImplementedError("load_client method is not implemented")
|
|
81
79
|
|
|
80
|
+
@property
|
|
81
|
+
def client(self) -> Any:
|
|
82
|
+
return self._client
|
|
83
|
+
|
|
84
|
+
@property
|
|
85
|
+
def model(self) -> Optional[str]:
|
|
86
|
+
"""
|
|
87
|
+
Returns the model identifier used by the underlying SDK.
|
|
88
|
+
|
|
89
|
+
:return: A string representing the model ID, or None if not set.
|
|
90
|
+
"""
|
|
91
|
+
return self.endpoint
|
|
92
|
+
|
|
93
|
+
def get_invoke_kwargs(self, invoke_kwargs) -> dict:
|
|
94
|
+
kwargs = self.default_invoke_kwargs.copy()
|
|
95
|
+
kwargs.update(invoke_kwargs)
|
|
96
|
+
return kwargs
|
|
97
|
+
|
|
98
|
+
@property
|
|
99
|
+
def async_client(self) -> Any:
|
|
100
|
+
if not self.support_async:
|
|
101
|
+
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
102
|
+
f"{self.__class__.__name__} does not support async operations"
|
|
103
|
+
)
|
|
104
|
+
return self._async_client
|
|
105
|
+
|
|
106
|
+
def custom_invoke(self, operation: Optional[Callable], **invoke_kwargs) -> Any:
|
|
107
|
+
"""
|
|
108
|
+
Invokes a model operation from a provider (e.g., OpenAI, Hugging Face, etc.) with the given keyword arguments.
|
|
109
|
+
|
|
110
|
+
Useful for dynamically calling model methods like text generation, chat completions, or image generation.
|
|
111
|
+
The operation must be a callable that accepts keyword arguments.
|
|
112
|
+
|
|
113
|
+
:param operation: A callable representing the model operation (e.g., a client method).
|
|
114
|
+
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
115
|
+
:return: The full response returned by the operation.
|
|
116
|
+
"""
|
|
117
|
+
raise NotImplementedError("custom_invoke method is not implemented")
|
|
118
|
+
|
|
119
|
+
async def async_custom_invoke(
|
|
120
|
+
self, operation: Optional[Callable[..., Awaitable[Any]]], **invoke_kwargs
|
|
121
|
+
) -> Any:
|
|
122
|
+
"""
|
|
123
|
+
Asynchronously invokes a model operation from a provider (e.g., OpenAI, Hugging Face, etc.)
|
|
124
|
+
with the given keyword arguments.
|
|
125
|
+
|
|
126
|
+
The operation must be an async callable (e.g., a method from an async client) that accepts keyword arguments.
|
|
127
|
+
|
|
128
|
+
:param operation: An async callable representing the model operation (e.g., an async_client method).
|
|
129
|
+
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
130
|
+
:return: The full response returned by the awaited operation.
|
|
131
|
+
"""
|
|
132
|
+
raise NotImplementedError("async_custom_invoke is not implemented")
|
|
133
|
+
|
|
82
134
|
def invoke(
|
|
83
135
|
self,
|
|
84
136
|
messages: Optional[list[dict]] = None,
|
|
85
137
|
as_str: bool = False,
|
|
86
138
|
**invoke_kwargs,
|
|
87
|
-
) ->
|
|
139
|
+
) -> Union[str, Any]:
|
|
88
140
|
"""
|
|
89
141
|
Invokes a generative AI model with the provided messages and additional parameters.
|
|
90
142
|
This method is designed to be a flexible interface for interacting with various
|
|
@@ -127,62 +179,11 @@ class ModelProvider(BaseRemoteClient):
|
|
|
127
179
|
"""
|
|
128
180
|
raise NotImplementedError("invoke method is not implemented")
|
|
129
181
|
|
|
130
|
-
def custom_invoke(
|
|
131
|
-
self, operation: Optional[Callable[..., T]] = None, **invoke_kwargs
|
|
132
|
-
) -> Optional[T]:
|
|
133
|
-
"""
|
|
134
|
-
Invokes a model operation from a provider (e.g., OpenAI, Hugging Face, etc.) with the given keyword arguments.
|
|
135
|
-
|
|
136
|
-
Useful for dynamically calling model methods like text generation, chat completions, or image generation.
|
|
137
|
-
The operation must be a callable that accepts keyword arguments.
|
|
138
|
-
|
|
139
|
-
:param operation: A callable representing the model operation (e.g., a client method).
|
|
140
|
-
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
141
|
-
:return: The full response returned by the operation.
|
|
142
|
-
"""
|
|
143
|
-
raise NotImplementedError("custom_invoke method is not implemented")
|
|
144
|
-
|
|
145
|
-
@property
|
|
146
|
-
def client(self) -> Any:
|
|
147
|
-
return self._client
|
|
148
|
-
|
|
149
|
-
@property
|
|
150
|
-
def model(self) -> Optional[str]:
|
|
151
|
-
return None
|
|
152
|
-
|
|
153
|
-
def get_invoke_kwargs(self, invoke_kwargs) -> dict:
|
|
154
|
-
kwargs = self.default_invoke_kwargs.copy()
|
|
155
|
-
kwargs.update(invoke_kwargs)
|
|
156
|
-
return kwargs
|
|
157
|
-
|
|
158
|
-
@property
|
|
159
|
-
def async_client(self) -> Any:
|
|
160
|
-
if not self.support_async:
|
|
161
|
-
raise mlrun.errors.MLRunInvalidArgumentError(
|
|
162
|
-
f"{self.__class__.__name__} does not support async operations"
|
|
163
|
-
)
|
|
164
|
-
return self._async_client
|
|
165
|
-
|
|
166
|
-
async def async_custom_invoke(
|
|
167
|
-
self, operation: Optional[Callable[..., Awaitable[T]]], **invoke_kwargs
|
|
168
|
-
) -> Optional[T]:
|
|
169
|
-
"""
|
|
170
|
-
Asynchronously invokes a model operation from a provider (e.g., OpenAI, Hugging Face, etc.)
|
|
171
|
-
with the given keyword arguments.
|
|
172
|
-
|
|
173
|
-
The operation must be an async callable (e.g., a method from an async client) that accepts keyword arguments.
|
|
174
|
-
|
|
175
|
-
:param operation: An async callable representing the model operation (e.g., an async_client method).
|
|
176
|
-
:param invoke_kwargs: Keyword arguments to pass to the operation.
|
|
177
|
-
:return: The full response returned by the awaited operation.
|
|
178
|
-
"""
|
|
179
|
-
raise NotImplementedError("async_custom_invoke is not implemented")
|
|
180
|
-
|
|
181
182
|
async def async_invoke(
|
|
182
183
|
self,
|
|
183
184
|
messages: Optional[list[dict]] = None,
|
|
184
185
|
as_str: bool = False,
|
|
185
186
|
**invoke_kwargs,
|
|
186
|
-
) ->
|
|
187
|
+
) -> Union[str, Any]:
|
|
187
188
|
"""Async version of `invoke`. See `invoke` for full documentation."""
|
|
188
189
|
raise NotImplementedError("async_invoke is not implemented")
|