AWS sagemaker 和 sagemaker_pyspark 之间有什么区别?

问题描述

我目前正在使用 SageMaker 在 AWS 上运行快速机器学习概念验证,我遇到了两个库:sagemakersagemaker_pyspark。我想使用分布式数据。我的问题是:

  1. 使用 sagemaker 是否等同于在不利用 AWS 的分布式计算功能的情况下运行训练作业?我想是,如果不是,他们为什么要实施 sagemaker_pyspark?基于这个假设,我不明白在 SageMaker 笔记本上使用 scikit-learn 会提供什么(在计算能力方面)。

  2. 对于一小组测试数据,model = xgboost_estimator.fit(training_data) 之类的东西用 sagemaker_pyspark 运行 4 分钟是否正常?我看到它在下面所做的是训练模型并创建一个端点以能够提供其预测服务,我假设这个端点部署在当前创建和启动的 EC2 实例上。如果我错了纠正我。我从估算器的定义方式来假设这一点:

from sagemaker import get_execution_role
from sagemaker_pyspark.algorithms import XGBoostSageMakerEstimator


xgboost_estimator = XGBoostSageMakerEstimator (
    trainingInstanceType = "ml.m4.xlarge",trainingInstanceCount = 1,endpointInstanceType = "ml.m4.xlarge",endpointinitialInstanceCount = 1,sagemakerRole = IAMRole(get_execution_role())
)

xgboost_estimator.setNumRound(1)

如果是这样,是否可以通过不同的训练作业重复使用相同的端点,这样我就不必每次都等待创建新的端点?

  1. sagemaker_pyspark 是否支持自定义算法?还是只允许你使用库中预定义的?

  2. 你知道sagemaker_pyspark是否可以进行超参数优化吗?据我所知,sagemaker 提供了 HyperparameterTuner 类,但我在 sagemaker_pyspark 中找不到类似的东西。我想这是一个更新的库,还有很多功能需要实现。

  3. 我对 entry_pointcontainer/image_nameEstimator 对象的 sagemaker }} 库):您可以部署带容器和不带容器的模型吗?为什么要使用模型容器?您是否总是需要使用 entry_point 脚本在外部定义模型?类 AlgorithmEstimator 允许输入参数 algorithm_arn 也令人困惑;我看到有三种不同的方式将模型作为输入传递,为什么?哪个更好?

  4. 我看到 sagemaker 库提供了 SageMaker Pipelines,这对于部署结构合理的 ML 工作流似乎非常方便。但是,我认为这不适用于 sagemaker_pyspark,因此在这种情况下,我宁愿使用 Step Functions(以编排整个事物)、glue 流程(用于 ETL、预处理和特征/目标工程)和 SageMaker 使用 sagemaker_pyspark 进行处理。

  5. 我还发现 sagemakersagemaker.sparkml.model.SparkMLModel 对象。这与 sagemaker_pyspark 提供的有什么区别?

解决方法

sagemaker 是 SageMaker Python SDK。它代表您调用与 SageMaker 相关的 AWS 服务 API。你不需要使用它,但它可以让生活更轻松

  1. 使用 sagemaker 是否等同于在不利用 AWS 的分布式计算功能的情况下运行训练作业?我想是,如果不是,他们为什么要实施 sagemaker_pyspark?

没有。您可以使用 sagemaker(请参阅 instance_count 参数)

运行分布式训练作业

sagemaker_pyspark 有助于从 Spark 调用与 SageMaker 相关的 AWS 服务 API。如果您想使用 Spark 的 SageMaker 服务,请使用它

  1. model = xgboost_estimator.fit(training_data) 之类的东西需要 4 分钟才能使用 sagemaker_pyspark 运行一小组测试数据是否正常?

是的,EC2 实例需要几分钟才能启动。如果您想在本地更快地迭代,请使用 Local Mode

  1. sagemaker_pyspark 是否支持自定义算法?还是只允许您使用库中预定义的?

是的,但您可能想要扩展 SageMakerEstimator。您可以在此处提供 trainingImage URI

  1. 您知道 sagemaker_pyspark 是否可以执行超参数优化吗?

看起来不是这样。不过,从 SageMaker 本身执行此操作可能会更容易

您可以使用容器和不使用容器来部署模型吗?

您当然可以以任何方式托管自己的模型。但是如果要使用 SageMaker 模型推理托管,则需要容器

为什么要使用模型容器?

您是否总是需要使用 entry_point 脚本在外部定义模型?

整个 Docker 事情使捆绑依赖项变得更容易,并且还使事情与语言/运行时无关。 SageMaker 并不关心您的算法是使用 Python、Java 还是 Fortran。但是它需要知道如何“运行”它,所以你告诉它一个工作目录和一个要运行的命令。这是入口点

AlgorithmEstimator 类允许输入参数 algorithm_arn 也令人困惑;我看到有三种不同的方式将模型作为输入传递,为什么?哪个更好?

请说明您指的是哪一个“三个”

6 不是问题,所以不需要回答 :)

  1. 这与 sagemaker_pyspark 提供的有什么区别?

sagemaker_pyspark 允许您从 Spark 调用 SageMaker 服务,而 SparkML Serving 允许您使用来自 SageMaker 的 Spark ML 服务