gpt4 book ai didi

pandas - 如何在 pandas 数据框上使用 sagemaker 进行预测

转载 作者:行者123 更新时间:2023-12-03 17:27:13 25 4
gpt4 key购买 nike

我正在使用 Sagemaker 来训练和部署我的机器学习模型。至于预测,它将由 lambda 函数作为计划作业(每小时)执行。过程如下:

  • 从 S3 中提取自上次预测以来的新数据
  • 预处理、聚合和创建预测数据集
  • 调用 sagemaker 端点并进行预测
  • 将结果保存到 s3 或插入数据库表

  • 根据我的发现,通常输入将来自 lambda 有效负载
    data = json.loads(json.dumps(event))
    payload = data['data']
    print(payload)

    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
    ContentType='text/csv',
    Body=payload)

    或从 s3 文件中读取:
    my_bucket = resource.Bucket('pred_data') #将其替换为您的 s3 存储桶名称。
    obj = client.get_object(Bucket=my_bucket, Key='foo.csv')
    lines= obj['Body'].read().decode('utf-8').splitlines()
    reader = csv.reader(lines)
    file = io.StringIO(lines)


    response = runtime.invoke_endpoint(EndpointName=ENDPOINT,
    ContentType='*/*',
    Body = file.getvalue(),
    Body=payload)
    output = response['Body'].read().decode('utf-8')

    由于我将从 s3 中提取原始数据并进行预处理,因此 pandas将生成数据框。是否可以直接将其作为 invoke_endpoint 的输入? ?我可以将聚合数据集上传到另一个 S3 存储桶,但它必须通过 decoding , csv.reader , StringIO就像我找到的示例一样,还是有一种简单的方法可以做到这一点?是 decode步骤真的有必要得到输出吗?

    最佳答案

    当您调用 InvokeEndpoint 时,您可以发送任何您想要的负载。并以任何形式。您可以控制任一方的契约(Contract)(假设您的模型支持它)。如果您使用的模型不是您创建的,请查看它是否支持前/后处理,这将允许您自己定义契约(Contract)。
    除此之外,我们经常看到客户做的一件事是在模型内进行处理,而不是在调用 SageMaker 的 InvokeEndpoint 之前进行处理。 .一个常见的用例是在调用 InvokeEndpoint 时接受需要预测的对象的 S3 路径。 .然后模型将负责下载 S3 项目并对其进行转换,然后对该数据运行推理。
    取决于 InvokeEndpoint响应,它可以做同样的事情,模型可以将它上传到 S3,然后将 S3 key 作为响应发送回来。这可能不是您想要做的,但这只是您在使用 SageMaker 时所拥有的灵 active 的另一个示例。

    关于pandas - 如何在 pandas 数据框上使用 sagemaker 进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548385/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com