AWS 上的生成式 AI - 快速指南

AWS 上的生成式 AI - 简介

生成式 AI 是指能够基于训练数据生成新内容(例如文本、图像或音频)的人工智能系统。它广泛地描述了机器学习 (ML) 模型或算法。

机器学习模型使用神经网络来学习数据中的模式和结构。一旦学习完成,神经网络便允许它们创建类似于人类生成内容的输出。生成式预训练转换器 (GPT) 和变分自动编码器 (VAE) 是引领这场 AI 革命的两种生成式 AI 模型。

AWS 提供了一个强大的平台,可以高效地构建、训练和部署这些复杂模型。AWS 还提供基于云的服务,即 AWS SageMakerAWS LambdaAmazon EC2Elastic Inference,允许企业将生成式 AI 集成到其运营中。这些服务旨在支持 Gen AI 模型的基础设施和计算需求。

为什么 AWS 适用于生成式 AI?

AWS 的重要功能使其成为生成式 AI 的理想选择,如下所示 −

  • 可扩展性 − AWS 最有用的功能之一是其可扩展性。无论您是在训练小型 AI 模型还是部署大型 AI 应用程序,AWS 都可以相应地扩展。
  • 成本效益 − AWS 服务(如 EC2 Spot 实例和 AWS Lambda)允许企业仅按使用量付费,从而降低计算成本。
  • 集成 − AWS 可轻松与流行的 AI 框架(如 TensorFlow、PyTorch 和 MXNet)集成,使开发人员能够轻松训练和部署模型。

生成式 AI 的实际应用

生成式 AI 已成为各个行业的强大工具。借助 AWS 全面的 AI 和机器学习服务,企业可以轻松地将生成式 AI 用于实际应用。

在本节中,我们重点介绍了 AWS 生成式 AI 的一些用例(实际应用)−

自然语言处理 (NLP) 和聊天机器人

借助生成式 AI,您可以创建高度交互且像人类一样的聊天机器人。公司正在使用 Amazon Lex 和 SageMaker 等 AWS 服务来训练、部署和扩展 AI 模型,为客户服务机器人、虚拟助手和自动响应系统提供支持。

图像和视频生成

生成式 AI 模型(如 GAN(生成对抗网络))用于生成逼真的图像和视频。公司正在使用 AWS 的可扩展基础设施来训练这些复杂模型,以用于内容创建、营销和电影制作等应用。

代码生成和软件开发

生成式 AI 可以生成代码片段,自动执行重复的编程任务,甚至建议改进代码库。这有助于开发人员更快地编写代码,减少错误。

个性化内容和推荐系统

生成式 AI 用于为用户创建自定义内容,例如个性化产品建议、营销电子邮件和网站文本。AWS 的机器学习使企业能够轻松地为客户提供独特的体验。

创意艺术与设计

生成式人工智能通过使艺术家和设计师能够创作音乐、艺术品和图案,改变了创意艺术。

生成式人工智能可以根据特定风格生成数字艺术或创作特定类型的音乐。它为艺术家提供了一种表达创造力的新方式。

合成数据生成

现实世界的数据有限或过于昂贵,无法用于您的 ML 项目。这就是为什么生成合成数据是一项重要的 AI 应用。生成式人工智能可以创建大型数据集来训练机器学习模型。

AWS 上的生成式 AI - 环境设置

让我们了解如何设置 AWS 账户并为生成式人工智能配置环境。

设置 AWS 账户

要将 AWS 用于生成式人工智能,我们首先需要创建并设置一个 AWS 账户。在本节中,我们将逐步解释如何设置您的 AWS 账户 −

步骤 1:注册 AWS

首先,导航到 AWS 网站并单击"创建 AWS 账户"。接下来,输入您的电子邮件,创建一个强密码,并选择一个唯一的 AWS 账户名称。

步骤 2:完成账户设置

要完成账户设置,首先输入您的联系方式,包括您的电话号码和地址。接下来,您需要选择账户类型。这取决于您的需求,可以是个人专业

对于账单,您需要提供有效的信用卡。

步骤 3:验证您的身份

AWS 将通过短信或语音电话发送验证码以确认您的电话号码。您需要输入此代码才能继续。

步骤 4:选择支持计划

AWS 有多个支持计划,包括基本版(免费)、开发者版、商业版和企业版。您可以根据需要选择任意一个。您的账户现已设置完毕。

第 5 步:登录 AWS 管理控制台

