mlrun 1.10.0rc16__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.

Files changed (396) hide show
  1. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/Makefile +0 -16
  2. {mlrun-1.10.0rc16/mlrun.egg-info → mlrun-1.10.0rc18}/PKG-INFO +2 -2
  3. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/dev-requirements.txt +2 -1
  4. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/constants.py +2 -0
  5. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/artifact.py +1 -0
  6. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/__init__.py +1 -0
  7. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/__init__.py +1 -0
  8. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/constants.py +33 -6
  9. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/serving.py +3 -0
  10. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/workflow.py +1 -0
  11. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/config.py +15 -5
  12. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/datastore.py +4 -4
  13. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/datastore_profile.py +26 -0
  14. mlrun-1.10.0rc18/mlrun/datastore/model_provider/huggingface_provider.py +183 -0
  15. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/model_provider.py +6 -1
  16. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/openai_provider.py +24 -12
  17. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/utils.py +6 -0
  18. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/base.py +1 -0
  19. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/httpdb.py +4 -0
  20. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/api.py +5 -3
  21. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/base.py +107 -28
  22. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/results.py +4 -7
  23. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/controller.py +175 -121
  24. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/stream_processing.py +29 -2
  25. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/projects/project.py +7 -2
  26. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/run.py +3 -1
  27. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/server.py +98 -11
  28. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/states.py +8 -19
  29. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/system_steps.py +20 -10
  30. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/helpers.py +6 -1
  31. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/logger.py +3 -1
  32. mlrun-1.10.0rc18/mlrun/utils/version/version.json +4 -0
  33. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18/mlrun.egg-info}/PKG-INFO +2 -2
  34. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/SOURCES.txt +1 -0
  35. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/requires.txt +1 -1
  36. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/requirements.txt +1 -1
  37. mlrun-1.10.0rc16/mlrun/utils/version/version.json +0 -4
  38. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/LICENSE +0 -0
  39. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/MANIFEST.in +0 -0
  40. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/README.md +0 -0
  41. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/dependencies.py +0 -0
  42. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/dockerfiles/mlrun-api/requirements.txt +0 -0
  43. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/archive.zip +0 -0
  44. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/function.py +0 -0
  45. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/handler.py +0 -0
  46. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/infile.txt +0 -0
  47. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/load-project.ipynb +0 -0
  48. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_basics.ipynb +0 -0
  49. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_dask.ipynb +0 -0
  50. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_db.ipynb +0 -0
  51. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_export_import.ipynb +0 -0
  52. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_jobs.ipynb +0 -0
  53. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_sparkk8s.ipynb +0 -0
  54. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/mlrun_vault.ipynb +0 -0
  55. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/model.bst +0 -0
  56. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/new-project.ipynb +0 -0
  57. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/nulltst.py +0 -0
  58. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/params.csv +0 -0
  59. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/remote-spark.ipynb +0 -0
  60. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/secrets.txt +0 -0
  61. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/spark-function.py +0 -0
  62. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/training.py +0 -0
  63. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/v2_model_server.ipynb +0 -0
  64. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/examples/xgb_serving.ipynb +0 -0
  65. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/extras-requirements.txt +0 -0
  66. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/__init__.py +0 -0
  67. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/__main__.py +0 -0
  68. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/alerts/__init__.py +0 -0
  69. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/alerts/alert.py +0 -0
  70. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/api/schemas/__init__.py +0 -0
  71. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/__init__.py +0 -0
  72. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/base.py +0 -0
  73. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/dataset.py +0 -0
  74. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/document.py +0 -0
  75. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/helpers.py +0 -0
  76. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/llm_prompt.py +0 -0
  77. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/manager.py +0 -0
  78. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/model.py +0 -0
  79. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/artifacts/plots.py +0 -0
  80. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/__init__.py +0 -0
  81. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/db/__init__.py +0 -0
  82. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/db/dialects.py +0 -0
  83. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/__init__.py +0 -0
  84. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/base.py +0 -0
  85. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/feature_set.py +0 -0
  86. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/function.py +0 -0
  87. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/model_endpoint.py +0 -0
  88. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/pipeline.py +0 -0
  89. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/project.py +0 -0
  90. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/formatters/run.py +0 -0
  91. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/helpers.py +0 -0
  92. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/model_monitoring/__init__.py +0 -0
  93. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/model_monitoring/helpers.py +0 -0
  94. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/runtimes/constants.py +0 -0
  95. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/alert.py +0 -0
  96. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/api_gateway.py +0 -0
  97. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/artifact.py +0 -0
  98. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/auth.py +0 -0
  99. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/background_task.py +0 -0
  100. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/client_spec.py +0 -0
  101. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/clusterization_spec.py +0 -0
  102. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/common.py +0 -0
  103. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/constants.py +0 -0
  104. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/datastore_profile.py +0 -0
  105. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/events.py +0 -0
  106. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/feature_store.py +0 -0
  107. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/frontend_spec.py +0 -0
  108. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/function.py +0 -0
  109. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/http.py +0 -0
  110. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/hub.py +0 -0
  111. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/k8s.py +0 -0
  112. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/memory_reports.py +0 -0
  113. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/functions.py +0 -0
  114. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/grafana.py +0 -0
  115. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/model_monitoring/model_endpoints.py +0 -0
  116. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/notification.py +0 -0
  117. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/object.py +0 -0
  118. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/pagination.py +0 -0
  119. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/partition.py +0 -0
  120. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/pipeline.py +0 -0
  121. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/project.py +0 -0
  122. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/regex.py +0 -0
  123. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/runs.py +0 -0
  124. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/runtime_resource.py +0 -0
  125. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/schedule.py +0 -0
  126. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/secret.py +0 -0
  127. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/schemas/tag.py +0 -0
  128. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/secrets.py +0 -0
  129. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/common/types.py +0 -0
  130. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/data_types/__init__.py +0 -0
  131. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/data_types/data_types.py +0 -0
  132. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/data_types/infer.py +0 -0
  133. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/data_types/spark.py +0 -0
  134. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/data_types/to_pandas.py +0 -0
  135. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/__init__.py +0 -0
  136. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/alibaba_oss.py +0 -0
  137. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/azure_blob.py +0 -0
  138. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/base.py +0 -0
  139. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/dbfs_store.py +0 -0
  140. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/filestore.py +0 -0
  141. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/google_cloud_storage.py +0 -0
  142. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/hdfs.py +0 -0
  143. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/inmem.py +0 -0
  144. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/model_provider/__init__.py +0 -0
  145. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/redis.py +0 -0
  146. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/remote_client.py +0 -0
  147. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/s3.py +0 -0
  148. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/snowflake_utils.py +0 -0
  149. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/sources.py +0 -0
  150. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/spark_udf.py +0 -0
  151. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/spark_utils.py +0 -0
  152. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/store_resources.py +0 -0
  153. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/storeytargets.py +0 -0
  154. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/targets.py +0 -0
  155. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/v3io.py +0 -0
  156. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/vectorstore.py +0 -0
  157. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/wasbfs/__init__.py +0 -0
  158. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/datastore/wasbfs/fs.py +0 -0
  159. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/__init__.py +0 -0
  160. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/auth_utils.py +0 -0
  161. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/factory.py +0 -0
  162. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/db/nopdb.py +0 -0
  163. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/errors.py +0 -0
  164. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/execution.py +0 -0
  165. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/__init__.py +0 -0
  166. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/api.py +0 -0
  167. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/common.py +0 -0
  168. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_set.py +0 -0
  169. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_vector.py +0 -0
  170. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/feature_vector_utils.py +0 -0
  171. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/ingestion.py +0 -0
  172. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/__init__.py +0 -0
  173. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/base.py +0 -0
  174. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/dask_merger.py +0 -0
  175. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/job.py +0 -0
  176. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/local_merger.py +0 -0
  177. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/spark_merger.py +0 -0
  178. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/retrieval/storey_merger.py +0 -0
  179. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/feature_store/steps.py +0 -0
  180. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/features.py +0 -0
  181. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/__init__.py +0 -0
  182. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/__init__.py +0 -0
  183. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/artifacts_library.py +0 -0
  184. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/mlrun_interface.py +0 -0
  185. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/model_handler.py +0 -0
  186. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/plan.py +0 -0
  187. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/producer.py +0 -0
  188. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_common/utils.py +0 -0
  189. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/__init__.py +0 -0
  190. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/__init__.py +0 -0
  191. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/logger.py +0 -0
  192. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/mlrun_logger.py +0 -0
  193. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/loggers/tensorboard_logger.py +0 -0
  194. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/model_handler.py +0 -0
  195. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_dl_common/utils.py +0 -0
  196. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/__init__.py +0 -0
  197. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/artifacts_library.py +0 -0
  198. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/__init__.py +0 -0
  199. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/logger.py +0 -0
  200. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/loggers/mlrun_logger.py +0 -0
  201. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/model_handler.py +0 -0
  202. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/pkl_model_server.py +0 -0
  203. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plan.py +0 -0
  204. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/__init__.py +0 -0
  205. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/calibration_curve_plan.py +0 -0
  206. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/confusion_matrix_plan.py +0 -0
  207. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/dataset_plan.py +0 -0
  208. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/feature_importance_plan.py +0 -0
  209. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/plans/roc_curve_plan.py +0 -0
  210. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/producer.py +0 -0
  211. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/_ml_common/utils.py +0 -0
  212. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/auto_mlrun/__init__.py +0 -0
  213. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/auto_mlrun/auto_mlrun.py +0 -0
  214. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/huggingface/__init__.py +0 -0
  215. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/huggingface/model_server.py +0 -0
  216. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/__init__.py +0 -0
  217. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/__init__.py +0 -0
  218. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/callback.py +0 -0
  219. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/logging_callback.py +0 -0
  220. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/callbacks/mlrun_logging_callback.py +0 -0
  221. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/__init__.py +0 -0
  222. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/booster_mlrun_interface.py +0 -0
  223. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/mlrun_interface.py +0 -0
  224. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/mlrun_interfaces/model_mlrun_interface.py +0 -0
  225. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/model_handler.py +0 -0
  226. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/model_server.py +0 -0
  227. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/lgbm/utils.py +0 -0
  228. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/__init__.py +0 -0
  229. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/dataset.py +0 -0
  230. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/mlrun_interface.py +0 -0
  231. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/model_handler.py +0 -0
  232. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/onnx/model_server.py +0 -0
  233. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/parallel_coordinates.py +0 -0
  234. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/__init__.py +0 -0
  235. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/__init__.py +0 -0
  236. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/callback.py +0 -0
  237. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/logging_callback.py +0 -0
  238. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/mlrun_logging_callback.py +0 -0
  239. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks/tensorboard_logging_callback.py +0 -0
  240. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/callbacks_handler.py +0 -0
  241. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/mlrun_interface.py +0 -0
  242. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/model_handler.py +0 -0
  243. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/model_server.py +0 -0
  244. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/pytorch/utils.py +0 -0
  245. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/__init__.py +0 -0
  246. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/estimator.py +0 -0
  247. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/metric.py +0 -0
  248. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/metrics_library.py +0 -0
  249. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/mlrun_interface.py +0 -0
  250. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/model_handler.py +0 -0
  251. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/sklearn/utils.py +0 -0
  252. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/__init__.py +0 -0
  253. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/__init__.py +0 -0
  254. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/logging_callback.py +0 -0
  255. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/mlrun_logging_callback.py +0 -0
  256. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/callbacks/tensorboard_logging_callback.py +0 -0
  257. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/mlrun_interface.py +0 -0
  258. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/model_handler.py +0 -0
  259. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/model_server.py +0 -0
  260. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/tf_keras/utils.py +0 -0
  261. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/__init__.py +0 -0
  262. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/mlrun_interface.py +0 -0
  263. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/model_handler.py +0 -0
  264. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/frameworks/xgboost/utils.py +0 -0
  265. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/k8s_utils.py +0 -0
  266. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/__init__.py +0 -0
  267. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/base.py +0 -0
  268. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/client.py +0 -0
  269. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/factory.py +0 -0
  270. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/local.py +0 -0
  271. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/launcher/remote.py +0 -0
  272. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/lists.py +0 -0
  273. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model.py +0 -0
  274. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/__init__.py +0 -0
  275. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/__init__.py +0 -0
  276. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/_application_steps.py +0 -0
  277. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/context.py +0 -0
  278. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/evidently/__init__.py +0 -0
  279. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/evidently/base.py +0 -0
  280. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/applications/histogram_data_drift.py +0 -0
  281. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/__init__.py +0 -0
  282. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/_schedules.py +0 -0
  283. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/_stats.py +0 -0
  284. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/__init__.py +0 -0
  285. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/base.py +0 -0
  286. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/helpers.py +0 -0
  287. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/__init__.py +0 -0
  288. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/schemas.py +0 -0
  289. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -0
  290. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connection.py +0 -0
  291. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py +0 -0
  292. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/__init__.py +0 -0
  293. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +0 -0
  294. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py +0 -0
  295. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/features_drift_table.py +0 -0
  296. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/helpers.py +0 -0
  297. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/metrics/__init__.py +0 -0
  298. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/metrics/histogram_distance.py +0 -0
  299. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/model_monitoring/writer.py +0 -0
  300. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/__init__.py +0 -0
  301. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/context_handler.py +0 -0
  302. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/errors.py +0 -0
  303. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packager.py +0 -0
  304. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers/__init__.py +0 -0
  305. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers/default_packager.py +0 -0
  306. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers/numpy_packagers.py +0 -0
  307. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers/pandas_packagers.py +0 -0
  308. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers/python_standard_library_packagers.py +0 -0
  309. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/packagers_manager.py +0 -0
  310. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/__init__.py +0 -0
  311. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/_archiver.py +0 -0
  312. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/_formatter.py +0 -0
  313. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/_pickler.py +0 -0
  314. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/_supported_format.py +0 -0
  315. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/log_hint_utils.py +0 -0
  316. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/package/utils/type_hint_utils.py +0 -0
  317. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/platforms/__init__.py +0 -0
  318. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/platforms/iguazio.py +0 -0
  319. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/projects/__init__.py +0 -0
  320. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/projects/operations.py +0 -0
  321. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/projects/pipelines.py +0 -0
  322. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/render.py +0 -0
  323. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/__init__.py +0 -0
  324. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/base.py +0 -0
  325. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/daskjob.py +0 -0
  326. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/__init__.py +0 -0
  327. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_cancel_task.py +0 -0
  328. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_runtime.py +0 -0
  329. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/databricks_job/databricks_wrapper.py +0 -0
  330. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/funcdoc.py +0 -0
  331. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/function_reference.py +0 -0
  332. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/generators.py +0 -0
  333. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/kubejob.py +0 -0
  334. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/local.py +0 -0
  335. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/mounts.py +0 -0
  336. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/__init__.py +0 -0
  337. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/abstract.py +0 -0
  338. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/mpijob/v1.py +0 -0
  339. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/__init__.py +0 -0
  340. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/api_gateway.py +0 -0
  341. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/__init__.py +0 -0
  342. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/application.py +0 -0
  343. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/application/reverse_proxy.go +0 -0
  344. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/function.py +0 -0
  345. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/nuclio.py +0 -0
  346. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/nuclio/serving.py +0 -0
  347. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/pod.py +0 -0
  348. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/remotesparkjob.py +0 -0
  349. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/sparkjob/__init__.py +0 -0
  350. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/sparkjob/spark3job.py +0 -0
  351. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/runtimes/utils.py +0 -0
  352. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/secrets.py +0 -0
  353. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/__init__.py +0 -0
  354. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/merger.py +0 -0
  355. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/remote.py +0 -0
  356. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/routers.py +0 -0
  357. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/serving_wrapper.py +0 -0
  358. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/utils.py +0 -0
  359. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/v1_serving.py +0 -0
  360. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/serving/v2_serving.py +0 -0
  361. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/track/__init__.py +0 -0
  362. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/track/tracker.py +0 -0
  363. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/track/tracker_manager.py +0 -0
  364. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/track/trackers/__init__.py +0 -0
  365. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/track/trackers/mlflow_tracker.py +0 -0
  366. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/__init__.py +0 -0
  367. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/async_http.py +0 -0
  368. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/azure_vault.py +0 -0
  369. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/clones.py +0 -0
  370. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/condition_evaluator.py +0 -0
  371. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/http.py +0 -0
  372. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/__init__.py +0 -0
  373. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/__init__.py +0 -0
  374. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/base.py +0 -0
  375. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/console.py +0 -0
  376. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/git.py +0 -0
  377. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/ipython.py +0 -0
  378. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/mail.py +0 -0
  379. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/slack.py +0 -0
  380. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification/webhook.py +0 -0
  381. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/notifications/notification_pusher.py +0 -0
  382. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/regex.py +0 -0
  383. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/retryer.py +0 -0
  384. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/singleton.py +0 -0
  385. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/v3io_clients.py +0 -0
  386. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/vault.py +0 -0
  387. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/version/__init__.py +0 -0
  388. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun/utils/version/version.py +0 -0
  389. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/dependency_links.txt +0 -0
  390. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/entry_points.txt +0 -0
  391. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/not-zip-safe +0 -0
  392. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/mlrun.egg-info/top_level.txt +0 -0
  393. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/packages.py +0 -0
  394. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/pyproject.toml +0 -0
  395. {mlrun-1.10.0rc16 → mlrun-1.10.0rc18}/setup.cfg +0 -0
  396. {mlrun-1.10.0rc16 → 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.0rc16
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.8
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
- testcontainers[k3s]~=4.10
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
@@ -84,6 +84,8 @@ class MLRunInternalLabels:
84
84
  original_workflow_id = "original-workflow-id"
85
85
  workflow_id = "workflow-id"
86
86
  retrying = "retrying"
87
+ rerun_counter = "rerun-counter"
88
+ rerun_index = "rerun-index"
87
89
 
88
90
  owner = "owner"
89
91
  v3io_user = "v3io_user"
@@ -41,6 +41,7 @@ class ArtifactFormat(ObjectFormat, mlrun.common.types.StrEnum):
41
41
  "spec.metrics",
42
42
  "spec.target_path",
43
43
  "spec.parent_uri",
44
+ "spec.has_children",
44
45
  ]
