mlrun 1.7.0rc33__py3-none-any.whl → 1.7.0rc35__py3-none-any.whl

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 (44) hide show
  1. mlrun/artifacts/base.py +1 -0
  2. mlrun/common/schemas/__init__.py +1 -1
  3. mlrun/common/schemas/common.py +3 -0
  4. mlrun/common/schemas/function.py +7 -0
  5. mlrun/common/schemas/model_monitoring/__init__.py +1 -2
  6. mlrun/common/schemas/model_monitoring/constants.py +3 -16
  7. mlrun/common/schemas/notification.py +1 -1
  8. mlrun/common/schemas/project.py +35 -3
  9. mlrun/common/types.py +1 -0
  10. mlrun/config.py +6 -7
  11. mlrun/datastore/sources.py +8 -4
  12. mlrun/db/base.py +7 -5
  13. mlrun/db/httpdb.py +10 -8
  14. mlrun/execution.py +1 -3
  15. mlrun/model.py +143 -23
  16. mlrun/model_monitoring/applications/context.py +13 -15
  17. mlrun/model_monitoring/applications/evidently_base.py +4 -5
  18. mlrun/model_monitoring/db/stores/sqldb/sql_store.py +5 -0
  19. mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py +2 -2
  20. mlrun/model_monitoring/db/tsdb/base.py +6 -3
  21. mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py +0 -3
  22. mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py +22 -3
  23. mlrun/model_monitoring/stream_processing.py +5 -153
  24. mlrun/projects/pipelines.py +76 -73
  25. mlrun/projects/project.py +7 -1
  26. mlrun/run.py +26 -9
  27. mlrun/runtimes/nuclio/api_gateway.py +22 -6
  28. mlrun/runtimes/nuclio/application/application.py +62 -11
  29. mlrun/runtimes/nuclio/function.py +8 -0
  30. mlrun/runtimes/nuclio/serving.py +6 -6
  31. mlrun/runtimes/pod.py +2 -4
  32. mlrun/serving/server.py +12 -7
  33. mlrun/serving/states.py +16 -2
  34. mlrun/utils/db.py +3 -0
  35. mlrun/utils/helpers.py +30 -19
  36. mlrun/utils/notifications/notification/webhook.py +8 -1
  37. mlrun/utils/version/version.json +2 -2
  38. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/METADATA +4 -2
  39. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/RECORD +43 -44
  40. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/WHEEL +1 -1
  41. mlrun/model_monitoring/prometheus.py +0 -216
  42. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/LICENSE +0 -0
  43. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/entry_points.txt +0 -0
  44. {mlrun-1.7.0rc33.dist-info → mlrun-1.7.0rc35.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,20 @@
1
1
  mlrun/__init__.py,sha256=y08M1JcKXy5-9_5WaI9fn5aV5BxIQ5QkbduJK0OxWbA,7470
2
2
  mlrun/__main__.py,sha256=iAifncsrQQx6ozXXmz7GH1OiNl8PA7KS3TnwlxnHGeo,45890
3
- mlrun/config.py,sha256=5QrlkkUosFwziSFTtApeB2obpS-gW126lB8y5za7rhM,66103
3
+ mlrun/config.py,sha256=S9W9efq39CQ3IOLkg8iwYt4RovYxTmHTLPpDbLZvWzk,66068
4
4
  mlrun/errors.py,sha256=VpC_imeSz2twRMZZb7u90Zj29z6aO-tCxUHD3ZA_Axw,7465
5
- mlrun/execution.py,sha256=StasIZWmnbRjXDn5d7VU6DWu1fs_AJQckSiUKlSYL9M,42021
5
+ mlrun/execution.py,sha256=Gv7mzzaf5y8fIEF0VVu8dSJYQp2uCezXDUiE60cGxWU,41970
6
6
  mlrun/features.py,sha256=m17K_3l9Jktwb9dOwlHLTAPTlemsWrRF7dJhXUX0iJU,15429
7
7
  mlrun/k8s_utils.py,sha256=WdUajadvAhTR7sAMQdwFqKeJMimuTyqm02VdwK1A4xU,7023
8
8
  mlrun/lists.py,sha256=3PqBdcajdwhTe1XuFsAaHTuFVM2kjwepf31qqE82apg,8384
9
- mlrun/model.py,sha256=AtpmCoJV9yCu4ifPxtb5n9sv_alOhiLyASAxJdLkIr0,73197
9
+ mlrun/model.py,sha256=ymGFzkTmxDb40UJPfOEEyC3Uffe7vDXQNguDCfaZfWo,79091
10
10
  mlrun/render.py,sha256=n8SeY3ogVrsV02-7-H0lt1RmpkxGpbI-11RQx61Vq9E,13267
11
- mlrun/run.py,sha256=1fBaemIeTg9xpXF_THQb_x0bSAq_4xmC9s-PeDd-IC0,42911
11
+ mlrun/run.py,sha256=5Tz7OPDKkbaRLzLOmEjVBYecZR_BKd0gqtkKt_v4SbE,43524
12
12
  mlrun/secrets.py,sha256=ibtCK79u7JVBZF6F0SP1-xXXF5MyrLEUs_TCWiJAnlc,7798
13
13
  mlrun/alerts/__init__.py,sha256=0gtG1BG0DXxFrXegIkjbM1XEN4sP9ODo0ucXrNld1hU,601
14
14
  mlrun/alerts/alert.py,sha256=JJfMFF-o0j8oTAIkyXAQG0YbU-kZlIDl0A8ILQi8vfA,6510
15
15
  mlrun/api/schemas/__init__.py,sha256=fEWH4I8hr5AdRJ7yoW44RlFB6NHkYDxyomP5J6ct1z4,14248
16
16
  mlrun/artifacts/__init__.py,sha256=daGrLqltI1nE3ES30nm-tanUnxReRzfyxyaxNRx2zbc,1168
17
- mlrun/artifacts/base.py,sha256=azVkiHaJq9JNFKlb91R1vwkdR2QEqF-rIn7bQIL6rf0,29148
17
+ mlrun/artifacts/base.py,sha256=EystjLta4XVdZP2x4nz1ZNlDUYKTIcFNfMVfBVseCHw,29168
18
18
  mlrun/artifacts/dataset.py,sha256=O_2g2RFHYEAXIBX86mgyc0wBNOhWLT7NlYvxFeLNTuw,16505
19
19
  mlrun/artifacts/manager.py,sha256=I_1mgQ0M8j9JgryFJsB2yN3Pv47oQM6Jfg1fotTPDX0,15323
20
20
  mlrun/artifacts/model.py,sha256=ObUkqFMejYOtq0CDFdpYwzwhQ5bsHv0dHTysuVPJnbs,21102
@@ -23,7 +23,7 @@ mlrun/common/__init__.py,sha256=xY3wHC4TEJgez7qtnn1pQvHosi8-5UJOCtyGBS7FcGE,571
23
23
  mlrun/common/constants.py,sha256=MdXxRPquVguW98WCnEUcJ9A46MOo-MrafFTk7QOK8BA,3052
24
24
  mlrun/common/helpers.py,sha256=LRIULbCg8afKkPnzsZ99-B-JPVjcwR1G9vO--1rzRrQ,1387
25
25
  mlrun/common/secrets.py,sha256=vc8WV82EZsCB5ENjUkObFOzZP59aZ1w8F82PTnqwBnc,5181
26
- mlrun/common/types.py,sha256=cs8AtoI6LSuf2LF5Hg2ZSQ0QTex5_KqVSmNAU8_rnlk,1037
26
+ mlrun/common/types.py,sha256=APVFvumnHpCG-yXlt6OSioMfkyT-DADPiW3dGG3dUFQ,1057
27
27
  mlrun/common/db/__init__.py,sha256=xY3wHC4TEJgez7qtnn1pQvHosi8-5UJOCtyGBS7FcGE,571
28
28
  mlrun/common/db/sql_session.py,sha256=Znc8KE2oLy4lg3_vRki1sVlNx59TgDSOTCXfU561hBU,2659
29
29
  mlrun/common/formatters/__init__.py,sha256=91yPb5xoLK7fTIOC5C7ndJMvyEBlQY6f0CjenLYbsZw,785
@@ -36,7 +36,7 @@ mlrun/common/formatters/run.py,sha256=eEBy1NEwGT9b98TWS2OetEbDnDrnHBIBVMrlXsxveo
36
36
  mlrun/common/model_monitoring/__init__.py,sha256=x0EMEvxVjHsm858J1t6IEA9dtKTdFpJ9sKhss10ld8A,721
37
37
  mlrun/common/model_monitoring/helpers.py,sha256=1CpxIDQPumFnpUB1eqcvCpLlyPFVeW2sL6prM-N5A1A,4405
38
38
  mlrun/common/runtimes/constants.py,sha256=Rl0Sd8n_L7Imo-uF1LL9CJ5Szi0W1gUm36yrF8PXfSc,10989
39
- mlrun/common/schemas/__init__.py,sha256=uqXeeg275X7NlM9FrH5JBORLA5s87P8MSrd7fwPoTlY,5236
39
+ mlrun/common/schemas/__init__.py,sha256=CUX4F6VeowqX5PzakB7xgGs2lJZAN42RMm1asB-kf1c,5227
40
40
  mlrun/common/schemas/alert.py,sha256=Gb2eSjZLTkm-lGy_rQ_D4crEjCTdyf1N90bnIJmQ1H8,6574
41
41
  mlrun/common/schemas/api_gateway.py,sha256=_1JyCFNP89dAcFxQE-C8Tj8o6TvPgV13aBzU3wRcM4g,6908
42
42
  mlrun/common/schemas/artifact.py,sha256=V3ngobnzI1v2eoOroWBEedjAZu0ntCSIQ-LzsOK1Z9k,3570
@@ -44,22 +44,22 @@ mlrun/common/schemas/auth.py,sha256=5c4WSn3KdX1v04ttSQblkF_gyjdjuJSHG7BTCx4_LWM,
44
44
  mlrun/common/schemas/background_task.py,sha256=2qZxib2qrF_nPZj0ncitCG-2jxz2hg1qj0hFc8eswWQ,1707
45
45
  mlrun/common/schemas/client_spec.py,sha256=xQ_9S5i5q7vJmkp2_3IYD0FSYnWoAr1k-W9MU2ClgEU,2955
46
46
  mlrun/common/schemas/clusterization_spec.py,sha256=aeaFJZms7r7h2HDv6ML_GDAT6gboW-PxBbc3GKPalGk,888
47
- mlrun/common/schemas/common.py,sha256=00upzVLPN7O511Q87yt-fvRcDQFbXra4j0_lqMGg6rs,1557
47
+ mlrun/common/schemas/common.py,sha256=nxtZDzs92-p0wygIhQ_SEU3J9QsJRKE4RsY18olLXyo,1613
48
48
  mlrun/common/schemas/constants.py,sha256=sTNCimttd7ytSZ3jxbftItw_HDGxPwY96Ub86OvcT9w,6660
49
49
  mlrun/common/schemas/datastore_profile.py,sha256=hJ8q54A8VZKsnOvSIjcllj4MZ1bBhb_EmBgsqpwSF_Y,750
50
50
  mlrun/common/schemas/events.py,sha256=ROHJLo_fqYjc96pek7yhAUPpPRIuAR76lwxvNz8LIr8,1026
51
51
  mlrun/common/schemas/feature_store.py,sha256=T0yKYcv6cb3ZwgY5Jh9kWp94zLv2ImxAQUy6x68Imd0,4776
52
52
  mlrun/common/schemas/frontend_spec.py,sha256=CNPq3YV0U1jCbCMbb84_Oid2Snow5EXYt1F5wsuhgD8,2454
53
- mlrun/common/schemas/function.py,sha256=Khd5Jd6ept1nHWkW1WdIy1u8iK4O8_Ddf3a7cv3Hf1I,4652
53
+ mlrun/common/schemas/function.py,sha256=fZZBZroj6Ok0giRn2pYSzR40bx037v9pIWvSagPA2fE,4820
54
54
  mlrun/common/schemas/http.py,sha256=1PtYFhF6sqLSBRcuPMtYcUGmroBhaleqLmYidSdL9LM,705
55
55
  mlrun/common/schemas/hub.py,sha256=cuv_vpkO27XNCZzfytnUyi0k0ZA4wf_QRn5B0ZPoK-Y,4116
56
56
  mlrun/common/schemas/k8s.py,sha256=nmMnhgjVMLem5jyumoG2eQKioGK9eUVhQnOSb3hG7yw,1395
57
57
  mlrun/common/schemas/memory_reports.py,sha256=tpS3fpvxa6VcBpzCRzcZTt0fCF0h6ReUetYs7j6kdps,892
58
- mlrun/common/schemas/notification.py,sha256=Ge7eWNGf_XUFkjOnUkyUOubdEbmXh9z_OSGcSturt4w,1768
58
+ mlrun/common/schemas/notification.py,sha256=vEYaz5wfTo3zGLkvf36uNdVdCExfmmGwoDWm3CUjUW8,1775
59
59
  mlrun/common/schemas/object.py,sha256=VleJSUmDJMl92knLgaDE8SWCi3ky0UaHcwcwOIapPQ8,1980
60
60
  mlrun/common/schemas/pagination.py,sha256=q7nk6bipkDiE7HExIVqhy5ANl-zv0x8QC9Kg6AkLtDA,887
61
61
  mlrun/common/schemas/pipeline.py,sha256=MhH07_fAQXNAnmf5j6oXZp8qh9cxGcZlReMdt-ZJf40,1429
62
- mlrun/common/schemas/project.py,sha256=wQAq6TAELf2_9qhLBTJ6Ofntdybx5Fbhy2uBsUzEmrk,4976
62
+ mlrun/common/schemas/project.py,sha256=WSkiuZx3IBfYmur9DE3qSZGrY8z_BQWdRhAo7gdnuMU,6313
63
63
  mlrun/common/schemas/regex.py,sha256=8_vbDeAE0SODJDj7yUFg1FbaB9CNydYQTJ29JxE74Kc,776
64
64
  mlrun/common/schemas/runs.py,sha256=yGGJxSHT_Mq4RLjlfuxW4pm9i-Py9eOsGUAofs_VqVM,1268
65
65
  mlrun/common/schemas/runtime_resource.py,sha256=2rSuYL-9JkESSomlnU91mYDbfV-IkqZeXx6OHuMmDxs,1554
@@ -67,8 +67,8 @@ mlrun/common/schemas/schedule.py,sha256=nD9kxH2KjXkbGZPNfzVNlNSxbyFZmZUlwtT04_z2
67
67
  mlrun/common/schemas/secret.py,sha256=51tCN1F8DFTq4y_XdHIMDy3I1TnMEBX8kO8BHKavYF4,1484
68
68
  mlrun/common/schemas/tag.py,sha256=OAn9Qt6z8ibqw8uU8WQSvuwY8irUv45Dhx2Ko5FzUss,884
69
69
  mlrun/common/schemas/workflow.py,sha256=eRoaOBFiWbvP0iwZ6Aof5JmheV81A0-0PGi8L4vuXmI,1823
70
- mlrun/common/schemas/model_monitoring/__init__.py,sha256=Z_tv5dO-tT_oHMSk98AnDQW0XM-fXqNKduFxkW3jO_E,1809
71
- mlrun/common/schemas/model_monitoring/constants.py,sha256=izIN1HUF_rWpbxVR2AYXGww-Noq9rnx2k7zOvrRt7Js,9921
70
+ mlrun/common/schemas/model_monitoring/__init__.py,sha256=uCnHhhVZkWbbtsawIjOa3ub9ShDJK2md-s2fbx46crg,1792
71
+ mlrun/common/schemas/model_monitoring/constants.py,sha256=sknS628AliiJzrOfDImTIxwBiHTgWNBxH2A7eiGnAMo,9438
72
72
  mlrun/common/schemas/model_monitoring/grafana.py,sha256=SG13MFUUz_tk6-mWeSx17qcdEW4ekicxqNtnMSwRTCY,1559
73
73
  mlrun/common/schemas/model_monitoring/model_endpoints.py,sha256=3wPlCFNoBsHlCMgyJlXfNP-ZqIRsBXzyBX79O2PHkeg,13799
74
74
  mlrun/data_types/__init__.py,sha256=EkxfkFoHb91zz3Aymq-KZfCHlPMzEc3bBqgzPUwmHWY,1087
@@ -90,7 +90,7 @@ mlrun/datastore/inmem.py,sha256=d2dIvHlOQylhc-i4B5Kk9e9ayXnF7DICc5yUlHcNwqs,2873
90
90
  mlrun/datastore/redis.py,sha256=OKMkDCU3APhxfo65SyJq605u1DsfOYH0fODnCXZRqEU,5575
91
91
  mlrun/datastore/s3.py,sha256=YXLIcsODJJuIuTTp4MTPjJqbvxzPRMeXpbImV9_q8Y8,8449
92
92
  mlrun/datastore/snowflake_utils.py,sha256=Wohvnlmq8j1d98RCaknll-iWdZZpSlCrKhUOEy0_-CA,1483
93
- mlrun/datastore/sources.py,sha256=RDa-QFJD95m3ClgHJogjcJK1HEPGZopxG4BTDUEuTQ4,46506
93
+ mlrun/datastore/sources.py,sha256=Mxn2aS42kSv7I6GrNixUHMjE8taEvs6-YQZE2L4Lsxg,46564
94
94
  mlrun/datastore/spark_udf.py,sha256=NnnB3DZxZb-rqpRy7b-NC7QWXuuqFn3XkBDc86tU4mQ,1498
95
95
  mlrun/datastore/spark_utils.py,sha256=50rllp6xXpXY__1LbU7aTXUU5ca8dKAfoskPre3npZo,1611
96
96
  mlrun/datastore/store_resources.py,sha256=rcLoG506AMmR8qPJU_gE-G5d34VJVV_vNlZ3VHqho6c,6869
@@ -101,9 +101,9 @@ mlrun/datastore/wasbfs/__init__.py,sha256=s5Ul-0kAhYqFjKDR2X0O2vDGDbLQQduElb32Ev
101
101
  mlrun/datastore/wasbfs/fs.py,sha256=MnSj7Q4OKA2L55ihCmUnj2t3GA3B77oLMdAw-yxvN9w,6151
102
102
  mlrun/db/__init__.py,sha256=WqJ4x8lqJ7ZoKbhEyFqkYADd9P6E3citckx9e9ZLcIU,1163
103
103
  mlrun/db/auth_utils.py,sha256=hpg8D2r82oN0BWabuWN04BTNZ7jYMAF242YSUpK7LFM,5211
104
- mlrun/db/base.py,sha256=8GVa4WlswPcUjnidwazRhIjKbaI2aqeQ8MmHr62ih1k,24085
104
+ mlrun/db/base.py,sha256=VztBik6tUYFKGRVXIsXZE7HrALx0hO_sgpCcE2O0cLU,24156
105
105
  mlrun/db/factory.py,sha256=ibIrE5QkIIyzDU1FXKrfbc31cZiRLYKDZb8dqCpQwyU,2397
106
- mlrun/db/httpdb.py,sha256=qy0uERFBfTklXmrRpxCC2dJSv7xtyz1bvP2eK1Yf-xE,183765
106
+ mlrun/db/httpdb.py,sha256=UW-vVFS5xAavHtZi1GmiEhGr9P2s3O8b9OkqgpcY7-o,183981
107
107
  mlrun/db/nopdb.py,sha256=d7vSk_2sfwZGY24w7ucSkoq88fLPDLF137IXabongXU,20791
108
108
  mlrun/feature_store/__init__.py,sha256=FhHRc8NdqL_HWpCs7A8dKruxJS5wEm55Gs3dcgBiRUg,1522
109
109
  mlrun/feature_store/api.py,sha256=uYheyPkJOVCrz1jivvpGatgy_JBAq0It0XZqPpNVQkE,48699
@@ -217,15 +217,14 @@ mlrun/model_monitoring/evidently_application.py,sha256=iOc42IVjj8m6PDBmVcKIMWm46
217
217
  mlrun/model_monitoring/features_drift_table.py,sha256=c6GpKtpOJbuT1u5uMWDL_S-6N4YPOmlktWMqPme3KFY,25308
218
218
  mlrun/model_monitoring/helpers.py,sha256=jD9m_Dte16kDZc1GCXvv-0z-MCel1LRg_6Pn1nwqk7A,11599
219
219
  mlrun/model_monitoring/model_endpoint.py,sha256=7VX0cBATqLsA4sSinDzouf41ndxqh2mf5bO9BW0G5Z4,4017
220
- mlrun/model_monitoring/prometheus.py,sha256=cUR4y73GutJB_pA_VCBDl9YtK4PcIJp2wj2rnLVmYi4,7578
221
- mlrun/model_monitoring/stream_processing.py,sha256=KJXvmVbAQsgLLLxd6kM_KZCInjWzJUSGiss4dMHuSTU,42545
220
+ mlrun/model_monitoring/stream_processing.py,sha256=eFSeli4W0KHaY6x8r9Qg7aBWy52x4IY3BbD6wDIrT9I,37168
222
221
  mlrun/model_monitoring/tracking_policy.py,sha256=sQq956akAQpntkrJwIgFWcEq-JpyVcg0FxgNa4h3V70,5502
223
222
  mlrun/model_monitoring/writer.py,sha256=aQ1DAi5XUi1WXXfcSgBQGKiTANT6E61I74abiu_5s8s,9824
224
223
  mlrun/model_monitoring/applications/__init__.py,sha256=i793GqYee01mRh_KD6GShvX7UbPBgdJDO4qf9Z3BXEQ,970
225
224
  mlrun/model_monitoring/applications/_application_steps.py,sha256=-g9jxIAFM5f22iJaUAQVlM8QRSv6KFT92I4WHmZe_f0,6028
226
225
  mlrun/model_monitoring/applications/base.py,sha256=buVKyghH4AB3chZ5py1vyMIFnTF-deY8YDf_fPC9BnQ,11307
227
- mlrun/model_monitoring/applications/context.py,sha256=i-9h6pWyrS8mjw53zd0kb_Dsf9ReS8cSfnth8PvOEI4,8571
228
- mlrun/model_monitoring/applications/evidently_base.py,sha256=AE_eIz-GEYm3AZTrMCiqF9bcSMlvYk08LJb6bKWAQLg,8057
226
+ mlrun/model_monitoring/applications/context.py,sha256=LGRJdI1eyyssFzjE4W_rk2VAUV8KpOkUZUX3xCmnC9g,8537
227
+ mlrun/model_monitoring/applications/evidently_base.py,sha256=AZKZkIdHDBLN2tCVQq2gIKVBszQfor5GUUNqHIUnlS0,7987
229
228
  mlrun/model_monitoring/applications/histogram_data_drift.py,sha256=TE6995h2PyO4lytVngH2HidhXFY7reLupWi4cHmdZdw,13163
230
229
  mlrun/model_monitoring/applications/results.py,sha256=VVlu9Si7Tj2LNJzPQrp4_Qeyh9mxOVMu1Jwb5K2LfvY,3577
231
230
  mlrun/model_monitoring/db/__init__.py,sha256=6Ic-X3Fh9XLPYMytmevGNSs-Hii1rAjLLoFTSPwTguw,736
@@ -233,22 +232,22 @@ mlrun/model_monitoring/db/stores/__init__.py,sha256=ZScmxeZZ3yZ84MocdDGRtvVIixSo
233
232
  mlrun/model_monitoring/db/stores/base/__init__.py,sha256=JufJETW3BXzPhFwbRa8dMf7BFGGZKceIWIMgr5x9n9c,599
234
233
  mlrun/model_monitoring/db/stores/base/store.py,sha256=xaiaUwXDYYV1z6e17Ny9IiE3a7pSiEFg8nffdWHSq0A,7517
235
234
  mlrun/model_monitoring/db/stores/sqldb/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
236
- mlrun/model_monitoring/db/stores/sqldb/sql_store.py,sha256=0RApL8I9YWBU7-U6D5_WaWwkrUbqixIJjV6iggeAIuA,25198
235
+ mlrun/model_monitoring/db/stores/sqldb/sql_store.py,sha256=yyrmOR34usE0ig1zVqXw6s9XWcDGtHpOVOi8fbtN4bY,25415
237
236
  mlrun/model_monitoring/db/stores/sqldb/models/__init__.py,sha256=lCiGw9WKPtHAIgrtNS2jyvM5OZvZvogBh76iurNYblg,2453
238
237
  mlrun/model_monitoring/db/stores/sqldb/models/base.py,sha256=V2B5WdQM0KHKq0FNDq61q7tkNJ9fNRbxfnxrholKgjk,5352
239
238
  mlrun/model_monitoring/db/stores/sqldb/models/mysql.py,sha256=tCzc5ANPxZw7tIPsn9p30woK0_s2HU_FsNzA3hL2wQs,2666
240
239
  mlrun/model_monitoring/db/stores/sqldb/models/sqlite.py,sha256=yJJZppbKj3PsOANS_DXAQFFHKX4cQcm6Pz2DoxRiXMk,1104
241
240
  mlrun/model_monitoring/db/stores/v3io_kv/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
242
- mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py,sha256=ACBpi_MTa6ByOheSPM6X_tsG4AAyqd65SNcnl3lRrYc,26290
241
+ mlrun/model_monitoring/db/stores/v3io_kv/kv_store.py,sha256=t1rF9nNENOn9Yi6ujfMknTaNX4-7Ty6hSUJZITGEk6I,26298
243
242
  mlrun/model_monitoring/db/tsdb/__init__.py,sha256=_Mfa4gguX86OS1fQCxnt_QSaNh603-zPYAK8NjYk7t8,4040
244
- mlrun/model_monitoring/db/tsdb/base.py,sha256=sESs5U71a-iJKI-999sAloYH-mjOR3uSEQG7BxRs6No,13134
243
+ mlrun/model_monitoring/db/tsdb/base.py,sha256=LWjiqUQqf7PqbXxwXnrImcBY85ChrjmwxWkNEkgmI3E,13240
245
244
  mlrun/model_monitoring/db/tsdb/helpers.py,sha256=0oUXc4aUkYtP2SGP6jTb3uPPKImIUsVsrb9otX9a7O4,1189
246
245
  mlrun/model_monitoring/db/tsdb/tdengine/__init__.py,sha256=vgBdsKaXUURKqIf3M0y4sRatmSVA4CQiJs7J5dcVBkQ,620
247
246
  mlrun/model_monitoring/db/tsdb/tdengine/schemas.py,sha256=94u886UtyK40YNtdOX8WiJUImDytygdaqIzFwo_ExzI,8881
248
- mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=x1cWM2ystghHUeDZNgnaN4kI_XjFOnh1FRBRJAX-tsw,1620
247
+ mlrun/model_monitoring/db/tsdb/tdengine/stream_graph_steps.py,sha256=Hb0vcCBP-o0ET78mU4P32fnhUL65QZv-pMuv2lnCby4,1586
249
248
  mlrun/model_monitoring/db/tsdb/tdengine/tdengine_connector.py,sha256=oplt9s-C-OGa__V456nkHwvyBe5YHxcuIJcYV9GFQHY,15521
250
249
  mlrun/model_monitoring/db/tsdb/v3io/__init__.py,sha256=aL3bfmQsUQ-sbvKGdNihFj8gLCK3mSys0qDcXtYOwgc,616
251
- mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=qbiyBzrdWLJAKLmJV4K8jUxsAMbKGZ1vip7WNfRcpXM,4764
250
+ mlrun/model_monitoring/db/tsdb/v3io/stream_graph_steps.py,sha256=NdiqMBERfAmIdOWKiXvZTfmICsjnSAT4-8-b6ZDKiiE,5440
252
251
  mlrun/model_monitoring/db/tsdb/v3io/v3io_connector.py,sha256=hroUaoxbvKHDqM5L01p4EuYNuFjzaUQyT-HWt47LJCY,26362
253
252
  mlrun/model_monitoring/metrics/__init__.py,sha256=6CsTXAxeLbbf8yfCADTaxmiavqwrLEdYFJ-qc5kgDAY,569
254
253
  mlrun/model_monitoring/metrics/histogram_distance.py,sha256=E9_WIl2vd6qNvoHVHoFcnuQk3ekbFWOdi8aU7sHrfk4,4724
@@ -273,8 +272,8 @@ mlrun/platforms/__init__.py,sha256=ggSGF7inITs6S-vj9u4S9X_5psgbA0G3GVqf7zu8qYc,2
273
272
  mlrun/platforms/iguazio.py,sha256=1h5BpdAEQJBg2vIt7ySjUADU0ip5OkaMYr0_VREi9ys,13084
274
273
  mlrun/projects/__init__.py,sha256=Lv5rfxyXJrw6WGOWJKhBz66M6t3_zsNMCfUD6waPwx4,1153
275
274
  mlrun/projects/operations.py,sha256=Y-NwrIFXpltUXcDLDQ9b33NY_r4TOPvJgO4F-xSuzoM,19252
276
- mlrun/projects/pipelines.py,sha256=Xc9tQSBBPEg1Yxn-b4RseFdfO7SvrYC-ekdw_hAcPH8,40006
277
- mlrun/projects/project.py,sha256=pmZuqi24YV9E14QlllwhEtCTkthSF5wkI9NlQXllH7U,184395
275
+ mlrun/projects/pipelines.py,sha256=_589S5rtZUV6cne1yPvOVhh3oB83fIwdQqNg47R2e6I,40608
276
+ mlrun/projects/project.py,sha256=ROcuNkjV6kA8oGrnk4-MFj_0h5D04af9oWmXqVq7-lg,184688
278
277
  mlrun/runtimes/__init__.py,sha256=0-tYDkew-Cr4DM-wztvMbzDA5xq385Jjo-GrtO_84Sc,8741
279
278
  mlrun/runtimes/base.py,sha256=g716uF0BpL6vLe75bNqpJ2SjtYW_tQqICl46d_4ljHs,37633
280
279
  mlrun/runtimes/daskjob.py,sha256=JfK8rSPY-0SYnLJdtp_ts3oKyad0pA98th-2VntYzK0,19387
@@ -283,7 +282,7 @@ mlrun/runtimes/function_reference.py,sha256=iWKRe4r2GTc5S8FOIASYUNLwwne8NqIui51P
283
282
  mlrun/runtimes/generators.py,sha256=v28HdNgxdHvj888G1dTnUeQZz-D9iTO0hoGeZbCdiuQ,7241
284
283
  mlrun/runtimes/kubejob.py,sha256=ptBnMTIjukbEznkdixmbGvBqzujXrRzqNfP7ze6M76M,8660
285
284
  mlrun/runtimes/local.py,sha256=h_w0tzCfF1_tZZEjw-FJHqYmoxK-AhN2skpK7cdU1JI,22611
286
- mlrun/runtimes/pod.py,sha256=XeV6CMlCxPb776bWNESkh0ImwHeia65KL_tvCSdNzlo,63249
285
+ mlrun/runtimes/pod.py,sha256=j0zsnbZq1p_RuK5u9re7iAX-E-UVnhm3Nx9JFfHFy9U,63184
287
286
  mlrun/runtimes/remotesparkjob.py,sha256=9DPxDK8x08t9nReMo083TBxJiiqA83mHCbdtxrjj7AU,7426
288
287
  mlrun/runtimes/utils.py,sha256=OFATL8d0c5vKN9N2enAu2oS3b4H71RfeG776ZnfZ0J4,14332
289
288
  mlrun/runtimes/databricks_job/__init__.py,sha256=kXGBqhLN0rlAx0kTXhozGzFsIdSqW0uTSKMmsLgq_is,569
@@ -294,12 +293,12 @@ mlrun/runtimes/mpijob/__init__.py,sha256=V_1gQD1VHa0Qvjqgyv8RLouH27Sy9YTwj2ZG62o
294
293
  mlrun/runtimes/mpijob/abstract.py,sha256=kDWo-IY1FKLZhI30j38Xx9HMhlUvHezfd1DT2ShoxZY,9161
295
294
  mlrun/runtimes/mpijob/v1.py,sha256=1XQZC7AIMGX_AQCbApcwpH8I7y39-v0v2O35MvxjXoo,3213
296
295
  mlrun/runtimes/nuclio/__init__.py,sha256=gx1kizzKv8pGT5TNloN1js1hdbxqDw3rM90sLVYVffY,794
297
- mlrun/runtimes/nuclio/api_gateway.py,sha256=CTYPcdocMrQQiCk08jbC_nNF0jlwTQ2WKxRsC_fz_ms,25155
298
- mlrun/runtimes/nuclio/function.py,sha256=8RhCvwC_24eSxFaL7Yb5tiRiJaV4H_xTmJ0QiWNIPw8,50317
296
+ mlrun/runtimes/nuclio/api_gateway.py,sha256=TsEZFv-Ene2WZCS9jKReVmuMil_kIbcr9eFmmLxgsYU,25781
297
+ mlrun/runtimes/nuclio/function.py,sha256=Eor5qem-nn64JFynwg-BShFkNRpleQWamjIY0_70Pdg,50538
299
298
  mlrun/runtimes/nuclio/nuclio.py,sha256=sLK8KdGO1LbftlL3HqPZlFOFTAAuxJACZCVl1c0Ha6E,2942
300
- mlrun/runtimes/nuclio/serving.py,sha256=ucSDp2YbaKEFpuCxCTEPwOEPngPkuP-TRviHJ9J4D60,29866
299
+ mlrun/runtimes/nuclio/serving.py,sha256=eUMqtIU6NYIVgKtxfxKN7pd9_QCo_V0aurrjUSU3s08,29754
301
300
  mlrun/runtimes/nuclio/application/__init__.py,sha256=rRs5vasy_G9IyoTpYIjYDafGoL6ifFBKgBtsXn31Atw,614
302
- mlrun/runtimes/nuclio/application/application.py,sha256=WxUKsW46rbezvXZp0Q3B9TAa8hP2kcyz2SgOxA-nRYw,19669
301
+ mlrun/runtimes/nuclio/application/application.py,sha256=v-AqrHfp_nL3orVWzxBWTY-alW7tks6dfEEWRlKcbYE,21665
303
302
  mlrun/runtimes/nuclio/application/reverse_proxy.go,sha256=JIIYae6bXzCLf3jXuu49KWPQYoXr_FDQ2Rbo1OWKAd0,3150
304
303
  mlrun/runtimes/sparkjob/__init__.py,sha256=_KPvk0qefeLtHO6lxQE_AMOGiMTG_OT48eRCE4Z2ldw,709
305
304
  mlrun/runtimes/sparkjob/spark3job.py,sha256=1bNRy72Migrh_ZASQOx7UlSZTbB-xpNc76sz4kfc9UM,41191
@@ -307,9 +306,9 @@ mlrun/serving/__init__.py,sha256=-SMRV3q_5cGVPDxRslXPU0zGYZIygs0cSj7WKlOJJUc,116
307
306
  mlrun/serving/merger.py,sha256=PXLn3A21FiLteJHaDSLm5xKNT-80eTTjfHUJnBX1gKY,6116
308
307
  mlrun/serving/remote.py,sha256=MrFByphQWmIsKXqw-MOwl2Q1hbtWReYVRKvlcKj9pfw,17980
309
308
  mlrun/serving/routers.py,sha256=tjTAiLkV-BcRnUfbTqfrKB0j2LMTMygG_2oV_eQ26bs,55470
310
- mlrun/serving/server.py,sha256=M4FITzvSB6JLHes9BasdUXqNDK1CG8mVpxR3pXYXjHg,21433
309
+ mlrun/serving/server.py,sha256=LUf38ArOvs1cUbqxr3ZT015DTr4G5GIlToRaKqbhamc,21512
311
310
  mlrun/serving/serving_wrapper.py,sha256=R670-S6PX_d5ER6jiHtRvacuPyFzQH0mEf2K0sBIIOM,836
312
- mlrun/serving/states.py,sha256=XA9GJB9JZNcaywCGJ1DLxHoS225J3aF8s8B8Y_-bKM8,59341
311
+ mlrun/serving/states.py,sha256=xJrKyeFT9HcvzCHv5zUhtW96I3qpBYWrM1Dgbp5sa3c,59665
313
312
  mlrun/serving/utils.py,sha256=lej7XcUPX1MmHkEOi_0KZRGSpfbmpnE0GK_Sn4zLkHY,4025
314
313
  mlrun/serving/v1_serving.py,sha256=by4myxlnwyZ0ijQ5fURilGCK1sUpdQL2Il1VR3Xqpxg,11805
315
314
  mlrun/serving/v2_serving.py,sha256=ARsAU0xaQqZoYWdtTLauMPlIX33Nus-BFQOTPZBYda8,24496
@@ -323,8 +322,8 @@ mlrun/utils/async_http.py,sha256=CZY8hNBMQaWrT6PLplyocCFbzaKrJnknFUP0e6kcDBw,117
323
322
  mlrun/utils/azure_vault.py,sha256=IEFizrDGDbAaoWwDr1WoA88S_EZ0T--vjYtY-i0cvYQ,3450
324
323
  mlrun/utils/clones.py,sha256=mJpx4nyFiY6jlBCvFABsNuyi_mr1mvfPWn81vlafpOU,7361
325
324
  mlrun/utils/condition_evaluator.py,sha256=-nGfRmZzivn01rHTroiGY4rqEv8T1irMyhzxEei-sKc,1897
326
- mlrun/utils/db.py,sha256=KEa-vzicUhzIwo1wBXax2ZuXtYgf5to7wnsY3CYCiOQ,1713
327
- mlrun/utils/helpers.py,sha256=Pl1LzfuDVzpQtDC23VFvnuWY8UHs-o7zcYcpNcSF3To,56976
325
+ mlrun/utils/db.py,sha256=2TydIZzJJs9Rf8Qid6ze-Odb1HIzSPAT-Jr-HuHAris,1863
326
+ mlrun/utils/helpers.py,sha256=ZBLxZ0rJV-rRsM3lwmIG92KT2rFLpkJyPS9-8Loh3Lg,57703
328
327
  mlrun/utils/http.py,sha256=l_JCPrCq8bfYUcUcAFWUPvb9Xu-93bLGIhV-H-XCU9s,8707
329
328
  mlrun/utils/logger.py,sha256=cag2J30-jynIHmHZ2J8RYmVMNhYBGgAoimc5sbk-A1U,10016
330
329
  mlrun/utils/regex.py,sha256=b0AUa2THS-ELzJj0grl5b8Stq609F2XomTZkD9SB1fQ,4900
@@ -340,13 +339,13 @@ mlrun/utils/notifications/notification/console.py,sha256=MAVk7v5PJ52vdGRv76YcEPi
340
339
  mlrun/utils/notifications/notification/git.py,sha256=g_8RksjCboGrKKjyhkePk5nSWrfdT61JkhMeg9EeGcY,6119
341
340
  mlrun/utils/notifications/notification/ipython.py,sha256=ZtVL30B_Ha0VGoo4LxO-voT1U41IYwyytovv5X_LsI4,2066
342
341
  mlrun/utils/notifications/notification/slack.py,sha256=wqpFGr5BTvFO5KuUSzFfxsgmyU1Ohq7fbrGeNe9TXOk,7006
343
- mlrun/utils/notifications/notification/webhook.py,sha256=y8Hc3rlR48M2W76lfI2knEBxlD_T6k9P9kXD_vqFnfg,4472
342
+ mlrun/utils/notifications/notification/webhook.py,sha256=cb9w1Mc8ENfJBdgan7iiVHK9eVls4-R3tUxmXM-P-8I,4746
344
343
  mlrun/utils/version/__init__.py,sha256=7kkrB7hEZ3cLXoWj1kPoDwo4MaswsI2JVOBpbKgPAgc,614
345
- mlrun/utils/version/version.json,sha256=bF07SUc3kt0cxWLc2toAHKMH3fldu-Xj7OtOTIRrx44,89
344
+ mlrun/utils/version/version.json,sha256=STte9QxBCHjOGgF8GTITr-yCOmlnRcYeVBIeb6zNyyY,89
346
345
  mlrun/utils/version/version.py,sha256=eEW0tqIAkU9Xifxv8Z9_qsYnNhn3YH7NRAfM-pPLt1g,1878
347
- mlrun-1.7.0rc33.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
348
- mlrun-1.7.0rc33.dist-info/METADATA,sha256=_hmgPc5EaCBTVPlT9ULORtjuNezfTWuFa5_fK8uGiiM,19534
349
- mlrun-1.7.0rc33.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
350
- mlrun-1.7.0rc33.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
351
- mlrun-1.7.0rc33.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
352
- mlrun-1.7.0rc33.dist-info/RECORD,,
346
+ mlrun-1.7.0rc35.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
347
+ mlrun-1.7.0rc35.dist-info/METADATA,sha256=v57UgHO_1uk7N4r8Z2i--KbEI4vcwqhgi55rt9z6frk,19681
348
+ mlrun-1.7.0rc35.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
349
+ mlrun-1.7.0rc35.dist-info/entry_points.txt,sha256=1Owd16eAclD5pfRCoJpYC2ZJSyGNTtUr0nCELMioMmU,46
350
+ mlrun-1.7.0rc35.dist-info/top_level.txt,sha256=NObLzw3maSF9wVrgSeYBv-fgnHkAJ1kEkh12DLdd5KM,6
351
+ mlrun-1.7.0rc35.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (71.1.0)
2
+ Generator: setuptools (72.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,216 +0,0 @@
1
- # Copyright 2023 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
-
16
- import prometheus_client
17
-
18
- from mlrun.common.schemas.model_monitoring import EventFieldType, PrometheusMetric
19
-
20
- # Memory path for Prometheus registry file
21
- _registry_path = "/tmp/prom-reg.txt"
22
-
23
- # Initializing Promethues metric collector registry
24
- _registry: prometheus_client.CollectorRegistry = prometheus_client.CollectorRegistry()
25
-
26
- # The following real-time metrics are being updated through the monitoring stream graph steps
27
- _prediction_counter: prometheus_client.Counter = prometheus_client.Counter(
28
- name=PrometheusMetric.PREDICTIONS_TOTAL,
29
- documentation="Counter for total predictions",
30
- registry=_registry,
31
- labelnames=[
32
- EventFieldType.PROJECT,
33
- EventFieldType.ENDPOINT_ID,
34
- EventFieldType.MODEL,
35
- EventFieldType.ENDPOINT_TYPE,
36
- ],
37
- )
38
- _model_latency: prometheus_client.Summary = prometheus_client.Summary(
39
- name=PrometheusMetric.MODEL_LATENCY_SECONDS,
40
- documentation="Summary for for model latency",
41
- registry=_registry,
42
- labelnames=[
43
- EventFieldType.PROJECT,
44
- EventFieldType.ENDPOINT_ID,
45
- EventFieldType.MODEL,
46
- EventFieldType.ENDPOINT_TYPE,
47
- ],
48
- )
49
- _income_features: prometheus_client.Gauge = prometheus_client.Gauge(
50
- name=PrometheusMetric.INCOME_FEATURES,
51
- documentation="Samples of features and predictions",
52
- registry=_registry,
53
- labelnames=[
54
- EventFieldType.PROJECT,
55
- EventFieldType.ENDPOINT_ID,
56
- EventFieldType.METRIC,
57
- ],
58
- )
59
- _error_counter: prometheus_client.Counter = prometheus_client.Counter(
60
- name=PrometheusMetric.ERRORS_TOTAL,
61
- documentation="Counter for total errors",
62
- registry=_registry,
63
- labelnames=[
64
- EventFieldType.PROJECT,
65
- EventFieldType.ENDPOINT_ID,
66
- EventFieldType.MODEL,
67
- ],
68
- )
69
-
70
- # The following metrics are being updated through the model monitoring batch job
71
- _batch_metrics: prometheus_client.Gauge = prometheus_client.Gauge(
72
- name=PrometheusMetric.DRIFT_METRICS,
73
- documentation="Results from the batch drift analysis",
74
- registry=_registry,
75
- labelnames=[
76
- EventFieldType.PROJECT,
77
- EventFieldType.ENDPOINT_ID,
78
- EventFieldType.METRIC,
79
- ],
80
- )
81
- _drift_status: prometheus_client.Enum = prometheus_client.Enum(
82
- name=PrometheusMetric.DRIFT_STATUS,
83
- documentation="Drift status of the model endpoint",
84
- registry=_registry,
85
- states=["NO_DRIFT", "DRIFT_DETECTED", "POSSIBLE_DRIFT"],
86
- labelnames=[EventFieldType.PROJECT, EventFieldType.ENDPOINT_ID],
87
- )
88
-
89
-
90
- def _write_registry(func):
91
- def wrapper(*args, **kwargs):
92
- global _registry
93
- """A wrapper function to update the registry file each time a metric has been updated"""
94
- func(*args, **kwargs)
95
- prometheus_client.write_to_textfile(path=_registry_path, registry=_registry)
96
-
97
- return wrapper
98
-
99
-
100
- @_write_registry
101
- def write_predictions_and_latency_metrics(
102
- project: str, endpoint_id: str, latency: int, model_name: str, endpoint_type: int
103
- ):
104
- """
105
- Update the prediction counter and the latency value of the provided model endpoint within Prometheus registry.
106
- Please note that while the prediction counter is ALWAYS increasing by 1,the latency summary metric is being
107
- increased by the event latency time. Grafana dashboard will query the average latency time by dividing the total
108
- latency value by the total amount of predictions.
109
-
110
- :param project: Project name.
111
- :param endpoint_id: Model endpoint unique id.
112
- :param latency: Latency time (microsecond) in which the event has been processed through the model server.
113
- :param model_name: Model name which will be used by Grafana for displaying the results by model.
114
- :param endpoint_type: Endpoint type that is represented by an int (possible values: 1,2,3) corresponding to the
115
- Enum class :py:class:`~mlrun.common.schemas.model_monitoring.EndpointType`.
116
- """
117
-
118
- # Increase the prediction counter by 1
119
- _prediction_counter.labels(
120
- project=project,
121
- endpoint_id=endpoint_id,
122
- model=model_name,
123
- endpoint_type=endpoint_type,
124
- ).inc(1)
125
-
126
- # Increase the latency value according to the provided latency of the current event
127
- _model_latency.labels(
128
- project=project,
129
- endpoint_id=endpoint_id,
130
- model=model_name,
131
- endpoint_type=endpoint_type,
132
- ).observe(latency)
133
-
134
-
135
- @_write_registry
136
- def write_income_features(project: str, endpoint_id: str, features: dict[str, float]):
137
- """Update a sample of features.
138
-
139
- :param project: Project name.
140
- :param endpoint_id: Model endpoint unique id.
141
- :param features: Dictionary in which the key is a feature name and the value is a float number.
142
-
143
-
144
- """
145
-
146
- for metric in features:
147
- _income_features.labels(
148
- project=project, endpoint_id=endpoint_id, metric=metric
149
- ).set(value=features[metric])
150
-
151
-
152
- @_write_registry
153
- def write_drift_metrics(project: str, endpoint_id: str, metric: str, value: float):
154
- """Update drift metrics that have been calculated through the monitoring batch job
155
-
156
- :param project: Project name.
157
- :param endpoint_id: Model endpoint unique id.
158
- :param metric: Metric name (e.g. TVD, Hellinger).
159
- :param value: Metric value as a float.
160
-
161
- """
162
-
163
- _batch_metrics.labels(project=project, endpoint_id=endpoint_id, metric=metric).set(
164
- value=value
165
- )
166
-
167
-
168
- @_write_registry
169
- def write_drift_status(project: str, endpoint_id: str, drift_status: str):
170
- """
171
- Update the drift status enum for a specific model endpoint.
172
-
173
- :param project: Project name.
174
- :param endpoint_id: Model endpoint unique id.
175
- :param drift_status: Drift status value, can be one of the following: 'NO_DRIFT', 'DRIFT_DETECTED', or
176
- 'POSSIBLE_DRIFT'.
177
- """
178
-
179
- _drift_status.labels(project=project, endpoint_id=endpoint_id).state(drift_status)
180
-
181
-
182
- @_write_registry
183
- def write_errors(project: str, endpoint_id: str, model_name: str):
184
- """
185
- Update the error counter for a specific model endpoint.
186
-
187
- :param project: Project name.
188
- :param endpoint_id: Model endpoint unique id.
189
- :param model_name: Model name. Will be used by Grafana to show the amount of errors per model by time.
190
- """
191
-
192
- _error_counter.labels(
193
- project=project, endpoint_id=endpoint_id, model=model_name
194
- ).inc(1)
195
-
196
-
197
- def get_registry() -> str:
198
- """Returns the parsed registry file according to the exposition format of Prometheus."""
199
-
200
- # Read the registry file (note that the text is stored in UTF-8 format)
201
- f = open(_registry_path)
202
- lines = f.read()
203
- f.close()
204
-
205
- # Reset part of the metrics to avoid a repeating scraping of the same value
206
- clean_metrics()
207
-
208
- return lines
209
-
210
-
211
- @_write_registry
212
- def clean_metrics():
213
- """Clean the income features values. As these results are relevant only for a certain timestamp, we will remove
214
- them from the global registry after they have been scraped by Prometheus."""
215
-
216
- _income_features.clear()