经典案例

使用私有中心管理 Amazon SageMaker JumpStart 基础模型访问 机器学习博客

使用私有中心管理 Amazon SageMaker JumpStart 基础模型访问 机器学习博客

管理 Amazon SageMaker JumpStart 基础模型访问权限

关键要点

Amazon SageMaker JumpStart 是一个提供预训练模型和解决方案的机器学习中心。私有中心 让组织能够集中管理模型和笔记本,提升可发现性和重用性。企业管理员可以通过私有中心配置模型的细粒度访问控制。该功能在多个 AWS 区域可用,提升了协作和模型治理能力。

Amazon SageMaker JumpStart 是一个机器学习 (ML) 中心,提供预训练模型和预构建解决方案。它为用户访问数百个基础模型 (FMs)。私有中心是 SageMaker JumpStart 的一项功能,使组织能够共享其模型和笔记本,从而集中管理模型艺术品、提高可发现性和增强组织内部的重用性。随着每天发布新模型,许多企业管理员希望对用户在其组织内能够发现和使用的 FMs 进行更多控制例如,仅允许基于 Pytorch 框架的模型被发现。

企业管理员现在可以轻松地配置 SageMaker JumpStart 提供的 FMs 细粒度访问控制,以便只有被允许的模型可以被其组织内的用户访问。在这篇文章中,我们将讨论管理员使用私有中心配置 SageMaker JumpStart 模型的细粒度访问控制所需的步骤,以及用户如何访问和使用这些模型。

解决方案概述

从今天开始,借助 SageMaker JumpStart 的私有中心功能,管理员可以根据不同团队、使用案例或许可要求创建模型子集的存储库,还可以使用 Amazon SageMaker Python SDK。管理员还可以设置多个私有中心,为不同用户组提供不同可发现的模型列表。用户将只能发现和使用他们所能访问的私有中心中的模型,使用 Amazon SageMaker Studio 和 SDK 来进行操作。这种控制级别使企业能在确保治理要求的同时,最大程度地利用开放权重生成的人工智能 (AI) 发展。最后,管理员可以在多个 AWS 账户之间共享私有中心的访问权限,使得协作模型管理得以实施,同时保持集中控制。SageMaker JumpStart 使用 AWS 资源访问管理器 (AWS RAM) 安全地与同一组织中的其他账户共享私有中心。该新功能在 10 个区域可用:美国东部 (弗吉尼亚北部)、美国东部 (俄亥俄州)、美国西部 (俄勒冈州)、欧洲 (爱尔兰)、欧洲 (法兰克福)、亚太 (孟买)、亚太 (东京)、亚太 (首尔)、亚太 (新加坡)、亚太 (悉尼) 和以色列 (特拉维夫)。请注意,Studio 尚未在特拉维夫区域可用。

以下示意图展示了带有公共和私有中心功能的 SageMaker JumpStart 示例架构。图中说明了 SageMaker JumpStart 如何提供对不同模型存储库的访问,一些用户访问公共的 SageMaker JumpStart 中心,其他用户使用私有精心策划的中心。

在接下来的部分中,我们将演示管理员如何使用私有中心配置 SageMaker JumpStart 模型的细粒度访问控制。然后,我们将展示用户如何通过 SageMaker Studio 和 SageMaker Python SDK 访问和使用私有中心中的允许模型。最后,我们将看看管理员用户如何将私有中心与另一个账户的用户共享。

前提条件

使用 SageMaker Python SDK 并运行与此帖子相关的代码,您需要满足以下前提条件:

一个包含所有 AWS 资源的 AWS 账户一个有权访问 SageMaker Studio 笔记本的 AWS 身份与访问管理 (IAM) 角色在 SageMaker Studio 域中启用 SageMaker JumpStart

创建私有中心、策划模型和配置访问控制管理员

本节提供管理员创建私有中心、策划模型和为组织用户配置访问控制的逐步指南。

由于该功能已集成在最新的 SageMaker Python SDK 中,为了使用私有中心的模型细粒度访问控制功能,首先需要更新 SageMaker Python SDK:

bash!pip3 install sagemaker forcereinstall quiet

接下来,导入 SageMaker 和 Boto3 库:

pythonimport boto3from sagemaker import Sessionfrom sagemakerjumpstarthubhub import Hub

配置您的私有中心:

pythonHUBNAME = CompanyHubHUBDISPLAYNAME = 允许的模型HUBDESCRIPTION = 这些是从 JumpStart 公共中心获取的允许模型。REGION = ltyourregionnamegt # 例如 uswest2

在上述代码中,HUBNAME 指定您的中心名称。HUBDISPLAYNAME 是将显示给用户的中心显示名称。HUBDESCRIPTION 是显示给用户的中心描述。

为 SageMaker 设置 Boto3 客户端:

