本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向特征添加可搜索的元数据
在 Amazon F SageMaker eature Store 中,您可以搜索所有功能。要使特征更容易被发现,您可以向其添加元数据。可以添加以下类型的元数据:
-
描述 - 特征的可搜索描述。
-
参数 - 可搜索的键值对。
描述最多可包含 255 个字符。对于参数,您必须在搜索中指定键值对。最多可以添加 25 个参数。
要更新某项功能的元数据,您可以使用控制台或UpdateFeatureMetadata
操作。
如何向要素中添加可搜索的元数据
您可以使用控制台或 Amazon Feat SageMaker ure Store API 为您的功能添加可搜索的元数据。通过控制台使用 Feature Store 的说明取决于您是已启用亚马逊 SageMaker Studio还是亚马逊 SageMaker Studio 经典版将其作为默认体验。
-
按照中的说明打开 Studio 控制台启动亚马逊 SageMaker Studio。
-
在左侧导航窗格中选择数据,展开下拉列表。
-
从下拉列表中,选择 Feature Store。
-
(可选)要查看您的功能,请选择我的帐户。要查看共享功能,请选择跨账户。
-
要查看您的功能组,请在功能目录选项卡下,选择我的帐户。
-
在 “功能目录” 选项卡下,选择 “跨帐户” 以查看其他人允许您发现的功能组。在 “创建者” 下,您可以查看功能组的资源所有者账户 ID。
-
可以在搜索下拉列表中搜索特征。
-
(可选)要筛选您的搜索,请选择 “搜索” 下拉列表旁边的筛选器图标。可以使用筛选器在搜索结果中指定参数或日期范围。如果要搜索参数,请同时指定其键和值。要更轻松地找到您的要素,您可以指定时间范围或取消选择不想查询的列。
-
对于共享资源,只有拥有资源所有者账户授予的适当访问权限后,您才能编辑功能组元数据或要素定义。仅拥有可发现性权限并不能编辑元数据或要素定义。有关授予访问权限的更多信息,请参阅启用跨账户访问。
-
-
选择您的特征。
-
请选择 Edit metadata(编辑元数据)。
-
在描述字段中,添加或更新描述。
-
在参数字段的参数下,为参数指定键值对。
-
(可选)选择添加新参数以添加其他参数。
-
选择 Save changes(保存更改)。
-
选择确认。
本节中的代码使用中的UpdateFeatureMetadata
操作为不同场景的 AWS SDK for Python (Boto3) 要素添加可搜索的元数据。有关提交查询的其他语言的信息,请参阅 Amazon SageMaker API 参考中的另请参阅。
有关更多功能商店示例和资源,请参阅Amazon SageMaker 功能商店资源。
代码示例
更新某项特征的元数据后,您可以使用 DescribeFeatureMetadata
操作来查看所做的更新。
以下代码是一个使用 AWS SDK for Python (Boto3)的示例工作流。该示例代码执行以下操作:
-
设置您的 SageMaker 环境。
-
创建特征组。
-
向该组添加特征。
-
向特征添加元数据。
有关更多功能商店示例和资源,请参阅Amazon SageMaker 功能商店资源。
步骤 1:设置
要开始使用功能商店,请创建 SageMaker、boto3 和功能商店会话。然后设置要用于特征的 S3 存储桶。这是您的离线存储。以下代码使用 SageMaker 默认存储桶并为其添加自定义前缀。
注意
您使用的角色必须附加以下托管策略:AmazonS3FullAccess
和 AmazonSageMakerFeatureStoreAccess
。
# SageMaker Python SDK version 2.x is required %pip install 'sagemaker>=2.0.0' import sagemaker import sys
import boto3 import pandas as pd import numpy as np import io from sagemaker.session import Session from sagemaker import get_execution_role from botocore.exceptions import ClientError prefix = 'sagemaker-featurestore-introduction' role = get_execution_role() sagemaker_session = sagemaker.Session() region = sagemaker_session.boto_region_name s3_bucket_name = sagemaker_session.default_bucket() sagemaker_client = boto_session.client(service_name='sagemaker', region_name=region)
步骤 2:创建特征组并添加特征
以下代码是一个使用特征定义创建特征组的示例。
feature_group_name = "test-for-feature-metadata" feature_definitions = [ {"FeatureName": "feature-1", "FeatureType": "String"}, {"FeatureName": "feature-2", "FeatureType": "String"}, {"FeatureName": "feature-3", "FeatureType": "String"}, {"FeatureName": "feature-4", "FeatureType": "String"}, {"FeatureName": "feature-5", "FeatureType": "String"} ] try: sagemaker_client.create_feature_group( FeatureGroupName=feature_group_name, RecordIdentifierFeatureName="feature-1", EventTimeFeatureName="feature-2", FeatureDefinitions=feature_definitions, OnlineStoreConfig={"EnableOnlineStore": True} ) except ClientError as e: if e.response["Error"]["Code"] == "ResourceInUse": pass else: raise e
步骤 3:添加元数据
添加元数据之前,请使用 DescribeFeatureGroup
操作确保特征组的状态为 Created
。
sagemaker_client.describe_feature_group( FeatureGroupName=feature_group_name )
为该特征添加描述。
sagemaker_client.update_feature_metadata( FeatureGroupName=feature_group_name, FeatureName="feature-1", Description="new description" )
您可以使用该DescribeFeatureMetadata
操作来查看是否成功更新了功能组的描述。
sagemaker_client.describe_feature_metadata( FeatureGroupName=feature_group_name, FeatureName="feature-1" )
也可以使用它向特征组添加参数。
sagemaker_client.update_feature_metadata( FeatureGroupName=feature_group_name, FeatureName="feature-1", ParameterAdditions=[ {"Key": "team", "Value": "featurestore"}, {"Key": "org", "Value": "sagemaker"}, ] )
您可以再次使用 DescribeFeatureMetadata
操作来查看是否已成功添加参数。
sagemaker_client.describe_feature_metadata( FeatureGroupName=feature_group_name, FeatureName="feature-1" )