在 Amazon 中创建私有模型中心 SageMaker JumpStart - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

在 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 权限。

创建私有中心
  1. 安装 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
  2. 初始化 SageMaker 会话。

    sm_client = boto3.client('sagemaker') session = Session(sagemaker_client=sm_client) session.get_caller_identity_arn()
  3. 配置私有集线器的详细信息,例如内部集线器名称、用户界面显示名称和 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"
  4. 检查您的管理员 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" } ] }
  5. 使用步骤 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
  6. 使用以下describe命令验证新私有集线器的配置:

    hub.describe()

向私有中心添加模型

创建私有中心后,您可以添加已列入许可名单的模型。有关可用 JumpStart 模型的完整列表,请参阅 SageMaker Python SDK 参考中的带有预训练模型的内置算法表

  1. 您可以使用该hub.list_sagemaker_public_hub_models()方法以编程方式筛选可用模型。您可以选择按类别(例如框架 ("framework == pytorch"))、图像分类()等任务("task == ic")等进行筛选。有关筛选条件的更多信息,请参阅notebook_utils.pyhub.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)
  2. 然后,您可以通过在方法中指定模型 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。