现在您可以登录 AWS 管理控制台,从那里您可以启动 EC2SageMaker 等服务,用于 Generative AI

配置您的 AWS 环境

拥有 AWS 账户后,下一步是配置您的环境以开发和部署生成式 AI 模型。

我们在此处提供了如何配置 AWS 环境的分步过程 −

步骤 1:设置 IAM 用户和角色

首先,为自己创建一个 IAM(身份和访问管理) 用户,而不是使用根账户进行日常操作。

通过创建策略来分配必要的权限,这些策略提供对 EC2、AWS SageMaker 和 Amazon S3 等服务的访问权限。

最后,为 IAM 用户启用多重身份验证 (MFA)。它增强了安全性。

第 2 步:选择用于生成式 AI 的 AWS 服务

AWS 提供各种服务,例如 Amazon SageMaker、AWS Lambda、Amazon EC2Amazon S3,您可以将它们用于 Gen AI 任务。

第 3 步:启动 EC2 实例进行训练

出于训练目的,我们需要启动 EC2 实例。EC2 提供可扩展的计算资源来训练大型模型。

首先,您可以启动一个支持 GPU 的 EC2 实例(例如 p3.2xlargeg4dn.xlarge)。您还可以使用竞价型实例来节省成本。

接下来,使用预装了TensorFlowPyTorch和 MXNet 等框架的深度学习 AMI

步骤 4:配置网络和安全

要安全地运行您的实例,首先设置VPC(虚拟私有云),然后配置安全组以限制对实例的访问。

步骤 5:安装基本库和框架

如果您不使用深度学习 AMI,请安装 PyTorch、TensorFlow 或 Hugging 等库在您的 EC2 实例或 SageMaker 笔记本上查看。

例如,您可以使用以下命令安装 PyTorch −

pip install torch torchvision

步骤 6:设置 S3 存储桶用于数据存储

安装完必要的库后,您需要创建一个 S3 存储桶 来存储您的训练数据、模型检查点和日志。

步骤 7:连接和配置 AWS CLI

接下来,在本地计算机上安装 AWS CLI 以通过编程方式与 AWS 服务交互。

安装后,使用您的 访问密钥 ID秘密访问密钥 配置 AWS CLI。

使用以下命令 −

aws configure

第 8 步:监控和优化资源

您可以使用 Amazon CloudWatch 监控 EC2 实例的性能,跟踪 CPU、内存和 GPU 利用率。

为了控制成本,您还可以通过 AWS BillingCost Explorer 设置 预算和警报,以跟踪您在 AI 资源上的支出。

AWS 上的生成式 AI - SageMaker

SageMaker 是一个完全托管的机器学习(ML) 服务,专门用于简化构建、训练和部署机器学习模型的过程。它还包括 生成式人工智能 (Gen AI) 模型。

GPT(生成式预训练转换器)和 GAN(生成式对抗网络)等生成式人工智能模型需要大量计算资源才能有效训练。AWS SageMaker 提供了一个集成环境,可简化从数据预处理到模型部署的过程。/p>

SageMaker 如何支持生成式人工智能?

SageMaker 提供了一组在生成式人工智能中非常有用的功能 −

预构建算法

SageMaker 为 NLP、图像分类等任务提供了预构建算法。它节省了用户为 Gen AI 模型开发自定义代码的时间。

分布式训练

SageMaker 支持分布式训练,可让您跨多个 GPU 或实例训练大型 Gen AI 模型。

SageMaker Studio

SageMaker Studio 是一个开发环境,您可以在其中准备数据、构建模型并尝试不同的超参数。

内置 AutoML

SageMaker 包含 AutoML 功能,借助这些功能,您可以自动调整超参数并优化 Gen AI 模型的性能。

托管 Spot 训练

AWS SageMaker 允许您使用 EC2 Spot 实例 进行训练。它可以降低运行资源密集型 Gen AI 模型的成本。

使用 SageMaker 训练 Gen-AI 模型

我们需要强大的计算能力来训练生成式 AI 模型,尤其是在使用 GPT 或 GAN 等大规模模型时。AWS SageMaker 通过提供 GPU 加速实例分布式训练 功能,让训练过程更加轻松。

使用 SageMaker 部署 Gen-AI 模型

模型训练完成后,您可以使用 AWS SageMaker 以可扩展且经济高效的方式进行部署。

