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)