AWS 上的生成式 AI - SageMaker

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

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

SageMaker 如何支持生成式 AI?

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

预构建算法

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()