您可以使用 SageMaker Endpoints 部署模型,它可以根据流量自动扩展。此功能可确保您的 Gen AI 模型能够处理不断增长的需求。

使用 SageMaker 训练和部署 Gen AI 模型的 Python 程序

这里我们重点介绍了一个 Python 示例,该示例展示了如何使用 AWS SageMaker 使用预构建算法训练和部署生成式 AI 模型。

对于此示例,我们将使用基本的 Hugging Face 预训练转换器模型(如 GPT 2)进行文本生成。

在执行此示例之前,您必须拥有一个 AWS 账户、必要的 AWS 凭证以及安装的 sagemaker 库。

步骤 1:安装必要的库

使用以下命令安装必要的 Python 包 −

pip install sagemaker transformers

步骤 2:设置 SageMaker 和 AWS 配置

导入必要的库并设置 AWS SageMaker 环境。

import sagemaker
from sagemaker.huggingface import HuggingFace
import boto3

# 创建 SageMaker 会话
sagemaker_session = sagemaker.Session()

# 设置您的 AWS 区域
region = boto3.Session().region_name

# 定义执行角色(用您自己的角色 ARN 替换)
role = 'arn:aws:iam::YOUR_AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole'

# 定义用于存储模型工件和数据的 S3 存储桶
bucket = 'your-s3-bucket-name'

步骤3:定义 Hugging Face 模型参数

在这里,我们需要定义使用 SageMaker 训练 GPT-2 模型 的模型参数。

# 指定 Hugging Face 模型及其版本
huggingface_model = HuggingFace(
    entry_point = 'train.py', # 您的训练脚本
    source_dir = './scripts', # 包含您的脚本的目录
    instance_type = 'ml.p3.2xlarge',# GPU 实例
    instance_count=1,
    role = role,
    transformers_version = '4.6.1', # Hugging Face Transformers 版本
    pytorch_version = '1.7.1',
    py_version = 'py36',
    hyperparameters = {
    	'model_name': 'gpt2', # 预训练的 GPT-2 模型
        'epochs': 3,
        'train_batch_size': 16
    }
)

第 4 步:准备训练数据

对于此示例,我们需要将预处理数据存储在 Amazom S3 存储桶中。数据可以是 CSV、JSON 或纯文本格式。

# 定义训练数据的 S3 路径
training_data_s3_path = f's3://{bucket}/train-data/'

# 启动训练作业
huggingface_model.fit(training_data_s3_path)

第 5 步:部署训练模型进行推理

训练模型后,将其部署到 SageMaker 端点以进行实时推理。

# 将模型部署到 SageMaker 端点
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type='ml.m5.large'
)

第 6 步:使用已部署的模型生成文本

部署模型后,您可以通过向端点发送提示进行文本生成来进行预测。

# 定义文本生成的提示
prompt = "Once upon a time"

# 使用预测器生成文本
response = predictor.predict({
    'inputs': prompt
})

# 打印生成的文本
print(response)

第 7 步:清理资源

完成任务后,建议删除已部署的端点,以避免产生不必要的费用。

predictor.delete_endpoint()

AWS 上的生成式 AI - Lambda

AWS Lambda 是 AWS 提供的无服务器计算服务,可让您运行代码而无需管理服务器。它会根据传入的请求自动扩展您的应用程序,并确保仅在需要时使用资源。

对于生成式 AIAWS Lambda 可用于执行实时推理、预处理数据或为 AI 模型编排工作流等任务。您还可以将其与其他 AWS 服务(如 SageMaker 或 EC2)集成,以构建用于训练、部署和运行 Gen AI 模型的完整解决方案。

用于生成式 AI 的 AWS Lambda 的功能

以下列出了 AWS Lambda 的一些主要功能,这些功能对于训练和部署生成式 AI 非常有用 −

  • 无服务器执行
  • 事件驱动架构
  • 自动扩展
  • 成本效益

使用 AWS Lambda 在生成式 AI 中进行实时推理

AWS Lambda 可与经过训练的生成式 AI 模型一起使用,以提供实时推理功能。

例如,一旦文本生成使用 SageMaker 部署模型后,Lambda 可用于在收到新输入时实时触发预测。它对聊天机器人和内容创建等应用程序很有用。

实施示例

以下示例将展示如何使用 AWS Lambda 和 SageMaker 进行实时文本生成。

步骤 1:先决条件