pythonsmclient = boto3client(sagemaker)session = Session(sagemakerclient=smclient)sessiongetcalleridentityarn()

检查以下策略是否已添加到您的管理员 IAM 角色中;如果没有,您可以将其作为内联策略添加:

json{ Version 20121017 Statement [ { Action [ s3ListBucket s3GetObject s3GetObjectTagging ] Resource [ arnawss3jumpstartcacheprodltREGIONgt arnawss3jumpstartcacheprodltREGIONgt/ ] Effect Allow } ]}

用 Step 3 中的配置替换 ltREGIONgt 占位符。

除了为管理员角色设置 IAM 权限,您还需要缩小用户的权限,以便他们不能访问公共内容。

使用以下策略禁止用户对公共中心的访问。这些可以作为用户的 IAM 角色中的内联策略添加:

json{ Version 20121017 Statement [ { Action s3 Effect Deny Resource [ arnawss3jumpstartcacheprodltREGIONgt arnawss3jumpstartcacheprodltREGIONgt/ ] Condition { StringNotLike {s3prefix [ipynb /eulatxt]} } } { Action sagemaker Effect Deny Resource [ arnawssagemakerltREGIONgtawshub/SageMakerPublicHub arnawssagemakerltREGIONgtawshubcontent/SageMakerPublicHub// ] } ]}

用 Step 3 中的配置替换 ltREGIONgt 占位符。

使用以下代码在您所指定的区域内创建私有中心:

pythonhub = Hub(hubname=HUBNAME sagemakersession=session)

try hubcreate( description=HUBDESCRIPTION displayname=HUBDISPLAYNAME ) print(f成功在 {REGION} 创建名为 {HUBNAME} 的中心)except Exception as e if ResourceInUse in str(e) print(f名为 {HUBNAME} 的中心已在您的账户中存在。) else raise e

使用 hubdescribe() 验证您的中心配置。设置好私有中心后,您可以将 SageMaker JumpStart 公共中心中的模型引用添加到您的私有中心。模型艺术品无需由客户管理,SageMaker 团队将管理任何版本或安全更新。如需可用模型的列表,请参阅 带有预训练模型表的内置算法。

要通过编程方法搜索,请运行以下命令:

pythonfiltervalue = framework == metaresponse = hublistsagemakerpublichubmodels(filter=filtervalue)models = response[hubcontentsummaries]while response[nexttoken] response = hublistsagemakerpublichubmodels(filter=filtervalue nexttoken=response[nexttoken]) modelsextend(response[hubcontentsummaries])

print(models)

filter 参数是可选的。有关于可以应用的过滤器列表,请参阅 SageMaker Python SDK。

使用上一步返回的模型创建私有中心的模型引用:

pythonfor model in models print(f正在将 {modelget(hubcontentname)} 添加到中心) hubcreatemodelreference(modelarn=modelget(hubcontentarn) modelname=modelget(hubcontentname))

SageMaker JumpStart 私有中心还提供了其他用于管理和交互策划模型的有用功能。管理员可以使用 hubdescribemodel(modelname=ltmodelnamegt) 命令检查特定模型的元数据。要列出私有中心中所有可用模型,可以使用简单的循环:

pythonresponse = hublistmodels()models = response[hubcontentsummaries]while response[nexttoken] response = hublistmodels(nexttoken=response[nexttoken]) modelsextend(response[hubcontentsummaries])

使用私有中心管理 Amazon SageMaker JumpStart 基础模型访问 机器学习博客

for model in models print(modelget(HubContentArn))

如果您需要从私有中心删除特定的模型引用,请使用以下命令:

pythonhubdeletemodelreference(ltmodelnamegt)

如果您想从您的账户和区域删除私有中心,则需先删除所有 HubContents,然后再删除私有中心。使用以下代码:

pythonfor model in models hubdeletemodelreference(modelname=modelget(HubContentName))

hubdelete()

与允许模型互动用户

本节为用户与 SageMaker JumpStart 中的允许模型互动提供逐步指南。我们演示了如何列出可用模型、识别来自公共中心的模型,并从 SageMaker Studio 以及 SageMaker Python SDK 将模型部署到端点。

SageMaker Studio 中的用户体验

完成以下步骤,以便使用 SageMaker Studio 与允许模型互动:

在 SageMaker Studio 控制台中,选择导航窗格中的 JumpStart,或在预构建和自动化解决方案部分中找到它。

选择您能访问的模型中心。如果用户有多个中心的访问权限,您将看到一系列中心,如下图所示。

如果用户仅能访问一个中心,您将直接进入模型列表。

您可以查看模型详细信息及支持的操作如训练、部署和评估。

若要部署模型,请选择 部署。

修改您的模型配置,例如实例和部署参数,然后选择“部署”。

使用 SageMaker Python SDK 的用户体验

要通过 SageMaker Python SDK 与您的模型互动,请完成以下步骤:

与管理员过程类似,第一步是强制重新安装 SageMaker Python SDK:

bash!pip3 install sagemaker forcereinstall quiet

导入 SageMaker 和 Boto3 库:

pythonimport boto3from sagemaker import Sessionfrom sagemakerjumpstarthubhub import Hubfrom sagemakerjumpstartmodel import JumpStartModelfrom sagemakerjumpstartestimator import JumpStartEstimator

飞驰加速器官网下载

要访问您私有中心中的模型,您需要提供区域和您账户的中心名称。填写 HUBNAME 和 REGION 字段,使用管理员提供的信息:

pythonHUBNAME = CompanyHub REGION = # 例如 uswest2

smclient = boto3client(sagemaker) smruntimeclient = boto3client(sagemakerruntime) session = Session(sagemakerclient=smclient sagemakerruntimeclient=smruntimeclient)hub = Hub(hubname=HUBNAME sagemakersession=session)

使用以下命令列出您私有中心中可用的模型:

pythonresponse = hublistmodels()models = response[hubcontentsummaries]while response[nexttoken] response = hublistmodels(nexttoken=response[nexttoken]) modelsextend(response[hubcontentsummaries])

print(models)

若要获取有关特定模型的更多信息,请使用 describemodel 方法:

pythonmodelname = huggingfacellmphi2response = hubdescribemodel(modelname=modelname) print(response)

您可以使用 Python SDK 通过 JumpStartModel 在中心中部署模型。要将模型从中心部署到端点并用默认有效负载调用该端点,请运行以下代码。为选择要使用的中心中的模型,传入 modelid 和 version。如果您传入 作为 version,它将选择中心中该 modelid 的最新版本。如果您使用的模型需要根据 EULA 协议进行授权,则传入 accepteula=True。

pythonmodelid version = huggingfacellmphi2 100model = JumpStartModel(modelid version hubname=HUBNAME region=REGION sagemakersession=session)predictor = modeldeploy(accepteula=False)

要用默认有效负载调用您的已部署模型,请使用以下代码:

pythonexamplepayloads = modelretrieveallexamples()for payload in examplepayloads response = predictorpredict(payloadbody) print(n输入n payloadbody nn输出n response[0][generatedtext] nn===============)

要删除您创建的模型端点,请使用以下代码:

pythonpredictordeletemodel()predictordeleteendpoint()

跨账户共享私有中心

SageMaker JumpStart 私有中心支持跨账户共享,使您能够将策划的模型资源扩展到您自己的 AWS 账户之外。此功能使多个团队或部门能够进行协作,即使它们在不同的 AWS 账户中运作。通过使用 AWS RAM,您可以安全地共享您的私有中心,同时保持对访问权限的控制。

要跨账户共享您的私有中心,请完成以下步骤:

在 AWS RAM 控制台上,选择创建资源共享。在指定资源共享细节时,选择 SageMaker 中心资源类型,并选择一个或多个您想共享的私有中心。当您与任何其他账户共享中心时,其所有内容也会隐式共享。为您的资源共享关联权限。使用 AWS 账户 ID 指定要授予访问权限的账户。查看资源共享配置并选择创建资源共享。

资源共享和主体关联的完成可能需要几分钟时间。

想要通过编程方式执行前述步骤的管理员可以输入以下命令以启动共享:

bash

使用私有中心创建资源共享

aws ram createresourceshare name testshare resourcearns arnawssagemakerhub/ principals region

请替换 ltresourceowneraccountidgt ltconsumeraccountidgt lthubnamegt 和 ltregiongt 占位符,填入相应的资源拥有账户 ID、消费者账户 ID

  1. 使用 Amazon Connect 和 Amazon Lex 自动化制药行业的不良事件报告 架构博客 使用 Amazon Connect 和 Amazon Lex 自动化制药行业的不良事件报告 架构博客

    自动化药品不良事件报告的解决方案关键要点制药公司需提供客户报告药品使用后不良事件的渠道,以符合监管要求。采用亚马逊Connect和Lex的自助服务交互式语音响应IVR解决方案,提高了客户体验并降低了运营成本。该框架可以作为参考,帮助其他制药公司应对类似问题。每个制造药品的制药公司都必须为全国客户提供...

  1. 如何构建智能互动语音响应IVR呼叫路由系统 商业生产力 如何构建智能互动语音响应IVR呼叫路由系统 商业生产力

    构建智能互动语音应答IVR呼叫路由系统的指南关键要点互动语音应答IVR系统允许来电者通过电话与各种业务系统进行交互。通过Amazon Chime SDK PSTN音频服务结合Amazon Lex,可以构建智能路由的IVR。本文将讲解创建一个简单IVR的步骤,并智能路由呼叫。许多企业运营互动语音应答I...