如何 access/invoke 没有 lambda 的 sagemaker 端点?

How to access/invoke a sagemaker endpoint without lambda?

根据 aws 文档,最大超时限制小于 30 秒 api gateway.so 将 sagemaker 端点与 api 网关连接起来没有意义,如果request/response 将花费 30 多秒。有什么解决方法吗?在 api 网关和 sagemaker 端点之间添加一个 lambda 将增加更多时间来处理 request/response,我想避免这种情况。此外,将增加 lambda 冷启动时间,并且 sagemaker 无服务器端点构建在 lambda 之上,因此也会增加冷启动时间。有没有一种方法可以在没有这些开销的情况下调用无服务器 sagemaker 端点?

您可以使用 映射模板 https://aws.amazon.com/fr/blogs/machine-learning/creating-a-machine-learning-powered-rest-api-with-amazon-api-gateway-mapping-templates-and-amazon-sagemaker/

将 SageMaker 端点直接连接到 API 网关,无需中间 Lambdas

您还可以使用 AWS SDK 调用端点(例如 CLI, boto3),不一定需要为 API GW 执行此操作。

确实可以在不使用任何其他 AWS 服务的情况下从 sagemaker 调用 sagemaker 端点,并且它们具有调用 URLs 的事实也表明了这一点。

设置方法如下:

  1. 创建一个仅具有编程访问权限的用户并附加一个策略 json,该策略应如下所示:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sagemaker:InvokeEndpoint",
            "Resource": "arn:aws:sagemaker:<region>:<account-id>:endpoint/<endpoint-name>"
        }
    ]
} 

您可以将 <endpoint-name> 替换为 * 以让该用户调用所有端点。

  1. 使用 ACCESS-KEY 和 SECRET-ACCESS-KEY 在邮递员中配置授权,如屏幕截图所示。还可以在高级选项卡中添加参数,如屏幕截图所示。

  2. 然后用相关的内容类型填写您的body。

  3. 然后添加或删除额外的 headers,例如 variant-name 或 model-name,如果您设置了它们并且 headers 应该如图所示在此屏幕截图中:

  4. 像这样发送请求接收响应

URL 上面截图中的凭据不再有效,呃!

如果您希望代码使用某种 back-end 语言直接调用端点,here's code for python