亚马逊AWS官方博客

通过 Amazon SageMaker JumpStart,在没有互联网连接的 VPC 中,使用生成式人工智能基础模型

随着 生成式人工智能近期不断进步,其相关讨论也日渐热烈,寻求如何在不同行业使用生成式人工智能来解决特定的业务问题。生成式人工智能是一种能够创造新内容和新想法的人工智能,包括对话、故事、图像、视频和音乐。其所有功能都由超大型机器学习模型提供支持,这些模型基于海量数据进行预训练后生成,通常称为 基础模型(FM)。这些 FM 可以跨越多个领域执行各种任务,例如撰写博客文章、生成图像、解决数学问题、以对话方式进行互动以及根据一个文档回答问题。根基模型的规模和通用性使其有别于传统的机器学习模型,后者通常执行特定任务,如文本情绪分析、图像分类和趋势预测。企业在寻求利用这些 FM 的强大功能的同时,还希望在自己有充分保护措施的环境中,运行基于基础模型的解决方案。一些在具有严格监管要求的领域中运营的企业,例如全球金融服务、医疗保健和生命科学等领域中的企业,还面临着审计与合规性要求,要在自己的 VPC 中运行其环境。实际上在这些环境中,很多时候,即使是直接的互联网访问也会被禁用,以避免暴露于任何意外的流量,包括入口和出口。 Amazon SageMaker JumpStart 是一个机器学习中心,提供算法、模型和机器学习解决方案。借助 SageMaker JumpStart,机器学习从业人员能够自由地选择具有最佳性能的开源 FM,而且其中的模型数量仍在不断增长。该服务还提供了在自己的 虚拟私有云(VPC)中部署这些模型的功能。在这篇博文中,我们将演示如何使用 JumpStart,在没有互联网连接的 VPC 中部署 Flan-T5 XXL 模型。我们将讨论以下主题:

  • 如何在没有互联网访问的 VPC 中,使用 SageMaker JumpStart 部署 FM
  • 在 VPC 模式中,通过 SageMaker JumpStart 模型部署 FM 的优势
  • 通过 JumpStart 自定义 FM 部署的其他方法

除了 FLAN-T5 XXL 之外,JumpStart 还为各种任务提供了许多不同的 FM。有关完整列表,请查看 Amazon SageMaker JumpStart 入门

解决方案概览

在部署解决方案的过程中,我们将介绍以下骤:

  1. 设置一个没有互联网连接的 VPC。
  2. 使用我们创建的 VPC 设置 Amazon SageMaker Studio
  3. 在没有互联网访问 VPC 中使用 JumpStart,部署生成式人工智能 Flan T5-XXL 基础模型。

下面是该解决方案的架构图。

sol-arch

让我们来看看实施这个解决方案的不同步骤。

先决条件

要为学习本博文做准备,您需要做好以下准备:

设置一个没有互联网连接的 VPC

使用 01_networking.yaml 模板创建新的 CloudFormation 堆栈。此模板创建一个新的 VPC,并在两个可用区中添加了两个没有互联网连接的私有子网。然后,它部署用于访问 Amazon Simple Storage Service(Amazon S3)的网关 VPC 端点,以及用于 SageMaker 的接口 VPC 端点和其他一些服务,以允许 VPC 中的资源通过 AWS PrivateLink 连接到 AWS 服务。

提供堆栈名称,例如 No-Internet,然后完成堆栈创建过程。

vpc-stack-input

此解决方案不具备高可用性,因为 CloudFormation 模板仅在一个子网中创建接口 VPC 端点,这是为了在执行本博文中的步骤时降低成本。

使用 VPC 设置 Studio

使用 02_sagemaker_studio.yaml 创建另一个 CloudFormation 堆栈,这将创建 Studio 域、Studio 用户配置文件和支持资源,如 IAM 角色等。为堆栈指定一个名称;在本博文中,我们使用名称 SageMaker-Studio-VPC-No-Internet。向 CoreNetworkingStackName 参数提供您之前创建的 VPC 堆栈的名称(No-Internet)参数,其他项保留默认值。

studio-cfn-stack-input

稍等片刻,直至 AWS CloudFormation 报告堆栈已创建完成。您可在 SageMaker 控制台上确认,Studio 域现已可用。