45
46
  ),
46
47
  }[_format]
@@ -133,6 +133,7 @@ from .k8s import NodeSelectorOperator, Resources, ResourceSpec
133
133
  from .memory_reports import MostCommonObjectTypesReport, ObjectTypeReport
134
134
  from .model_monitoring import (
135
135
  DriftStatus,
136
+ EndpointMode,
136
137
  EndpointType,
137
138
  EndpointUID,
138
139
  EventFieldType,
@@ -16,6 +16,7 @@ from .constants import (
16
16
  INTERSECT_DICT_KEYS,
17
17
  ApplicationEvent,
18
18
  DriftStatus,
19
+ EndpointMode,
19
20
  EndpointType,
20
21
  EndpointUID,
21
22
  EventFieldType,
@@ -205,6 +205,11 @@ class ControllerEvent(MonitoringStrEnum):
205
205
  FIRST_REQUEST = "first_request"
206
206
  FEATURE_SET_URI = "feature_set_uri"
207
207
  ENDPOINT_TYPE = "endpoint_type"
208
+
209
+ # first_timestamp and last_timestamp are used to batch completed events
210
+ FIRST_TIMESTAMP = "first_timestamp"
211
+ LAST_TIMESTAMP = "last_timestamp"
212
+
208
213
  ENDPOINT_POLICY = "endpoint_policy"
209
214
  # Note: currently under endpoint policy we will have a dictionary including the keys: "application_names"
210
215
  # "base_period", and "updated_endpoint" stand for when the MEP was updated
@@ -219,6 +224,7 @@ class ControllerEventEndpointPolicy(MonitoringStrEnum):
219
224
  class ControllerEventKind(MonitoringStrEnum):
220
225
  NOP_EVENT = "nop_event"
221
226
  REGULAR_EVENT = "regular_event"
227
+ BATCH_COMPLETE = "batch_complete"
222
228
 
223
229
 
224
230
  class MetricData(MonitoringStrEnum):
@@ -320,6 +326,19 @@ class EndpointType(IntEnum):
320
326
  def top_level_list(cls):
321
327
  return [cls.NODE_EP, cls.ROUTER, cls.BATCH_EP]
322
328
 
329
+ @classmethod
330
+ def real_time_list(cls):
331
+ return [cls.NODE_EP, cls.ROUTER, cls.LEAF_EP]
332
+
333
+ @classmethod
334
+ def batch_list(cls):
335
+ return [cls.BATCH_EP]
336
+
337
+
338
+ class EndpointMode(StrEnum):
339
+ REAL_TIME = "real_time"
340
+ BATCH = "batch"
341
+
323
342
 
324
343
  class MonitoringFunctionNames(MonitoringStrEnum):
325
344
  STREAM = "model-monitoring-stream"
@@ -468,25 +487,33 @@ class ModelMonitoringLabels:
468
487
 
469
488
  _RESERVED_FUNCTION_NAMES = MonitoringFunctionNames.list() + [SpecialApps.MLRUN_INFRA]
470
489
 
490
+ _RESERVED_EVALUATE_FUNCTION_SUFFIX = "-batch"
491
+
471
492
 
472
493
  class ModelEndpointMonitoringMetricType(StrEnum):
473
494
  RESULT = "result"
474
495
  METRIC = "metric"
475
496
 
476
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
+
477
504
  _FQN_PART_PATTERN = r"[a-zA-Z0-9_-]+"
505
+ _RESULT_NAME_PATTERN = r"[a-zA-Z_][a-zA-Z0-9_]*"
506
+
478
507
  FQN_PATTERN = (
479
- rf"^(?P<project>{_FQN_PART_PATTERN})\."
508
+ rf"^(?P<project>{_INNER_PROJECT_PATTERN})\."
480
509
  rf"(?P<app>{_FQN_PART_PATTERN})\."
481
510
  rf"(?P<type>{ModelEndpointMonitoringMetricType.RESULT}|{ModelEndpointMonitoringMetricType.METRIC})\."
482
- rf"(?P<name>{_FQN_PART_PATTERN})$"
511
+ rf"(?P<name>{_RESULT_NAME_PATTERN})$"
483
512
  )
484
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)
485
516
 
486
- # refer to `mlrun.utils.regex.project_name`
487
- PROJECT_PATTERN = r"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$"
488
- MODEL_ENDPOINT_ID_PATTERN = r"^[a-zA-Z0-9_-]+$"
489
- RESULT_NAME_PATTERN = r"[a-zA-Z_][a-zA-Z0-9_]*"
490
517
 
491
518
  INTERSECT_DICT_KEYS = {
492
519
  ModelEndpointMonitoringMetricType.METRIC: "intersect_metrics",
@@ -47,3 +47,6 @@ class MonitoringData(StrEnum):
47
47
  class ModelsData(enum.Enum):
48
48
  MODEL_CLASS = 0
49
49
  MODEL_PARAMETERS = 1
50
+
51
+
52
+ MAX_BATCH_JOB_DURATION = "1w"
@@ -53,6 +53,7 @@ class RerunWorkflowRequest(pydantic.v1.BaseModel):
53
53
  workflow_runner_node_selector: typing.Optional[dict[str, str]] = None
54
54
  original_workflow_runner_uid: typing.Optional[str] = None
55
55
  original_workflow_name: typing.Optional[str] = None
56
+ rerun_index: typing.Optional[int] = None
56
57
 
57
58
 
58
59
  class WorkflowResponse(pydantic.v1.BaseModel):
@@ -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=",
@@ -406,11 +407,7 @@ default_config = {
406
407
  #
407
408
  # if set to "nil" or "none", nothing would be set
408
409
  "modes": (
409
- "STRICT_TRANS_TABLES"
410
- ",NO_ZERO_IN_DATE"
411
- ",NO_ZERO_DATE"
412
- ",ERROR_FOR_DIVISION_BY_ZERO"
413
- ",NO_ENGINE_SUBSTITUTION",
410
+ "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
414
411
  )
415
412
  },
416
413
  },
@@ -1242,6 +1239,19 @@ class Config:
1242
1239
  """
1243
1240
  return self.is_running_on_iguazio()
1244
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
+
1245
1255
  def to_dict(self):
1246
1256
  return copy.deepcopy(self._cfg)
1247
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
- # TODO add hugging face and http
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, parsed_url.netloc, secrets=secrets, **kwargs
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
- return None
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
- return operation(**invoke_kwargs, model=self.model)
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
- ```python
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
- return await operation(**invoke_kwargs, model=self.model)
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, model=self.model
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
@@ -741,6 +741,7 @@ class RunDBInterface(ABC):
741
741
  tsdb_metrics: bool = False,
742
742
  metric_list: Optional[list[str]] = None,
743
743
  top_level: bool = False,
744
+ mode: Optional[mlrun.common.schemas.EndpointMode] = None,
744
745
  uids: Optional[list[str]] = None,
745
746
  latest_only: bool = False,
746
747
  ) -> mlrun.common.schemas.ModelEndpointList:
@@ -3813,6 +3813,7 @@ class HTTPRunDB(RunDBInterface):
3813
3813
  tsdb_metrics: bool = False,
3814
3814
  metric_list: Optional[list[str]] = None,
3815
3815
  top_level: bool = False,
3816
+ mode: mm_constants.EndpointMode = None,
3816
3817
  uids: Optional[list[str]] = None,
3817
3818
  latest_only: bool = False,
3818
3819
  ) -> mlrun.common.schemas.ModelEndpointList:
@@ -3833,6 +3834,8 @@ class HTTPRunDB(RunDBInterface):
3833
3834
  If tsdb_metrics=False, this parameter will be ignored and no tsdb metrics
3834
3835
  will be included.
3835
3836
  :param top_level: Whether to return only top level model endpoints.
3837
+ :param mode: Specifies the mode of the model endpoint. Can be "real-time", "batch", or both if set
3838
+ to None.
3836
3839
  :param uids: A list of unique ids to filter by.
3837
3840
  :param latest_only: Whether to return only the latest model endpoint version.
3838
3841
  :return: A list of model endpoints.
@@ -3856,6 +3859,7 @@ class HTTPRunDB(RunDBInterface):
3856
3859
  "tsdb-metrics": tsdb_metrics,
3857
3860
  "metric": metric_list,
3858
3861
  "top-level": top_level,
3862
+ "mode": mode,
3859
3863
  "uid": uids,
3860
3864
  "latest-only": latest_only,
3861
3865
  },
@@ -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.MLRunInvalidArgumentError(
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(