sagemaker-core 1.0.62__py3-none-any.whl → 2.1.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 (362) hide show
  1. sagemaker/core/__init__.py +16 -0
  2. sagemaker/core/_studio.py +116 -0
  3. sagemaker/core/_version.py +11 -0
  4. sagemaker/core/accept_types.py +131 -0
  5. sagemaker/core/analytics.py +744 -0
  6. sagemaker/core/apiutils/__init__.py +13 -0
  7. sagemaker/core/apiutils/_base_types.py +228 -0
  8. sagemaker/core/apiutils/_boto_functions.py +130 -0
  9. sagemaker/core/apiutils/_utils.py +34 -0
  10. sagemaker/core/base_deserializers.py +35 -0
  11. sagemaker/core/base_serializers.py +35 -0
  12. sagemaker/core/clarify/__init__.py +2898 -0
  13. sagemaker/core/collection.py +467 -0
  14. sagemaker/core/common_utils.py +2281 -0
  15. sagemaker/core/compute_resource_requirements/__init__.py +18 -0
  16. sagemaker/core/compute_resource_requirements/resource_requirements.py +94 -0
  17. sagemaker/core/config/__init__.py +181 -0
  18. sagemaker/core/config/config.py +238 -0
  19. sagemaker/core/config/config_manager.py +595 -0
  20. sagemaker/core/config/config_schema.py +1220 -0
  21. sagemaker/core/config/config_utils.py +297 -0
  22. {sagemaker_core/main → sagemaker/core}/config_schema.py +408 -3
  23. sagemaker/core/constants.py +73 -0
  24. sagemaker/core/content_types.py +137 -0
  25. sagemaker/core/debugger/__init__.py +39 -0
  26. sagemaker/core/debugger/debugger.py +945 -0
  27. sagemaker/core/debugger/framework_profile.py +292 -0
  28. sagemaker/core/debugger/metrics_config.py +468 -0
  29. sagemaker/core/debugger/profiler.py +42 -0
  30. sagemaker/core/debugger/profiler_config.py +190 -0
  31. sagemaker/core/debugger/profiler_constants.py +40 -0
  32. sagemaker/core/debugger/utils.py +148 -0
  33. sagemaker/core/deprecations.py +254 -0
  34. sagemaker/core/deserializers/__init__.py +10 -0
  35. sagemaker/core/deserializers/base.py +424 -0
  36. sagemaker/core/deserializers/implementations.py +157 -0
  37. sagemaker/core/drift_check_baselines.py +106 -0
  38. sagemaker/core/enums.py +51 -0
  39. sagemaker/core/environment_variables.py +101 -0
  40. sagemaker/core/exceptions.py +108 -0
  41. sagemaker/core/experiments/__init__.py +53 -0
  42. sagemaker/core/experiments/_api_types.py +251 -0
  43. sagemaker/core/experiments/_environment.py +124 -0
  44. sagemaker/core/experiments/_helper.py +294 -0
  45. sagemaker/core/experiments/_metrics.py +333 -0
  46. sagemaker/core/experiments/_run_context.py +58 -0
  47. sagemaker/core/experiments/_utils.py +216 -0
  48. sagemaker/core/experiments/experiment.py +244 -0
  49. sagemaker/core/experiments/run.py +970 -0
  50. sagemaker/core/experiments/trial.py +296 -0
  51. sagemaker/core/experiments/trial_component.py +387 -0
  52. sagemaker/core/explainer/__init__.py +24 -0
  53. sagemaker/core/explainer/clarify_explainer_config.py +298 -0
  54. sagemaker/core/explainer/explainer_config.py +44 -0
  55. sagemaker/core/fw_utils.py +1176 -0
  56. sagemaker/core/git_utils.py +349 -0
  57. sagemaker/core/helper/pipeline_variable.py +82 -0
  58. sagemaker/core/helper/session_helper.py +2965 -0
  59. sagemaker/core/huggingface/__init__.py +29 -0
  60. sagemaker/core/huggingface/llm_utils.py +150 -0
  61. sagemaker/core/huggingface/processing.py +139 -0
  62. sagemaker/core/huggingface/training_compiler/config.py +167 -0
  63. sagemaker/core/hyperparameters.py +172 -0
  64. sagemaker/core/image_retriever/__init__.py +3 -0
  65. sagemaker/core/image_retriever/image_retriever.py +640 -0
  66. sagemaker/core/image_retriever/image_retriever_utils.py +511 -0
  67. sagemaker/core/image_retriever/test.py +7 -0
  68. sagemaker/core/image_uri_config/__init__.py +13 -0
  69. sagemaker/core/image_uri_config/autogluon.json +1335 -0
  70. sagemaker/core/image_uri_config/blazingtext.json +50 -0
  71. sagemaker/core/image_uri_config/chainer.json +104 -0
  72. sagemaker/core/image_uri_config/clarify.json +39 -0
  73. sagemaker/core/image_uri_config/coach-mxnet.json +70 -0
  74. sagemaker/core/image_uri_config/coach-tensorflow.json +186 -0
  75. sagemaker/core/image_uri_config/data-wrangler.json +91 -0
  76. sagemaker/core/image_uri_config/debugger.json +34 -0
  77. sagemaker/core/image_uri_config/detailed-profiler.json +18 -0
  78. sagemaker/core/image_uri_config/djl-deepspeed.json +385 -0
  79. sagemaker/core/image_uri_config/djl-fastertransformer.json +167 -0
  80. sagemaker/core/image_uri_config/djl-lmi.json +136 -0
  81. sagemaker/core/image_uri_config/djl-neuronx.json +258 -0
  82. sagemaker/core/image_uri_config/djl-tensorrtllm.json +262 -0
  83. sagemaker/core/image_uri_config/factorization-machines.json +50 -0
  84. sagemaker/core/image_uri_config/forecasting-deepar.json +50 -0
  85. sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +660 -0
  86. sagemaker/core/image_uri_config/huggingface-llm.json +1158 -0
  87. sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
  88. sagemaker/core/image_uri_config/huggingface-neuronx.json +510 -0
  89. sagemaker/core/image_uri_config/huggingface-tei-cpu.json +298 -0
  90. sagemaker/core/image_uri_config/huggingface-tei.json +298 -0
  91. sagemaker/core/image_uri_config/huggingface-training-compiler.json +195 -0
  92. sagemaker/core/image_uri_config/huggingface.json +2138 -0
  93. sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +52 -0
  94. sagemaker/core/image_uri_config/image-classification-neo.json +43 -0
  95. sagemaker/core/image_uri_config/image-classification.json +50 -0
  96. sagemaker/core/image_uri_config/inferentia-mxnet.json +88 -0
  97. sagemaker/core/image_uri_config/inferentia-pytorch.json +127 -0
  98. sagemaker/core/image_uri_config/inferentia-tensorflow.json +88 -0
  99. sagemaker/core/image_uri_config/instance_gpu_info.json +782 -0
  100. sagemaker/core/image_uri_config/ipinsights.json +50 -0
  101. sagemaker/core/image_uri_config/kmeans.json +50 -0
  102. sagemaker/core/image_uri_config/knn.json +50 -0
  103. sagemaker/core/image_uri_config/lda.json +26 -0
  104. sagemaker/core/image_uri_config/linear-learner.json +50 -0
  105. sagemaker/core/image_uri_config/model-monitor.json +42 -0
  106. sagemaker/core/image_uri_config/mxnet.json +1154 -0
  107. sagemaker/core/image_uri_config/neo-mxnet.json +64 -0
  108. sagemaker/core/image_uri_config/neo-pytorch.json +341 -0
  109. sagemaker/core/image_uri_config/neo-tensorflow.json +109 -0
  110. sagemaker/core/image_uri_config/ntm.json +50 -0
  111. sagemaker/core/image_uri_config/object-detection.json +50 -0
  112. sagemaker/core/image_uri_config/object2vec.json +50 -0
  113. sagemaker/core/image_uri_config/pca.json +50 -0
  114. sagemaker/core/image_uri_config/pytorch-neuron.json +43 -0
  115. sagemaker/core/image_uri_config/pytorch-smp.json +218 -0
  116. sagemaker/core/image_uri_config/pytorch-training-compiler.json +80 -0
  117. sagemaker/core/image_uri_config/pytorch.json +3101 -0
  118. sagemaker/core/image_uri_config/randomcutforest.json +50 -0
  119. sagemaker/core/image_uri_config/ray-pytorch.json +46 -0
  120. sagemaker/core/image_uri_config/ray-tensorflow.json +194 -0
  121. sagemaker/core/image_uri_config/sagemaker-base-python.json +46 -0
  122. sagemaker/core/image_uri_config/sagemaker-distribution.json +37 -0
  123. sagemaker/core/image_uri_config/sagemaker-geospatial.json +13 -0
  124. sagemaker/core/image_uri_config/sagemaker-tritonserver.json +212 -0
  125. sagemaker/core/image_uri_config/semantic-segmentation.json +50 -0
  126. sagemaker/core/image_uri_config/seq2seq.json +50 -0
  127. sagemaker/core/image_uri_config/sklearn.json +446 -0
  128. sagemaker/core/image_uri_config/spark.json +280 -0
  129. sagemaker/core/image_uri_config/sparkml-serving.json +97 -0
  130. sagemaker/core/image_uri_config/stabilityai.json +53 -0
  131. sagemaker/core/image_uri_config/tensorflow.json +5086 -0
  132. sagemaker/core/image_uri_config/vw.json +25 -0
  133. sagemaker/core/image_uri_config/xgboost-neo.json +43 -0
  134. sagemaker/core/image_uri_config/xgboost.json +888 -0
  135. sagemaker/core/image_uris.py +810 -0
  136. sagemaker/core/inference_config.py +144 -0
  137. sagemaker/core/inference_recommender/__init__.py +18 -0
  138. sagemaker/core/inference_recommender/inference_recommender_mixin.py +622 -0
  139. sagemaker/core/inputs.py +366 -0
  140. sagemaker/core/instance_group.py +61 -0
  141. sagemaker/core/instance_types.py +164 -0
  142. sagemaker/core/instance_types_gpu_info.py +43 -0
  143. sagemaker/core/interactive_apps/__init__.py +41 -0
  144. sagemaker/core/interactive_apps/base_interactive_app.py +204 -0
  145. sagemaker/core/interactive_apps/detail_profiler_app.py +139 -0
  146. sagemaker/core/interactive_apps/tensorboard.py +149 -0
  147. sagemaker/core/iterators.py +186 -0
  148. sagemaker/core/job.py +380 -0
  149. sagemaker/core/jumpstart/__init__.py +156 -0
  150. sagemaker/core/jumpstart/accessors.py +390 -0
  151. sagemaker/core/jumpstart/artifacts/__init__.py +69 -0
  152. sagemaker/core/jumpstart/artifacts/environment_variables.py +252 -0
  153. sagemaker/core/jumpstart/artifacts/hyperparameters.py +120 -0
  154. sagemaker/core/jumpstart/artifacts/image_uris.py +139 -0
  155. sagemaker/core/jumpstart/artifacts/incremental_training.py +87 -0
  156. sagemaker/core/jumpstart/artifacts/instance_types.py +223 -0
  157. sagemaker/core/jumpstart/artifacts/kwargs.py +289 -0
  158. sagemaker/core/jumpstart/artifacts/metric_definitions.py +117 -0
  159. sagemaker/core/jumpstart/artifacts/model_packages.py +202 -0
  160. sagemaker/core/jumpstart/artifacts/model_uris.py +252 -0
  161. sagemaker/core/jumpstart/artifacts/payloads.py +96 -0
  162. sagemaker/core/jumpstart/artifacts/predictors.py +540 -0
  163. sagemaker/core/jumpstart/artifacts/resource_names.py +86 -0
  164. sagemaker/core/jumpstart/artifacts/resource_requirements.py +162 -0
  165. sagemaker/core/jumpstart/artifacts/script_uris.py +172 -0
  166. sagemaker/core/jumpstart/cache.py +663 -0
  167. sagemaker/core/jumpstart/configs.py +50 -0
  168. sagemaker/core/jumpstart/constants.py +198 -0
  169. sagemaker/core/jumpstart/deserializers.py +81 -0
  170. sagemaker/core/jumpstart/document.py +76 -0
  171. sagemaker/core/jumpstart/enums.py +168 -0
  172. sagemaker/core/jumpstart/exceptions.py +236 -0
  173. sagemaker/core/jumpstart/factory/utils.py +833 -0
  174. sagemaker/core/jumpstart/filters.py +597 -0
  175. sagemaker/core/jumpstart/hub/constants.py +16 -0
  176. sagemaker/core/jumpstart/hub/hub.py +291 -0
  177. sagemaker/core/jumpstart/hub/interfaces.py +936 -0
  178. sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
  179. sagemaker/core/jumpstart/hub/parsers.py +288 -0
  180. sagemaker/core/jumpstart/hub/types.py +35 -0
  181. sagemaker/core/jumpstart/hub/utils.py +260 -0
  182. sagemaker/core/jumpstart/models.py +499 -0
  183. sagemaker/core/jumpstart/notebook_utils.py +575 -0
  184. sagemaker/core/jumpstart/parameters.py +20 -0
  185. sagemaker/core/jumpstart/payload_utils.py +239 -0
  186. sagemaker/core/jumpstart/region_config.json +163 -0
  187. sagemaker/core/jumpstart/search.py +171 -0
  188. sagemaker/core/jumpstart/serializers.py +81 -0
  189. sagemaker/core/jumpstart/session_utils.py +234 -0
  190. sagemaker/core/jumpstart/types.py +3044 -0
  191. sagemaker/core/jumpstart/utils.py +1731 -0
  192. sagemaker/core/jumpstart/validators.py +257 -0
  193. sagemaker/core/lambda_helper.py +312 -0
  194. sagemaker/core/lineage/__init__.py +42 -0
  195. sagemaker/core/lineage/_api_types.py +239 -0
  196. sagemaker/core/lineage/_utils.py +49 -0
  197. sagemaker/core/lineage/action.py +345 -0
  198. sagemaker/core/lineage/artifact.py +646 -0
  199. sagemaker/core/lineage/association.py +190 -0
  200. sagemaker/core/lineage/context.py +505 -0
  201. sagemaker/core/lineage/lineage_trial_component.py +191 -0
  202. sagemaker/core/lineage/query.py +732 -0
  203. sagemaker/core/lineage/visualizer.py +346 -0
  204. sagemaker/core/local/__init__.py +18 -0
  205. sagemaker/core/local/data.py +413 -0
  206. sagemaker/core/local/entities.py +678 -0
  207. sagemaker/core/local/exceptions.py +17 -0
  208. sagemaker/core/local/image.py +1243 -0
  209. sagemaker/core/local/local_session.py +739 -0
  210. sagemaker/core/local/utils.py +245 -0
  211. sagemaker/core/logs.py +181 -0
  212. sagemaker/core/metadata_properties.py +56 -0
  213. sagemaker/core/metric_definitions.py +91 -0
  214. sagemaker/core/mlflow/__init__.py +38 -0
  215. sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
  216. sagemaker/core/model_card/__init__.py +26 -0
  217. sagemaker/core/model_life_cycle.py +51 -0
  218. sagemaker/core/model_metrics.py +160 -0
  219. sagemaker/core/model_monitor/__init__.py +66 -0
  220. sagemaker/core/model_monitor/clarify_model_monitoring.py +1495 -0
  221. sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
  222. sagemaker/core/model_monitor/data_capture_config.py +115 -0
  223. sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
  224. sagemaker/core/model_monitor/dataset_format.py +102 -0
  225. sagemaker/core/model_monitor/model_monitoring.py +4266 -0
  226. sagemaker/core/model_monitor/monitoring_alert.py +76 -0
  227. sagemaker/core/model_monitor/monitoring_files.py +506 -0
  228. sagemaker/core/model_monitor/utils.py +793 -0
  229. sagemaker/core/model_registry.py +480 -0
  230. sagemaker/core/model_uris.py +97 -0
  231. sagemaker/core/modules/__init__.py +19 -0
  232. sagemaker/core/modules/configs.py +226 -0
  233. sagemaker/core/modules/constants.py +37 -0
  234. sagemaker/core/modules/distributed.py +182 -0
  235. sagemaker/core/modules/local_core/__init__.py +0 -0
  236. sagemaker/core/modules/local_core/local_container.py +605 -0
  237. sagemaker/core/modules/templates.py +83 -0
  238. sagemaker/core/modules/train/__init__.py +14 -0
  239. sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
  240. sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
  241. sagemaker/core/modules/train/container_drivers/common/utils.py +213 -0
  242. sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
  243. sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
  244. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
  245. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
  246. sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
  247. sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
  248. sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
  249. sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
  250. sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
  251. sagemaker/core/modules/types.py +19 -0
  252. sagemaker/core/modules/utils.py +194 -0
  253. sagemaker/core/network.py +185 -0
  254. sagemaker/core/parameter.py +173 -0
  255. sagemaker/core/payloads.py +185 -0
  256. sagemaker/core/processing.py +1597 -0
  257. sagemaker/core/remote_function/__init__.py +19 -0
  258. sagemaker/core/remote_function/checkpoint_location.py +47 -0
  259. sagemaker/core/remote_function/client.py +1285 -0
  260. sagemaker/core/remote_function/core/__init__.py +0 -0
  261. sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
  262. sagemaker/core/remote_function/core/pipeline_variables.py +353 -0
  263. sagemaker/core/remote_function/core/serialization.py +422 -0
  264. sagemaker/core/remote_function/core/stored_function.py +226 -0
  265. sagemaker/core/remote_function/custom_file_filter.py +128 -0
  266. sagemaker/core/remote_function/errors.py +104 -0
  267. sagemaker/core/remote_function/invoke_function.py +172 -0
  268. sagemaker/core/remote_function/job.py +2140 -0
  269. sagemaker/core/remote_function/logging_config.py +38 -0
  270. sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
  271. sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
  272. sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
  273. sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
  274. sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
  275. sagemaker/core/remote_function/spark_config.py +149 -0
  276. sagemaker/core/resource_requirements.py +168 -0
  277. {sagemaker_core/main → sagemaker/core}/resources.py +19098 -10895
  278. sagemaker/core/s3/__init__.py +41 -0
  279. sagemaker/core/s3/client.py +367 -0
  280. sagemaker/core/s3/utils.py +175 -0
  281. sagemaker/core/script_uris.py +93 -0
  282. sagemaker/core/serializers/__init__.py +11 -0
  283. sagemaker/core/serializers/base.py +510 -0
  284. sagemaker/core/serializers/implementations.py +159 -0
  285. sagemaker/core/serializers/utils.py +223 -0
  286. sagemaker/core/serverless_inference_config.py +63 -0
  287. sagemaker/core/session_settings.py +55 -0
  288. sagemaker/core/shapes/__init__.py +3 -0
  289. sagemaker/core/shapes/model_card_shapes.py +159 -0
  290. {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +5810 -1806
  291. sagemaker/core/spark/__init__.py +16 -0
  292. sagemaker/core/spark/defaults.py +16 -0
  293. sagemaker/core/spark/processing.py +1380 -0
  294. sagemaker/core/telemetry/__init__.py +23 -0
  295. sagemaker/core/telemetry/constants.py +84 -0
  296. sagemaker/core/telemetry/telemetry_logging.py +284 -0
  297. sagemaker/core/tools/__init__.py +1 -0
  298. {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
  299. {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
  300. {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
  301. {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
  302. sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
  303. {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
  304. {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
  305. {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
  306. {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
  307. {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
  308. sagemaker/core/training/__init__.py +14 -0
  309. sagemaker/core/training/configs.py +333 -0
  310. sagemaker/core/training/constants.py +37 -0
  311. sagemaker/core/training/utils.py +77 -0
  312. sagemaker/core/training_compiler/__init__.py +16 -0
  313. sagemaker/core/training_compiler/config.py +197 -0
  314. sagemaker/core/training_compiler_config.py +197 -0
  315. sagemaker/core/transformer.py +793 -0
  316. sagemaker/core/user_agent.py +76 -0
  317. sagemaker/core/utilities/__init__.py +24 -0
  318. sagemaker/core/utilities/cache.py +169 -0
  319. sagemaker/core/utilities/search_expression.py +133 -0
  320. sagemaker/core/utils/__init__.py +48 -0
  321. sagemaker/core/utils/code_injection/__init__.py +0 -0
  322. {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
  323. {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +5979 -176
  324. {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
  325. sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
  326. {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
  327. {sagemaker_core/main → sagemaker/core/utils}/utils.py +27 -22
  328. sagemaker/core/workflow/__init__.py +152 -0
  329. sagemaker/core/workflow/conditions.py +313 -0
  330. sagemaker/core/workflow/entities.py +58 -0
  331. sagemaker/core/workflow/execution_variables.py +89 -0
  332. sagemaker/core/workflow/functions.py +193 -0
  333. sagemaker/core/workflow/parameters.py +222 -0
  334. sagemaker/core/workflow/pipeline_context.py +394 -0
  335. sagemaker/core/workflow/pipeline_definition_config.py +31 -0
  336. sagemaker/core/workflow/properties.py +285 -0
  337. sagemaker/core/workflow/step_outputs.py +65 -0
  338. sagemaker/core/workflow/utilities.py +507 -0
  339. sagemaker/lineage/__init__.py +33 -0
  340. sagemaker/lineage/action.py +28 -0
  341. sagemaker/lineage/artifact.py +28 -0
  342. sagemaker/lineage/context.py +28 -0
  343. sagemaker/lineage/lineage_trial_component.py +28 -0
  344. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/METADATA +28 -9
  345. sagemaker_core-2.1.1.dist-info/RECORD +355 -0
  346. sagemaker_core-2.1.1.dist-info/top_level.txt +1 -0
  347. sagemaker_core/_version.py +0 -3
  348. sagemaker_core/helper/session_helper.py +0 -769
  349. sagemaker_core/resources/__init__.py +0 -1
  350. sagemaker_core/shapes/__init__.py +0 -1
  351. sagemaker_core/tools/__init__.py +0 -1
  352. sagemaker_core-1.0.62.dist-info/RECORD +0 -35
  353. sagemaker_core-1.0.62.dist-info/top_level.txt +0 -1
  354. {sagemaker_core → sagemaker/core/helper}/__init__.py +0 -0
  355. {sagemaker_core/helper → sagemaker/core/huggingface/training_compiler}/__init__.py +0 -0
  356. {sagemaker_core/main → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
  357. {sagemaker_core/main/code_injection → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
  358. {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
  359. {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
  360. {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
  361. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/WHEEL +0 -0
  362. {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,346 @@
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
+ """This module contains functionality to display lineage data."""
14
+ from __future__ import absolute_import
15
+
16
+ import logging
17
+
18
+ from typing import Optional, Any, Iterator
19
+
20
+ import pandas as pd
21
+ from pandas import DataFrame
22
+
23
+ from sagemaker.core.lineage._api_types import AssociationSummary
24
+ from sagemaker.core.lineage.association import Association
25
+
26
+
27
+ class LineageTableVisualizer(object):
28
+ """Creates a dataframe containing the lineage assoociations of a SageMaker object."""
29
+
30
+ def __init__(self, sagemaker_session):
31
+ """Init for LineageTableVisualizer.
32
+
33
+ Args:
34
+ sagemaker_session (obj): The sagemaker session used for API requests.
35
+ """
36
+ self._session = sagemaker_session
37
+
38
+ def show(
39
+ self,
40
+ trial_component_name: Optional[str] = None,
41
+ training_job_name: Optional[str] = None,
42
+ processing_job_name: Optional[str] = None,
43
+ pipeline_execution_step: Optional[object] = None,
44
+ model_package_arn: Optional[str] = None,
45
+ endpoint_arn: Optional[str] = None,
46
+ artifact_arn: Optional[str] = None,
47
+ context_arn: Optional[str] = None,
48
+ actions_arn: Optional[str] = None,
49
+ ) -> DataFrame:
50
+ """Generate a dataframe containing all incoming and outgoing lineage entities.
51
+
52
+ Examples:
53
+ .. code-block:: python
54
+
55
+ viz = LineageTableVisualizer(sagemaker_session)
56
+ df = viz.show(training_job_name=training_job_name)
57
+ # in a notebook
58
+ display(df.to_html())
59
+
60
+ Args:
61
+ trial_component_name (str, optional): Name of a trial component. Defaults to None.
62
+ training_job_name (str, optional): Name of a training job. Defaults to None.
63
+ processing_job_name (str, optional): Name of a processing job. Defaults to None.
64
+ pipeline_execution_step (obj, optional): Pipeline execution step. Defaults to None.
65
+ model_package_arn (str, optional): Model package arn. Defaults to None.
66
+ endpoint_arn (str, optional): Endpoint arn. Defaults to None.
67
+ artifact_arn (str, optional): Artifact arn. Defaults to None.
68
+ context_arn (str, optional): Context arn. Defaults to None.
69
+ actions_arn (str, optional): Action arn. Defaults to None.
70
+
71
+ Returns:
72
+ DataFrame: Pandas dataframe containing lineage associations.
73
+ """
74
+ start_arn: str = None
75
+
76
+ if trial_component_name:
77
+ start_arn = self._get_start_arn_from_trial_component_name(trial_component_name)
78
+ elif training_job_name:
79
+ trial_component_name = training_job_name + "-aws-training-job"
80
+ start_arn = self._get_start_arn_from_trial_component_name(trial_component_name)
81
+ elif processing_job_name:
82
+ trial_component_name = processing_job_name + "-aws-processing-job"
83
+ start_arn = self._get_start_arn_from_trial_component_name(trial_component_name)
84
+ elif pipeline_execution_step:
85
+ start_arn = self._get_start_arn_from_pipeline_execution_step(pipeline_execution_step)
86
+ elif model_package_arn:
87
+ start_arn = self._get_start_arn_from_model_package_arn(model_package_arn)
88
+ elif endpoint_arn:
89
+ start_arn = self._get_start_arn_from_endpoint_arn(endpoint_arn)
90
+ elif artifact_arn:
91
+ start_arn = artifact_arn
92
+ elif context_arn:
93
+ start_arn = context_arn
94
+ elif actions_arn:
95
+ start_arn = actions_arn
96
+
97
+ return self._get_associations_dataframe(start_arn)
98
+
99
+ def _get_start_arn_from_pipeline_execution_step(self, pipeline_execution_step: object) -> str:
100
+ """Given a pipeline exection step retrieve the arn of the lineage entity that represents it.
101
+
102
+ Args:
103
+ pipeline_execution_step (obj): Pipeline execution step.
104
+
105
+ Returns:
106
+ str: The arn of the lineage entity
107
+ """
108
+ start_arn: str = None
109
+
110
+ if not pipeline_execution_step["Metadata"]:
111
+ return None
112
+
113
+ metadata: Any = pipeline_execution_step["Metadata"]
114
+ jobs: list = ["TrainingJob", "ProcessingJob", "TransformJob"]
115
+
116
+ for job in jobs:
117
+ if job in metadata and metadata[job]:
118
+ job_arn = metadata[job]["Arn"]
119
+ start_arn = self._get_start_arn_from_job_arn(job_arn)
120
+ break
121
+
122
+ if "RegisterModel" in metadata:
123
+ start_arn = self._get_start_arn_from_model_package_arn(metadata["RegisterModel"]["Arn"])
124
+
125
+ return start_arn
126
+
127
+ def _get_start_arn_from_job_arn(self, job_arn: str) -> str:
128
+ """Given a job arn return the lineage entity.
129
+
130
+ Args:
131
+ job_arn (str): Arn of a training, processing, or transform job.
132
+
133
+ Returns:
134
+ str: The arn of the job's lineage entity.
135
+ """
136
+ start_arn: str = None
137
+ response: Any = self._session.sagemaker_client.list_trial_components(SourceArn=job_arn)
138
+ trial_components: Any = response["TrialComponentSummaries"]
139
+ if trial_components:
140
+ start_arn = trial_components[0]["TrialComponentArn"]
141
+ else:
142
+ logging.warning("No trial components found for %s", job_arn)
143
+ return start_arn
144
+
145
+ def _get_associations_dataframe(self, arn: str) -> DataFrame:
146
+ """Create a data frame containing lineage association information.
147
+
148
+ Args:
149
+ arn (str): The arn of the lineage entity of interest.
150
+
151
+ Returns:
152
+ DataFrame: A dataframe with association information.
153
+ """
154
+ if arn is None:
155
+ # no associations
156
+ return None
157
+
158
+ upstream_associations: Iterator[AssociationSummary] = self._get_associations(dest_arn=arn)
159
+ downstream_associations: Iterator[AssociationSummary] = self._get_associations(src_arn=arn)
160
+ inputs: list = list(map(self._convert_input_association_to_df_row, upstream_associations))
161
+ outputs: list = list(
162
+ map(self._convert_output_association_to_df_row, downstream_associations)
163
+ )
164
+ df: DataFrame = pd.DataFrame(
165
+ inputs + outputs,
166
+ columns=[
167
+ "Name/Source",
168
+ "Direction",
169
+ "Type",
170
+ "Association Type",
171
+ "Lineage Type",
172
+ ],
173
+ )
174
+ return df
175
+
176
+ def _get_start_arn_from_trial_component_name(self, tc_name: str) -> str:
177
+ """Given a trial component name retrieve a start arn.
178
+
179
+ Args:
180
+ tc_name (str): Name of the trial compoonent.
181
+
182
+ Returns:
183
+ str: The arn of the trial component.
184
+ """
185
+ response: Any = self._session.sagemaker_client.describe_trial_component(
186
+ TrialComponentName=tc_name
187
+ )
188
+ tc_arn: str = response["TrialComponentArn"]
189
+ return tc_arn
190
+
191
+ def _get_start_arn_from_model_package_arn(self, model_package_arn: str) -> str:
192
+ """Given a model package arn retrieve the arn lineage entity.
193
+
194
+ Args:
195
+ model_package_arn (str): The arn of a model package.
196
+
197
+ Returns:
198
+ str: The arn of the lineage entity that represents the model package.
199
+ """
200
+ response: Any = self._session.sagemaker_client.list_artifacts(SourceUri=model_package_arn)
201
+ artifacts: Any = response["ArtifactSummaries"]
202
+ artifact_arn: str = None
203
+ if artifacts:
204
+ artifact_arn = artifacts[0]["ArtifactArn"]
205
+ else:
206
+ logging.debug("No artifacts found for %s.", model_package_arn)
207
+ return artifact_arn
208
+
209
+ def _get_start_arn_from_endpoint_arn(self, endpoint_arn: str) -> str:
210
+ """Given an endpoint arn retrieve the arn of the lineage entity.
211
+
212
+ Args:
213
+ endpoint_arn (str): The arn of an endpoint
214
+
215
+ Returns:
216
+ str: The arn of the lineage entity that represents the model package.
217
+ """
218
+ response: Any = self._session.sagemaker_client.list_contexts(SourceUri=endpoint_arn)
219
+ contexts: Any = response["ContextSummaries"]
220
+ context_arn: str = None
221
+ if contexts:
222
+ context_arn = contexts[0]["ContextArn"]
223
+ else:
224
+ logging.debug("No contexts found for %s.", endpoint_arn)
225
+ return context_arn
226
+
227
+ def _get_associations(
228
+ self, src_arn: Optional[str] = None, dest_arn: Optional[str] = None
229
+ ) -> Iterator[AssociationSummary]:
230
+ """Given an arn retrieve all associated lineage entities.
231
+
232
+ The arn must be one of: experiment, trial, trial component, artifact, action, or context.
233
+
234
+ Args:
235
+ src_arn (str, optional): The arn of the source. Defaults to None.
236
+ dest_arn (str, optional): The arn of the destination. Defaults to None.
237
+
238
+ Returns:
239
+ array: An array of associations that are either incoming or outgoing from the lineage
240
+ entity of interest.
241
+ """
242
+ if src_arn:
243
+ associations: Iterator[AssociationSummary] = Association.list(
244
+ source_arn=src_arn, sagemaker_session=self._session
245
+ )
246
+ else:
247
+ associations: Iterator[AssociationSummary] = Association.list(
248
+ destination_arn=dest_arn, sagemaker_session=self._session
249
+ )
250
+ return associations
251
+
252
+ def _convert_input_association_to_df_row(self, association) -> list:
253
+ """Convert an input association to a data frame row.
254
+
255
+ Args:
256
+ association (obj): ``Association``
257
+
258
+ Returns:
259
+ array: Array of column values for the association data frame.
260
+ """
261
+ return self._convert_association_to_df_row(
262
+ association.source_arn,
263
+ association.source_name,
264
+ "Input",
265
+ association.source_type,
266
+ association.association_type,
267
+ )
268
+
269
+ def _convert_output_association_to_df_row(self, association) -> list:
270
+ """Convert an output association to a data frame row.
271
+
272
+ Args:
273
+ association (obj): ``Association``
274
+
275
+ Returns:
276
+ array: Array of column values for the association data frame.
277
+ """
278
+ return self._convert_association_to_df_row(
279
+ association.destination_arn,
280
+ association.destination_name,
281
+ "Output",
282
+ association.destination_type,
283
+ association.association_type,
284
+ )
285
+
286
+ def _convert_association_to_df_row(
287
+ self,
288
+ arn: str,
289
+ name: str,
290
+ direction: str,
291
+ src_dest_type: str,
292
+ association_type: type,
293
+ ) -> list:
294
+ """Convert association data into a data frame row.
295
+
296
+ Args:
297
+ arn (str): The arn of the associated entity.
298
+ name (str): The name of the associated entity.
299
+ direction (str): The direction the association is with the entity of interest. Values
300
+ are 'Input' or 'Output'.
301
+ src_dest_type (str): The type of the entity that is associated with the entity of
302
+ interest.
303
+ association_type ([type]): The type of the association.
304
+
305
+ Returns:
306
+ [type]: [description]
307
+ """
308
+ arn_name = arn.split(":")[5]
309
+ entity_type = arn_name.split("/")[0]
310
+ name = self._get_friendly_name(name, arn, entity_type)
311
+ return [name, direction, src_dest_type, association_type, entity_type]
312
+
313
+ def _get_friendly_name(self, name: str, arn: str, entity_type: str) -> str:
314
+ """Get a human readable name from the association.
315
+
316
+ Args:
317
+ name (str): The name of the associated entity
318
+ arn (str): The arn of the associated entity
319
+ entity_type (str): The type of the associated entity (artifact, action, etc...)
320
+
321
+ Returns:
322
+ str: The name for the association that will be displayed in the data frame.
323
+ """
324
+ if name:
325
+ return name
326
+
327
+ if entity_type == "artifact":
328
+ artifact = self._session.sagemaker_client.describe_artifact(ArtifactArn=arn)
329
+ uri = artifact["Source"]["SourceUri"]
330
+
331
+ # shorten the uri if the length is more than 40,
332
+ # e.g s3://flintstone-end-to-end-tests-gamma-us-west-2-069083975568/results/
333
+ # canary-auto-1608761252626/preprocessed-data/tuning_data/train.txt
334
+ # become s3://.../preprocessed-data/tuning_data/train.txt
335
+ if len(uri) > 48:
336
+ name = uri[:5] + "..." + uri[len(uri) - 40 :]
337
+
338
+ # if not then use the full uri
339
+ if not name:
340
+ name = uri
341
+
342
+ # if still don't have name derive from arn
343
+ if not name:
344
+ name = arn.split(":")[5].split("/")[1]
345
+
346
+ return name
@@ -0,0 +1,18 @@
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
+ """Local mode utilities for SageMaker."""
14
+ from __future__ import absolute_import
15
+
16
+ from sagemaker.core.local.local_session import LocalSession # noqa: F401
17
+
18
+ __all__ = ["LocalSession"]