AWS sagemaker 和 sagemaker_pyspark 有什么区别?

What are the differences between AWS sagemaker and 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 class,但我在 sagemaker_pyspark 中找不到类似的东西。我想这是一个更新的库,还有很多功能需要实现。

  3. 我对 entry_pointcontainer/image_name 的概念有点困惑(Estimator 对象的两个可能的输入参数来自sagemaker 库):你可以部署有容器和没有容器的模型吗?为什么要使用模型容器?您是否总是需要使用 entry_point 脚本在外部定义模型?同样令人困惑的是 class AlgorithmEstimator 允许输入参数 algorithm_arn;我看到有三种不同的方式将模型作为输入传递,为什么?哪个更好?

  4. 我看到 sagemaker 库提供了 SageMaker Pipelines,这对于部署结构正确的 ML 工作流来说似乎非常方便。但是,我认为 sagemaker_pyspark 无法使用此功能,因此在那种情况下,我宁愿结合使用 Step Functions(以编排整个过程)、Glue 流程(用于 ETL、预处理和feature/target 工程)和 SageMaker 流程​​使用 sagemaker_pyspark.

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

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

  1. Is using sagemaker the equivalent of running a training job without taking advantage of the distributed computing capabilities of AWS? I assume it is, if not, why have they implemented sagemaker_pyspark?

没有。您可以使用 sagemaker 运行 分布式训练作业(参见 instance_count 参数)

sagemaker_pyspark 便于从 Spark 调用与 SageMaker 相关的 AWS 服务 API。如果您想使用来自 Spark

的 SageMaker 服务,请使用它
  1. Is it normal for something like model = xgboost_estimator.fit(training_data) to take 4 minutes to run with sagemaker_pyspark for a small set of test data?

是的,EC2 实例启动需要几分钟时间。如果您想在本地更快地迭代,请使用 Local Mode。注意:本地模式不适用于 SageMaker 内置算法,但您可以使用(非 AWS)XGBoost/SciKit-Learn

进行原型制作
  1. Does sagemaker_pyspark support custom algorithms? Or does it only allow you to use the predefined ones in the library?

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

  1. Do you know if sagemaker_pyspark can perform hyperparameter optimization?

好像不是。不过,从 SageMaker 本身执行此操作可能会更容易

can you deploy models with and without containers?

您当然可以随心所欲地托管自己的模型。但如果要使用 SageMaker 模型推理托管,则需要容器

why would you use model containers?

Do you always need to define the model externally with the entry_point script?

整个 Docker 使得捆绑依赖更容易,也使事情 language/runtime-neutral。 SageMaker 不关心您的算法是 Python 或 Java 还是 Fortran。但是它需要知道如何“运行”它,所以你告诉它一个工作目录和一个 运行 的命令。这是入口点

It is also confusing that the class AlgorithmEstimator allows the input argument algorithm_arn; I see there are three different ways of passing a model as input, why? which one is better?

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

6 不是问题,因此不需要回答:)

  1. What is the difference between this and what sagemaker_pyspark offers?

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