繁体   English   中英

如何从使用自定义推理代码的 SageMaker 端点返回带有“text/csv”作为“Content-Type”的浮点数?

[英]How to return a float with 'text/csv' as "Content-Type" from SageMaker endpoint that uses custom inference code?

我正在尝试使用“text/csv”或“text/csv”从 SageMaker 端点返回输出(或预测); charset=utf-8' 作为“内容类型”。 我尝试了多种方法,但 sagemaker 总是返回 'text/html; charset=utf-8' 作为“Content-Type”,我希望 SageMaker 返回 'text/csv' 或 'text/csv; 字符集=utf-8'。

这是我的推理代码中的output_fn

** my other code **
def output_fn(prediction, content_type='text/csv'):
    ** my other code **
    return output_float

以上 function 返回具有浮点数据类型的数字,我得到错误(在 cloudwatch 日志中),这个 function 应该只返回字符串、元组、字典或响应实例。

因此,这是我尝试让 SageMaker 使用“text/csv”返回我的号码但只接收“text/html;”的所有不同方式。 字符集=utf-8'

  1. return json.dumps(output_float) 这发送了'text/html; 字符集=utf-8'。
  2. return f"{output_float}" 这发送了'text/html; 字符集=utf-8'。
  3. return f"{output_float}," 这发送了'text/html; 字符集=utf-8'。
  4. return f"{output_float}\n" 这发送了'text/html; 字符集=utf-8'。
  5. return f"{output_float},\n" 这发送了'text/html; 字符集=utf-8'。
  6. 通过像这样使用sagemaker.serializers.CSVSerializer
     from sagemaker.serializers import CSVSerializer csv_serialiser = CSVSerializer(content_type='text/csv') def output_fn(prediction, content_type='text/csv'): ** my other code ** return csv_serialiser.serialize(output_float)
    我得到'NoneType' object has no attribute 'startswith'错误。
  7. 作为元组: return (output_float,) 我没有记下它做了什么,但它确实没有返回带有“文本/csv”作为“内容类型”的数字。
  8. 在我的 model object 中进行了更改,以在我的模型对象上调用.predict_proba时返回一个浮点数,并在不使用任何自定义推理代码的情况下从 sagemaker studio 部署它,并从 SageMaker studio 部署它。 但在向端点发送请求后出现此错误: 'NoneType' object has no attribute 'startswith' ,但在我这边,当我将适当的输入传递给未选中的 model 和 call.predict_proba 时,我得到了预期的浮动。
  9. 通过返回flask.Response是这样的:
     from flask import Response def output_fn(prediction, content_type='text/csv'): ** my other code ** return Response(response=output_float, status=200, headers={'Content-Type':'text/csv; charset=utf-8'})
    但是,我得到了一些 IndexError(我没有记下回溯。)

其他一些信息:

  1. Model 我正在使用的是完全在 SageMaker 之外的,而不是来自培训工作或类似的东西。
  2. 除了上面第 8 点中的那个,上述所有端点都已完全从 aws-cli 部署了相关的 .json 文件。

如何从 sagemaker 返回内容类型为“text/csv”的数字? 我需要 output 的“文本/csv”内容类型,专门用于模型质量监视器。 我该怎么做呢?

scikit_bring_your_own示例中,我建议通过如下设置响应来进行测试:

return flask.Response(response= output_float, status=200, mimetype="text/csv")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM