【问题标题】:What are SageMaker pipelines actually?SageMaker 管道实际上是什么?
【发布时间】:2021-12-01 21:50:43
【问题描述】:

Sagemaker 管道对我来说相当不清楚,我在 ML 领域没有经验,但我正在努力弄清楚管道定义。

我有几个问题:

  • sagemaker 管道是独立的服务/功能吗?因为我看不到通过控制台创建它们的任何选项,但我确实看到了 CloudFormation 和 CDK 资源。

  • sagemaker 管道本质上是代码管道吗?这些如何集成,它们有何不同?

  • 还有一个 Python SDK,这与 CDK 和 CloudFormation 有什么不同?

除了 Python SDK 的使用,我好像找不到任何例子,怎么来的?

文档和研讨会似乎只是正确地描述了 Python SDK 的使用,如果有人能帮我弄清楚这将非常有帮助!

【问题讨论】:

    标签: amazon-web-services amazon-sagemaker mlops


    【解决方案1】:

    SageMaker 有两个称为管道的东西:Model Building PipelinesSerial Inference Pipelines。我相信你指的是前者

    模型构建管道定义机器学习工作流程中的步骤,例如预处理、超参数调整、批量转换和设置端点

    串行推理管道是两个或多个 SageMaker 模型一个接一个地运行

    模型构建管道在 JSON 中定义,并由 SageMaker 以某种专有的无服务器方式托管/运行

    sagemaker 管道是独立的服务/功能吗?因为我看不到通过控制台创建它们的任何选项,但我确实看到了 CloudFormation 和 CDK 资源。

    您可以使用API 创建/修改它们,也可以通过CLIPython SDKCloudFormation 调用它们。这些都在后台使用 AWS API

    您可以在 SageMaker Studio 中启动/停止/查看它们:

    Left-side Navigation bar > SageMaker resources > Drop-down menu > Pipelines
    

    sagemaker 管道本质上是代码管道吗?这些如何集成,它们有何不同?

    不太可能。 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=...,
    )
    
    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,但您构建 JSON 与 SageMaker SDK

    您还可以使用 Step Function 状态机、Data Science SDKAirflow 定义模型构建工作流

    【讨论】:

    • 谢谢尼尔,很好的解释。仍然让我感到困惑的是,我没有看到任何像 Domain/Studio Id 这样的属性暴露在 CDK/CF 资源上。要创建一个管道,我想它需要我有一个工作室启动并运行?
    • @BrunoSchaatsbergen,不,您不需要 Studio 来创建 SageMaker Pipelines DAG。 Studio 只是一个可选的 UI,但您也可以使用代码完成所有操作。
    • 并且 SageMaker Pipelines 和 CodePipeline 之间存在联系,即最初的 SageMaker Pipelines Projects(Cloudformation devops 模板)使用 CodePipeline 作为协调器来触发 SageMaker Pipelines 执行,如此处所示aws.amazon.com/fr/blogs/machine-learning/…跨度>
    • 感谢您详细说明@OlivierCruchant
    • 我仍然不确定 SageMaker Pipelines 和 CDK Pipelines 之间的区别。 SageMaker Pipelines 不应该是 ML 的 CI/CD 解决方案吗? CDK 会在此基础上提供什么?
    猜你喜欢
    • 2023-03-17
    • 2020-02-16
    • 2021-05-12
    • 2011-08-01
    • 2011-12-26
    • 1970-01-01
    • 2018-09-26
    • 2011-03-11
    • 2010-11-26
    相关资源
    最近更新 更多