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)