ml-management 0.6.3rc15__tar.gz → 0.6.3rc17__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. ml_management-0.6.3rc17/ML_management/__init__.py +1 -0
  2. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/graphql/schema.py +85 -10
  3. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/__init__.py +2 -1
  4. ml_management-0.6.3rc17/ML_management/mlmanagement/active_job.py +99 -0
  5. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/batcher.py +9 -5
  6. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/load_api.py +58 -7
  7. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/log_api.py +12 -4
  8. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/job.py +5 -8
  9. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/PKG-INFO +1 -1
  10. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/pyproject.toml +1 -1
  11. ml_management-0.6.3rc15/ML_management/__init__.py +0 -1
  12. ml_management-0.6.3rc15/ML_management/mlmanagement/active_job.py +0 -74
  13. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/base_exceptions.py +0 -0
  14. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/__init__.py +0 -0
  15. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/collector_pattern.py +0 -0
  16. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/collector_pattern_to_methods_map.py +0 -0
  17. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/collectors.py +0 -0
  18. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/dummy/__init__.py +0 -0
  19. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/dummy/dummy_collector.py +0 -0
  20. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/s3/__init__.py +0 -0
  21. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/s3/s3collector.py +0 -0
  22. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/topic_markers/__init__.py +0 -0
  23. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/topic_markers/api_schema.py +0 -0
  24. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/collectors/topic_markers/topic_markers_collector.py +0 -0
  25. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/__init__.py +0 -0
  26. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/base_splits_dataset_loader.py +0 -0
  27. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/dataset_loader_pattern.py +0 -0
  28. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/dataset_loader_pattern_to_methods_map.py +0 -0
  29. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/poisoned_images_dataset_loader.py +0 -0
  30. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/templates/__init__.py +0 -0
  31. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/templates/dummy_dataset_loader/__init__.py +0 -0
  32. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/templates/dummy_dataset_loader/conda.yaml +0 -0
  33. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/templates/dummy_dataset_loader/dummy_dataset.py +0 -0
  34. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/dataset_loader/templates/upload.py +0 -0
  35. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/__init__.py +0 -0
  36. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/base_executor.py +0 -0
  37. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/executor_pattern.py +0 -0
  38. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/executor_pattern_to_methods_map.py +0 -0
  39. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/no_model_executor_pattern.py +0 -0
  40. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/patterns.py +0 -0
  41. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/__init__.py +0 -0
  42. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/eval/__init__.py +0 -0
  43. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/eval/conda.yaml +0 -0
  44. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/eval/eval_executor.py +0 -0
  45. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/finetune/__init__.py +0 -0
  46. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/finetune/conda.yaml +0 -0
  47. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/finetune/finetune_executor.py +0 -0
  48. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/train/__init__.py +0 -0
  49. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/train/conda.yaml +0 -0
  50. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/train/train_executor.py +0 -0
  51. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/templates/upload.py +0 -0
  52. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/executor/upload_model_mode.py +0 -0
  53. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/graphql/__init__.py +0 -0
  54. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/graphql/send_graphql_request.py +0 -0
  55. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/backend_api.py +0 -0
  56. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/jsonschema_exceptions.py +0 -0
  57. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/jsonschema_inference.py +0 -0
  58. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/model_type.py +0 -0
  59. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/module_finder.py +0 -0
  60. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/server_mlmanager_exceptions.py +0 -0
  61. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/utils.py +0 -0
  62. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/mlmanagement/visibility_options.py +0 -0
  63. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/__init__.py +0 -0
  64. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/model_type_to_methods_map.py +0 -0
  65. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/__init__.py +0 -0
  66. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/evaluatable_model.py +0 -0
  67. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/gradient_model.py +0 -0
  68. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/model_pattern.py +0 -0
  69. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/model_with_losses.py +0 -0
  70. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/model_with_metrics.py +0 -0
  71. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/preprocessor.py +0 -0
  72. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/retrainable_model.py +0 -0
  73. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/target_layer.py +0 -0
  74. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/torch_model.py +0 -0
  75. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/trainable_model.py +0 -0
  76. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/model/patterns/transformer.py +0 -0
  77. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/registry/__init__.py +0 -0
  78. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/registry/exceptions.py +0 -0
  79. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/s3/__init__.py +0 -0
  80. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/s3/manager.py +0 -0
  81. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/s3/utils.py +0 -0
  82. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/__init__.py +0 -0
  83. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/dataset_loader.py +0 -0
  84. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/executor.py +0 -0
  85. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/experiment.py +0 -0
  86. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/model.py +0 -0
  87. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/parameters.py +0 -0
  88. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/sdk/sdk.py +0 -0
  89. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/session.py +0 -0
  90. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/singleton_pattern.py +0 -0
  91. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/__init__.py +0 -0
  92. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/local_sdk_test.sh +0 -0
  93. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/mock_server.js +0 -0
  94. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/package.json +0 -0
  95. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/requirements.txt +0 -0
  96. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/test_sdk/test_sdk.py +0 -0
  97. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/tests/__init__.py +0 -0
  98. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/tests/requirements.txt +0 -0
  99. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/tests/run_all_tests.sh +0 -0
  100. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/tests/test_jsonschema_inference.py +0 -0
  101. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/uploader_data/__init__.py +0 -0
  102. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/uploader_data/s3_uploader.py +0 -0
  103. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/uploader_data/utils.py +0 -0
  104. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/ML_management/variables.py +0 -0
  105. {ml_management-0.6.3rc15 → ml_management-0.6.3rc17}/README.md +0 -0
