【问题标题】:How to use multiple ml models trained on different input data to produce one model and give prediction in Sagemaker?如何使用在不同输入数据上训练的多个 ml 模型来生成一个模型并在 Sagemaker 中给出预测?
【发布时间】:2023-02-05 12:49:34
【问题描述】:

我正在研究纱丽标签提取问题。标签如纱丽颜色、纱丽类型、边框设计类型等。共有 176 个不同的标签。

最初我将其作为一个多标签问题来处理,我在输出层中使用了 176 Sigmoid 函数。但它没有按预期工作,我得到的准确性很差。

由于我的问题中的所有标签都不是独立的,例如如果纱丽是绿色的,那么它就不会是红色或黑色,如果纱丽是 Banarasi 类型的,那么它就不会是我的标签列表中提到的其他类型。所以现在我计划使用多个 ML 模型,每个模型都是多类分类模型,比如一个模型预测颜色,另一个模型预测类型,另一个模型预测重量等等。

我正在使用 aws sagemaker 构建和部署模型,但我的问题是如何通过 sagemaker 部署所有这些模型,以便调用所有模型并在最后发送所有模型的组合输出。

我探索了多模型 sagemaker 端点部署,但只有一个模型可用于预测。所以它没有达到我的目的。

任何建议或帮助将不胜感激。

【问题讨论】:

    标签: machine-learning deployment amazon-sagemaker


    【解决方案1】:

    嘿 Chetan,您应该能够在此用例中使用 SageMaker 多模型端点。调用端点时,您只需使用 Python SDK 在 API 调用中指定目标模型,如下所示。

    import boto3
    import json
    from sagemaker.serializers import JSONSerializer
    endpoint_name = predictor.endpoint_name
    
    ##########
    #Specify model in target_model parameter
    ##########
    target_model = "petrol.tar.gz"
    jsons = JSONSerializer()
    payload = jsons.serialize(sampInput)
    response = runtime_sm_client.invoke_endpoint(
            EndpointName=endpoint_name,
            TargetModel=target_model,
            Body=payload)
    result = json.loads(response['Body'].read().decode())['outputs']
    result
    

    我会训练您需要的模型,然后将这些工件放入多模型端点。然后根据您想要调用必要模型的预测。我附上了一个端到端的 TensorFlow 多模型端点示例,我在其中训练、部署和调用两个单独的模型。

    TF MME 示例:https://github.com/RamVegiraju/SageMaker-Deployment/blob/master/RealTime/Multi-Model-Endpoint/TensorFlow/tf2-MME-regression.ipynb

    【讨论】:

    • 谢谢你的回答。但它并没有完全解决我的问题。实际上我需要一次调用所有模型,因为任何时候用户在我们公司的应用程序中上传纱丽图像,我们都需要为他们提供纱丽标签,如颜色、重量(重、轻、中)、类型(Banarasi、Kanchipuram、Chanderi ETC)。所以我们每次都需要多个输出,这意味着所有模型都应该立即被调用。您能否建议通过 Sagemaker 部署它的最有效方法。
    • @ChetanGarg:你找到问题的答案了吗?我正在为类似的用例而苦苦挣扎。
    • @Rajat 我没有找到解决问题的方法。所以我创建了多个端点 - 每个模型一个,我们从 UI 同时触发所有端点。为了减少多个端点产生的成本,我使用 Sagemaker 无服务器端点部署了所有模型。如果找到任何解决方案,请在此处发布。
    【解决方案2】:

    通过 SageMaker Triton Inference server 支持在 SageMaker 多模型端点 MME 上托管多个 GPU 支持的模型。这支持所有主要的推理框架,例如 NVIDIA® TensorRT™、PyTorch、MXNet、Python、ONNX、XGBoost、scikit-learn、RandomForest、OpenVINO、自定义 C++ 等。

    您可以使用 SageMaker MME 托管所有三种模型(纱丽颜色、纱丽类型、边框设计类型),并使用推理请求中的目标模型调用每个模型。编排可以从客户端完成(就像您从 UI 调用模型一样)或使用 AWS Lambda 传递推理请求并调用 lambda 函数内的 3 个模型并将合并结果传回调用应用程序。

    请参阅适用于 GPU 的 SageMaker MME 上的 documentationblogexamples

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 2020-06-29
      • 2021-11-14
      • 1970-01-01
      • 2021-02-04
      • 2022-11-19
      • 2018-09-25
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多