domain-home

要验证 Studio 域用户是否无法访问互联网,请使用 SageMaker 控制台启动 Studio。选择文件新建终端,然后尝试访问互联网资源。如以下屏幕截图所示,终端将持续等待资源并最终超时。

studio-terminal

这证明 Studio 运行在没有互联网访问的 VPC 中。

使用 JumpStart 部署生成式人工智能基础模型 Flan T5-XXL

我们可以通过 Studio 以及 API 部署这个模型。JumpStart 通过 SageMaker 笔记本提供了部署模型的所有代码,该笔记本可在 Studio 中访问。在这篇博文中,我们展示了 Studio 中的这项功能。

  • 在 Studio 欢迎页面上,选择“预构建和自动化解决方案”下的 JumpStart

studio-welcome-page

  • 基础模型下选择 Flan-T5 XXL 模型。

js-model-hub

  • 默认情况下,这会打开部署选项卡。展开部署配置部分,更改托管实例端点名称,或添加任何其他标签。还可以选择更改 S3 存储桶位置,该存储桶用于存储模型构件以创建端点。在本博文中,我们将所有选项保留为默认值。请记录端点名称,以便在调用端点进行预测时使用。

deploy-js

  • 展开安全设置部分,您可以在其中指定用于创建端点的 IAM 角色。您还可以通过提供子网安全组,指定 VPC 配置。在 AWS CloudFormation 控制台上,可以从 VPC 堆栈的“输出”选项卡中找到子网 ID 和安全组 ID。在此配置中,SageMaker JumpStart 需要至少两个子网。子网和安全组控制进出模型容器的访问权限。

js-deploy-security-settings

注意:无论 SageMaker JumpStart 模型是否部署在 VPC 中,模型始终以网络隔离模式运行,这会隔离模型容器,因此模型容器无法发出入站或出站网络调用,也无法对模型容器执行这些调用。由于我们使用的是 VPC,因此 SageMaker 通过指定的 VPC 下载模型构件。在网络隔离模式下运行模型容器并不会阻止 SageMaker 端点响应推理请求。服务器进程与模型容器一起运行,并向其转发推理请求,但模型容器没有网络访问权限。

  • 选择部署以部署模型。我们可以近乎实时地看到端点创建进度。端点可能需要 5 到 10 分钟才能创建完成。

js-deploy-progress

在此页面上,观察模型数据位置字段的值。所有 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 体验的一部分提供的示例笔记本,用于快速测试端点。

jumpstart-deploy-complete

run-deploy-notebook-jumpstart

这段代码会在无法访问互联网的 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,您可用来列出和筛选模型、检索构件以及部署和查询端点。您还能够根据特定使用场景要求来编辑笔记本代码。

open-jumpstart-notebook

清理资源

查看 CLEANUP.md 文件,了解删除在本博文中创建的 Studio、VPC 和其他资源的详细步骤。

故障排除

如果您在创建 CloudFormation 堆栈时遇到任何问题,请参阅 CloudFormation 故障排除

总结

由大型语言模型提供支持的生成式人工智能,正在改变人们从信息中获取和应用洞察的方式。但是,在具有严格监管要求的领域中开展运营的企业,在使用生成式人工智能的功能时,需要找到一种合适的方法,既要能够更快地进行创新,又能简化访问此类功能的模式。

我们鼓励您尝试本博文中提供的方法,在现有环境中嵌入生成式 AI 功能,同时仍将其保留在自己的 VPC 中,不允许其访问互联网。要进一步了解 SageMaker JumpStart 基础模型,请查看以下内容:


Original URL: https://aws.amazon.com/blogs/machine-learning/use-generative-ai-foundation-models-in-vpc-mode-with-no-internet-connectivity-using-amazon-sagemaker-jumpstart/

关于作者

Vikesh Pandey 是 AWS 的机器学习专家级解决方案架构师,帮助金融行业的客户设计和构建基于生成式人工智能和机器学习的解决方案。工作之余,Vikesh 喜欢品尝各种美食和参加户外运动。

Mehran Nikoo 是 AWS 的高级解决方案架构师,在英国与数字原生企业合作,帮助他们达成目标。他热衷于将自己的软件工程经验应用于机器学习,专门研究端到端机器学习和 MLOps 实践。