限制和问题排查 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

限制和问题排查

以下部分概述了使用 Amazon C SageMaker anvas 时适用的疑难解答帮助和限制。您可以使用本主题来协助排除遇到的任何问题。

解决通过 SageMaker 控制台授予权限的问题

如果您在向用户授予 Canvas 基本权限或 R eady-to-use 模型权限时遇到问题,则您的用户可能有 AWS IAM执行角色与其他角色之间存在多个信任关系 AWS 服务的支持。信任关系是附加到您的角色的策略,用于定义哪些主体(用户、角色、账户或服务)可以代入该角色。例如,如果用户的执行角色与 Amazon SageMaker 和 Amazon Forecast 都存在信任关系,则向其授予其他 Canvas 权限时可能会遇到问题。

您可以选择以下选项之一来解决这个问题。

1. 从角色中删除一项可信服务以外的所有服务。

此解决方案要求您编辑用户个人资料IAM角色的信任关系并删除所有内容 AWS 服务除外 SageMaker。

要编辑您的IAM执行角色的信任关系,请执行以下操作:

  1. 转到IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 在IAM控制台的导航窗格中,选择角色。该控制台会显示您账户的角色。

  3. 选择您要修改的角色的名称,然后在详细信息页面中选择信任关系选项卡。

  4. 选择编辑信任策略

  5. 编辑信任策略编辑器中,粘贴以下内容,然后选择更新策略

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

您也可以使用更新此政策文档IAMCLI。有关更多信息,请参阅《IAM命令行参考》中的 update-trus t。

现在,您可以重试向用户授予 Canvas 基本权限或 R eady-to-use 模型权限。

2. 使用有一个或更少可信服务的不同角色。

此解决方案要求您为用户配置文件指定不同的IAM角色。如果您已经有可以替换的IAM角色,请使用此选项。

要为用户指定不同的执行角色,请执行以下操作:

  1. 打开 Amazon SageMaker 控制台,网址为https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置

  3. 管理员配置下,选择

  4. 从域列表中,选择要查看其用户配置文件列表的域。

  5. 域名详细信息页面上,选择用户配置文件选项卡。

  6. 选择要编辑其权限的用户。在用户详细信息页面上,选择编辑

  7. 常规设置页面上,选择执行角色下拉列表并选择要使用的角色。

  8. 选择提交以保存对用户配置文件所做的更改。

现在,您的用户应该使用仅包含一个可信服务的执行角色 (SageMaker)。

您可以重试向您的用户授予 Canvas 基本权限或 R eady-to-use 模型权限。

3. 手动附上 AWS 将策略托管到执行角色,而不是使用 SageMaker 域设置中的切换。

您可以手动附加,而不必使用域名或用户配置文件设置中的切换开关 AWS 为用户授予正确权限的托管策略。

要向用户 Canvas 授予基本权限,请附加该AmazonSageMakerCanvasFullAccess策略。要向用户 R m eady-to-use odels 授予权限,请附加该AmazonSageMakerCanvasAIServicesAccess策略。

使用以下步骤附上 AWS 您的角色的托管策略:

  1. 转到IAM控制台,网址为https://console.aws.amazon.com/iam/

  2. 选择角色

  3. 在搜索框中,按名称搜索用户的IAM角色并将其选中。

  4. 在用户角色页面的权限下,选择添加权限

  5. 从下拉菜单中选择附加策略

  6. 搜索并选择要附加到用户执行角色的一个或多个策略:

    1. 要授予 Canvas 基本权限,请搜索并选择AmazonSageMakerCanvasFullAccess策略。

    2. 要授予 R eady-to-use 模型权限,请搜索并选择AmazonSageMakerCanvasAIServicesAccess策略。

  7. 选择添加权限,将策略附加到角色。

附上后 AWS 通过IAM控制台管理用户角色的策略,您的用户现在应该拥有 Canvas 基本权限或 R eady-to-use 模型权限。

解决由于空间故障而在创建 Canvas 应用程序时出现的问题

