什么是SageMaker管道?

5

SageMaker管道对我来说很不清晰,虽然我在ML领域没有经验,但我正在努力理解管道定义。

我有几个问题:

  • Sagemaker管道是一个独立的服务/功能吗?因为我在控制台中没有看到任何创建它们的选项,尽管我看到了CloudFormation和CDK资源。

  • Sagemaker管道本质上是CodePipeline吗?它们如何集成,又有什么区别?

  • 还有一个Python SDK,它与CDK和CloudFormation有何不同?

除了Python SDK的用法之外,我似乎找不到其他示例,为什么?

文件和研讨会似乎只描述了Python SDK的使用方法,如果有人能为我澄清这一点,那将非常有帮助!

1个回答

4
SageMaker有两个名为Pipelines的东西:模型构建管道串行推理管道。我相信你指的是前者。
模型构建管道定义了机器学习工作流程中的步骤,例如预处理、超参数调整、批处理转换和设置端点。
串行推理管道是两个或更多SageMaker模型依次运行。
模型构建管道以JSON形式定义,并由SageMaker以某种专有的无服务器方式进行托管/运行。
“Sagemaker Pipelines”是一个独立的服务/功能吗?因为我在控制台上找不到创建它们的选项,尽管我看到了CloudFormation和CDK资源。
您可以使用API创建/修改它们,也可以通过CLIPython SDKCloudFormation进行调用。所有这些工具都在底层使用AWS API。
您可以在SageMaker Studio中启动/停止/查看它们:
Left-side Navigation bar > SageMaker resources > Drop-down menu > Pipelines

Amazon SageMaker管道本质上是CodePipeline吗?它们如何集成,又有什么不同之处?

不太可能。CodePipeline更多地用于构建和部署代码,而不是专门针对SageMaker。据我所知,除了您可以使用CP启动SM管道外,没有直接的集成。

还有一个Python SDK,它与CDK和CloudFormation有什么区别?

Python SDK是一个独立的库,以开发人员友好的方式与SageMaker进行交互。它比CloudFormation更具动态性。让您使用代码构建管道。而CloudFormation采用静态JSON字符串。

Python SageMaker SDK使用的非常简单的示例:

processor = SKLearnProcessor(
    framework_version="0.23-1",
    instance_count=1,
    instance_type="ml.m5.large",
    role="role-arn",
)

processing_step = ProcessingStep(
    name="processing",
    processor=processor,
    code="preprocessor.py"
)

pipeline = Pipeline(name="foo", steps=[processing_step])
pipeline.upsert(role_arn = ...)
pipeline.start()

pipeline.definition() 会生成类似以下这样冗长的JSON:

{
"Version": "2020-12-01",
"Metadata": {},
"Parameters": [],
"PipelineExperimentConfig": {
    "ExperimentName": {
        "Get": "Execution.PipelineName"
    },
    "TrialName": {
        "Get": "Execution.PipelineExecutionId"
    }
},
"Steps": [
    {
        "Name": "processing",
        "Type": "Processing",
        "Arguments": {
            "ProcessingResources": {
                "ClusterConfig": {
                    "InstanceType": "ml.m5.large",
                    "InstanceCount": 1,
                    "VolumeSizeInGB": 30
                }
            },
            "AppSpecification": {
                "ImageUri": "246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-scikit-learn:0.23-1-cpu-py3",
                "ContainerEntrypoint": [
                    "python3",
                    "/opt/ml/processing/input/code/preprocessor.py"
                ]
            },
            "RoleArn": "arn:aws:iam::123456789012:role/foo",
            "ProcessingInputs": [
                {
                    "InputName": "code",
                    "AppManaged": false,
                    "S3Input": {
                        "S3Uri": "s3://bucket/preprocessor.py",
                        "LocalPath": "/opt/ml/processing/input/code",
                        "S3DataType": "S3Prefix",
                        "S3InputMode": "File",
                        "S3DataDistributionType": "FullyReplicated",
                        "S3CompressionType": "None"
                    }
                }
            ]
        }
    }
  ]
}

你可以使用上述JSON与CloudFormation / CDK一起使用,但是使用SageMaker SDK来构建JSON。
你还可以使用Step Function State Machines定义模型构建工作流程,使用Data Science SDK或Airflow。其中Data Science SDK和Airflow的链接分别为Data Science SDKAirflow

谢谢Neil,解释得非常好。仍然让我困惑的是,我没有看到CDK/CF资源中暴露出像“Domain/Studio Id”这样的属性。我想要创建一个流水线,我是否需要运行一个工作室? - Bruno Schaatsbergen
1
@BrunoSchaatsbergen,不需要使用Studio来创建SageMaker Pipelines DAG。Studio只是一个可选的UI界面,但你也可以通过代码完成所有操作。 - Olivier Cruchant
1
SageMaker Pipelines 和 CodePipeline 之间存在联系,即最初的 SageMaker Pipelines 项目(Cloudformation devops 模板)使用 CodePipeline 作为编排器来触发 SageMaker Pipelines 执行,如此处所示:https://aws.amazon.com/fr/blogs/machine-learning/building-automating-managing-and-scaling-ml-workflows-using-amazon-sagemaker-pipelines/。 - Olivier Cruchant
我仍然不确定SageMaker Pipelines和CDK Pipelines之间的区别。SageMaker Pipelines难道不应该是ML的CI/CD解决方案吗?CDK在这方面能提供什么? - Cybernetic
@Cybernetic,它们唯一相似的地方就是都含有“pipeline”这个词。 - Neil McGuigan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接