本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon 中创建私有模型中心 SageMaker JumpStart
创建一个或多个私有策划的模型中心,供组织内的用户访问。
以下步骤将引导您了解如何使用 SageMaker Python SDK 创建私有中心。
先决条件
要在 Studio 中创建私有中心,必须满足以下先决条件:
具有管理员访问权限的 Amazon 账户
有权访问 Amazon SageMaker Studio 的 Amazon Identity and Access Management (IAM) 角色
JumpStart 已启用的 Amazon SageMaker 域名
有关 Studio 入门的更多信息,请参阅亚马逊 SageMaker Studio。
创建私有模型中心
使用以下步骤创建专用集线器。在创建模型中心之前,您必须安装 SageMaker Python 开发工具包并配置必要的 IAM 权限。
创建私有中心
-
安装 SageMaker Python 开发工具包并导入必要的 Python 软件包。
# Install the SageMaker Python SDK !pip3 install sagemaker --force-reinstall --quiet # Import the necessary Python packages import boto3 from sagemaker import Session from sagemaker.jumpstart.hub.hub import Hub
-
初始化 SageMaker 会话。
sm_client = boto3.client(
'sagemaker'
) session = Session(sagemaker_client=sm_client) session.get_caller_identity_arn() -
配置私有集线器的详细信息,例如内部集线器名称、用户界面显示名称和 UI 中心描述。
注意
如果您在创建中心时未指定 Amazon S3 存储桶名称,则 SageMaker中心服务会代表您创建一个新的存储桶。新存储桶的命名结构如下:
sagemaker-hubs-
。REGION
-ACCOUNT_ID
HUB_NAME=
"Example-Hub"
HUB_DISPLAY_NAME="Example Hub UI Name"
HUB_DESCRIPTION="A description of the example private curated hub."
REGION="us-west-2"
-
检查您的管理员 IAM 角色是否具有创建私有中心所必需的 Amazon S3 权限。如果您的角色没有必要的权限,请导航到 IAM 控制台中的角色页面。选择 “管理员” 角色,然后在 “权限策略” 窗格中选择 “添加权限”,使用 JSON 编辑器创建具有以下权限的内联策略:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging" ], "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-
REGION
", "arn:aws:s3:::jumpstart-cache-prod-REGION
/*" ], "Effect": "Allow" } ] } -
使用步骤 3 中的配置创建私有模型中心
hub.create()
。hub = Hub(hub_name=
HUB_NAME
, sagemaker_session=session) try: # Create the private hub hub.create( description=HUB_DESCRIPTION
, display_name=HUB_DISPLAY_NAME
) print(f"Successfully created Hub with name {HUB_NAME} in {REGION}"
) # Check that no other hubs with this internal name exist except Exception as e: if "ResourceInUse" in str(e): print(f"A hub with the name {HUB_NAME} already exists in your account."
) else: raise e -
使用以下
describe
命令验证新私有集线器的配置:hub.describe()
向私有中心添加模型
创建私有中心后,您可以添加已列入许可名单的模型。有关可用 JumpStart 模型的完整列表,请参阅 SageMaker Python SDK 参考中的带有预训练模型的内置算法表
-
您可以使用该
hub.list_sagemaker_public_hub_models()
方法以编程方式筛选可用模型。您可以选择按类别(例如框架 ("framework == pytorch"
))、图像分类()等任务("task == ic"
)等进行筛选。有关筛选条件的更多信息,请参阅notebook_utils.py
。 hub.list_sagemaker_public_hub_models()
方法中的过滤器参数是可选的。filter_value =
"framework == meta"
response = hub.list_sagemaker_public_hub_models(filter=filter_value
) models = response["hub_content_summaries"] while response["next_token"]: response = hub.list_sagemaker_public_hub_models(filter=filter_value, next_token=response["next_token"]) models.extend(response["hub_content_summaries"]) print(models) -
然后,您可以通过在方法中指定模型 ARN 来添加经过筛选的
hub.create_model_reference()
模型。for model in models: print(f"Adding {model.get('hub_content_name')} to Hub") hub.create_model_reference(model_arn=model.get("hub_content_arn"), model_name=model.get("hub_content_name"))
从私有中心删除模型
您可以通过在方法中指定模型 ARN 来从私有中心删除模型。hub.delete_model_reference()
hub.delete_model_reference(
model-name
)
移除对 JumpStart 公共模型中心的访问权限
除了在 Studio JumpStart 中添加私有精选中心外,您还可以取消用户对 JumpStart 公共模型中心的访问权限。 JumpStart 公共模型中心可以访问所有可用的 JumpStart 基础模型。
如果您删除了对 JumpStart 公共模型中心的访问权限,并且用户只能访问一个专用中心,则当用户在 Studio 的左侧导航窗格JumpStart中进行选择时,他们将直接进入该专用中心。如果用户可以访问多个专用集线器,则当用户在 Studio 的左侧导航窗格JumpStart中进行选择时,系统会将该用户带到集线器菜单页面。
使用以下内联策略删除用户对 JumpStart 公共模型中心的访问权限:
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::jumpstart-cache-prod-
REGION
", "arn:aws:s3:::jumpstart-cache-prod-REGION
/*" ], "Condition": { "StringNotLike": {"s3:prefix": ["*.ipynb", "*/eula.txt"]} } }, { "Action": "sagemaker:*", "Effect": "Deny", "Resource": [ "arn:aws:sagemaker:REGION
:aws:hub/SageMakerPublicHub", "arn:aws:sagemaker:REGION
:aws:hub-content/SageMakerPublicHub/*/*" ] } ] }
删除私有集线器
您可以从管理员帐户中删除私有集线器。在删除专用集线器之前,必须先移除该中心中的所有内容。使用以下命令删除集线器内容和集线器:
# Delete content for all models in a hub for model in models: hub.delete_model_reference(model_name=model.get(
'HubContentName'
)) # Delete the private hub hub.delete()
故障排除
解决创建私有模型中心时可能出现的 IAM 权限问题。
ValidationException
调用CreateModel
操作时:无法访问模型数据
如果您没有为管理员角色配置相应的 Amazon S3 权限,则会出现此异常。有关创建私有中心所需的 Amazon S3 权限的更多信息,请参阅中的步骤 3 。
Access Denied
或者打电话Forbidden
的时候 create()
如果您没有访问与 JumpStart公共模型中心关联的 Amazon S3 存储桶的相应权限,则在创建私有中心时会被拒绝访问。有关创建私有中心所需的 Amazon S3 权限的更多信息,请参阅中的步骤 3 。
支持的 Amazon 区域
精心策划的私人中心目前在以下 Amazon 商业区域普遍可用:
-
us-east-2
单个区域允许的最大集线器数量默认为 50。