实施此示例的先决条件是 −

  • 作为端点部署的 AWS SageMaker 模型。示例:GPT-2 模型
  • 安装了 boto3 库,您可以使用它从 Lanbda 函数调用 AWS SageMaker 端点。

如果您没有安装 boto3,可以使用以下命令安装它 −

pip install boto3

步骤 2:AWS Lambda 函数

下面给出了 AWS Lambda 函数的 Python 代码,该函数调用 SageMaker 端点进行实时文本生成 −

import boto3
import json

# 初始化 SageMaker 运行时客户端
sagemaker_runtime = boto3.client('sagemaker-runtime')

# 指定您的 SageMaker 端点名称
# 模型必须已部署
SAGEMAKER_ENDPOINT_NAME = 'your-sagemaker-endpoint-name'

def lambda_handler(event, context):
    # 从 Lambda 事件中提取输入文本
    # 例如,来自聊天机器人的用户输入
    user_input = event.get('input_text', 'Hello!')
    
    # 为 SageMaker 模型创建有效负载
    # 准备用于文本生成的输入
    payload = json.dumps({'inputs': user_input})
    
    # 调用 SageMaker 端点生成文本
    response = sagemaker_runtime.invoke_endpoint(
      EndpointName = SAGEMAKER_ENDPOINT_NAME,
      ContentType = 'application/json',      
      Body = payload                         
    )

    # 解析来自 SageMaker 的响应
    result = json.loads(response['Body'].read().decode())
    
    # 从响应中提取生成的文本
    generated_text = result.get('generated_text', 'No response generated.')
    
    # 将生成的文本返回给用户(作为 Lambda 输出)
    return {
      'statusCode': 200,
      'body': json.dumps({
         'input_text': user_input,
         'generated_text': generated_text
      })
   }

步骤 3:部署 Lambda 函数

编写 Lambda 函数后,我们需要部署它。请按照下面给出的步骤 −

创建 Lambda 函数

  • 首先,登录到您的 AWS Lambda
  • 创建一个新的 Lambda 函数并选择 Python 3.x 作为运行时。
  • 最后,将上述代码添加到您的 Lambda 函数中。

设置 IAM 权限

Lambda 函数的执行角色应具有调用 SageMaker 端点的权限。为此,请附加 AmazonSageMakerFullAccess 或具有 SageMaker 访问权限的自定义角色。

步骤 4:测试 Lambda 函数

现在,您可以通过传递带有 input_text 字段的示例事件来手动测试 Lambda 函数,如下所示 −

{
   "input_text": "Once upon a time"
}

输出将是一个 JSON 响应,其中包含用户的输入和模型生成的文本,如下所示 −

{
   "input_text": "Once upon a time",
   "generated_text": "Once upon a time, there was a king who ruled a beautiful kingdom..."
}

AWS 上的生成式 AI - EC2

Amazon EC2(弹性计算云) 是一种多用途计算服务,可提供虚拟机来运行各种类型的工作负载。AWS EC2 是训练、部署和运行那些需要高性能计算 (HPC) 资源的模型(尤其是 Gen AI 模型)的重要组成部分。

AWS EC2 提供高计算能力、可扩展性、灵活性和成本效益。这些强大的功能对于训练和部署生成式 AI非常有用。

将 AWS Elastic Inference 与 EC2 实例结合使用

AWS Elastic Inference 可用于 Gen AI 模型,以扩展 GPU 推理,而无需处理专用 GPU 服务器和其他实例。

AWS Elastic Inference 允许我们将所需的 GPU 能力连接到 EC2、AWS SageMaker 或 EC2 实例。

实施示例

在以下示例中,我们将使用 AWS Elastic Inference 与 EC2 实例和预先训练的生成式 AI 模型(如 GPT 或 GAN)。

实施此示例的先决条件如下 −

  • Elastic Inference 加速器(可连接到EC2)。
  • 您想要用于推理的预训练生成式 AI 模型(例如 GAN、GPT)。
  • 适用于 EC2 实例的 AWS CLI 和支持 Elastic Inference 的深度学习 AMI。

现在,请按照下面给出的步骤 −

步骤 1:使用 EC2 设置 Elastic Inference

启动 EC2 实例以执行推理任务时,您需要附加 Elastic Inference 加速器。让我们看看如何做到这一点 −