在创建新的 Canvas 应用程序时,如果您遇到错误说明Unable to create app <app-arn> because space <space-arn> is not in InService state,则表示底层 Amazon SageMaker Studio 空间创建失败。Studio 空间是托管 Canvas 应用程序数据的底层存储空间。有关 Studio 空间的更多一般信息,请参阅亚马逊 SageMaker Studio 空间。有关在 Canvas 中配置空间的更多信息,请参阅将 SageMaker Canvas 应用程序数据存储在您自己的 SageMaker空间中

要确定空间创建失败的原因的根本原因,您可以使用DescribeSpaceAPI来检查该FailureReason字段。有关空格的可能状态及其含义的更多信息,请参阅了解 Amazon SageMaker 域名实体和状态

要解决此问题,请在 SageMaker 控制台中找到您的域名,然后删除您收到的错误消息中列出的故障空间。有关如何查找和删除空间的详细步骤,请参阅页面删除或停止运行您的 Studio 的实例、应用程序和空间并按照说明删除 Studio 空间。删除空间还会删除与该空间关联的所有应用程序。删除空间后,您可以尝试再次创建 Canvas 应用程序。现在,该空间应该可以成功配置,从而允许 Canvas 启动。

协作的局限性

当您在 Amazon SageMaker Studio Classic 中与数据科学家合作时,以下一般限制适用。

  • 你只能将成功训练的模型从 Canvas 共享到 Studio Classic。同样,你只能将在 Studio Classic 中成功训练过的模型共享回到 Canvas。

  • 你无法共享从 Canvas 到 Studio Classic 的快速构建模型。您只能共享标准构建模型。

  • 您只能共享在 Canvas 中训练的标准构建模型的一个版本。你可以在 Canvas 中训练模型的其他版本,但不能将它们共享到 Studio Classic。

  • 在 Studio Classic 中,你只能与 Canvas 分享反馈或共享更新的模型。您不能同时执行这两项操作。

  • 从 Studio Classic 到 Canvas 和 Canvas 到 Studio Classic 的评论长度限制

  • 您只能与其他用户个人资料共享您的 Canvas 或 Studio Classic 模型。你无法在自己的用户个人资料中在 Canvas 和 Studio Classic 之间共享模型。

  • 你不能从 Canvas 用户共享给 Canvas 用户,也不能从 Studio Classic 用户共享给 Studio Classic 用户。

根据您要共享的模型类型,也会有一些限制。有关时间序列预测模型以及数值和分类预测模型的局限性,请参阅以下章节。

协作处理时间序列预测模型的局限性

当您在 Canvas 和 Studio Classic 之间协作处理时间序列预测模型时,存在以下限制。

  • 在 Studio Classic 中,您无法通过自动共享按钮使用时间序列预测模型进行预测。不过,您可以创建一个 Jupyter 笔记本并编写自己的代码。

  • 对于时间序列预测模型,您无法在 Studio Classic 中更改模型配方或数据转换。在 Studio Classic 中,您只能对时间序列预测模型进行以下更新:

    • 您可以更新预测范围的长度。

    • 您可以更新项目的元数据字段,该字段按特定列对数据进行分组。

    • 您可以更新其他维度字段,例如指定节假日时间表。

协作处理数值和分类预测模型的局限性

