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)一起使用。

实现此示例的先决条件如下:

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

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

步骤 1:使用 EC2 设置弹性推理

当您为推理任务启动 EC2 实例时,您需要附加一个弹性推理加速器。让我们看看如何做到这一点:

要使用弹性推理启动 EC2 实例,请执行以下操作:

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

启动 EC2 实例后,在启动 EC2 实例时附加弹性推理加速器,以提供推理所需的 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 模型(生成式预训练 Transformer)。

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)
广告