@@ -0,0 +1 @@
1
+ __version__ = "0.6.3rc17"
@@ -215,11 +215,13 @@ class MethodParamsInput(sgqlc.types.Input):
215
215
 
216
216
  class MetricInput(sgqlc.types.Input):
217
217
  __schema__ = schema
218
- __field_names__ = ('key', 'step', 'value')
218
+ __field_names__ = ('key', 'step', 'timestamp', 'value')
219
219
  key = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='key')
220
220
 
221
221
  step = sgqlc.types.Field(sgqlc.types.non_null(Int), graphql_name='step')
222
222
 
223
+ timestamp = sgqlc.types.Field(Long, graphql_name='timestamp')
224
+
223
225
  value = sgqlc.types.Field(sgqlc.types.non_null(Float), graphql_name='value')
224
226
 
225
227
 
@@ -1110,6 +1112,15 @@ class JobInfoResponse(sgqlc.types.Type):
1110
1112
 
1111
1113
 
1112
1114
 
1115
+ class JobMetric(sgqlc.types.Type):
1116
+ __schema__ = schema
1117
+ __field_names__ = ('job_name', 'metrics')
1118
+ job_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='jobName')
1119
+
1120
+ metrics = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null('Metric'))), graphql_name='metrics')
1121
+
1122
+
1123
+
1113
1124
  class JobModelsSchema(sgqlc.types.Type):
1114
1125
  __schema__ = schema
1115
1126
  __field_names__ = ('list_role_model_method_schemas',)
@@ -1128,7 +1139,7 @@ class JobPagination(sgqlc.types.Type):
1128
1139
 
1129
1140
  class JobParams(sgqlc.types.Type):
1130
1141
  __schema__ = schema
1131
- __field_names__ = ('additional_system_packages', 'cron_expression', 'executor_params', 'experiment', 'experiment_id', 'gpu', 'list_role_data_params', 'list_role_model_params', 'periodic_type')
1142
+ __field_names__ = ('additional_system_packages', 'cron_expression', 'executor_params', 'experiment', 'experiment_id', 'gpu', 'list_role_data_params', 'list_role_model_params', 'models_schemas', 'periodic_type')
1132
1143
  additional_system_packages = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null(String)), graphql_name='additionalSystemPackages')
1133
1144
 
1134
1145
  cron_expression = sgqlc.types.Field(String, graphql_name='cronExpression')
@@ -1145,6 +1156,8 @@ class JobParams(sgqlc.types.Type):
1145
1156
 
1146
1157
  list_role_model_params = sgqlc.types.Field(sgqlc.types.list_of(sgqlc.types.non_null('RoleModelParams')), graphql_name='listRoleModelParams')
1147
1158
 
1159
+ models_schemas = sgqlc.types.Field(sgqlc.types.non_null(JSON), graphql_name='modelsSchemas')
1160
+
1148
1161
  periodic_type = sgqlc.types.Field(PeriodicType, graphql_name='periodicType')
1149
1162
 
1150
1163
 
@@ -1191,6 +1204,24 @@ class Metric(sgqlc.types.Type):
1191
1204
 
1192
1205
 
1193
1206
 
1207
+ class MetricToJobs(sgqlc.types.Type):
1208
+ __schema__ = schema
1209
+ __field_names__ = ('job_metrics', 'metric_name')
1210
+ job_metrics = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(JobMetric))), graphql_name='jobMetrics')
1211
+
1212
+ metric_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='metricName')
1213
+
1214
+
1215
+
1216
+ class MetricToJson(sgqlc.types.Type):
1217
+ __schema__ = schema
1218
+ __field_names__ = ('job_metrics', 'metric_name')
1219
+ job_metrics = sgqlc.types.Field(sgqlc.types.non_null(JSON), graphql_name='jobMetrics')
1220
+
1221
+ metric_name = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='metricName')
1222
+
1223
+
1224
+
1194
1225
  class ModelInfo(sgqlc.types.Type):
1195
1226
  __schema__ = schema
1196
1227
  __field_names__ = ('creation_timestamp', 'description', 'init_model_version', 'last_updated_timestamp', 'latest_model_version', 'list_model_version', 'name', 'owner', 'pagination_model_version', 'tags', 'visibility')
@@ -1252,7 +1283,7 @@ class ModelPagination(sgqlc.types.Type):
1252
1283
 
1253
1284
  class ModelParams(sgqlc.types.Type):
1254
1285
  __schema__ = schema
1255
- __field_names__ = ('description', 'list_model_method_params', 'model_version_choice', 'new_model_name', 'prepare_new_model_inference')
1286
+ __field_names__ = ('description', 'list_model_method_params', 'model_version_choice', 'new_model_name', 'new_model_visibility', 'prepare_new_model_inference', 'start_build_new_model_image')
1256
1287
  description = sgqlc.types.Field(String, graphql_name='description')
