本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
限制和问题排查
以下部分概述了使用 Amazon C SageMaker anvas 时适用的疑难解答帮助和限制。您可以使用本主题来协助排除遇到的任何问题。
解决通过 SageMaker AI 控制台授予权限的问题
如果您在向用户授予 Canvas 基本权限或 Ready-to-use模型权限时遇到问题,则您的用户可能具有与其他 AWS 服务有多个信任关系的 AWS IAM执行角色。信任关系是附加到您的角色的策略,用于定义哪些主体(用户、角色、账户或服务)可以代入该角色。例如,如果用户的执行角色与 Amazon AI 和 Amazon Forecast 都存在信任关系,则向其授予其他 Canv SageMaker as 权限时可能会遇到问题。
您可以选择以下选项之一来解决这个问题。
1. 从角色中删除一项可信服务以外的所有服务。
此解决方案要求您编辑用户个人资料IAM角色的信任关系,并移除除 SageMaker AI 之外的所有 AWS 服务。
要编辑您的IAM执行角色的信任关系,请执行以下操作:
转到IAM控制台,网址为https://console.aws.amazon.com/iam/
。 在 IAM 控制台的导航窗格中,选择 Roles。该控制台会显示您账户的角色。
选择您要修改的角色的名称,然后在详细信息页面中选择信任关系选项卡。
选择编辑信任策略。
-
在编辑信任策略编辑器中,粘贴以下内容,然后选择更新策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
您也可以使用更新此政策文档IAMCLI。有关更多信息,请参阅《IAM命令行参考》中的 update-trus t。
现在,你可以重试向你的用户授予 Canvas 基本权限或 Ready-to-use模型权限。
2. 使用有一个或更少可信服务的不同角色。
此解决方案要求您为用户配置文件指定不同的IAM角色。如果您已经有可以替换的IAM角色,请使用此选项。
要为用户指定不同的执行角色,请执行以下操作:
打开 Amazon A SageMaker I 控制台,网址为https://console.aws.amazon.com/sagemaker/
。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择域。
从域列表中,选择要查看用户配置文件列表的域。
在域详细信息页面上,选择用户配置文件选项卡。
选择要编辑其权限的用户。在用户详细信息页面上,选择编辑。
在常规设置页面上,选择执行角色下拉列表并选择要使用的角色。
选择提交以保存对用户配置文件所做的更改。
现在,您的用户应该使用仅包含一项可信服务 (SageMaker AI) 的执行角色。
你可以重试向你的用户授予 Canvas 基本权限或 Ready-to-use模型权限。
3. 手动将 AWS 托管策略附加到执行角色,而不是使用 SageMaker AI 域设置中的切换按钮。
您可以手动附加授予用户正确权限的 AWS 托管式策略,而不是使用域或用户配置文件设置中的切换开关。
要向用户 Canvas 授予基本权限,请附加该AmazonSageMakerCanvasFullAccess策略。要向用户 Ready-to-use模型授予权限,请附加该AmazonSageMakerCanvasAIServicesAccess策略。
使用以下步骤将 AWS 托管策略附加到您的角色:
转到IAM控制台,网址为https://console.aws.amazon.com/iam/
。 选择角色。
在搜索框中,按名称搜索用户的IAM角色并将其选中。
在用户角色页面的权限下,选择添加权限。
从下拉菜单中选择附加策略。
-
搜索并选择要附加到用户执行角色的一个或多个策略:
要授予 Canvas 基本权限,请搜索并选择AmazonSageMakerCanvasFullAccess策略。
要授予 Ready-to-use模特权限,请搜索并选择AmazonSageMakerCanvasAIServicesAccess策略。
选择添加权限,将策略附加到角色。
通过IAM控制台将 AWS 托管策略附加到用户角色后,您的用户现在应该拥有 Canvas 基本权限或 Ready-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 AI 空间中。
要确定空间创建失败的原因的根本原因,您可以使用DescribeSpaceAPI来检查该FailureReason
字段。有关可能的空间状态及其含义的更多信息,请参阅 亚马逊 SageMaker AI 域名实体和状态。
要解决此问题,请在 SageMaker AI 控制台中找到您的域,然后删除您收到的错误消息中列出的故障空间。有关如何查找和删除空间的详细步骤,请参阅页面 停止并删除运行应用程序和空间的 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 的评论长度限制为 1024 个字符。
-
您只能与不同的用户配置文件共享 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"], }
您可以选择 A SageMaker I 提供的推理容器,也可以自带图像推理容器用于终端节点。 SageMaker AI 为其内置算法提供了容器,为一些最常见的机器学习框架提供了预构建的 Docker 镜像。如果您自带容器,则必须对其进行修改才能与 SageMaker AI 配合使用。有关自带容器的更多信息,请参阅调整您自己的推理容器。
无服务器端点的功能排除也同样适用。
-
为了成功地将模型从 Studio Classic 共享到 Canvas,Canvas 接受以下格式的模型推理输出:
TEXT/CSV
回归:模型推理响应应该是一个字节字符串,其中每个输出预测都用
\n
分隔:b'-0.0007884334772825241\n-0.015136942267417908\n0.050063662230968475\n0.02891816757619381\n'
分类:模型推理响应应该是一个字节字符串,其中每个
predicted_label
、predicted_probability
、probabilities
和labels
都用\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 用户的执行角色必须能够访问 Amazon 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 会根据训练数据集的大小选择 Ensembling 或HPO模式)。目前支持的 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 AI 内置表格算法。具有兼容推理输出的经过测试的示例算法有 Autogluon-Tabular、、 CatBoost Light 和。GBM TabTransformer XGBoost像分解机这样的算法不接受CSV作为文件输入,Canvas 不支持 Linear Learner 和 K-NN 等算法的推理输出格式。
-
您也可以自带图像容器并共享到 Canvas,或者修改预先构建的 SageMaker AI 容器。
如果您自带容器,则必须对其进行修改才能与 SageMaker AI 配合使用。有关自带容器的更多信息,请参阅调整您自己的推理容器。
有关推理输出格式的详细格式化,请参阅自带模特的限制 (BYOM)。
-
在模型包组中注册模型时,请记得在推理容器中提供以下属性:
-
环境:
"{\"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" -
"
<account-id>
.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1"
-
-
将模型从模型注册表共享到 Canvas 时,必须提供训练和验证数据集。这些数据集应存储在 Amazon S3 中,Studio Classic 和 Canvas 用户的执行角色必须能够访问 Amazon S3 位置。您可以使用相同的 Amazon S3 URIs 与 Canvas 共享训练和验证数据集,也可以使用相同的数据架构共享不同的数据集。数据集的输入格式必须与模型推理容器的输入格式完全一致。
您必须向 Canvas 提供目标列,否则默认使用训练/验证数据集的第一列。
在共享到 Canvas 时的添加模型详细信息部分,您可以提供训练数据集和验证数据集的第一行作为标题,也可以将标题指定为不同的文件。
对于分类问题(或 Canvas 中的分类预测),在通过 “配置模型输出” 选项共享到 SageMaker Canvas 时,需要提供原始类名。类名的顺序必须与共享模型使用的索引一致。映射可以是 Amazon S3 中的CSV文件,也可以手动输入类名。