sagemaker-core 1.0.62__py3-none-any.whl → 2.3.1__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.
Files changed (358) hide show
  1. sagemaker/__init__.py +2 -0
  2. sagemaker/core/__init__.py +16 -0
  3. sagemaker/core/_studio.py +116 -0
  4. sagemaker/core/_version.py +11 -0
  5. sagemaker/core/accept_types.py +131 -0
  6. sagemaker/core/analytics.py +744 -0
  7. sagemaker/core/apiutils/__init__.py +13 -0
  8. sagemaker/core/apiutils/_base_types.py +228 -0
  9. sagemaker/core/apiutils/_boto_functions.py +130 -0
  10. sagemaker/core/apiutils/_utils.py +34 -0
  11. sagemaker/core/base_deserializers.py +35 -0
  12. sagemaker/core/base_serializers.py +35 -0
  13. sagemaker/core/clarify/__init__.py +2898 -0
  14. sagemaker/core/collection.py +467 -0
  15. sagemaker/core/common_utils.py +2399 -0
  16. sagemaker/core/compute_resource_requirements/__init__.py +18 -0
  17. sagemaker/core/compute_resource_requirements/resource_requirements.py +94 -0
  18. sagemaker/core/config/__init__.py +181 -0
  19. sagemaker/core/config/config.py +238 -0
  20. sagemaker/core/config/config_manager.py +595 -0
  21. sagemaker/core/config/config_schema.py +1220 -0
  22. sagemaker/core/config/config_utils.py +297 -0
  23. {sagemaker_core/main → sagemaker/core}/config_schema.py +408 -3
  24. sagemaker/core/constants.py +73 -0
  25. sagemaker/core/content_types.py +137 -0
  26. sagemaker/core/debugger/__init__.py +39 -0
  27. sagemaker/core/debugger/debugger.py +945 -0
  28. sagemaker/core/debugger/framework_profile.py +292 -0
  29. sagemaker/core/debugger/metrics_config.py +468 -0
  30. sagemaker/core/debugger/profiler.py +42 -0
  31. sagemaker/core/debugger/profiler_config.py +190 -0
  32. sagemaker/core/debugger/profiler_constants.py +40 -0
  33. sagemaker/core/debugger/utils.py +148 -0
  34. sagemaker/core/deprecations.py +254 -0
  35. sagemaker/core/deserializers/__init__.py +10 -0
  36. sagemaker/core/deserializers/base.py +424 -0
  37. sagemaker/core/deserializers/implementations.py +157 -0
  38. sagemaker/core/drift_check_baselines.py +106 -0
  39. sagemaker/core/enums.py +51 -0
  40. sagemaker/core/environment_variables.py +101 -0
  41. sagemaker/core/exceptions.py +108 -0
  42. sagemaker/core/experiments/__init__.py +53 -0
  43. sagemaker/core/experiments/_api_types.py +251 -0
  44. sagemaker/core/experiments/_environment.py +124 -0
  45. sagemaker/core/experiments/_helper.py +294 -0
  46. sagemaker/core/experiments/_metrics.py +333 -0
  47. sagemaker/core/experiments/_run_context.py +58 -0
  48. sagemaker/core/experiments/_utils.py +216 -0
  49. sagemaker/core/experiments/experiment.py +247 -0
  50. sagemaker/core/experiments/run.py +970 -0
  51. sagemaker/core/experiments/trial.py +296 -0
  52. sagemaker/core/experiments/trial_component.py +387 -0
  53. sagemaker/core/explainer/__init__.py +24 -0
  54. sagemaker/core/explainer/clarify_explainer_config.py +298 -0
  55. sagemaker/core/explainer/explainer_config.py +44 -0
  56. sagemaker/core/fw_utils.py +1220 -0
  57. sagemaker/core/git_utils.py +415 -0
  58. sagemaker/core/helper/pipeline_variable.py +82 -0
  59. sagemaker/core/helper/session_helper.py +2977 -0
  60. sagemaker/core/hyperparameters.py +172 -0
  61. sagemaker/core/image_retriever/__init__.py +3 -0
  62. sagemaker/core/image_retriever/image_retriever.py +640 -0
  63. sagemaker/core/image_retriever/image_retriever_utils.py +509 -0
  64. sagemaker/core/image_retriever/test.py +7 -0
  65. sagemaker/core/image_uri_config/autogluon.json +1335 -0
  66. sagemaker/core/image_uri_config/blazingtext.json +50 -0
  67. sagemaker/core/image_uri_config/chainer.json +104 -0
  68. sagemaker/core/image_uri_config/clarify.json +39 -0
  69. sagemaker/core/image_uri_config/coach-mxnet.json +70 -0
  70. sagemaker/core/image_uri_config/coach-tensorflow.json +186 -0
  71. sagemaker/core/image_uri_config/data-wrangler.json +91 -0
  72. sagemaker/core/image_uri_config/debugger.json +34 -0
  73. sagemaker/core/image_uri_config/detailed-profiler.json +18 -0
  74. sagemaker/core/image_uri_config/djl-deepspeed.json +385 -0
  75. sagemaker/core/image_uri_config/djl-fastertransformer.json +167 -0
  76. sagemaker/core/image_uri_config/djl-lmi.json +136 -0
  77. sagemaker/core/image_uri_config/djl-neuronx.json +258 -0
  78. sagemaker/core/image_uri_config/djl-tensorrtllm.json +262 -0
  79. sagemaker/core/image_uri_config/factorization-machines.json +50 -0
  80. sagemaker/core/image_uri_config/forecasting-deepar.json +50 -0
  81. sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +770 -0
  82. sagemaker/core/image_uri_config/huggingface-llm.json +1267 -0
  83. sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
  84. sagemaker/core/image_uri_config/huggingface-neuronx.json +686 -0
  85. sagemaker/core/image_uri_config/huggingface-tei-cpu.json +298 -0
  86. sagemaker/core/image_uri_config/huggingface-tei.json +298 -0
  87. sagemaker/core/image_uri_config/huggingface-training-compiler.json +195 -0
  88. sagemaker/core/image_uri_config/huggingface-vllm-neuronx.json +38 -0
  89. sagemaker/core/image_uri_config/huggingface.json +2287 -0
  90. sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +52 -0
  91. sagemaker/core/image_uri_config/image-classification-neo.json +43 -0
  92. sagemaker/core/image_uri_config/image-classification.json +50 -0
  93. sagemaker/core/image_uri_config/inferentia-mxnet.json +88 -0
  94. sagemaker/core/image_uri_config/inferentia-pytorch.json +127 -0
  95. sagemaker/core/image_uri_config/inferentia-tensorflow.json +88 -0
  96. sagemaker/core/image_uri_config/instance_gpu_info.json +782 -0
  97. sagemaker/core/image_uri_config/ipinsights.json +50 -0
  98. sagemaker/core/image_uri_config/kmeans.json +50 -0
  99. sagemaker/core/image_uri_config/knn.json +50 -0
  100. sagemaker/core/image_uri_config/lda.json +26 -0
  101. sagemaker/core/image_uri_config/linear-learner.json +50 -0
  102. sagemaker/core/image_uri_config/model-monitor.json +42 -0
  103. sagemaker/core/image_uri_config/mxnet.json +1154 -0
  104. sagemaker/core/image_uri_config/neo-mxnet.json +64 -0
  105. sagemaker/core/image_uri_config/neo-pytorch.json +341 -0
  106. sagemaker/core/image_uri_config/neo-tensorflow.json +109 -0
  107. sagemaker/core/image_uri_config/ntm.json +50 -0
  108. sagemaker/core/image_uri_config/object-detection.json +50 -0
  109. sagemaker/core/image_uri_config/object2vec.json +50 -0
  110. sagemaker/core/image_uri_config/pca.json +50 -0
  111. sagemaker/core/image_uri_config/pytorch-neuron.json +43 -0
  112. sagemaker/core/image_uri_config/pytorch-smp.json +218 -0
  113. sagemaker/core/image_uri_config/pytorch-training-compiler.json +80 -0
  114. sagemaker/core/image_uri_config/pytorch.json +3101 -0
  115. sagemaker/core/image_uri_config/randomcutforest.json +50 -0
  116. sagemaker/core/image_uri_config/ray-pytorch.json +46 -0
  117. sagemaker/core/image_uri_config/ray-tensorflow.json +194 -0
  118. sagemaker/core/image_uri_config/sagemaker-base-python.json +46 -0
  119. sagemaker/core/image_uri_config/sagemaker-distribution.json +37 -0
  120. sagemaker/core/image_uri_config/sagemaker-geospatial.json +13 -0
  121. sagemaker/core/image_uri_config/sagemaker-tritonserver.json +252 -0
  122. sagemaker/core/image_uri_config/semantic-segmentation.json +50 -0
  123. sagemaker/core/image_uri_config/seq2seq.json +50 -0
  124. sagemaker/core/image_uri_config/sklearn.json +494 -0
  125. sagemaker/core/image_uri_config/spark.json +280 -0
  126. sagemaker/core/image_uri_config/sparkml-serving.json +97 -0
  127. sagemaker/core/image_uri_config/stabilityai.json +53 -0
  128. sagemaker/core/image_uri_config/tensorflow.json +5086 -0
  129. sagemaker/core/image_uri_config/vw.json +25 -0
  130. sagemaker/core/image_uri_config/xgboost-neo.json +43 -0
  131. sagemaker/core/image_uri_config/xgboost.json +972 -0
  132. sagemaker/core/image_uris.py +816 -0
  133. sagemaker/core/inference_config.py +144 -0
  134. sagemaker/core/inference_recommender/__init__.py +18 -0
  135. sagemaker/core/inference_recommender/inference_recommender_mixin.py +622 -0
  136. sagemaker/core/inputs.py +366 -0
  137. sagemaker/core/instance_group.py +61 -0
  138. sagemaker/core/instance_types.py +164 -0
  139. sagemaker/core/instance_types_gpu_info.py +43 -0
  140. sagemaker/core/interactive_apps/__init__.py +41 -0
  141. sagemaker/core/interactive_apps/base_interactive_app.py +204 -0
  142. sagemaker/core/interactive_apps/detail_profiler_app.py +139 -0
  143. sagemaker/core/interactive_apps/tensorboard.py +149 -0
  144. sagemaker/core/iterators.py +197 -0
  145. sagemaker/core/job.py +380 -0
  146. sagemaker/core/jumpstart/__init__.py +156 -0
  147. sagemaker/core/jumpstart/accessors.py +390 -0
  148. sagemaker/core/jumpstart/artifacts/__init__.py +69 -0
  149. sagemaker/core/jumpstart/artifacts/environment_variables.py +252 -0
  150. sagemaker/core/jumpstart/artifacts/hyperparameters.py +120 -0
  151. sagemaker/core/jumpstart/artifacts/image_uris.py +139 -0
  152. sagemaker/core/jumpstart/artifacts/incremental_training.py +87 -0
  153. sagemaker/core/jumpstart/artifacts/instance_types.py +223 -0
  154. sagemaker/core/jumpstart/artifacts/kwargs.py +289 -0
  155. sagemaker/core/jumpstart/artifacts/metric_definitions.py +117 -0
  156. sagemaker/core/jumpstart/artifacts/model_packages.py +202 -0
  157. sagemaker/core/jumpstart/artifacts/model_uris.py +252 -0
  158. sagemaker/core/jumpstart/artifacts/payloads.py +96 -0
  159. sagemaker/core/jumpstart/artifacts/predictors.py +540 -0
  160. sagemaker/core/jumpstart/artifacts/resource_names.py +86 -0
  161. sagemaker/core/jumpstart/artifacts/resource_requirements.py +162 -0
  162. sagemaker/core/jumpstart/artifacts/script_uris.py +172 -0
  163. sagemaker/core/jumpstart/cache.py +663 -0
  164. sagemaker/core/jumpstart/configs.py +50 -0
  165. sagemaker/core/jumpstart/constants.py +198 -0
  166. sagemaker/core/jumpstart/deserializers.py +81 -0
  167. sagemaker/core/jumpstart/document.py +76 -0
  168. sagemaker/core/jumpstart/enums.py +168 -0
  169. sagemaker/core/jumpstart/exceptions.py +236 -0
  170. sagemaker/core/jumpstart/factory/utils.py +833 -0
  171. sagemaker/core/jumpstart/filters.py +597 -0
  172. sagemaker/core/jumpstart/hub/constants.py +16 -0
  173. sagemaker/core/jumpstart/hub/hub.py +291 -0
  174. sagemaker/core/jumpstart/hub/interfaces.py +936 -0
  175. sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
  176. sagemaker/core/jumpstart/hub/parsers.py +288 -0
  177. sagemaker/core/jumpstart/hub/types.py +35 -0
  178. sagemaker/core/jumpstart/hub/utils.py +260 -0
  179. sagemaker/core/jumpstart/models.py +501 -0
  180. sagemaker/core/jumpstart/notebook_utils.py +575 -0
  181. sagemaker/core/jumpstart/parameters.py +20 -0
  182. sagemaker/core/jumpstart/payload_utils.py +239 -0
  183. sagemaker/core/jumpstart/region_config.json +171 -0
  184. sagemaker/core/jumpstart/search.py +171 -0
  185. sagemaker/core/jumpstart/serializers.py +81 -0
  186. sagemaker/core/jumpstart/session_utils.py +234 -0
  187. sagemaker/core/jumpstart/types.py +3044 -0
  188. sagemaker/core/jumpstart/utils.py +1731 -0
  189. sagemaker/core/jumpstart/validators.py +257 -0
  190. sagemaker/core/lambda_helper.py +312 -0
  191. sagemaker/core/lineage/__init__.py +42 -0
  192. sagemaker/core/lineage/_api_types.py +239 -0
  193. sagemaker/core/lineage/_utils.py +49 -0
  194. sagemaker/core/lineage/action.py +345 -0
  195. sagemaker/core/lineage/artifact.py +646 -0
  196. sagemaker/core/lineage/association.py +190 -0
  197. sagemaker/core/lineage/context.py +505 -0
  198. sagemaker/core/lineage/lineage_trial_component.py +191 -0
  199. sagemaker/core/lineage/query.py +732 -0
  200. sagemaker/core/lineage/visualizer.py +346 -0
  201. sagemaker/core/local/__init__.py +18 -0
  202. sagemaker/core/local/data.py +423 -0
  203. sagemaker/core/local/entities.py +678 -0
  204. sagemaker/core/local/exceptions.py +17 -0
  205. sagemaker/core/local/image.py +1243 -0
  206. sagemaker/core/local/local_session.py +739 -0
  207. sagemaker/core/local/utils.py +246 -0
  208. sagemaker/core/logs.py +181 -0
  209. sagemaker/core/metadata_properties.py +56 -0
  210. sagemaker/core/metric_definitions.py +91 -0
  211. sagemaker/core/mlflow/__init__.py +38 -0
  212. sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
  213. sagemaker/core/model_card/__init__.py +26 -0
  214. sagemaker/core/model_life_cycle.py +51 -0
  215. sagemaker/core/model_metrics.py +160 -0
  216. sagemaker/core/model_monitor/__init__.py +66 -0
  217. sagemaker/core/model_monitor/clarify_model_monitoring.py +1497 -0
  218. sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
  219. sagemaker/core/model_monitor/data_capture_config.py +115 -0
  220. sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
  221. sagemaker/core/model_monitor/dataset_format.py +102 -0
  222. sagemaker/core/model_monitor/model_monitoring.py +4266 -0
  223. sagemaker/core/model_monitor/monitoring_alert.py +76 -0
  224. sagemaker/core/model_monitor/monitoring_files.py +506 -0
  225. sagemaker/core/model_monitor/utils.py +793 -0
  226. sagemaker/core/model_registry.py +480 -0
  227. sagemaker/core/model_uris.py +97 -0
  228. sagemaker/core/modules/__init__.py +19 -0
  229. sagemaker/core/modules/configs.py +239 -0
  230. sagemaker/core/modules/constants.py +37 -0
  231. sagemaker/core/modules/distributed.py +182 -0
  232. sagemaker/core/modules/local_core/local_container.py +605 -0
  233. sagemaker/core/modules/templates.py +83 -0
  234. sagemaker/core/modules/train/__init__.py +14 -0
  235. sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
  236. sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
  237. sagemaker/core/modules/train/container_drivers/common/utils.py +205 -0
  238. sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
  239. sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
  240. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
  241. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
  242. sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
  243. sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
  244. sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
  245. sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
  246. sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
  247. sagemaker/core/modules/types.py +19 -0
  248. sagemaker/core/modules/utils.py +194 -0
  249. sagemaker/core/network.py +185 -0
  250. sagemaker/core/parameter.py +173 -0
  251. sagemaker/core/payloads.py +185 -0
  252. sagemaker/core/processing.py +1599 -0
  253. sagemaker/core/remote_function/__init__.py +19 -0
  254. sagemaker/core/remote_function/checkpoint_location.py +47 -0
  255. sagemaker/core/remote_function/client.py +1310 -0
  256. sagemaker/core/remote_function/core/__init__.py +0 -0
  257. sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
  258. sagemaker/core/remote_function/core/pipeline_variables.py +347 -0
  259. sagemaker/core/remote_function/core/serialization.py +410 -0
  260. sagemaker/core/remote_function/core/stored_function.py +223 -0
  261. sagemaker/core/remote_function/custom_file_filter.py +128 -0
  262. sagemaker/core/remote_function/errors.py +102 -0
  263. sagemaker/core/remote_function/invoke_function.py +167 -0
  264. sagemaker/core/remote_function/job.py +2121 -0
  265. sagemaker/core/remote_function/logging_config.py +38 -0
  266. sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
  267. sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
  268. sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
  269. sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
  270. sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
  271. sagemaker/core/remote_function/spark_config.py +149 -0
  272. sagemaker/core/resource_requirements.py +168 -0
  273. {sagemaker_core/main → sagemaker/core}/resources.py +19098 -10895
  274. sagemaker/core/s3/__init__.py +41 -0
  275. sagemaker/core/s3/client.py +367 -0
  276. sagemaker/core/s3/utils.py +175 -0
  277. sagemaker/core/script_uris.py +93 -0
  278. sagemaker/core/serializers/__init__.py +11 -0
  279. sagemaker/core/serializers/base.py +510 -0
  280. sagemaker/core/serializers/implementations.py +159 -0
  281. sagemaker/core/serializers/utils.py +223 -0
  282. sagemaker/core/serverless_inference_config.py +63 -0
  283. sagemaker/core/session_settings.py +55 -0
  284. sagemaker/core/shapes/__init__.py +3 -0
  285. sagemaker/core/shapes/model_card_shapes.py +159 -0
  286. {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +5810 -1806
  287. sagemaker/core/spark/__init__.py +16 -0
  288. sagemaker/core/spark/defaults.py +16 -0
  289. sagemaker/core/spark/processing.py +1380 -0
  290. sagemaker/core/telemetry/__init__.py +23 -0
  291. sagemaker/core/telemetry/constants.py +82 -0
  292. sagemaker/core/telemetry/telemetry_logging.py +285 -0
  293. sagemaker/core/tools/__init__.py +1 -0
  294. {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
  295. {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
  296. {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
  297. {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
  298. sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
  299. {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
  300. {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
  301. {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
  302. {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
  303. {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
  304. sagemaker/core/training/__init__.py +14 -0
  305. sagemaker/core/training/configs.py +345 -0
  306. sagemaker/core/training/constants.py +37 -0
  307. sagemaker/core/training/utils.py +77 -0
  308. sagemaker/core/training_compiler/__init__.py +16 -0
  309. sagemaker/core/training_compiler/config.py +197 -0
  310. sagemaker/core/training_compiler_config.py +197 -0
  311. sagemaker/core/transformer.py +793 -0
  312. sagemaker/core/user_agent.py +76 -0
  313. sagemaker/core/utilities/__init__.py +24 -0
  314. sagemaker/core/utilities/cache.py +169 -0
  315. sagemaker/core/utilities/search_expression.py +133 -0
  316. sagemaker/core/utils/__init__.py +48 -0
  317. sagemaker/core/utils/code_injection/__init__.py +0 -0
  318. {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
  319. {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +5979 -176
  320. {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
  321. sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
  322. {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
  323. {sagemaker_core/main → sagemaker/core/utils}/utils.py +27 -22
  324. sagemaker/core/workflow/__init__.py +152 -0
  325. sagemaker/core/workflow/conditions.py +313 -0
  326. sagemaker/core/workflow/entities.py +58 -0
  327. sagemaker/core/workflow/execution_variables.py +89 -0
  328. sagemaker/core/workflow/functions.py +193 -0
  329. sagemaker/core/workflow/parameters.py +222 -0
  330. sagemaker/core/workflow/pipeline_context.py +394 -0
  331. sagemaker/core/workflow/pipeline_definition_config.py +31 -0
  332. sagemaker/core/workflow/properties.py +285 -0
  333. sagemaker/core/workflow/step_outputs.py +65 -0
  334. sagemaker/core/workflow/utilities.py +514 -0
  335. sagemaker/lineage/__init__.py +33 -0
  336. sagemaker/lineage/action.py +28 -0
  337. sagemaker/lineage/artifact.py +28 -0
  338. sagemaker/lineage/context.py +28 -0
  339. sagemaker/lineage/lineage_trial_component.py +28 -0
  340. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.3.1.dist-info}/METADATA +28 -9
  341. sagemaker_core-2.3.1.dist-info/RECORD +351 -0
  342. sagemaker_core-2.3.1.dist-info/top_level.txt +1 -0
  343. sagemaker_core/_version.py +0 -3
  344. sagemaker_core/helper/session_helper.py +0 -769
  345. sagemaker_core/resources/__init__.py +0 -1
  346. sagemaker_core/shapes/__init__.py +0 -1
  347. sagemaker_core/tools/__init__.py +0 -1
  348. sagemaker_core-1.0.62.dist-info/RECORD +0 -35
  349. sagemaker_core-1.0.62.dist-info/top_level.txt +0 -1
  350. {sagemaker_core → sagemaker/core/helper}/__init__.py +0 -0
  351. {sagemaker_core/helper → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
  352. {sagemaker_core/main → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
  353. {sagemaker_core/main/code_injection → sagemaker/core/modules/local_core}/__init__.py +0 -0
  354. {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
  355. {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
  356. {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
  357. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.3.1.dist-info}/WHEEL +0 -0
  358. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.3.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,216 @@
1
+ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+ """Contains the SageMaker Experiment utility methods."""
14
+ from __future__ import absolute_import
15
+
16
+ import logging
17
+ import os
18
+
19
+ import mimetypes
20
+ import urllib
21
+ from functools import wraps
22
+ from typing import Optional
23
+
24
+ from sagemaker.core.helper.session_helper import Session
25
+ from sagemaker.core.apiutils import _utils
26
+ from sagemaker.core.experiments._environment import _RunEnvironment, _EnvironmentType
27
+ from sagemaker.core.experiments.trial_component import _TrialComponent
28
+ from sagemaker.core.utilities.search_expression import Filter, Operator, SearchExpression
29
+ from sagemaker.core.common_utils import retry_with_backoff
30
+
31
+
32
+ def resolve_artifact_name(file_path):
33
+ """Resolve artifact name from given file path.
34
+
35
+ If not specified, will auto create one.
36
+
37
+ Args:
38
+ file_path (str): Path to the file.
39
+
40
+ Returns:
41
+ str: The resolved artifact name.
42
+ """
43
+ _, filename = os.path.split(file_path)
44
+ if filename:
45
+ return filename
46
+
47
+ return _utils.name("artifact")
48
+
49
+
50
+ def guess_media_type(file_path):
51
+ """Infer the media type of a file based on its file name.
52
+
53
+ Args:
54
+ file_path (str): Path to the file.
55
+
56
+ Returns:
57
+ str: The guessed media type.
58
+ """
59
+ file_url = urllib.parse.urljoin("file:", urllib.request.pathname2url(file_path))
60
+ guessed_media_type, _ = mimetypes.guess_type(file_url, strict=False)
61
+ return guessed_media_type
62
+
63
+
64
+ def verify_length_of_true_and_predicted(true_labels, predicted_attrs, predicted_attrs_name):
65
+ """Verify if lengths match between lists of true labels and predicted attributes.
66
+
67
+ Args:
68
+ true_labels (list or array): The list of the true labels.
69
+ predicted_attrs (list or array): The list of the predicted labels/probabilities/scores.
70
+ predicted_attrs_name (str): The name of the predicted attributes.
71
+
72
+ Raises:
73
+ ValueError: If lengths mismatch between true labels and predicted attributes.
74
+ """
75
+ if len(true_labels) != len(predicted_attrs):
76
+ raise ValueError(
77
+ "Lengths mismatch between true labels and {}: "
78
+ "({} vs {}).".format(predicted_attrs_name, len(true_labels), len(predicted_attrs))
79
+ )
80
+
81
+
82
+ def validate_invoked_inside_run_context(func):
83
+ """A Decorator to force the decorated method called under Run context."""
84
+
85
+ @wraps(func)
86
+ def wrapper(*args, **kwargs):
87
+ self_instance = args[0]
88
+ if not self_instance._inside_load_context and not self_instance._inside_init_context:
89
+ raise RuntimeError("This method should be called inside context of 'with' statement.")
90
+ return func(*args, **kwargs)
91
+
92
+ return wrapper
93
+
94
+
95
+ def is_already_exist_error(error):
96
+ """Check if the error indicates resource already exists
97
+
98
+ Args:
99
+ error (dict): The "Error" field in the response of the
100
+ `botocore.exceptions.ClientError`
101
+ """
102
+ return error["Code"] == "ValidationException" and "already exists" in error["Message"]
103
+
104
+
105
+ def get_tc_and_exp_config_from_job_env(
106
+ environment: _RunEnvironment,
107
+ sagemaker_session: Session,
108
+ ) -> dict:
109
+ """Retrieve an experiment config from the job environment.
110
+
111
+ Args:
112
+ environment (_RunEnvironment): The run environment object with job specific data.
113
+ sagemaker_session (sagemaker.core.helper.session_helper.Session): Session object which
114
+ manages interactions with Amazon SageMaker APIs and any other
115
+ AWS services needed. If not specified, one is created using the
116
+ default AWS configuration chain.
117
+ """
118
+ job_name = environment.source_arn.split("/")[-1]
119
+ if environment.environment_type == _EnvironmentType.SageMakerTrainingJob:
120
+ job_response = retry_with_backoff(
121
+ callable_func=lambda: sagemaker_session.describe_training_job(job_name),
122
+ num_attempts=4,
123
+ )
124
+ elif environment.environment_type == _EnvironmentType.SageMakerProcessingJob:
125
+ job_response = retry_with_backoff(
126
+ callable_func=lambda: sagemaker_session.describe_processing_job(job_name),
127
+ num_attempts=4,
128
+ )
129
+ else: # environment.environment_type == _EnvironmentType.SageMakerTransformJob
130
+ job_response = retry_with_backoff(
131
+ callable_func=lambda: sagemaker_session.describe_transform_job(job_name),
132
+ num_attempts=4,
133
+ )
134
+
135
+ job_exp_config = job_response.get("ExperimentConfig", dict())
136
+ from sagemaker.core.experiments.run import RUN_NAME
137
+
138
+ if job_exp_config.get(RUN_NAME, None):
139
+ return job_exp_config
140
+ raise RuntimeError(
141
+ "Not able to fetch RunName in ExperimentConfig of the sagemaker job. "
142
+ "Please make sure the ExperimentConfig is correctly set."
143
+ )
144
+
145
+
146
+ def verify_load_input_names(
147
+ run_name: Optional[str] = None,
148
+ experiment_name: Optional[str] = None,
149
+ ):
150
+ """Verify the run_name and the experiment_name inputs in load_run.
151
+
152
+ Args:
153
+ run_name (str): The run_name supplied by the user (default: None).
154
+ experiment_name (str): The experiment_name supplied by the user
155
+ (default: None).
156
+
157
+ Raises:
158
+ ValueError: If run_name is supplied while experiment_name is not.
159
+ """
160
+ if not run_name and experiment_name:
161
+ logging.warning(
162
+ "No run_name is supplied. Ignoring the provided experiment_name "
163
+ "since it only takes effect along with run_name. "
164
+ "Will load the Run object from the job environment or current Run context."
165
+ )
166
+ if run_name and not experiment_name:
167
+ raise ValueError(
168
+ "Invalid input: experiment_name is missing when run_name is supplied. "
169
+ "Please supply a valid experiment_name when the run_name is not None."
170
+ )
171
+
172
+
173
+ def is_run_trial_component(trial_component_name: str, sagemaker_session: Session) -> bool:
174
+ """Check if a trial component is generated by `sagemaker.experiments.Run`
175
+
176
+ Args:
177
+ trial_component_name (str): The name of the trial component.
178
+ sagemaker_session (sagemaker.core.helper.session_helper.Session): Session object which
179
+ manages interactions with Amazon SageMaker APIs and any other
180
+ AWS services needed. If not specified, one is created using the
181
+ default AWS configuration chain.
182
+
183
+ Returns:
184
+ bool: Indicate whether the trial component is created by
185
+ `sagemaker.experiments.Run` or not.
186
+ """
187
+ search_filter = Filter(
188
+ name="TrialComponentName",
189
+ operator=Operator.EQUALS,
190
+ value=trial_component_name,
191
+ )
192
+ search_expression = SearchExpression(filters=[search_filter])
193
+
194
+ def search():
195
+ return list(
196
+ _TrialComponent.search(
197
+ search_expression=search_expression,
198
+ max_results=1, # TrialComponentName is unique in an account
199
+ sagemaker_session=sagemaker_session,
200
+ )
201
+ )[0]
202
+
203
+ try:
204
+ tc_search_res = retry_with_backoff(search, 4)
205
+ from sagemaker.core.experiments.run import RUN_TC_TAG
206
+
207
+ if not tc_search_res.tags or RUN_TC_TAG not in tc_search_res.tags:
208
+ return False
209
+ return True
210
+ except Exception as ex: # pylint: disable=broad-except
211
+ logging.warning(
212
+ "Failed to inspect the type of the trial component (%s), due to (%s)",
213
+ trial_component_name,
214
+ str(ex),
215
+ )
216
+ return False
@@ -0,0 +1,247 @@
1
+ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License"). You
4
+ # may not use this file except in compliance with the License. A copy of
5
+ # the License is located at
6
+ #
7
+ # http://aws.amazon.com/apache2.0/
8
+ #
9
+ # or in the "license" file accompanying this file. This file is
10
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
11
+ # ANY KIND, either express or implied. See the License for the specific
12
+ # language governing permissions and limitations under the License.
13
+ """Contains the SageMaker Experiment class."""
14
+ from __future__ import absolute_import
15
+
16
+ import time
17
+
18
+ from botocore.exceptions import ClientError
19
+
20
+ from sagemaker.core.apiutils import _base_types
21
+ from sagemaker.core.experiments.trial import _Trial
22
+ from sagemaker.core.experiments.trial_component import _TrialComponent
23
+ from sagemaker.core.common_utils import format_tags
24
+ from sagemaker.core.telemetry.telemetry_logging import _telemetry_emitter
25
+ from sagemaker.core.telemetry.constants import Feature
26
+
27
+
28
+ class Experiment(_base_types.Record):
29
+ """An Amazon SageMaker experiment, which is a collection of related trials.
30
+
31
+ New experiments are created by calling `experiments.experiment.Experiment.create`.
32
+ Existing experiments can be reloaded by calling `experiments.experiment.Experiment.load`.
33
+
34
+ Attributes:
35
+ experiment_name (str): The name of the experiment. The name must be unique
36
+ within an account.
37
+ display_name (str): Name of the experiment that will appear in UI,
38
+ such as SageMaker Studio.
39
+ description (str): A description of the experiment.
40
+ tags (List[Dict[str, str]]): A list of tags to associate with the experiment.
41
+ """
42
+
43
+ experiment_name = None
44
+ display_name = None
45
+ description = None
46
+ tags = None
47
+
48
+ _boto_create_method = "create_experiment"
49
+ _boto_load_method = "describe_experiment"
50
+ _boto_update_method = "update_experiment"
51
+ _boto_delete_method = "delete_experiment"
52
+
53
+ _boto_update_members = ["experiment_name", "description", "display_name"]
54
+ _boto_delete_members = ["experiment_name"]
55
+
56
+ _MAX_DELETE_ALL_ATTEMPTS = 3
57
+
58
+ def save(self):
59
+ """Save the state of this Experiment to SageMaker.
60
+
61
+ Returns:
62
+ dict: Update experiment API response.
63
+ """
64
+ return self._invoke_api(self._boto_update_method, self._boto_update_members)
65
+
66
+ def delete(self):
67
+ """Delete this Experiment from SageMaker.
68
+
69
+ Deleting an Experiment does not delete associated Trials and their Trial Components.
70
+ It requires that each Trial in the Experiment is first deleted.
71
+
72
+ Returns:
73
+ dict: Delete experiment API response.
74
+ """
75
+ return self._invoke_api(self._boto_delete_method, self._boto_delete_members)
76
+
77
+ @classmethod
78
+ def load(cls, experiment_name, sagemaker_session=None):
79
+ """Load an existing experiment and return an `Experiment` object representing it.
80
+
81
+ Args:
82
+ experiment_name: (str): Name of the experiment
83
+ sagemaker_session (sagemaker.core.helper.session_helper.Session): Session object which
84
+ manages interactions with Amazon SageMaker APIs and any other
85
+ AWS services needed. If not specified, one is created using the
86
+ default AWS configuration chain.
87
+
88
+ Returns:
89
+ experiments.experiment.Experiment: A SageMaker `Experiment` object
90
+ """
91
+ return cls._construct(
92
+ cls._boto_load_method,
93
+ experiment_name=experiment_name,
94
+ sagemaker_session=sagemaker_session,
95
+ )
96
+
97
+ @classmethod
98
+ @_telemetry_emitter(feature=Feature.MLOPS, func_name="experiment.create")
99
+ def create(
100
+ cls,
101
+ experiment_name,
102
+ display_name=None,
103
+ description=None,
104
+ tags=None,
105
+ sagemaker_session=None,
106
+ ):
107
+ """Create a new experiment in SageMaker and return an `Experiment` object.
108
+
109
+ Args:
110
+ experiment_name: (str): Name of the experiment. Must be unique. Required.
111
+ display_name: (str): Name of the experiment that will appear in UI,
112
+ such as SageMaker Studio (default: None).
113
+ description: (str): Description of the experiment (default: None).
114
+ sagemaker_session (sagemaker.core.helper.session_helper.Session): Session object which
115
+ manages interactions with Amazon SageMaker APIs and any other
116
+ AWS services needed. If not specified, one is created using the
117
+ default AWS configuration chain.
118
+ tags (Optional[Tags]): A list of tags to associate with the experiment
119
+ (default: None).
120
+
121
+ Returns:
122
+ experiments.experiment.Experiment: A SageMaker `Experiment` object
123
+ """
124
+ return cls._construct(
125
+ cls._boto_create_method,
126
+ experiment_name=experiment_name,
127
+ display_name=display_name,
128
+ description=description,
129
+ tags=format_tags(tags),
130
+ sagemaker_session=sagemaker_session,
131
+ )
132
+
133
+ @classmethod
134
+ def _load_or_create(
135
+ cls,
136
+ experiment_name,
137
+ display_name=None,
138
+ description=None,
139
+ tags=None,
140
+ sagemaker_session=None,
141
+ ):
142
+ """Load an experiment by name and create a new one if it does not exist.
143
+
144
+ Args:
145
+ experiment_name: (str): Name of the experiment. Must be unique. Required.
146
+ display_name: (str): Name of the experiment that will appear in UI,
147
+ such as SageMaker Studio (default: None). This is used only when the
148
+ given `experiment_name` does not exist and a new experiment has to be created.
149
+ description: (str): Description of the experiment (default: None).
150
+ This is used only when the given `experiment_name` does not exist and
151
+ a new experiment has to be created.
152
+ sagemaker_session (sagemaker.core.helper.session_helper.Session): Session object which
153
+ manages interactions with Amazon SageMaker APIs and any other
154
+ AWS services needed. If not specified, one is created using the
155
+ default AWS configuration chain.
156
+ tags (Optional[Tags]): A list of tags to associate with the experiment
157
+ (default: None). This is used only when the given `experiment_name` does not
158
+ exist and a new experiment has to be created.
159
+
160
+ Returns:
161
+ experiments.experiment.Experiment: A SageMaker `Experiment` object
162
+ """
163
+ try:
164
+ experiment = Experiment.create(
165
+ experiment_name=experiment_name,
166
+ display_name=display_name,
167
+ description=description,
168
+ tags=format_tags(tags),
169
+ sagemaker_session=sagemaker_session,
170
+ )
171
+ except ClientError as ce:
172
+ error_code = ce.response["Error"]["Code"]
173
+ error_message = ce.response["Error"]["Message"]
174
+ if not (error_code == "ValidationException" and "already exists" in error_message):
175
+ raise ce
176
+ # already exists
177
+ experiment = Experiment.load(experiment_name, sagemaker_session)
178
+ return experiment
179
+
180
+ def list_trials(self, created_before=None, created_after=None, sort_by=None, sort_order=None):
181
+ """List trials in this experiment matching the specified criteria.
182
+
183
+ Args:
184
+ created_before (datetime.datetime): Return trials created before this instant
185
+ (default: None).
186
+ created_after (datetime.datetime): Return trials created after this instant
187
+ (default: None).
188
+ sort_by (str): Which property to sort results by. One of 'Name', 'CreationTime'
189
+ (default: None).
190
+ sort_order (str): One of 'Ascending', or 'Descending' (default: None).
191
+
192
+ Returns:
193
+ collections.Iterator[experiments._api_types.TrialSummary] :
194
+ An iterator over trials matching the criteria.
195
+ """
196
+ return _Trial.list(
197
+ experiment_name=self.experiment_name,
198
+ created_before=created_before,
199
+ created_after=created_after,
200
+ sort_by=sort_by,
201
+ sort_order=sort_order,
202
+ sagemaker_session=self.sagemaker_session,
203
+ )
204
+
205
+ def _delete_all(self, action):
206
+ """Force to delete the experiment and associated trials, trial components.
207
+
208
+ Args:
209
+ action (str): The string '--force' is required to pass in to confirm recursively
210
+ delete the experiments, and all its trials and trial components.
211
+ """
212
+ if action != "--force":
213
+ raise ValueError(
214
+ "Must confirm with string '--force' in order to delete the experiment and "
215
+ "associated trials, trial components."
216
+ )
217
+
218
+ delete_attempt_count = 0
219
+ last_exception = None
220
+ while True:
221
+ if delete_attempt_count == self._MAX_DELETE_ALL_ATTEMPTS:
222
+ raise Exception("Failed to delete, please try again.") from last_exception
223
+ try:
224
+ for trial_summary in self.list_trials():
225
+ trial = _Trial.load(
226
+ sagemaker_session=self.sagemaker_session,
227
+ trial_name=trial_summary.trial_name,
228
+ )
229
+ for (
230
+ trial_component_summary
231
+ ) in trial.list_trial_components(): # pylint: disable=no-member
232
+ tc = _TrialComponent.load(
233
+ sagemaker_session=self.sagemaker_session,
234
+ trial_component_name=trial_component_summary.trial_component_name,
235
+ )
236
+ tc.delete(force_disassociate=True)
237
+ # to prevent throttling
238
+ time.sleep(1.2)
239
+ trial.delete() # pylint: disable=no-member
240
+ # to prevent throttling
241
+ time.sleep(1.2)
242
+ self.delete()
243
+ break
244
+ except Exception as ex: # pylint: disable=broad-except
245
+ last_exception = ex
246
+ finally:
247
+ delete_attempt_count = delete_attempt_count + 1