1257
1288
 
1258
1289
  list_model_method_params = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MethodParams))), graphql_name='listModelMethodParams')
@@ -1261,8 +1292,12 @@ class ModelParams(sgqlc.types.Type):
1261
1292
 
1262
1293
  new_model_name = sgqlc.types.Field(String, graphql_name='newModelName')
1263
1294
 
1295
+ new_model_visibility = sgqlc.types.Field(sgqlc.types.non_null(VisibilityOptions), graphql_name='newModelVisibility')
1296
+
1264
1297
  prepare_new_model_inference = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name='prepareNewModelInference')
1265
1298
 
1299
+ start_build_new_model_image = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name='startBuildNewModelImage')
1300
+
1266
1301
 
1267
1302
 
1268
1303
  class ModelVersionChoiceParams(sgqlc.types.Type):
@@ -1562,7 +1597,7 @@ class ModelVersionPagination(sgqlc.types.Type):
1562
1597
 
1563
1598
  class Mutation(sgqlc.types.Type):
1564
1599
  __schema__ = schema
1565
- __field_names__ = ('add_ml_job', 'cancel_build_job_for_executor_version', 'cancel_build_job_for_model_version', 'cancel_job', 'cancel_venv_build_job_for_model_version', 'create_experiment', 'create_local_job', 'delete_dataset_loader', 'delete_dataset_loader_tag', 'delete_dataset_loader_version_from_name_version', 'delete_dataset_loader_version_tag', 'delete_executor', 'delete_executor_tag', 'delete_executor_version_from_name_version', 'delete_executor_version_tag', 'delete_experiment_tag', 'delete_model', 'delete_model_tag', 'delete_model_version_from_name_version', 'delete_model_version_tag', 'log_metric', 'log_metrics', 'log_param', 'log_params', 'rebuild_model_version_image', 'rebuild_no_model_executor_version_image', 'rename_experiment', 'serve_model', 'set_dataset_loader_tag', 'set_dataset_loader_version_tag', 'set_executor_tag', 'set_executor_version_tag', 'set_experiment_tag', 'set_model_tag', 'set_model_version_tag', 'start_local_job', 'stop_local_job', 'stop_model_serving', 'update_dataset_loader', 'update_dataset_loader_version', 'update_executor', 'update_executor_version', 'update_experiment', 'update_job', 'update_model', 'update_model_version')
1600
+ __field_names__ = ('add_ml_job', 'cancel_build_job_for_executor_version', 'cancel_build_job_for_model_version', 'cancel_job', 'cancel_venv_build_job_for_model_version', 'create_experiment', 'create_local_job', 'delete_dataset_loader', 'delete_dataset_loader_tag', 'delete_dataset_loader_version_from_name_version', 'delete_dataset_loader_version_tag', 'delete_executor', 'delete_executor_tag', 'delete_executor_version_from_name_version', 'delete_executor_version_tag', 'delete_experiment_tag', 'delete_model', 'delete_model_tag', 'delete_model_version_from_name_version', 'delete_model_version_tag', 'log_metric', 'log_metrics', 'log_param', 'log_params', 'rebuild_model_version_image', 'rebuild_no_model_executor_version_image', 'rename_experiment', 'serve_model', 'set_dataset_loader_tag', 'set_dataset_loader_version_tag', 'set_executor_tag', 'set_executor_version_tag', 'set_experiment_tag', 'set_model_tag', 'set_model_version_tag', 'start_job', 'stop_job', 'stop_model_serving', 'update_dataset_loader', 'update_dataset_loader_version', 'update_executor', 'update_executor_version', 'update_experiment', 'update_job', 'update_model', 'update_model_version')
1566
1601
  add_ml_job = sgqlc.types.Field(sgqlc.types.non_null(ExecutionJob), graphql_name='addMlJob', args=sgqlc.types.ArgDict((
1567
1602
  ('form', sgqlc.types.Arg(sgqlc.types.non_null(JobParameters), graphql_name='form', default=None)),
1568
1603
  ))
@@ -1627,7 +1662,7 @@ class Mutation(sgqlc.types.Type):
1627
1662
  * `visibility` (`VisibilityOptions!`)None (default: `PRIVATE`)
1628
1663
  '''
1629
1664
 
1630
- create_local_job = sgqlc.types.Field(sgqlc.types.non_null(ExecutionJob), graphql_name='createLocalJob', args=sgqlc.types.ArgDict((
1665
+ create_local_job = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='createLocalJob', args=sgqlc.types.ArgDict((
1631
1666
  ('experiment_name', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='experimentName', default=None)),
1632
1667
  ('job_name', sgqlc.types.Arg(String, graphql_name='jobName', default=None)),
1633
1668
  ('visibility', sgqlc.types.Arg(sgqlc.types.non_null(VisibilityOptions), graphql_name='visibility', default=None)),
@@ -1944,16 +1979,17 @@ class Mutation(sgqlc.types.Type):
1944
1979
  * `value` (`String!`)None
1945
1980
  '''
1946
1981
 
1947
- start_local_job = sgqlc.types.Field(sgqlc.types.non_null(String), graphql_name='startLocalJob', args=sgqlc.types.ArgDict((
1948
- ('job_name', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='jobName', default=None)),
1982
+ start_job = sgqlc.types.Field(sgqlc.types.non_null(ExecutionJob), graphql_name='startJob', args=sgqlc.types.ArgDict((
1983
+ ('secret_uuid', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='secretUuid', default=None)),
1949
1984
  ))
1950
1985
  )
1951
1986
  '''Arguments:
1952
1987
 
1953
- * `job_name` (`String!`)None
1988
+ * `secret_uuid` (`String!`)None
1954
1989
  '''
1955
1990
 
1956
- stop_local_job = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name='stopLocalJob', args=sgqlc.types.ArgDict((
1991
+ stop_job = sgqlc.types.Field(sgqlc.types.non_null(Boolean), graphql_name='stopJob', args=sgqlc.types.ArgDict((
1992
+ ('exception_traceback', sgqlc.types.Arg(String, graphql_name='exceptionTraceback', default=None)),
1957
1993
  ('message', sgqlc.types.Arg(String, graphql_name='message', default=None)),
1958
1994
  ('secret_uuid', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='secretUuid', default=None)),
1959
1995
  ('status', sgqlc.types.Arg(sgqlc.types.non_null(JobStatus), graphql_name='status', default='SUCCESSFUL')),
@@ -1961,6 +1997,7 @@ class Mutation(sgqlc.types.Type):
1961
1997
  )
1962
1998
  '''Arguments:
1963
1999
 
2000
+ * `exception_traceback` (`String`)None (default: `null`)
1964
2001
  * `message` (`String`)None (default: `null`)
1965
2002
  * `secret_uuid` (`String!`)None
1966
2003
  * `status` (`JobStatus!`)None (default: `SUCCESSFUL`)
@@ -2085,7 +2122,7 @@ class Param(sgqlc.types.Type):
2085
2122
 
2086
2123
  class Query(sgqlc.types.Type):
2087
2124
  __schema__ = schema
2088
- __field_names__ = ('dataset_loader_from_name', 'dataset_loader_version_from_name_version', 'dataset_loader_version_from_obj_uuid', 'executor_from_name', 'executor_version_from_name_version', 'executor_version_from_obj_uuid', 'experiment_from_id', 'experiment_from_name', 'graph_node', 'is_inference_model_ready', 'job_from_name', 'list_artifacts_by_source_paths', 'list_build_job', 'list_dataset_loader', 'list_executor', 'list_experiment', 'list_graph_node', 'list_initial_executor_version', 'list_initial_model_version', 'list_job', 'list_model', 'list_subtree_graph_node', 'model_from_name', 'model_version_from_name_version', 'model_version_from_obj_uuid', 'pagination_dataset_loader', 'pagination_executor', 'pagination_experiment', 'pagination_initial_executor_version', 'pagination_initial_model_version', 'pagination_job', 'pagination_model', 'warning_delete_model_query')
2125
+ __field_names__ = ('dataset_loader_from_name', 'dataset_loader_version_from_name_version', 'dataset_loader_version_from_obj_uuid', 'executor_from_name', 'executor_version_from_name_version', 'executor_version_from_obj_uuid', 'experiment_from_id', 'experiment_from_name', 'graph_node', 'is_inference_model_ready', 'job_from_name', 'list_all_metric_names', 'list_artifacts_by_source_paths', 'list_build_job', 'list_dataset_loader', 'list_executor', 'list_experiment', 'list_graph_node', 'list_initial_executor_version', 'list_initial_model_version', 'list_job', 'list_latest_metric_jobs', 'list_latest_metric_jobs_json', 'list_metric_jobs', 'list_model', 'list_subtree_graph_node', 'model_from_name', 'model_version_from_name_version', 'model_version_from_obj_uuid', 'pagination_dataset_loader', 'pagination_executor', 'pagination_experiment', 'pagination_initial_executor_version', 'pagination_initial_model_version', 'pagination_job', 'pagination_model', 'warning_delete_model_query')
2089
2126
  dataset_loader_from_name = sgqlc.types.Field(sgqlc.types.non_null(DatasetLoaderInfo), graphql_name='datasetLoaderFromName', args=sgqlc.types.ArgDict((
2090
2127
  ('name', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='name', default=None)),
2091
2128
  ))
@@ -2185,6 +2222,15 @@ class Query(sgqlc.types.Type):
2185
2222
  * `name` (`String!`)None
2186
2223
  '''
2187
2224
 
2225
+ list_all_metric_names = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='listAllMetricNames', args=sgqlc.types.ArgDict((
2226
+ ('job_names', sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='jobNames', default=None)),
2227
+ ))
2228
+ )
2229
+ '''Arguments:
2230
+
2231
+ * `job_names` (`[String!]!`)None
2232
+ '''
2233
+
2188
2234
  list_artifacts_by_source_paths = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(Artifacts))), graphql_name='listArtifactsBySourcePaths', args=sgqlc.types.ArgDict((
2189
2235
  ('source_paths', sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='sourcePaths', default=None)),
2190
2236
  ))
