在SageMaker中部署自定义预处理和后处理脚本



我正在尝试将一些python脚本转换为SageMaker中可调用的端点。我的预处理(特征工程)和后处理脚本是用python编写的,其中有一些相互依赖的脚本和方法。预处理步骤也不一定来自SKLearn,它们是定制的函数,需要每次从预处理端点调用原始数据,然后使用保存为第二个端点的模型进行预测。第三个端点将用于后处理步骤,连接这3个端点,我们希望每次都将数据从原始格式转换为输出格式。

我们目前有普通的python脚本,它使用一些高度自定义的函数(所有的特征最终都是派生的特征)对数据进行预处理,然后执行一些推理,然后再次使用一些高度自定义的后处理生成最终结果。虽然输入是CSV文件,但在预处理和后处理的每个阶段之后,数据的维度以及输出的格式(数据框、列表、列表的列表)都可能发生变化。

作为参考,我们使用,https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_iris/scikit_learn_estimator_example_with_batch_transform.ipynb和https://github.com/aws/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb。

请告诉我是否有更好的参考,以满足我们的具体要求。

考虑使用SageMaker Pipelines编排并将这些步骤联系在一起。对于转换python脚本的用例,您可以使用SM Processing Step,它不必是如下所示的SKLearnProcessor,您可以自由地创建一个通用的python脚本ScriptProcessor(可用的不同选项可以在这里找到)

从sagemaker.sklearn.processing导入SKLearnProcessor

framework_version = "0.23-1"
sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-abalone-process",
    role=role,
) 

最新更新