要启动具有 Elastic Inference 的 EC2 实例 −

  • 首先,转到 EC2 控制台并单击启动实例。
  • 选择支持 Elastic Inference 的 AMI。例如 - Deep Learning AMI。
  • 接下来,选择实例类型(例如,t2.medium)。但请记住不要选择 GPU 实例,因为您将连接 Elastic Inference 加速器。
  • 最后,在 Elastic Inference Accelerator 下,选择合适的加速器(例如,eia2.medium,它提供中等的 GPU 能力)。

启动 EC2 实例后,在启动 EC2 实例时连接 Elastic Inference 加速器,以提供推理所需的 GPU 能力。

第 2 步:安装必要的库

连接并运行带有 Elastic Inference 的 EC2 实例后,安装以下 Python 库 −

# 更新并安装 pip
sudo apt-get update
sudo apt-get install -y python3-pip

# 安装 torch、torchvision 和 AWS Elastic Inference 客户端
pip3 install torch torchvision
pip3 install awscli --upgrade
pip3 install elastic-inference

步骤 3:加载预先训练的生成式 AI 模型(例如 GPT)

在此示例中,我们将使用来自 Hugging Face 的预先训练的 GPT-2 模型(生成式预训练 Transformer)。

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel

# 从 Hugging Face 加载预先训练的 GPT-2 模型和 tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

# 将模型移至 Elastic Inference 加速器(如果可用)
if torch.cuda.is_available():
    model.to('cuda')

# 将模型设置为评估模式以进行推理
model.eval()

模型现已加载并准备好使用 Elastic Inference 执行推理。

步骤 4:定义一个函数来运行实时推理

我们定义一个函数来使用 GPT-2 模型生成文本。

def generate_text(prompt, max_length=50):
    # 对输入提示进行标记
    inputs = tokenizer.encode(prompt, return_tensors="pt")
    
    # 如果 Elastic Inference 可用,则将输入移动到 GPU
    if torch.cuda.is_available():
        inputs = input.to('cuda')
    
    # 使用 GPT-2 生成文本
    with torch.no_grad():
        outputs = model.generate(inputs, max_length = max_length, num_return_sequences = 1)
    
    # 解码并返回生成的文本
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return generated_text

第 5 步:测试模型

让我们通过运行推理来测试模型。此函数将根据提示生成文本并返回生成的文本。

prompt = "In the future, artificial intelligence will"
generated_text = generate_text(prompt)
print("Generated Text:
", generated_text)

AWS 上的生成式 AI - 监控和优化

AWS 提供了多种工具和服务来监控生成 AI 模型的运行状况和性能 −

Amazon CloudWatch

CloudWatch 是 AWS 中的基本监控工具。它允许您跟踪性能指标,例如 CPU 使用率、GPU 利用率、延迟和内存消耗。

您可以创建 CloudWatch Alarms 来设置这些指标的阈值。当模型的性能与预期值不同时,它会发送警报。

AWS X-Ray

要对 Gen AI 模型进行更深入的分析,您可以使用 AWS X-Ray。它提供分布式跟踪。当生成式 AI 模型集成到更大的系统(例如,Web 应用程序、微服务)中时,此工具特别有用。

SageMaker 模型监视器

如果您使用 Amazon SageMaker 部署 Gen AI,则模型监视器可以自动跟踪模型中的错误和偏差。它监控预测的质量,并确保在输入新数据时模型仍保持准确。

弹性推理指标

您可以使用弹性推理指标来监控适合您模型需求的 GPU 功率。您可以根据需要调整 GPU 容量。

在 AWS 上优化 Gen AI 模型

在 AWS 上优化您的生成式 AI 模型是一项重要任务,可以实现更快的推理时间、降低成本并保持模型准确性。

在本节中,我们重点介绍了一组可用于优化 AWS 上的生成式 AI 模型的方法 −

自动扩展

始终为 EC2 实例或 Amazon SageMaker 端点启用自动扩展。它允许 AWS 根据您当前的需求自动调整实例数量。这种技术可确保您始终拥有足够的资源,而不会增加使用成本。

使用 Elastic Inference

为了进行优化,建议使用 Elastic Inference 将适量的 GPU 功率连接到 CPU 实例。这种方法可以降低成本并确保推理期间的高性能。

模型压缩

您可以使用修剪或量化等技术来减小生成式 AI 模型的大小。

批量推理

当不需要实时预测时,您可以使用批量推理,它允许您在一次运行中处理多个输入。它减少了整体计算负载。

使用 Docker 容器

您可以将 Docker 容器与 Amazon ECSFargate 一起使用。它允许您优化部署并更轻松地管理资源。