sagemaker-core 1.0.47__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 (363) 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 +410 -4
  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/__init__.py +0 -0
  176. sagemaker/core/jumpstart/hub/constants.py +16 -0
  177. sagemaker/core/jumpstart/hub/hub.py +291 -0
  178. sagemaker/core/jumpstart/hub/interfaces.py +936 -0
  179. sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
  180. sagemaker/core/jumpstart/hub/parsers.py +288 -0
  181. sagemaker/core/jumpstart/hub/types.py +35 -0
  182. sagemaker/core/jumpstart/hub/utils.py +260 -0
  183. sagemaker/core/jumpstart/models.py +499 -0
  184. sagemaker/core/jumpstart/notebook_utils.py +575 -0
  185. sagemaker/core/jumpstart/parameters.py +20 -0
  186. sagemaker/core/jumpstart/payload_utils.py +239 -0
  187. sagemaker/core/jumpstart/region_config.json +163 -0
  188. sagemaker/core/jumpstart/search.py +171 -0
  189. sagemaker/core/jumpstart/serializers.py +81 -0
  190. sagemaker/core/jumpstart/session_utils.py +234 -0
  191. sagemaker/core/jumpstart/types.py +3044 -0
  192. sagemaker/core/jumpstart/utils.py +1731 -0
  193. sagemaker/core/jumpstart/validators.py +257 -0
  194. sagemaker/core/lambda_helper.py +312 -0
  195. sagemaker/core/lineage/__init__.py +42 -0
  196. sagemaker/core/lineage/_api_types.py +239 -0
  197. sagemaker/core/lineage/_utils.py +49 -0
  198. sagemaker/core/lineage/action.py +345 -0
  199. sagemaker/core/lineage/artifact.py +646 -0
  200. sagemaker/core/lineage/association.py +190 -0
  201. sagemaker/core/lineage/context.py +505 -0
  202. sagemaker/core/lineage/lineage_trial_component.py +191 -0
  203. sagemaker/core/lineage/query.py +732 -0
  204. sagemaker/core/lineage/visualizer.py +346 -0
  205. sagemaker/core/local/__init__.py +18 -0
  206. sagemaker/core/local/data.py +413 -0
  207. sagemaker/core/local/entities.py +678 -0
  208. sagemaker/core/local/exceptions.py +17 -0
  209. sagemaker/core/local/image.py +1243 -0
  210. sagemaker/core/local/local_session.py +739 -0
  211. sagemaker/core/local/utils.py +245 -0
  212. sagemaker/core/logs.py +181 -0
  213. sagemaker/core/metadata_properties.py +56 -0
  214. sagemaker/core/metric_definitions.py +91 -0
  215. sagemaker/core/mlflow/__init__.py +38 -0
  216. sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
  217. sagemaker/core/model_card/__init__.py +26 -0
  218. sagemaker/core/model_life_cycle.py +51 -0
  219. sagemaker/core/model_metrics.py +160 -0
  220. sagemaker/core/model_monitor/__init__.py +66 -0
  221. sagemaker/core/model_monitor/clarify_model_monitoring.py +1495 -0
  222. sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
  223. sagemaker/core/model_monitor/data_capture_config.py +115 -0
  224. sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
  225. sagemaker/core/model_monitor/dataset_format.py +102 -0
  226. sagemaker/core/model_monitor/model_monitoring.py +4266 -0
  227. sagemaker/core/model_monitor/monitoring_alert.py +76 -0
  228. sagemaker/core/model_monitor/monitoring_files.py +506 -0
  229. sagemaker/core/model_monitor/utils.py +793 -0
  230. sagemaker/core/model_registry.py +480 -0
  231. sagemaker/core/model_uris.py +97 -0
  232. sagemaker/core/modules/__init__.py +19 -0
  233. sagemaker/core/modules/configs.py +226 -0
  234. sagemaker/core/modules/constants.py +37 -0
  235. sagemaker/core/modules/distributed.py +182 -0
  236. sagemaker/core/modules/local_core/__init__.py +0 -0
  237. sagemaker/core/modules/local_core/local_container.py +605 -0
  238. sagemaker/core/modules/templates.py +83 -0
  239. sagemaker/core/modules/train/__init__.py +14 -0
  240. sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
  241. sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
  242. sagemaker/core/modules/train/container_drivers/common/utils.py +213 -0
  243. sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
  244. sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
  245. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
  246. sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
  247. sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
  248. sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
  249. sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
  250. sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
  251. sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
  252. sagemaker/core/modules/types.py +19 -0
  253. sagemaker/core/modules/utils.py +194 -0
  254. sagemaker/core/network.py +185 -0
  255. sagemaker/core/parameter.py +173 -0
  256. sagemaker/core/payloads.py +185 -0
  257. sagemaker/core/processing.py +1597 -0
  258. sagemaker/core/remote_function/__init__.py +19 -0
  259. sagemaker/core/remote_function/checkpoint_location.py +47 -0
  260. sagemaker/core/remote_function/client.py +1285 -0
  261. sagemaker/core/remote_function/core/__init__.py +0 -0
  262. sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
  263. sagemaker/core/remote_function/core/pipeline_variables.py +353 -0
  264. sagemaker/core/remote_function/core/serialization.py +422 -0
  265. sagemaker/core/remote_function/core/stored_function.py +226 -0
  266. sagemaker/core/remote_function/custom_file_filter.py +128 -0
  267. sagemaker/core/remote_function/errors.py +104 -0
  268. sagemaker/core/remote_function/invoke_function.py +172 -0
  269. sagemaker/core/remote_function/job.py +2140 -0
  270. sagemaker/core/remote_function/logging_config.py +38 -0
  271. sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
  272. sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
  273. sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
  274. sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
  275. sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
  276. sagemaker/core/remote_function/spark_config.py +149 -0
  277. sagemaker/core/resource_requirements.py +168 -0
  278. {sagemaker_core/main → sagemaker/core}/resources.py +20121 -11728
  279. sagemaker/core/s3/__init__.py +41 -0
  280. sagemaker/core/s3/client.py +367 -0
  281. sagemaker/core/s3/utils.py +175 -0
  282. sagemaker/core/script_uris.py +93 -0
  283. sagemaker/core/serializers/__init__.py +11 -0
  284. sagemaker/core/serializers/base.py +510 -0
  285. sagemaker/core/serializers/implementations.py +159 -0
  286. sagemaker/core/serializers/utils.py +223 -0
  287. sagemaker/core/serverless_inference_config.py +63 -0
  288. sagemaker/core/session_settings.py +55 -0
  289. sagemaker/core/shapes/__init__.py +3 -0
  290. sagemaker/core/shapes/model_card_shapes.py +159 -0
  291. {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +6384 -1865
  292. sagemaker/core/spark/__init__.py +16 -0
  293. sagemaker/core/spark/defaults.py +16 -0
  294. sagemaker/core/spark/processing.py +1380 -0
  295. sagemaker/core/telemetry/__init__.py +23 -0
  296. sagemaker/core/telemetry/constants.py +84 -0
  297. sagemaker/core/telemetry/telemetry_logging.py +284 -0
  298. sagemaker/core/tools/__init__.py +1 -0
  299. {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
  300. {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
  301. {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
  302. {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
  303. sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
  304. {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
  305. {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
  306. {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
  307. {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
  308. {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
  309. sagemaker/core/training/__init__.py +14 -0
  310. sagemaker/core/training/configs.py +333 -0
  311. sagemaker/core/training/constants.py +37 -0
  312. sagemaker/core/training/utils.py +77 -0
  313. sagemaker/core/training_compiler/__init__.py +16 -0
  314. sagemaker/core/training_compiler/config.py +197 -0
  315. sagemaker/core/training_compiler_config.py +197 -0
  316. sagemaker/core/transformer.py +793 -0
  317. sagemaker/core/user_agent.py +76 -0
  318. sagemaker/core/utilities/__init__.py +24 -0
  319. sagemaker/core/utilities/cache.py +169 -0
  320. sagemaker/core/utilities/search_expression.py +133 -0
  321. sagemaker/core/utils/__init__.py +48 -0
  322. sagemaker/core/utils/code_injection/__init__.py +0 -0
  323. {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
  324. {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +6479 -136
  325. {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
  326. sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
  327. {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
  328. {sagemaker_core/main → sagemaker/core/utils}/utils.py +25 -20
  329. sagemaker/core/workflow/__init__.py +152 -0
  330. sagemaker/core/workflow/conditions.py +313 -0
  331. sagemaker/core/workflow/entities.py +58 -0
  332. sagemaker/core/workflow/execution_variables.py +89 -0
  333. sagemaker/core/workflow/functions.py +193 -0
  334. sagemaker/core/workflow/parameters.py +222 -0
  335. sagemaker/core/workflow/pipeline_context.py +394 -0
  336. sagemaker/core/workflow/pipeline_definition_config.py +31 -0
  337. sagemaker/core/workflow/properties.py +285 -0
  338. sagemaker/core/workflow/step_outputs.py +65 -0
  339. sagemaker/core/workflow/utilities.py +507 -0
  340. sagemaker/lineage/__init__.py +33 -0
  341. sagemaker/lineage/action.py +28 -0
  342. sagemaker/lineage/artifact.py +28 -0
  343. sagemaker/lineage/context.py +28 -0
  344. sagemaker/lineage/lineage_trial_component.py +28 -0
  345. {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/METADATA +28 -9
  346. sagemaker_core-2.1.1.dist-info/RECORD +355 -0
  347. sagemaker_core-2.1.1.dist-info/top_level.txt +1 -0
  348. sagemaker_core/__init__.py +0 -4
  349. sagemaker_core/_version.py +0 -3
  350. sagemaker_core/helper/session_helper.py +0 -769
  351. sagemaker_core/resources/__init__.py +0 -1
  352. sagemaker_core/shapes/__init__.py +0 -1
  353. sagemaker_core/tools/__init__.py +0 -1
  354. sagemaker_core-1.0.47.dist-info/RECORD +0 -35
  355. sagemaker_core-1.0.47.dist-info/top_level.txt +0 -1
  356. {sagemaker_core → sagemaker/core}/helper/__init__.py +0 -0
  357. {sagemaker_core/main → sagemaker/core/huggingface/training_compiler}/__init__.py +0 -0
  358. {sagemaker_core/main/code_injection → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
  359. {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
  360. {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
  361. {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
  362. {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/WHEEL +0 -0
  363. {sagemaker_core-1.0.47.dist-info → sagemaker_core-2.1.1.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,128 @@
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
+ """SageMaker remote function client."""
14
+ from __future__ import absolute_import
15
+
16
+ import fnmatch
17
+ import os
18
+ import shutil
19
+ from typing import List, Optional, Callable, Union
20
+
21
+ from sagemaker.core.common_utils import resolve_value_from_config
22
+ from sagemaker.core.config.config_schema import REMOTE_FUNCTION_PATH, CUSTOM_FILE_FILTER
23
+
24
+
25
+ class CustomFileFilter:
26
+ """Configuration that specifies how the local working directory should be packaged."""
27
+
28
+ def __init__(self, *, ignore_name_patterns: List[str] = None):
29
+ """Initialize a CustomFileFilter.
30
+
31
+ Args:
32
+ ignore_name_patterns (List[str]): ignore files or directories with names
33
+ that match one of the glob-style patterns. Defaults to None.
34
+ """
35
+
36
+ if ignore_name_patterns is None:
37
+ ignore_name_patterns = []
38
+
39
+ self._workdir = os.getcwd()
40
+ self._ignore_name_patterns = ignore_name_patterns
41
+
42
+ @property
43
+ def ignore_name_patterns(self):
44
+ """Get the ignore name patterns."""
45
+ return self._ignore_name_patterns
46
+
47
+ @property
48
+ def workdir(self):
49
+ """Get the working directory."""
50
+ return self._workdir
51
+
52
+
53
+ def resolve_custom_file_filter_from_config_file(
54
+ direct_input: Union[Callable[[str, List], List], CustomFileFilter] = None,
55
+ sagemaker_session=None,
56
+ ) -> Union[Callable[[str, List], List], CustomFileFilter, None]:
57
+ """Resolve the CustomFileFilter configuration from the config file.
58
+
59
+ Args:
60
+ direct_input (Callable[[str, List], List], CustomFileFilter): direct input from the user.
61
+ sagemaker_session (sagemaker.core.helper.session.Session): sagemaker session.
62
+ Returns:
63
+ CustomFileFilter: configuration that specifies how the local
64
+ working directory should be packaged.
65
+ """
66
+ if direct_input is not None:
67
+ return direct_input
68
+ ignore_name_patterns = resolve_value_from_config(
69
+ direct_input=None,
70
+ config_path=".".join([REMOTE_FUNCTION_PATH, CUSTOM_FILE_FILTER, "IgnoreNamePatterns"]),
71
+ default_value=None,
72
+ sagemaker_session=sagemaker_session,
73
+ )
74
+ if ignore_name_patterns is not None:
75
+ return CustomFileFilter(ignore_name_patterns=ignore_name_patterns)
76
+ return None
77
+
78
+
79
+ def copy_workdir(
80
+ dst: str,
81
+ custom_file_filter: Optional[Union[Callable[[str, List], List], CustomFileFilter]] = None,
82
+ ):
83
+ """Copy the local working directory to the destination.
84
+
85
+ Args:
86
+ dst (str): destination path.
87
+ custom_file_filter (Union[Callable[[str, List], List], CustomFileFilter): configuration that
88
+ specifies how the local working directory should be packaged.
89
+ """
90
+
91
+ def _ignore_patterns(path: str, names: List): # pylint: disable=unused-argument
92
+ ignored_names = set()
93
+ if custom_file_filter.ignore_name_patterns is not None:
94
+ for pattern in custom_file_filter.ignore_name_patterns:
95
+ ignored_names.update(fnmatch.filter(names, pattern))
96
+ return ignored_names
97
+
98
+ def _filter_non_python_files(path: str, names: List) -> List:
99
+ """Ignore function for filtering out non python files."""
100
+ to_ignore = []
101
+ for name in names:
102
+ full_path = os.path.join(path, name)
103
+ if os.path.isfile(full_path):
104
+ if not name.endswith(".py"):
105
+ to_ignore.append(name)
106
+ elif os.path.isdir(full_path):
107
+ if name == "__pycache__":
108
+ to_ignore.append(name)
109
+ else:
110
+ to_ignore.append(name)
111
+
112
+ return to_ignore
113
+
114
+ _ignore = None
115
+ _src = os.getcwd()
116
+ if not custom_file_filter:
117
+ _ignore = _filter_non_python_files
118
+ elif callable(custom_file_filter):
119
+ _ignore = custom_file_filter
120
+ elif isinstance(custom_file_filter, CustomFileFilter):
121
+ _ignore = _ignore_patterns
122
+ _src = custom_file_filter.workdir
123
+
124
+ shutil.copytree(
125
+ _src,
126
+ dst,
127
+ ignore=_ignore,
128
+ )
@@ -0,0 +1,104 @@
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
+ """Definitions for reomote job errors and error handling"""
14
+ from __future__ import absolute_import
15
+
16
+ import os
17
+
18
+ from tblib import pickling_support
19
+ from sagemaker.core.s3 import s3_path_join
20
+ import sagemaker.core.remote_function.core.serialization as serialization
21
+
22
+
23
+ DEFAULT_FAILURE_CODE = 1
24
+ FAILURE_REASON_PATH = "/opt/ml/output/failure"
25
+
26
+
27
+ @pickling_support.install
28
+ class RemoteFunctionError(Exception):
29
+ """The base exception class for remote function exceptions"""
30
+
31
+ def __init__(self, message):
32
+ self.message = message
33
+ super().__init__(self.message)
34
+
35
+
36
+ @pickling_support.install
37
+ class ServiceError(RemoteFunctionError):
38
+ """Raised when errors encountered during interaction with SageMaker, S3 service APIs"""
39
+
40
+
41
+ @pickling_support.install
42
+ class SerializationError(RemoteFunctionError):
43
+ """Raised when errors encountered during serialization of remote function objects"""
44
+
45
+
46
+ @pickling_support.install
47
+ class DeserializationError(RemoteFunctionError):
48
+ """Raised when errors encountered during deserialization of remote function objects"""
49
+
50
+
51
+ def _get_valid_failure_exit_code(exit_code) -> int:
52
+ """Normalize exit code for terminating the process"""
53
+ try:
54
+ valid_exit_code = int(exit_code)
55
+ except (TypeError, ValueError):
56
+ valid_exit_code = DEFAULT_FAILURE_CODE
57
+
58
+ return valid_exit_code
59
+
60
+
61
+ def _write_failure_reason_file(failure_msg):
62
+ """Create a file 'failure' with failure reason written if remote function execution failed.
63
+
64
+ See: https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html
65
+ Args:
66
+ failure_msg: The content of file to be written.
67
+ """
68
+ if not os.path.exists(FAILURE_REASON_PATH):
69
+ with open(FAILURE_REASON_PATH, "w") as f:
70
+ f.write(failure_msg)
71
+
72
+
73
+ def handle_error(error, sagemaker_session, s3_base_uri, s3_kms_key, hmac_key) -> int:
74
+ """Handle all exceptions raised during remote function execution.
75
+
76
+ Args:
77
+ error (Exception): The error to be handled.
78
+ sagemaker_session (sagemaker.core.helper.session.Session): The underlying Boto3 session which
79
+ AWS service calls are delegated to.
80
+ s3_base_uri (str): S3 root uri to which resulting serialized exception will be uploaded.
81
+ s3_kms_key (str): KMS key used to encrypt artifacts uploaded to S3.
82
+ hmac_key (str): Key used to calculate hmac hash of the serialized exception.
83
+ Returns :
84
+ exit_code (int): Exit code to terminate current job.
85
+ """
86
+
87
+ failure_reason = repr(error)
88
+ if isinstance(error, RemoteFunctionError):
89
+ exit_code = DEFAULT_FAILURE_CODE
90
+ else:
91
+ error_number = getattr(error, "errno", DEFAULT_FAILURE_CODE)
92
+ exit_code = _get_valid_failure_exit_code(error_number)
93
+
94
+ _write_failure_reason_file(failure_reason)
95
+
96
+ serialization.serialize_exception_to_s3(
97
+ exc=error,
98
+ sagemaker_session=sagemaker_session,
99
+ s3_uri=s3_path_join(s3_base_uri, "exception"),
100
+ hmac_key=hmac_key,
101
+ s3_kms_key=s3_kms_key,
102
+ )
103
+
104
+ return exit_code
@@ -0,0 +1,172 @@
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
+ """An entry point for invoking remote function inside a job."""
14
+
15
+ from __future__ import absolute_import
16
+
17
+ import argparse
18
+ import sys
19
+ import json
20
+ import os
21
+ from typing import TYPE_CHECKING
22
+
23
+ import boto3
24
+ from sagemaker.core.remote_function.job import (
25
+ KEY_EXPERIMENT_NAME,
26
+ KEY_RUN_NAME,
27
+ )
28
+
29
+ from sagemaker.core.helper.session_helper import Session
30
+ from sagemaker.core.s3 import s3_path_join
31
+ from sagemaker.core.remote_function.errors import handle_error
32
+ from sagemaker.core.remote_function import logging_config
33
+ from sagemaker.core.remote_function.core.pipeline_variables import Context
34
+
35
+ if TYPE_CHECKING:
36
+ from sagemaker.core.experiments.run import Run
37
+
38
+
39
+ SUCCESS_EXIT_CODE = 0
40
+
41
+
42
+ def _parse_args(args):
43
+ """Parses CLI arguments."""
44
+ parser = argparse.ArgumentParser()
45
+ parser.add_argument("--region", type=str, required=True)
46
+ parser.add_argument("--s3_base_uri", type=str, required=True)
47
+ parser.add_argument("--s3_kms_key", type=str)
48
+ parser.add_argument("--run_in_context", type=str)
49
+ parser.add_argument("--pipeline_step_name", type=str)
50
+ parser.add_argument("--pipeline_execution_id", type=str)
51
+ parser.add_argument("--property_references", nargs="+", type=str, default=[])
52
+ parser.add_argument(
53
+ "--serialize_output_to_json", default=False, type=lambda x: (str(x).lower() == "true")
54
+ )
55
+ parser.add_argument("--func_step_s3_dir", type=str)
56
+
57
+ args, _ = parser.parse_known_args(args)
58
+ return args
59
+
60
+
61
+ def _get_sagemaker_session(region):
62
+ """Get sagemaker session for interacting with AWS or Sagemaker services"""
63
+ boto_session = boto3.session.Session(region_name=region)
64
+ return Session(boto_session=boto_session)
65
+
66
+
67
+ def _load_run_object(run_in_context: str, sagemaker_session: Session) -> "Run":
68
+ """Load current run in json string into run object"""
69
+ from sagemaker.core.experiments.run import Run
70
+
71
+ run_dict = json.loads(run_in_context)
72
+ return Run(
73
+ experiment_name=run_dict.get(KEY_EXPERIMENT_NAME),
74
+ run_name=run_dict.get(KEY_RUN_NAME),
75
+ sagemaker_session=sagemaker_session,
76
+ )
77
+
78
+
79
+ def _load_pipeline_context(args) -> Context:
80
+ """Load pipeline build or run context into context object"""
81
+
82
+ pipeline_step_name = args.pipeline_step_name
83
+ pipeline_execution_id = args.pipeline_execution_id
84
+ property_references = args.property_references
85
+ serialize_output_to_json = args.serialize_output_to_json
86
+ func_step_s3_dir = args.func_step_s3_dir
87
+
88
+ property_references_dict = {}
89
+ for i in range(0, len(property_references), 2):
90
+ property_references_dict[property_references[i]] = property_references[i + 1]
91
+ return Context(
92
+ step_name=pipeline_step_name,
93
+ execution_id=pipeline_execution_id,
94
+ property_references=property_references_dict,
95
+ serialize_output_to_json=serialize_output_to_json,
96
+ func_step_s3_dir=func_step_s3_dir,
97
+ )
98
+
99
+
100
+ def _execute_remote_function(
101
+ sagemaker_session, s3_base_uri, s3_kms_key, run_in_context, hmac_key, context
102
+ ):
103
+ """Execute stored remote function"""
104
+ from sagemaker.core.remote_function.core.stored_function import StoredFunction
105
+
106
+ stored_function = StoredFunction(
107
+ sagemaker_session=sagemaker_session,
108
+ s3_base_uri=s3_base_uri,
109
+ s3_kms_key=s3_kms_key,
110
+ hmac_key=hmac_key,
111
+ context=context,
112
+ )
113
+
114
+ if run_in_context:
115
+ run_obj = _load_run_object(run_in_context, sagemaker_session)
116
+ with run_obj:
117
+ stored_function.load_and_invoke()
118
+ else:
119
+ stored_function.load_and_invoke()
120
+
121
+
122
+ def main(sys_args=None):
123
+ """Entry point for invoke function script
124
+
125
+ Args:
126
+ sys_args (list): List of arguments to parse. If not specified, sys.argv is used.
127
+ """
128
+
129
+ logger = logging_config.get_logger()
130
+
131
+ exit_code = SUCCESS_EXIT_CODE
132
+
133
+ try:
134
+ args = _parse_args(sys_args)
135
+ region = args.region
136
+ s3_base_uri = args.s3_base_uri
137
+ s3_kms_key = args.s3_kms_key
138
+ run_in_context = args.run_in_context
139
+ pipeline_context = _load_pipeline_context(args)
140
+
141
+ hmac_key = os.getenv("REMOTE_FUNCTION_SECRET_KEY")
142
+
143
+ sagemaker_session = _get_sagemaker_session(region)
144
+ _execute_remote_function(
145
+ sagemaker_session=sagemaker_session,
146
+ s3_base_uri=s3_base_uri,
147
+ s3_kms_key=s3_kms_key,
148
+ run_in_context=run_in_context,
149
+ hmac_key=hmac_key,
150
+ context=pipeline_context,
151
+ )
152
+
153
+ except Exception as e: # pylint: disable=broad-except
154
+ logger.exception("Error encountered while invoking the remote function.")
155
+ s3_uri = (
156
+ s3_path_join(s3_base_uri, pipeline_context.execution_id, pipeline_context.step_name)
157
+ if pipeline_context.step_name
158
+ else s3_base_uri
159
+ )
160
+ exit_code = handle_error(
161
+ error=e,
162
+ sagemaker_session=sagemaker_session,
163
+ s3_base_uri=s3_uri,
164
+ s3_kms_key=s3_kms_key,
165
+ hmac_key=hmac_key,
166
+ )
167
+ finally:
168
+ sys.exit(exit_code)
169
+
170
+
171
+ if __name__ == "__main__":
172
+ main(sys.argv[1:])