在 Canvas 和 Studio Classic 之间协作处理数值和分类预测模型类型时,存在以下限制。

  • 在 Studio Classic 中更新或训练模型时,如果您关闭顶部有协作横幅的选项卡,则共享模型工作流程将结束,进度就会丢失。在这种情况下,必须从共享模型页面的与我共享部分重新启动共享模型工作流。有关更多信息,请参阅与数据科学家协作

  • 在 Studio Classic 中更新模型时,如果您想将模型更新共享回 Canvas,则无法更改目标列。如果要更改目标列并重新训练模型,请训练模型,然后使用共享按钮共享到 Canvas。有关将新模型共享到 Canvas 的更多信息,请参阅将自己的模型带到 SageMaker Canvas

  • 在 Studio Classic 的 Amazon SageMaker Data Wrangler Recipe 界面中更新模型时,Studio Classic 用户可以应用的 Canvas 支持的更改存在限制:

    • 您只能将从 Data Wrangler 线性数据流中最后一个节点训练的模型共享到 Canvas。

    • 只支持转换节点。

    • 您无法对目标列执行操作。

    • 您无法更新列的数据类型。

    • 您无法更新数据来源或添加新的数据来源。

  • 在 Studio Classic Autopilot 页面上共享 Canvas 的替代候选模型时,你无法从排行榜中选择该模型。必须从横幅中选择共享模型,然后从列表中选择备用模型。有关更多信息,请参阅 Canvas 文档中的与 Canvas 用户共享备用模型

  • 只有与 SageMaker Neo 兼容的模型才能成功共享回 Canvas。兼容型号是使用XGBoost或MLP算法的自动驾驶模型。不兼容的模型包括使用线性学习器算法的 Autopilot 模型。

  • 对于使用 Spark 的自定义公式转换SQL,Canvas 仅支持一元运算、聚合函数、字符串连接操作和 Power 操作。不支持其他运算。

自带模特的限制 (BYOM)

