随着生成式人工智能的最新进展,关于如何在不同行业中使用生成式人工智能来解决特定业务问题的讨论越来越多。生成式人工智能是一种可以创建新内容和思想的人工智能,包括对话、故事、图像、视频和音乐。它都是由在大量数据上进行预训练的非常大型模型支持的,通常被称为基础模型(FMs)。这些基础模型可以执行各种跨多个领域的任务,如撰写博客文章、生成图像、解决数学问题、进行对话和根据文档回答问题。基础模型的规模和通用性使它们与传统的机器学习模型不同,后者通常执行特定任务,如分析情感文本、分类图像和预测趋势。
虽然组织机构希望利用这些基础模型的能力,但他们也希望基于基础模型的解决方案在他们自己的受保护环境中运行。在全球金融服务、医疗保健和生命科学等受到严格监管的领域中运营的组织机构有审计和合规要求,要求他们在他们的虚拟私有云(VPC)中运行他们的环境。实际上,在这些环境中,往往甚至禁用直接互联网访问,以避免接触任何意外的流量,包括入站和出站。
Amazon SageMaker JumpStart是一个提供算法、模型和机器学习解决方案的机器学习中心。借助SageMaker JumpStart,机器学习从业者可以从不断增长的最佳表现开源基础模型列表中进行选择。它还提供了在您自己的虚拟私有云(VPC)中部署这些模型的能力。
在本文中,我们将演示如何使用JumpStart在没有互联网连接的VPC中部署Flan-T5 XXL模型。我们将讨论以下主题:
- 如何在没有互联网访问的VPC中使用SageMaker JumpStart部署基础模型
- 通过SageMaker JumpStart模型在VPC模式下部署基础模型的优势
- 通过JumpStart自定义基础模型部署的其他方法
除了FLAN-T5 XXL,JumpStart为各种任务提供了许多不同的基础模型。完整列表请参阅Amazon SageMaker JumpStart入门。
解决方案概述
作为解决方案的一部分,我们涵盖以下步骤:
- 设置没有互联网连接的VPC。
- 使用我们创建的VPC设置Amazon SageMaker Studio。
- 在没有互联网访问的VPC中使用JumpStart部署生成式人工智能Flan T5-XXL基础模型。
以下是解决方案的架构图。
让我们逐步介绍如何实施此解决方案的不同步骤。
前提条件
要跟随本文,您需要以下内容:
- 访问AWS账户。有关详细信息,请参阅创建AWS账户。
- 具有权限在此解决方案中部署AWS CloudFormation模板并管理资源的AWS身份和访问管理(IAM)角色。
设置没有互联网连接的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
。将之前创建的VPC堆栈的名称(No-Internet
)作为CoreNetworkingStackName
参数提供,其他一切保持默认。
等待AWS CloudFormation报告堆栈创建完成。您可以在SageMaker控制台上确认Studio域可供使用。
为了验证Studio域用户没有互联网访问权限,请使用SageMaker控制台启动Studio。选择文件,新建和终端,然后尝试访问互联网资源。如下截图所示,终端将一直等待资源,并最终超时。
这证明Studio正在一个没有互联网访问权限的VPC中运行。
使用JumpStart部署生成AI基础模型Flan T5-XXL
我们可以通过Studio或API部署此模型。JumpStart提供了通过在Studio内访问的SageMaker笔记本部署模型的所有代码。在本文中,我们展示了如何在Studio中展示这种能力。
- 在Studio欢迎页面上,选择预构建和自动化解决方案下的JumpStart。
- 选择Foundation Models下的Flan-T5 XXL模型。
- 默认情况下,它会打开部署选项卡。展开部署配置部分,以更改
hosting instance
和endpoint name
,或添加任何其他标签。还可以更改模型工件存储的S3 bucket location
选项,以创建端点。在本文中,我们将一切都保持默认值。记下端点名称,在调用端点进行预测时使用。
- 展开安全设置部分,您可以指定用于创建端点的
IAM role
。您还可以通过提供子网
和安全组
来指定VPC配置
。子网ID和安全组ID可以在AWS CloudFormation控制台的VPC堆栈的输出选项卡中找到。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。当内核准备就绪时,您可以运行笔记本单元格对端点进行预测。请注意,笔记本使用AWS Python SDK的invoke_endpoint() API进行预测。或者,您也可以使用SageMaker Python SDK的predict()方法来实现相同的结果。
这样就完成了在没有互联网访问的VPC中使用JumpStart部署Flan-T5 XXL模型的步骤。
SageMaker JumpStart模型在VPC模式下部署的优势
将SageMaker JumpStart模型部署在VPC模式下具有以下优势:
- 由于SageMaker JumpStart不从公共模型库下载模型,因此它可以在完全封闭的环境中使用,即使没有互联网访问也可以使用。
- 由于可以对SageMaker JumpStart模型进行网络访问的限制和范围限定,这有助于团队提高环境的安全性。
- 由于VPC的边界,可以通过子网和安全组对端点的访问进行限制,从而增加额外的安全层。
通过SageMaker JumpStart自定义部署基础模型的其他方法
在本节中,我们分享一些部署模型的其他方法。
从您喜欢的IDE使用SageMaker JumpStart APIs
SageMaker JumpStart提供的模型无需访问Studio,您可以通过JumpStart APIs从任何IDE将它们部署到SageMaker端点。您可以跳过本文早期讨论的Studio设置步骤,使用JumpStart APIs来部署模型。这些API提供了可以提供VPC配置的参数。这些API本身是SageMaker Python SDK的一部分。有关更多信息,请参阅预训练模型。
在SageMaker Studio中使用SageMaker JumpStart提供的笔记本
SageMaker JumpStart还提供了笔记本来直接部署模型。在模型详细页面上,选择打开笔记本以打开包含部署端点代码的示例笔记本。该笔记本使用SageMaker JumpStart行业API,允许您列出和过滤模型,检索工件,并部署和查询端点。您还可以根据您的用例特定需求编辑笔记本代码。
清理资源
查看CLEANUP.md文件以找到删除Studio、VPC和其他在本文中创建的资源的详细步骤。
故障排除
如果在创建CloudFormation堆栈时遇到任何问题,请参考故障排除CloudFormation。
结论
由大型语言模型驱动的生成型AI正在改变人们从信息中获取和应用洞见的方式。然而,在严重受监管的领域运营的组织需要以一种允许他们更快创新但也简化访问这种能力的方式使用生成型AI能力。
我们鼓励您尝试本文提供的方法,将生成型AI能力嵌入到您现有的环境中,同时仍然保持在您自己的VPC内且无需互联网访问。有关SageMaker JumpStart基础模型的更多阅读,请查看以下内容:
- 在Amazon SageMaker JumpStart上基于金融数据进行领域自适应微调的基础模型
- 使用Amazon SageMaker JumpStart预训练模型实施MLOps实践