限制和问题排查 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

限制和问题排查

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

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

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

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

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

此解决方案要求您编辑用户配置文件的 IAM 角色的信任关系,并删除除之外的所有 Amazon 服务 SageMaker。

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

  1. 通过 https://console.aws.amazon.com/iam/ 前往 IAM 控制台。

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

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

  4. 选择编辑信任策略

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

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

您还可以使用 IAM CLI 更新此策略文档。有关更多信息,请参阅《IAM 命令行参考》中的 update-trust

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

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

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

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

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

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

  3. 管理员配置下,选择

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

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

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

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

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

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

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

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

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

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

使用以下步骤将 Amazon 托管策略附加到您的角色:

  1. 通过 https://console.aws.amazon.com/iam/ 前往 IAM 控制台。

  2. 选择角色

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

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

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

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

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

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

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

通过 IAM 控制台将 Amazon 托管策略附加到用户的角色后,您的用户现在应该拥有 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 模型。不兼容的模型包括使用线性学习器算法的 Autopilot 模型。

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

自带模型 (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 文档

    • 表格分类:LightGBM、、xgBoost、-Tabular CatBoost、Linear Learner AutoGluon TabTransformer

    • 表格回归:LightGBM、、xgBoost、-Tabular CatBoost、Linear Learner AutoGluon TabTransformer

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

  • 训练 JumpStart 模型时必须提供训练和验证数据集。数据集应存储在 Amazon S3 中,并且您的 Studio Classic 和 Canvas 用户的执行角色必须有权访问亚马逊 S3 的位置。您可以使用相同的 Amazon S3 URI 与 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 仅接受没有列标题的数据集,因此在训练模型时必须将列标题作为文件添加。列标题文件的 Amazon S3 URI 也将共享给 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 时,请查看以下信息和限制。

  • 您只能将在 AutoML 作业中使用 EnsemblingHPOAuto 模式成功训练的模型共享到 Canvas(对于 Auto 模式,Autopilot 会根据训练数据集的大小选择 EnsemblingHPO 模式)。目前支持的 Autopilot 问题类型有回归、多元分类、二元分类。

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

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

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

从模型注册表中自带模型

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

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

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

    • 使用具有兼容推理格式的 SageMaker 内置表格算法。经过测试的具有兼容推理输出的示例算法有 Autogluon-Tabular、 CatBoost、LightGBM 和 xgBoost。 TabTransformer 像因子分解机这样的算法不接受 CSV 作为文件输入,而像线性学习器和 K-NN 这样的算法的推理输出格式也不受 Canvas 的支持。

    • 您也可以自带图像容器并共享到 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"
    • ModelData网址

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

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

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

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