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,413 @@
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
+ """Placeholder docstring"""
14
+ from __future__ import absolute_import
15
+
16
+ import os
17
+ import platform
18
+ import sys
19
+ import tempfile
20
+ from abc import ABCMeta
21
+ from abc import abstractmethod
22
+ from six import with_metaclass
23
+
24
+ from six.moves.urllib.parse import urlparse
25
+
26
+ import sagemaker.core
27
+
28
+
29
+ def get_data_source_instance(data_source, sagemaker_session):
30
+ """Return an Instance of :class:`sagemaker.local.data.DataSource`.
31
+
32
+ The instance can handle the provided data_source URI.
33
+
34
+ data_source can be either file:// or s3://
35
+
36
+ Args:
37
+ data_source (str): a valid URI that points to a data source.
38
+ sagemaker_session (:class:`sagemaker.core.helper.session.Session`): a SageMaker Session to
39
+ interact with S3 if required.
40
+
41
+ Returns:
42
+ sagemaker.local.data.DataSource: an Instance of a Data Source
43
+
44
+ Raises:
45
+ ValueError: If parsed_uri scheme is neither `file` nor `s3` , raise an
46
+ error.
47
+ """
48
+ parsed_uri = urlparse(data_source)
49
+ if parsed_uri.scheme == "file":
50
+ return LocalFileDataSource(parsed_uri.netloc + parsed_uri.path)
51
+ if parsed_uri.scheme == "s3":
52
+ return S3DataSource(parsed_uri.netloc, parsed_uri.path, sagemaker_session)
53
+ raise ValueError(
54
+ "data_source must be either file or s3. parsed_uri.scheme: {}".format(parsed_uri.scheme)
55
+ )
56
+
57
+
58
+ def get_splitter_instance(split_type):
59
+ """Return an Instance of :class:`sagemaker.local.data.Splitter`.
60
+
61
+ The instance returned is according to the specified `split_type`.
62
+
63
+ Args:
64
+ split_type (str): either 'Line' or 'RecordIO'. Can be left as None to
65
+ signal no data split will happen.
66
+
67
+ Returns
68
+ :class:`sagemaker.local.data.Splitter`: an Instance of a Splitter
69
+ """
70
+ if split_type == "None" or split_type is None:
71
+ return NoneSplitter()
72
+ if split_type == "Line":
73
+ return LineSplitter()
74
+ if split_type == "RecordIO":
75
+ return RecordIOSplitter()
76
+ raise ValueError("Invalid Split Type: %s" % split_type)
77
+
78
+
79
+ def get_batch_strategy_instance(strategy, splitter):
80
+ """Return an Instance of :class:`sagemaker.local.data.BatchStrategy` according to `strategy`
81
+
82
+ Args:
83
+ strategy (str): Either 'SingleRecord' or 'MultiRecord'
84
+ splitter (:class:`sagemaker.local.data.Splitter): splitter to get the data from.
85
+
86
+ Returns
87
+ :class:`sagemaker.local.data.BatchStrategy`: an Instance of a BatchStrategy
88
+ """
89
+ if strategy == "SingleRecord":
90
+ return SingleRecordStrategy(splitter)
91
+ if strategy == "MultiRecord":
92
+ return MultiRecordStrategy(splitter)
93
+ raise ValueError('Invalid Batch Strategy: %s - Valid Strategies: "SingleRecord", "MultiRecord"')
94
+
95
+
96
+ class DataSource(with_metaclass(ABCMeta, object)):
97
+ """Placeholder docstring"""
98
+
99
+ @abstractmethod
100
+ def get_file_list(self):
101
+ """Retrieve the list of absolute paths to all the files in this data source.
102
+
103
+ Returns:
104
+ List[str]: List of absolute paths.
105
+ """
106
+
107
+ @abstractmethod
108
+ def get_root_dir(self):
109
+ """Retrieve the absolute path to the root directory of this data source.
110
+
111
+ Returns:
112
+ str: absolute path to the root directory of this data source.
113
+ """
114
+
115
+
116
+ class LocalFileDataSource(DataSource):
117
+ """Represents a data source within the local filesystem."""
118
+
119
+ def __init__(self, root_path):
120
+ super(LocalFileDataSource, self).__init__()
121
+
122
+ self.root_path = os.path.abspath(root_path)
123
+ if not os.path.exists(self.root_path):
124
+ raise RuntimeError("Invalid data source: %s does not exist." % self.root_path)
125
+
126
+ def get_file_list(self):
127
+ """Retrieve the list of absolute paths to all the files in this data source.
128
+
129
+ Returns:
130
+ List[str] List of absolute paths.
131
+ """
132
+ if os.path.isdir(self.root_path):
133
+ return [
134
+ os.path.join(self.root_path, f)
135
+ for f in os.listdir(self.root_path)
136
+ if os.path.isfile(os.path.join(self.root_path, f))
137
+ ]
138
+ return [self.root_path]
139
+
140
+ def get_root_dir(self):
141
+ """Retrieve the absolute path to the root directory of this data source.
142
+
143
+ Returns:
144
+ str: absolute path to the root directory of this data source.
145
+ """
146
+ if os.path.isdir(self.root_path):
147
+ return self.root_path
148
+ return os.path.dirname(self.root_path)
149
+
150
+
151
+ class S3DataSource(DataSource):
152
+ """Defines a data source given by a bucket and S3 prefix.
153
+
154
+ The contents will be downloaded and then processed as local data.
155
+ """
156
+
157
+ def __init__(self, bucket, prefix, sagemaker_session):
158
+ """Create an S3DataSource instance.
159
+
160
+ Args:
161
+ bucket (str): S3 bucket name
162
+ prefix (str): S3 prefix path to the data
163
+ sagemaker_session (:class:`sagemaker.core.helper.session.Session`): a sagemaker_session with the
164
+ desired settings
165
+ to talk to S3
166
+ """
167
+ super(S3DataSource, self).__init__()
168
+
169
+ # Create a temporary dir to store the S3 contents
170
+ root_dir = sagemaker.core.config.config_manager.SageMakerConfig.get_config_value(
171
+ "local.container_root", sagemaker_session.config
172
+ )
173
+ if root_dir:
174
+ root_dir = os.path.abspath(root_dir)
175
+
176
+ working_dir = tempfile.mkdtemp(dir=root_dir)
177
+ # Docker cannot mount Mac OS /var folder properly see
178
+ # https://forums.docker.com/t/var-folders-isnt-mounted-properly/9600
179
+ # Only apply this workaround if the user didn't provide an alternate storage root dir.
180
+ if root_dir is None and platform.system() == "Darwin":
181
+ working_dir = "/private{}".format(working_dir)
182
+
183
+ sagemaker.core.common_utils.download_folder(bucket, prefix, working_dir, sagemaker_session)
184
+ self.files = LocalFileDataSource(working_dir)
185
+
186
+ def get_file_list(self):
187
+ """Retrieve the list of absolute paths to all the files in this data source.
188
+
189
+ Returns:
190
+ List[str]: List of absolute paths.
191
+ """
192
+ return self.files.get_file_list()
193
+
194
+ def get_root_dir(self):
195
+ """Retrieve the absolute path to the root directory of this data source.
196
+
197
+ Returns:
198
+ str: absolute path to the root directory of this data source.
199
+ """
200
+ return self.files.get_root_dir()
201
+
202
+
203
+ class Splitter(with_metaclass(ABCMeta, object)):
204
+ """Placeholder docstring"""
205
+
206
+ @abstractmethod
207
+ def split(self, file):
208
+ """Split a file into records using a specific strategy
209
+
210
+ Args:
211
+ file (str): path to the file to split
212
+
213
+ Returns:
214
+ generator for the individual records that were split from the file
215
+ """
216
+
217
+
218
+ class NoneSplitter(Splitter):
219
+ """Does not split records, essentially reads the whole file."""
220
+
221
+ # non-utf8 characters.
222
+ _textchars = bytearray({7, 8, 9, 10, 12, 13, 27} | set(range(0x20, 0x100)) - {0x7F})
223
+
224
+ def split(self, filename):
225
+ """Split a file into records using a specific strategy.
226
+
227
+ For this NoneSplitter there is no actual split happening and the file
228
+ is returned as a whole.
229
+
230
+ Args:
231
+ filename (str): path to the file to split
232
+
233
+ Returns: generator for the individual records that were split from
234
+ the file
235
+ """
236
+ with open(filename, "rb") as f:
237
+ buf = f.read()
238
+ if not self._is_binary(buf):
239
+ buf = buf.decode()
240
+ yield buf
241
+
242
+ def _is_binary(self, buf):
243
+ """Check whether `buf` contains binary data.
244
+
245
+ Returns True if `buf` contains any non-utf-8 characters.
246
+
247
+ Args:
248
+ buf (bytes): data to inspect
249
+
250
+ Returns:
251
+ True if data is binary, otherwise False
252
+ """
253
+ return bool(buf.translate(None, self._textchars))
254
+
255
+
256
+ class LineSplitter(Splitter):
257
+ """Split records by new line."""
258
+
259
+ def split(self, file):
260
+ """Split a file into records using a specific strategy
261
+
262
+ This LineSplitter splits the file on each line break.
263
+
264
+ Args:
265
+ file (str): path to the file to split
266
+
267
+ Returns: generator for the individual records that were split from
268
+ the file
269
+ """
270
+ with open(file, "r") as f:
271
+ for line in f:
272
+ yield line
273
+
274
+
275
+ class RecordIOSplitter(Splitter):
276
+ """Split using Amazon Recordio.
277
+
278
+ Not useful for string content.
279
+
280
+ Note: This class depends on the deprecated sagemaker.core.amazon module
281
+ and is no longer functional.
282
+ """
283
+
284
+ def split(self, file):
285
+ """Split a file into records using a specific strategy
286
+
287
+ This RecordIOSplitter splits the data into individual RecordIO
288
+ records.
289
+
290
+ Args:
291
+ file (str): path to the file to split
292
+
293
+ Returns: generator for the individual records that were split from
294
+ the file
295
+
296
+ Raises:
297
+ NotImplementedError: This functionality has been removed due to
298
+ deprecation of sagemaker.core.amazon module
299
+ """
300
+ raise NotImplementedError(
301
+ "RecordIOSplitter is no longer supported. "
302
+ "The sagemaker.core.amazon module has been deprecated and removed."
303
+ )
304
+
305
+
306
+ class BatchStrategy(with_metaclass(ABCMeta, object)):
307
+ """Placeholder docstring"""
308
+
309
+ def __init__(self, splitter):
310
+ """Create a Batch Strategy Instance
311
+
312
+ Args:
313
+ splitter (sagemaker.local.data.Splitter): A Splitter to pre-process
314
+ the data before batching.
315
+ """
316
+ self.splitter = splitter
317
+
318
+ @abstractmethod
319
+ def pad(self, file, size):
320
+ """Group together as many records as possible to fit in the specified size.
321
+
322
+ Args:
323
+ file (str): file path to read the records from.
324
+ size (int): maximum size in MB that each group of records will be
325
+ fitted to. passing 0 means unlimited size.
326
+
327
+ Returns:
328
+ generator of records
329
+ """
330
+
331
+
332
+ class MultiRecordStrategy(BatchStrategy):
333
+ """Feed multiple records at a time for batch inference.
334
+
335
+ Will group up as many records as possible within the payload specified.
336
+ """
337
+
338
+ def pad(self, file, size=6):
339
+ """Group together as many records as possible to fit in the specified size.
340
+
341
+ Args:
342
+ file (str): file path to read the records from.
343
+ size (int): maximum size in MB that each group of records will be
344
+ fitted to. passing 0 means unlimited size.
345
+
346
+ Returns:
347
+ generator of records
348
+ """
349
+ buffer = ""
350
+ for element in self.splitter.split(file):
351
+ if _payload_size_within_limit(buffer + element, size):
352
+ buffer += element
353
+ else:
354
+ tmp = buffer
355
+ buffer = element
356
+ yield tmp
357
+ if _validate_payload_size(buffer, size):
358
+ yield buffer
359
+
360
+
361
+ class SingleRecordStrategy(BatchStrategy):
362
+ """Feed a single record at a time for batch inference.
363
+
364
+ If a single record does not fit within the payload specified it will
365
+ throw a RuntimeError.
366
+ """
367
+
368
+ def pad(self, file, size=6):
369
+ """Group together as many records as possible to fit in the specified size.
370
+
371
+ This SingleRecordStrategy will not group any record and will return
372
+ them one by one as long as they are within the maximum size.
373
+
374
+ Args:
375
+ file (str): file path to read the records from.
376
+ size (int): maximum size in MB that each group of records will be
377
+ fitted to. passing 0 means unlimited size.
378
+
379
+ Returns:
380
+ generator of records
381
+ """
382
+ for element in self.splitter.split(file):
383
+ if _validate_payload_size(element, size):
384
+ yield element
385
+
386
+
387
+ def _payload_size_within_limit(payload, size):
388
+ """Placeholder docstring."""
389
+ size_in_bytes = size * 1024 * 1024
390
+ if size == 0:
391
+ return True
392
+ return sys.getsizeof(payload) < size_in_bytes
393
+
394
+
395
+ def _validate_payload_size(payload, size):
396
+ """Check if a payload is within the size in MB threshold.
397
+
398
+ Raise an exception if the payload is beyond the size in MB threshold.
399
+
400
+ Args:
401
+ payload: data that will be checked
402
+ size (int): max size in MB
403
+
404
+ Returns:
405
+ bool: True if within bounds. if size=0 it will always return True
406
+
407
+ Raises:
408
+ RuntimeError: If the payload is larger a runtime error is thrown.
409
+ """
410
+
411
+ if _payload_size_within_limit(payload, size):
412
+ return True
413
+ raise RuntimeError("Record is larger than %sMB. Please increase your max_payload" % size)