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



AWS 上的生成式 AI - 简介

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

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

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

为什么选择 AWS 用于生成式 AI?

下面列出了使 AWS 成为生成式 AI 理想平台的重要功能 -

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

生成式 AI 的实际应用

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

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

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

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

图像和视频生成

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

代码生成和软件开发

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

个性化内容和推荐系统

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

创意艺术与设计

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

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

合成数据生成

现实世界中的数据有限或使用成本过高,无法用于您的机器学习项目。因此,生成合成数据是一项重要的 AI 应用。生成式 AI 可以创建大型数据集来训练机器学习模型。

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

让我们了解一下如何设置 AWS 账户并为生成式 AI 配置我们的环境。

设置 AWS 账户

要将 AWS 用于生成式 AI,我们首先需要创建和设置 AWS 账户。在本节中,我们将逐步说明如何设置您的 AWS 账户 -

步骤 1:注册 AWS

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

步骤 2:完成账户设置

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

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

步骤 3:验证您的身份

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

步骤 4:选择支持计划

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

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

现在,您可以登录AWS 管理控制台,从中可以启动EC2SageMaker等服务,用于生成式 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,您可以将这些服务用于生成式 AI 任务。

步骤 3:启动用于训练的 EC2 实例

为了进行训练,我们需要启动 EC2 实例。EC2 为训练大型模型提供了可扩展的计算资源。

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

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

步骤 4:配置网络和安全

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

步骤 5:安装必要的库和框架

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

例如,您可以使用以下命令安装 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 账单成本探查器设置预算和警报以跟踪您在 AI 资源上的支出。

AWS 上的生成式 AI - SageMaker

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

诸如 GPT(生成式预训练转换器)和 GAN(生成对抗网络)之类的生成式 AI 模型需要大量的计算资源才能有效地进行训练。AWS SageMaker 提供了一个集成的环境,简化了从数据预处理到模型部署的过程。

SageMaker 如何支持生成式 AI?

SageMaker 提供了一组在生成式 AI 中非常有用的功能 -

预构建算法

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

分布式训练

SageMaker 支持分布式训练,允许您跨多个 GPU 或实例训练大型生成式 AI 模型。

SageMaker Studio

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

内置 AutoML

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

托管 Spot 训练

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

使用 SageMaker 训练生成式 AI 模型

我们需要强大的计算能力来训练生成式 AI 模型,尤其是在处理 GPT 或 GAN 等大型模型时。AWS SageMaker 通过提供支持 GPU 的实例分布式训练功能来简化这一过程。

使用 SageMaker 部署生成式 AI 模型

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

您可以使用SageMaker 端点部署您的模型,该端点根据流量提供自动扩展。此功能确保您的生成式 AI 模型能够处理不断增长的需求。

使用 SageMaker 训练和部署生成式 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

# Create a SageMaker session
sagemaker_session = sagemaker.Session()

# Set your AWS region
region = boto3.Session().region_name

# Define the execution role (replace with your own role ARN)
role = 'arn:aws:iam::YOUR_AWS_ACCOUNT_ID:role/service-role/AmazonSageMaker-ExecutionRole'

# Define the S3 bucket for storing model artifacts and data 
bucket = 'your-s3-bucket-name'

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

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

# Specify the Hugging Face model and its version
huggingface_model = HuggingFace(
    entry_point = 'train.py',  		# Your training script
    source_dir = './scripts',  		# Directory containing your script
    instance_type = 'ml.p3.2xlarge',# GPU instance
    instance_count=1,
    role = role,
    transformers_version = '4.6.1', # Hugging Face Transformers version
    pytorch_version = '1.7.1',
    py_version = 'py36',
    hyperparameters = {
        'model_name': 'gpt2',  		# Pre-trained GPT-2 model
        'epochs': 3,
        'train_batch_size': 16
    }
)

步骤 4:准备训练数据

在本例中,我们需要将预处理后的数据存储在 Amazon S3 存储桶中。数据可以是 CSV、JSON 或纯文本格式。

# Define the S3 path to your training data
training_data_s3_path = f's3://{bucket}/train-data/'

# Launch the training job
huggingface_model.fit(training_data_s3_path)

步骤 5:部署训练好的模型以进行推理

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

# Deploy the model to a SageMaker endpoint
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type='ml.m5.large'
)

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

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

# Define a prompt for text generation
prompt = "Once upon a time"

# Use the predictor to generate text
response = predictor.predict({
    'inputs': prompt
})

# Print the generated text
print(response)

步骤 7:清理资源

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

predictor.delete_endpoint()

AWS 上的生成式 AI - Lambda

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

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

AWS Lambda 的生成式 AI 功能

