亚马逊AWS官方博客
通过 Amazon SageMaker JumpStart,在没有互联网连接的 VPC 中,使用生成式人工智能基础模型
- 如何在没有互联网访问的 VPC 中,使用 SageMaker JumpStart 部署 FM
- 在 VPC 模式中,通过 SageMaker JumpStart 模型部署 FM 的优势
- 通过 JumpStart 自定义 FM 部署的其他方法
除了 FLAN-T5 XXL 之外,JumpStart 还为各种任务提供了许多不同的 FM。有关完整列表,请查看 Amazon SageMaker JumpStart 入门。
解决方案概览
在部署解决方案的过程中,我们将介绍以下骤:
- 设置一个没有互联网连接的 VPC。
- 使用我们创建的 VPC 设置 Amazon SageMaker Studio。
- 在没有互联网访问 VPC 中使用 JumpStart,部署生成式人工智能 Flan T5-XXL 基础模型。
下面是该解决方案的架构图。
让我们来看看实施这个解决方案的不同步骤。
先决条件
要为学习本博文做准备,您需要做好以下准备:
- 具备访问 AWS 账户的权限。有关详细信息,请查看创建 AWS 账户。
- AWS Identity and Access Management(IAM)角色,有权部署本解决方案中使用的 AWS CloudFormation 模板,以及管理解决方案中的资源。
设置一个没有互联网连接的 VPC
使用 01_networking.yaml 模板创建新的 CloudFormation 堆栈。此模板创建一个新的 VPC,并在两个可用区中添加了两个没有互联网连接的私有子网。然后,它部署用于访问 Amazon Simple Storage Service(Amazon S3)的网关 VPC 端点,以及用于 SageMaker 的接口 VPC 端点和其他一些服务,以允许 VPC 中的资源通过 AWS PrivateLink 连接到 AWS 服务。
提供堆栈名称,例如 No-Internet
,然后完成堆栈创建过程。
此解决方案不具备高可用性,因为 CloudFormation 模板仅在一个子网中创建接口 VPC 端点,这是为了在执行本博文中的步骤时降低成本。
使用 VPC 设置 Studio
使用 02_sagemaker_studio.yaml 创建另一个 CloudFormation 堆栈,这将创建 Studio 域、Studio 用户配置文件和支持资源,如 IAM 角色等。为堆栈指定一个名称;在本博文中,我们使用名称 SageMaker-Studio-VPC-No-Internet
。向 CoreNetworkingStackName
参数提供您之前创建的 VPC 堆栈的名称(No-Internet
)参数,其他项保留默认值。
稍等片刻,直至 AWS CloudFormation 报告堆栈已创建完成。您可在 SageMaker 控制台上确认,Studio 域现已可用。
要验证 Studio 域用户是否无法访问互联网,请使用 SageMaker 控制台启动 Studio。选择文件、新建和终端,然后尝试访问互联网资源。如以下屏幕截图所示,终端将持续等待资源并最终超时。
这证明 Studio 运行在没有互联网访问的 VPC 中。
使用 JumpStart 部署生成式人工智能基础模型 Flan T5-XXL
我们可以通过 Studio 以及 API 部署这个模型。JumpStart 通过 SageMaker 笔记本提供了部署模型的所有代码,该笔记本可在 Studio 中访问。在这篇博文中,我们展示了 Studio 中的这项功能。
- 在 Studio 欢迎页面上,选择“预构建和自动化解决方案”下的 JumpStart。
- 在基础模型下选择 Flan-T5 XXL 模型。
- 默认情况下,这会打开部署选项卡。展开部署配置部分,更改
托管实例
和端点名称
,或添加任何其他标签。还可以选择更改S3 存储桶位置
,该存储桶用于存储模型构件以创建端点。在本博文中,我们将所有选项保留为默认值。请记录端点名称,以便在调用端点进行预测时使用。
- 展开安全设置部分,您可以在其中指定用于创建端点的
IAM 角色
。您还可以通过提供子网
和安全组
,指定VPC 配置
。在 AWS CloudFormation 控制台上,可以从 VPC 堆栈的“输出”选项卡中找到子网 ID 和安全组 ID。在此配置中,SageMaker JumpStart 需要至少两个子网。子网和安全组控制进出模型容器的访问权限。
注意:无论 SageMaker JumpStart 模型是否部署在 VPC 中,模型始终以网络隔离模式运行,这会隔离模型容器,因此模型容器无法发出入站或出站网络调用,也无法对模型容器执行这些调用。由于我们使用的是 VPC,因此 SageMaker 通过指定的 VPC 下载模型构件。在网络隔离模式下运行模型容器并不会阻止 SageMaker 端点响应推理请求。服务器进程与模型容器一起运行,并向其转发推理请求,但模型容器没有网络访问权限。
- 选择部署以部署模型。我们可以近乎实时地看到端点创建进度。端点可能需要 5 到 10 分钟才能创建完成。
在此页面上,观察模型数据位置字段的值。所有 SageMaker JumpStart 模型托管在由 SageMaker 管理的 S3 存储桶中(s3://jumpstart-cache-prod-{region}
)。因此,无论从 JumpStart 中选择哪个模型,都会从可公开访问的 SageMaker JumpStart S3 存储桶中部署模型,流量永远不会流向公共模型园 API 来下载模型。正因为如此,即使我们在无法直接访问互联网的 VPC 中创建端点,也能成功启动模型端点的创建过程。
模型构件也可以复制到任何私有模型园或您自己的 S3 存储桶,以进一步控制和保护模型源位置。您可以使用 AWS 命令行界面(AWS CLI),通过以下命令在本地下载模型:
aws s3 cp s3://jumpstart-cache-prod-eu-west-1/huggingface-infer/prepack/v1.0.2/infer-prepack-huggingface-text2text-flan-t5-xxl.tar.gz
。
- 几分钟后,端点成功创建,状态显示为服务中。在
使用 Studio 中的端点
部分,选择打开笔记本
。这是作为 JumpStart 体验的一部分提供的示例笔记本,用于快速测试端点。
- 在笔记本中,选择 Data Science 3.0 作为映像,选择 Python 3 作为内核。内核准备就绪后,您可以运行笔记本单元,以在端点上进行预测。请注意,笔记本使用适用于 Python 的 AWS SDK 提供的 invoke_endpoint() API 进行预测。或者,您可以使用 SageMaker Python SDK 的 predict() 方法,获得相同的结果。
这段代码会在无法访问互联网的 VPC 中,使用 JumpStart 部署 Flan-T5 XXL 模型。
在 VPC 模式中部署 SageMaker JumpStart 模型的优势
在 VPC 模式中部署 SageMaker JumpStart 模型,具有下列优势:
- 由于 SageMaker JumpStart 不会从公共模型园下载模型,因此它能够在完全封闭的环境中使用,也能够在没有互联网访问的环境中使用
- 由于可以限制和缩小 SageMaker JumpStart 模型的网络访问范围,这有助于团队改善环境的安保状况
- 由于 VPC 具有边界,它还能够通过子网和安全组限制对端点的访问,这额外增加了一层安全
通过 SageMaker JumpStart 来自定义基础模型部署的其他方法
在此部分中,我们将分享一些部署模型的替代方法。
使用您偏好的 IDE 中提供的 SageMaker JumpStart API
SageMaker JumpStart 提供的模型不需要您访问 Studio。得益于 JumpStart API,您可以从任何 IDE 将模型部署到 SageMaker 端点。您可以跳过本博文前面讨论的 Studio 设置步骤,使用 JumpStart API 来部署模型。这些 API 提供了众多参数,其中还可以提供 VPC 配置。这些 API 是 SageMaker Python SDK 本身的一部分。有关更多信息,请参阅预训练模型。
使用 SageMaker Studio 中 SageMaker JumpStart 提供的笔记本
SageMaker JumpStart 还提供用于直接部署模型的笔记本。在模型详细信息页面上,选择打开笔记本,以打开包含用于部署端点的代码的示例笔记本。笔记本使用 SageMaker JumpStart Industry API,您可用来列出和筛选模型、检索构件以及部署和查询端点。您还能够根据特定使用场景要求来编辑笔记本代码。
清理资源
查看 CLEANUP.md 文件,了解删除在本博文中创建的 Studio、VPC 和其他资源的详细步骤。
故障排除
如果您在创建 CloudFormation 堆栈时遇到任何问题,请参阅 CloudFormation 故障排除。
总结
由大型语言模型提供支持的生成式人工智能,正在改变人们从信息中获取和应用洞察的方式。但是,在具有严格监管要求的领域中开展运营的企业,在使用生成式人工智能的功能时,需要找到一种合适的方法,既要能够更快地进行创新,又能简化访问此类功能的模式。
我们鼓励您尝试本博文中提供的方法,在现有环境中嵌入生成式 AI 功能,同时仍将其保留在自己的 VPC 中,不允许其访问互联网。要进一步了解 SageMaker JumpStart 基础模型,请查看以下内容:
关于作者
Vikesh Pandey 是 AWS 的机器学习专家级解决方案架构师,帮助金融行业的客户设计和构建基于生成式人工智能和机器学习的解决方案。工作之余,Vikesh 喜欢品尝各种美食和参加户外运动。
Mehran Nikoo 是 AWS 的高级解决方案架构师,在英国与数字原生企业合作,帮助他们达成目标。他热衷于将自己的软件工程经验应用于机器学习,专门研究端到端机器学习和 MLOps 实践。