当你想将自己的模型带到 C SageMaker anvas 时,以下一般限制适用。

  • 当模型从 Studio Classic 共享到 Canvas 时,Canvas 用户无法更新或查看用于构建模型的数据集的详细信息。

  • 当 Canvas 用户想要对导入的模型运行单一预测时,更新列值时没有数据类型限制。在更新单一预测值时,必须手动确保与现有值的数据类型相匹配。

  • 当 Canvas 用户想要对导入的模型运行批量预测时,Canvas 假定您(Canvas 用户)知道预期的输入数据集应该是什么样子。您应该有一个数据集,其列和数据类型与用于训练模型的数据集相匹配。如果您没有这样的数据集,请咨询与您共享模型的用户,并导入可用于运行批量预测的数据集。

  • Canvas 应用程序内部使用无服务器端点来运行预测和生成模型指标。共享给 Canvas 的模型必须与无服务器端点兼容:

    • 最大内存大小为 6144 MB。

    • 在容器中配置推理输入响应键时,请使用以下配置:

      INFERENCE_INPUT_RESPONSE_KEYS = { "BINARY": ["predicted_label", "probability"], "MULTI_CLASS": ["predicted_label", "probability", "probabilities", "labels"], }
    • 您可以选择 SageMaker提供的推理容器,也可以自带图像推理容器用于终端节点。 SageMaker 为其内置算法提供了容器,并为一些最常见的机器学习框架提供了预构建的 Docker 镜像。如果您自带容器,则必须对其进行修改才能使用 SageMaker。有关自带容器的更多信息,请参阅调整您自己的推理容器

    • 无服务器端点的功能排除也同样适用。

  • 为了成功将模型从 Studio Classic 共享到 Canvas,Canvas 接受以下格式的模型推理输出:

    TEXT/CSV

    • 回归:模型推理响应应该是一个字节字符串,其中每个输出预测都用 \n 分隔:

      b'-0.0007884334772825241\n-0.015136942267417908\n0.050063662230968475\n0.02891816757619381\n'
    • 分类:模型推理响应应该是一个字节字符串,其中每个 predicted_labelpredicted_probabilityprobabilitieslabels 都用 \n 分隔。下面是二元分类的示例:

      b'no,0.9967488050460815,"[0.9967488050460815, 0.003251201706007123]","[\'no\', \'yes\']"\nno,0.9999420642852783,"[0.9999420642852783, 5.793538366560824e-05]","[\'no\', \'yes\']"\nno,0.9999846816062927,"[0.9999846816062927, 1.5326571883633733e-05]","[\'no\', \'yes\']"\nno,0.9999727606773376,"[0.9999727606773376, 2.7267418772680685e-05]","[\'no\', \'yes\']"\n'

      下面是多元分类的示例:

      b'Iris-setosa,1.0,"[1.0, 0.0, 0.0]","[\'Iris-setosa\', \'Iris-versicolor\', \'Iris-virginica\']"\nIris-setosa,1.0,"[1.0, 0.0, 0.0]","[\'Iris-setosa\', \'Iris-versicolor\', \'Iris-virginica\']"\nIris-setosa,1.0,"[1.0, 0.0, 0.0]","[\'Iris-setosa\', \'Iris-versicolor\', \'Iris-virginica\']"\nIris-setosa,1.0,"[1.0, 0.0, 0.0]","[\'Iris-setosa\', \'Iris-versicolor\', \'Iris-virginica\']"\n'

    APPLICATION/JSON

    • 回归:模型推理响应应为包含prediction密钥的JSON字符串,其值应为输出预测列表:

      let response = { "predictions": [ // First instance prediction. 1.75 // Second instance prediction. 3.25 ] }
    • 分类:模型推理响应应为包含probabilities密钥的JSON字符串,其值应为概率列表。

      下面是二元分类的示例:

      let response = { "probabilities": [ // First instance prediction. [0.9, 0.1] // Second instance prediction. [0.2, 0.8] ] }

      下面是多元分类的示例:

      let response = { "probabilities": [ // First instance prediction. [0.7, 0.2, 0.1] // Second instance prediction. [0.2, 0.5, 0.3] ] }

根据您要引入的模型类型,也有相应的限制:

从这里带上你自己的模型 JumpStart

与 Canvas 共享 JumpStart 模型时,请查看以下信息和限制。

  • 以下是可用于将模型导入 Canvas 的支持算法。有关更多详细信息,请参阅JumpStart 文档

    • 表格分类:Light、、、 AutoGluon-Tabular GBM CatBoost、XGBoost、Linear Learn TabTransformer er

    • 表格回归:Light GBM、、、 AutoGluon-Tabular CatBoost、XGBoost、Linear Learn TabTransformer er

  • 在中 JumpStart,只有当模型准备好共享到 Canvas 时,“共享” 按钮才会打开。如果您训练过的模型没有 “共享到 SageMaker 画布” 按钮,则不支持您的模型BYOM。

  • 训练 JumpStart 模型时必须提供训练和验证数据集。数据集应存储在 Amazon S3 中,并且您的 Studio Classic 和 Canvas 用户的执行角色必须有权访问亚马逊 S3 的位置。您可以使用相同的 Amazon S3 URIs 与 Canvas 共享训练和验证数据集,也可以使用相同的数据架构共享不同的数据集。

    您的训练或验证数据文件应如下所示(CSV格式)。您应该以第一列为目标为文件编制索引。

    3 1 22 1 1 0 4 4 0 0 38 0 0 1 3 4 1 0 67 0 1 0 1 6 1 0 67 0 0 2 2 6 0 0 40 0 0 2 6 6 2 0 56 1 0 1 2 6
  • 默认情况下,训练模型时 JumpStart 使用训练和验证数据集的第一列作为目标。数据集的目标列(或默认情况下为第一列)共享到 Canvas。

  • 训练 JumpStart 模型时,必须提供训练和验证数据集的列标题。默认情况下, JumpStart 仅接受没有列标题的数据集,因此在训练模型时必须将列标题作为文件添加。列标题文件URI的 Amazon S3 也将共享给 Canvas。您的列标题文件应类似于以下示例(CSV格式)。第一列应该是目标列。

    Segmentation EverMarried Age Graduated WorkExperience SpendingScore FamilySize Var1
  • 中的训练作业 JumpStart 必须先完成,Complete然后才能与 Canvas 共享。

  • 对于分类问题(或 Canvas 中的分类预测),在共享到 Canvas 时,需要在配置模型输出部分提供原始类名。类名的顺序必须与模型中使用的索引相匹配。您的映射关系文件的CSV格式应类似于以下示例,其中索引 0(第一个索引)映射到类名A

    A B C D

    当 Canvas 用户在 Canvas 应用程序中查看模型指标时,他们只能看到每个类的索引(0、1、2)。不过,用户在查看单一预测结果时可以看到类名。

从 Autopilot 自带模型

将模型从 Autopilot 共享到 Canvas 时,请查看以下信息和限制。

  • 你只能在 Canvas 上共享你成功通过 E nsembling 或 Auto 模式在 AutoML 作业中训练过的模型(对于自动模式 HPO,Autopilot 会根据训练数据集的大小选择 EnsemblingHPO模式)。目前支持的 Autopilot 问题类型有回归、多元分类、二元分类。

  • 对于每个 Autopilot 作业,您可以选择任何模型(最佳模型或任何其他候选模型),一次共享一个模型到 Canvas。您只需要选择共享模型按钮,然后指定要与之共享模型和备注的 Canvas 用户即可。

  • AutoGluon-使用 Data Wrangler 转换器进行推理的表格模型无法共享给 Canvas。这是因为 Data Wrangler 转换器会导致模型使用多个容器。

  • HPO与 SageMaker Neo 不兼容的模型无法成功共享到 Canvas。兼容型号是使用XGBoost或MLP算法的自动驾驶模型。不兼容的模型包括使用线性学习器算法的 Autopilot 模型。

从模型注册表中自带模型

将模型从模型注册表共享到 Canvas 时,请查看以下信息和限制。

  • 与提供的 “共享” 按钮不同 JumpStart,模型注册表不提供模型验证,因此,由于模型不兼容,从 Studio Classic 成功共享的注册模型在导入到 Canvas 时可能会失败。在从模型注册表共享到 Canvas 之前,请查看以下提示信息:

    • 为模型使用单一推理容器。您可以在AdditionalInferenceSpecifications字段内的多个容器中注册模型,但是 Canvas 仅针对每个模型的一个推理容器进行了优化。例如,当您使用推理管道并在 AdditionalInferenceSpecifications 字段中使用多个数据预处理容器和一个推理容器注册多个容器时,默认情况下会选择第一个容器在 Canvas 中进行模型推理。如果您使用的是机器学习管道,请评估这是否适用于您的使用案例。

    • 使用具有兼容推理格式的 SageMaker 内置表格算法。具有兼容推理输出的经过测试的示例算法有 Autogluon-Tabular、、 CatBoost Light 和。GBM TabTransformer XGBoost像分解机这样的算法不接受CSV作为文件输入,Canvas 不支持 Linear Learner 和 K-NN 等算法的推理输出格式。

    • 您也可以自带图像容器并共享到 Canvas,或者修改预先构建的 SageMaker 容器。

  • 模型包组中注册模型时,请记得在推理容器中提供以下属性:

    • 环境

      "{\"SAGEMAKER_CONTAINER_LOG_LEVEL\": \"20\", \"SAGEMAKER_PROGRAM\": \"inference.py\", \"SAGEMAKER_REGION\": \"us-west-2\", \"SAGEMAKER_SUBMIT_DIRECTORY\": \"/opt/ml/model/code\"}"
    • 映像

      "s3://sagemaker-us-west-2-<account-id>/model-regression-abalone-2022-10-14-23-02-45/model.tar.gz"
    • ModelDataUrl

      "<account-id>.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1"
  • 将模型从模型注册表共享到 Canvas 时,必须提供训练和验证数据集。数据集应存储在 Amazon S3 中,Studio Classic 和 Canvas 用户的执行角色必须有权访问亚马逊 S3 的位置。您可以使用相同的 Amazon S3 URIs 与 Canvas 共享训练和验证数据集,也可以使用相同的数据架构共享不同的数据集。数据集的输入格式必须与模型推理容器的输入格式完全一致。

  • 您必须向 Canvas 提供目标列,否则默认使用训练/验证数据集的第一列。

  • 在共享到 Canvas 时的添加模型详细信息部分,您可以提供训练数据集和验证数据集的第一行作为标题,也可以将标题指定为不同的文件。

  • 对于分类问题(或 Canvas 中的分类预测),在通过 “配置模型输出” 选项共享到 SageMaker Canvas 时,需要提供原始类名。类名的顺序必须与共享模型使用的索引一致。映射可以是 Amazon S3 中的CSV文件,也可以手动输入类名。