以下是 AWS Lambda 的一些关键功能,这些功能对训练和部署生成式 AI 有用 -

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

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

AWS Lambda 可以与训练好的生成式 AI 模型结合使用,以提供实时推理功能。

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

实施示例

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

步骤 1:先决条件

实施本示例的先决条件如下 -

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

如果您尚未安装 boto3,可以使用以下命令安装 -

pip install boto3

步骤 2:AWS Lambda 函数

下面是 AWS Lambda 函数的 Python 代码,该函数调用 SageMaker 端点以进行实时文本生成 -

import boto3
import json

# Initialize the SageMaker runtime client
sagemaker_runtime = boto3.client('sagemaker-runtime')

# Specify your SageMaker endpoint name 
# The model must already be deployed
SAGEMAKER_ENDPOINT_NAME = 'your-sagemaker-endpoint-name'

def lambda_handler(event, context):
   # Extract input text from the Lambda event 
   # For example, user input from a chatbot
   user_input = event.get('input_text', 'Hello!')

   # Create a payload for the SageMaker model
   # Prepare input for text generation
   payload = json.dumps({'inputs': user_input})

   # Call the SageMaker endpoint to generate text
   response = sagemaker_runtime.invoke_endpoint(
      EndpointName = SAGEMAKER_ENDPOINT_NAME,
      ContentType = 'application/json',      
      Body = payload                         
   )

   # Parse the response from SageMaker
   result = json.loads(response['Body'].read().decode())
	
   # Extract the generated text from the response
   generated_text = result.get('generated_text', 'No response generated.')

   # Return the generated text to the user (as Lambda output)
   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) 资源的生成式 AI 模型)的重要组成部分。

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

使用 AWS Elastic Inference 和 EC2 实例

AWS Elastic Inference 可用于生成式 AI 模型,以便在不处理专用 GPU 服务器和其他实例的情况下扩展 GPU 推理。

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

实施示例

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

实施本示例的先决条件如下 -

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

现在,请按照以下步骤操作 -

步骤 1:使用 EC2 设置 Elastic Inference

当您启动用于推理任务的 EC2 实例时,您需要附加一个 Elastic Inference 加速器。让我们看看如何做到这一点 -

要使用 Elastic Inference 启动 EC2 实例 -

  • 首先,转到 EC2 控制台并点击“启动实例”。
  • 选择一个支持 Elastic Inference 的 AMI。例如 - 深度学习 AMI。
  • 接下来,选择一个实例类型(例如,t2.medium)。但请记住,不要选择 GPU 实例,因为您将附加一个 Elastic Inference 加速器。
  • 最后,在“Elastic Inference 加速器”下,选择一个合适的加速器(例如,eia2.medium,它提供适度的 GPU 能力)。

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

步骤 2:安装必要的库

附加并运行了支持 Elastic Inference 的 EC2 实例后,请安装以下 Python 库 -

# Update and install pip
sudo apt-get update
sudo apt-get install -y python3-pip

# Install torch, torchvision, and the AWS Elastic Inference Client
pip3 install torch torchvision
pip3 install awscli --upgrade
pip3 install elastic-inference

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

在本例中,我们将使用来自 Hugging Face 的预训练 GPT-2 模型(生成式预训练转换器)。

import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel

# Load pre-trained GPT-2 model and tokenizer from Hugging Face
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model = GPT2LMHeadModel.from_pretrained("gpt2")

# Move the model to the Elastic Inference accelerator (if available)
if torch.cuda.is_available():
    model.to('cuda')

# Set the model to evaluation mode for inference
model.eval()

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

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

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

def generate_text(prompt, max_length=50):
    # Tokenize the input prompt
    inputs = tokenizer.encode(prompt, return_tensors="pt")

    # Move input to GPU if Elastic Inference is available
    if torch.cuda.is_available():
        inputs = inputs.to('cuda')

    # Generate text using GPT-2
    with torch.no_grad():
        outputs = model.generate(inputs, max_length = max_length, num_return_sequences = 1)

    # Decode and return the generated text
    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:\n", generated_text)

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

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

Amazon CloudWatch

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

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

AWS X-Ray

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

SageMaker 模型监控器

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

Elastic Inference 指标

您可以使用 Elastic Inference 指标来监控模型所需数量的 GPU 能力。您可以根据需要调整 GPU 容量。

优化 AWS 上的生成式 AI 模型

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

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

自动扩展

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

使用 Elastic Inference

为了优化,建议使用 Elastic Inference 将适量的 GPU 能力附加到 CPU 实例。此方法可降低成本,并确保在推理过程中实现高性能。

模型压缩

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

批量推理

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

使用 Docker 容器

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

广告