@@ -2231,6 +2277,35 @@ class Query(sgqlc.types.Type):
2231
2277
 
2232
2278
  list_job = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ExecutionJob))), graphql_name='listJob')
2233
2279
 
2280
+ list_latest_metric_jobs = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetricToJobs))), graphql_name='listLatestMetricJobs', args=sgqlc.types.ArgDict((
2281
+ ('job_names', sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='jobNames', default=None)),
2282
+ ))
2283
+ )
2284
+ '''Arguments:
2285
+
2286
+ * `job_names` (`[String!]!`)None
2287
+ '''
2288
+
2289
+ list_latest_metric_jobs_json = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(MetricToJson))), graphql_name='listLatestMetricJobsJson', args=sgqlc.types.ArgDict((
2290
+ ('job_names', sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='jobNames', default=None)),
2291
+ ))
2292
+ )
2293
+ '''Arguments:
2294
+
2295
+ * `job_names` (`[String!]!`)None
2296
+ '''
2297
+
2298
+ list_metric_jobs = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(JobMetric))), graphql_name='listMetricJobs', args=sgqlc.types.ArgDict((
2299
+ ('job_names', sgqlc.types.Arg(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(String))), graphql_name='jobNames', default=None)),
2300
+ ('metric_name', sgqlc.types.Arg(sgqlc.types.non_null(String), graphql_name='metricName', default=None)),
2301
+ ))
2302
+ )
2303
+ '''Arguments:
2304
+
2305
+ * `job_names` (`[String!]!`)None
2306
+ * `metric_name` (`String!`)None
2307
+ '''
2308
+
2234
2309
  list_model = sgqlc.types.Field(sgqlc.types.non_null(sgqlc.types.list_of(sgqlc.types.non_null(ModelInfo))), graphql_name='listModel', args=sgqlc.types.ArgDict((
2235
2310
  ('sorting', sgqlc.types.Arg(sgqlc.types.list_of(sgqlc.types.non_null(ObjectSortBySortingInput)), graphql_name='sorting', default=None)),
2236
2311
  ))
@@ -1,4 +1,4 @@
1
- from ML_management.mlmanagement import backend_api, load_api, log_api
1
+ from ML_management.mlmanagement import active_job, backend_api, load_api, log_api
2
2
 
3
3
  log_executor_src = log_api.log_executor_src
4
4
  log_dataset_loader_src = log_api.log_dataset_loader_src
@@ -14,3 +14,4 @@ load_dataset = load_api.load_dataset
14
14
  load_executor = load_api.load_executor
15
15
  download_artifacts_by_name_version = load_api.download_artifacts_by_name_version
16
16
  download_job_artifacts = load_api.download_job_artifacts
17
+ start_job = active_job.start_job
@@ -0,0 +1,99 @@
1
+ import traceback
2
+ from typing import Optional
3
+
4
+ from sgqlc.operation import Operation
5
+
6
+ from ML_management import variables
7
+ from ML_management.graphql import schema
8
+ from ML_management.graphql.send_graphql_request import send_graphql_request
9
+ from ML_management.mlmanagement.batcher import Batcher
10
+ from ML_management.mlmanagement.visibility_options import VisibilityOptions
11
+ from ML_management.variables import DEFAULT_EXPERIMENT
12
+
13
+
14
+ class ActiveJob:
15
+ """
16
+ A context manager that allows for the execution of a task locally.
17
+
18
+ This class provides a convenient way to run a job locally.
19
+
20
+ """
21
+
22
+ def __init__(self, secret_uuid):
23
+ self.secret_uuid = secret_uuid
24
+
25
+ def __enter__(self):
26
+ op = Operation(schema.Mutation)
27
+ base_query = op.start_job(secret_uuid=self.secret_uuid)
28
+ base_query.name()
29
+ base_query.experiment.name()
30
+ _query_job_params(base_query)
31
+ self.job = send_graphql_request(op=op, json_response=False).start_job
32
+ variables.secret_uuid = self.secret_uuid
33
+ return self.job
34
+
35
+ def __exit__(self, exc_type, exc_val, exc_tb):
36
+ Batcher().wait_log_metrics()
37
+ exception_traceback = None
38
+ message = None
39
+ status = "SUCCESSFUL"
40
+ if exc_type:
41
+ exception_traceback = traceback.format_exc()
42
+ message = str(exc_val)
43
+ status = "FAILED"
44
+
45
+ op = Operation(schema.Mutation)
46
+ op.stop_job(
47
+ secret_uuid=variables.secret_uuid, status=status, message=message, exception_traceback=exception_traceback
48
+ )
49
+ try:
50
+ _ = send_graphql_request(op=op, json_response=False).stop_job
51
+ finally:
52
+ variables.secret_uuid = None
53
+
54
+
55
+ def start_job(
56
+ job_name: Optional[str], experiment_name: str = DEFAULT_EXPERIMENT, visibility=VisibilityOptions.PRIVATE
57
+ ) -> ActiveJob:
58
+ """
59
+ Create local job.
60
+
61
+ Parameters
62
+ ----------
63
+ job_name: str | None
64
+ Name of the new job. If not passed, it will be generated.
65
+ experiment_name: str = "Default"
66
+ Name of the experiment. Default: "Default"
67
+ visibility: VisibilityOptions
68
+ Visibility of this job to other users. Default: PRIVATE.
69
+
70
+ Returns
71
+ -------
72
+ ActiveJob
73
+ Active job.
74
+
75
+ Usage:
76
+ with start_local_job('my-beautiful-job') as job:
77
+ mlmanagement.log_metric(...)
78
+ mlmanagement.log_artifacts(...)
79
+ """
80
+ op = Operation(schema.Mutation)
81
+ op.create_local_job(job_name=job_name, experiment_name=experiment_name, visibility=visibility.name)
82
+ secret_uuid = send_graphql_request(op=op, json_response=False).create_local_job
83
+ return ActiveJob(secret_uuid)
84
+
85
+
86
+ def _query_job_params(base_query):
87
+ base_query.params()
88
+ base_query.params.gpu()
89
+ base_query.params.models_schemas()
90
+ base_query.params.list_role_model_params()
91
+ base_query.params.list_role_data_params()
92
+ base_query.params.list_role_data_params.data_params()
93
+ base_query.params.list_role_data_params.role()
94
+ base_query.params.list_role_model_params.model_params()
95
+ base_query.params.list_role_model_params.role()
96
+ base_query.params.executor_params()
97
+ base_query.params.executor_params.executor_method_params()
98
+ base_query.params.executor_params.executor_version_choice()
99
+ base_query.executor_version.upload_model_modes()
@@ -20,12 +20,12 @@ class Batcher(metaclass=Singleton):
20
20
  self.thread = None
21
21
  self.stop_event = Event()
22
22
 
23
- def log_metric(self, key: str, value: float, step: int):
24
- self.batch.append((key, value, step))
23
+ def log_metric(self, key: str, value: float, step: int, timestamp: int):
24
+ self.batch.append((key, value, step, timestamp))
25
25
  self._start_thread()
26
26
 
27
- def log_metrics(self, metrics: Dict[str, float], step: int):
28
- self.batch.extend((key, value, step) for key, value in metrics.items())
27
+ def log_metrics(self, metrics: Dict[str, float], step: int, timestamp: int):
28
+ self.batch.extend((key, value, step, timestamp) for key, value in metrics.items())
29
29
  self._start_thread()
30
30
 
31
31
  def _start_thread(self):
@@ -39,6 +39,7 @@ class Batcher(metaclass=Singleton):
39
39
  if self.thread:
40
40
  self.stop_event.set()
41
41
  self.thread.join()
42
+ self.thread = None
42
43
 
43
44
  def log_batch_metric(self, stop_event):
44
45
  while not stop_event.is_set():
@@ -48,7 +49,10 @@ class Batcher(metaclass=Singleton):
48
49
  metrics_to_log = self.batch.copy()
49
50
  op = Operation(schema.Mutation)
50
51
  op.log_metrics(
51
- metrics=[MetricInput(key=key, value=value, step=step) for key, value, step in metrics_to_log],
52
+ metrics=[
53
+ MetricInput(key=key, value=value, step=step, timestamp=timestamp)
54
+ for key, value, step, timestamp in metrics_to_log
55
+ ],
52
56
  secret_uuid=variables.secret_uuid,
53
57
  )
54
58
  try:
@@ -28,9 +28,31 @@ from ML_management.variables import (
28
28
 
29
29
 
30
30
  def download_artifacts_by_name_version(
31
- name: str, version: Optional[int], model_type: ModelType, path: str, dst_path: Optional[str] = None
31
+ name: str,
32
+ version: Optional[int],
33
+ model_type: ModelType,
34
+ path: str,
35
+ dst_path: Optional[str] = None,
32
36
  ) -> str:
33
- """Download an artifact by name and version to a local directory, and return a local path for it."""
37
+ """Download an artifact by name and version to a local directory, and return a local path for it.
38
+
39
+ Parameters
40
+ ==========
41
+ name: str
42
+ Name of the entity.
43
+ version: Optional[int] = None
44
+ Version of the entity. Default: None, "latest" version is used.
45
+ model_type: ModelType
46
+ Type of the entity. Possible values: ModelType.MODEL | ModelType.EXECUTOR | ModelType.DATASET_LOADER
47
+ path: str = ""
48
+ Specific path for artifacts download. Default: "", all artifacts will be downloaded.
49
+ dst_path: Optional[str]: None
50
+ Destination path. Default: None.
51
+ Returns
52
+ =======
53
+ str
54
+ Local path to the entity folder.
55
+ """
34
56
  url = get_log_service_url("download_artifacts_by_name_version")
35
57
  params = {
36
58
  "path": os.path.normpath(path) if path else path,
@@ -41,10 +63,24 @@ def download_artifacts_by_name_version(
41
63
  return _request_download_artifacts(url, params, dst_path)
42
64
 
43
65
 
44
- def download_job_artifacts(job_id: str, path: str = "", dst_path: Optional[str] = None) -> str:
45
- """Download an artifact file or directory from a job to a local directory, and return a local path for it."""
66
+ def download_job_artifacts(name: str, path: str = "", dst_path: Optional[str] = None) -> str:
67
+ """Download an artifact file or directory from a job to a local directory, and return a local path for it.
68
+
69
+ Parameters
70
+ ==========
71
+ name: str
72
+ Name of the job.
73
+ path: str = ""
74
+ Specific path for artifacts download. Default: "", all artifacts will be downloaded.
75
+ dst_path: Optional[str]: None
76
+ Destination path. Default: None.
77
+ Returns
78
+ =======
79
+ str
80
+ Local path to artifacts.
81
+ """
46
82
  url = get_log_service_url("download_job_artifacts")
47
- params = {"path": os.path.normpath(path) if path else path, "job_name": job_id}
83
+ params = {"path": os.path.normpath(path) if path else path, "job_name": name}
48
84
  return _request_download_artifacts(url, params, dst_path)
49
85
 
50
86
 
@@ -92,7 +128,14 @@ def load_dataset(
92
128
  DatasetLoaderPattern
93
129
  The object of the dataset to use.
94
130
  """
95
- return _load_model_type(name, version, ModelType.DATASET_LOADER, install_requirements, dst_path, kwargs_for_init)
131
+ return _load_model_type(
132
+ name,
133
+ version,
134
+ ModelType.DATASET_LOADER,
135
+ install_requirements,
136
+ dst_path,
137
+ kwargs_for_init,
138
+ )
96
139
 
97
140
 
98
141
  def _set_model_version_requirements(local_path) -> None:
@@ -107,7 +150,15 @@ def _set_model_version_requirements(local_path) -> None:
107
150
  try:
108
151
  if requirements:
109
152
  subprocess.check_call(
110
- [sys.executable, "-m", "pip", "install", "--no-cache-dir", "--default-timeout=100", *requirements]
153
+ [
154
+ sys.executable,
155
+ "-m",
156
+ "pip",
157
+ "install",
158
+ "--no-cache-dir",
159
+ "--default-timeout=100",
160
+ *requirements,
161
+ ]
111
162
  )
112
163
 
113
164
  except Exception:
@@ -5,6 +5,7 @@ import os
5
5
  import sys
6
6
  import tarfile
7
7
  import threading
8
+ import time
8
9
  import warnings
9
10
  from contextlib import _GeneratorContextManager
10
11
  from pathlib import Path
@@ -637,15 +638,18 @@ def log_metric(key: str, value: float, step: int = 0, no_wait=False):
637
638
  f"{key}: {value} is not log."
638
639
  )
639
640
  return
641
+ timestamp = int(time.time() * 10e6)
640
642
  if no_wait:
641
643
  op = Operation(schema.Mutation)
642
- op.log_metric(metric=MetricInput(key=key, value=value, step=step), secret_uuid=variables.secret_uuid)
644
+ op.log_metric(
645
+ metric=MetricInput(key=key, value=value, step=step, timestamp=timestamp), secret_uuid=variables.secret_uuid
646
+ )
643
647
  try:
644
648
  return send_graphql_request(op, json_response=False).log_metric
645
649
  except Exception as err:
646
650
  warnings.warn(str(err))
647
651
  else:
648
- Batcher().log_metric(key, value, step)
652
+ Batcher().log_metric(key, value, step, timestamp)
649
653
 
650
654
 
651
655
  def log_metrics(metrics: Dict[str, float], step: int = 0, no_wait=False):
@@ -689,10 +693,14 @@ def log_metrics(metrics: Dict[str, float], step: int = 0, no_wait=False):
689
693
  )
690
694
  continue
691
695
  metrics_to_log[key] = value
696
+ timestamp = int(time.time() * 10e6)
692
697
  if no_wait:
693
698
  op = Operation(schema.Mutation)
694
699
  op.log_metrics(
695
- metrics=[MetricInput(key=key, value=value, step=step) for key, value in metrics_to_log.items()],
700
+ metrics=[
701
+ MetricInput(key=key, value=value, step=step, timestamp=timestamp)
702
+ for key, value in metrics_to_log.items()
703
+ ],
696
704
  secret_uuid=variables.secret_uuid,
697
705
  )
698
706
  try:
@@ -700,7 +708,7 @@ def log_metrics(metrics: Dict[str, float], step: int = 0, no_wait=False):
700
708
  except Exception as err:
701
709
  warnings.warn(str(err))
702
710
  else:
703
- Batcher().log_metrics(metrics_to_log, step)
711
+ Batcher().log_metrics(metrics_to_log, step, timestamp)
704
712
 
705
713
 
706
714
  def _log_param(key: str, value: str):
@@ -5,7 +5,6 @@ from enum import Enum
5
5
  from typing import Any, Dict, List, Optional, Tuple, Union
6
6
  from urllib.parse import quote
7
7
 
8
- import numpy as np
9
8
  import pandas as pd
10
9
  import websocket
11
10
  from matplotlib import pyplot as plt
@@ -15,7 +14,7 @@ from ML_management.collectors.collector_pattern_to_methods_map import collector_
15
14
  from ML_management.graphql import schema
16
15
  from ML_management.graphql.schema import ExecutionJob, Param
17
16
  from ML_management.graphql.send_graphql_request import send_graphql_request
18
- from ML_management.mlmanagement import get_server_url
17
+ from ML_management.mlmanagement.backend_api import get_server_url
19
18
  from ML_management.mlmanagement.log_api import _raise_error
20
19
  from ML_management.mlmanagement.visibility_options import VisibilityOptions
21
20
  from ML_management.sdk.model import get_latest_model_version
@@ -47,8 +46,10 @@ def job_by_name(name: str) -> ExecutionJob:
47
46
  base_query.registration_timestamp()
48
47
  base_query.start_timestamp()
49
48
  base_query.end_timestamp()
50
- base_query.build_job()
49
+ base_query.build_job.status()
50
+ base_query.build_job.message()
51
51
  base_query.message()
52
+ base_query.experiment.name()
52
53
 
53
54
  job = send_graphql_request(op, json_response=False)
54
55
 
@@ -160,11 +161,7 @@ def metric_history(
160
161
  raise ValueError("x_axis value must be step or time")
161
162
  if x_axis == "step":
162
163
  x_values = [metric.step for metric in metrics]
163
- if np.nonzero(x_values)[0].size == 0:
164
- metrics = sorted(metrics, key=lambda x: x.timestamp)
165
- x_values = [step[0] for step in enumerate(metrics)]
166
- else:
167
- metrics = sorted(metrics, key=lambda x: x.step)
164
+ metrics = sorted(metrics, key=lambda x: x.step)
168
165
  elif x_axis == "time":
169
166
  metrics = sorted(metrics, key=lambda x: x.timestamp)
170
167
  start_timestamp = metrics[0].timestamp
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ml-management
3
- Version: 0.6.3rc15
3
+ Version: 0.6.3rc17
4
4
  Summary: Python implementation of model pattern, dataset
5
5
  Author-Email: ISPRAS MODIS <modis@ispras.ru>
6
6
  Maintainer: Maxim Ryndin
@@ -25,7 +25,7 @@ readme = "README.md"
25
25
  maintainers = [
26
26
  { name = "Maxim Ryndin" },
27
27
  ]
28
- version = "0.6.3rc15"
28
+ version = "0.6.3rc17"
29
29
 
30
30
  [build-system]
31
31
  requires = [
@@ -1 +0,0 @@
1
- __version__ = "0.6.3rc15"
@@ -1,74 +0,0 @@
1
- from sgqlc.operation import Operation
2
-
3
- from ML_management import variables
4
- from ML_management.graphql import schema
5
- from ML_management.graphql.schema import ExecutionJob
6
- from ML_management.graphql.send_graphql_request import send_graphql_request
7
- from ML_management.mlmanagement.batcher import Batcher
8
- from ML_management.mlmanagement.visibility_options import VisibilityOptions
9
- from ML_management.variables import DEFAULT_EXPERIMENT
10
-
11
-
12
- class ActiveJob(ExecutionJob):
13
- """
14
- A context manager that allows for the execution of a task locally.
15
-
16
- This class provides a convenient way to run a job locally.
17
-
18
- """
19
-
20
- def __enter__(self):
21
- op = Operation(schema.Mutation)
22
- op.start_local_job(job_name=self.name)
23
- secret_uuid = send_graphql_request(op=op, json_response=False).start_local_job
24
- variables.secret_uuid = secret_uuid
25
- return self
26
-
27
- def __exit__(self, exc_type, exc_val, exc_tb):
28
- Batcher().wait_log_metrics()
29
- if exc_type:
30
- status = "FAILED"
31
- else:
32
- status = "SUCCESSFUL"
33
- op = Operation(schema.Mutation)
34
- op.stop_local_job(secret_uuid=variables.secret_uuid, status=status)
35
- try:
36
- _ = send_graphql_request(op=op, json_response=False).stop_local_job
37
- finally:
38
- variables.secret_uuid = None
39
-
40
-
41
- def start_local_job(
42
- job_name, experiment_name: str = DEFAULT_EXPERIMENT, visibility=VisibilityOptions.PRIVATE
43
- ) -> ActiveJob:
44
- """
45
- Create local job.
46
-
47
- Parameters
48
- ----------
49
- job_name: str | None
50
- Name of the new job. If not passed, it will be generated.
51
- experiment_name: str = "Default"
52
- Name of the experiment. Default: "Default"
53
- visibility: VisibilityOptions
54
- Visibility of this job to other users. Default: PRIVATE.
55
-
56
- Returns
57
- -------
58
- ActiveJob
59
- Active job.
60
-
61
- Usage:
62
- with start_local_job('my-beautiful-job') as job:
63
- mlmanagement.log_metric(...)
64
- mlmanagement.log_artifacts(...)
65
- """
66
- op = Operation(schema.Mutation)
67
- create_local_job = op.create_local_job(
68
- job_name=job_name, experiment_name=experiment_name, visibility=visibility.name
69
- )
70
- create_local_job.name()
71
- create_local_job.visibility()
72
- create_local_job.experiment.name()
73
- job = send_graphql_request(op=op, json_response=True)
74
- return ActiveJob(job["createLocalJob"])