AWS 上的生成式 AI - Lambda

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

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

用于生成式 AI 的 AWS Lambda 的功能

以下列出了 AWS Lambda 的一些主要功能,这些功能对于训练和部署生成式 AI 非常有用 −

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

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

AWS Lambda 可与经过训练的生成式 AI 模型一起使用,以提供实时推理功能。

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

实施示例

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

步骤 1:先决条件

实施此示例的先决条件是 −

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

如果您没有安装 boto3,可以使用以下命令安装它 −

pip install boto3

第 2 步:AWS Lambda 函数

下面给出了 AWS Lambda 函数的 Python 代码,该函数调用 SageMaker 端点进行实时文本生成 −

import boto3
import json

# 初始化 SageMaker 运行时客户端
sagemaker_runtime = boto3.client('sagemaker-runtime')

# 指定您的 SageMaker 端点名称
# 该模型必须已部署
SAGEMAKER_ENDPOINT_NAME = 'your-sagemaker-endpoint-name'

def lambda_handler(event, context):
    # 从 Lambda 事件中提取输入文本
    # 例如,来自聊天机器人的用户输入
    user_input = event.get('input_text', 'Hello!')
    
    # 为 SageMaker 模型创建有效负载
    # 准备用于文本生成的输入
    payload = json.dumps({'inputs': user_input})
    
    # 调用 SageMaker 端点以生成文本
    response = sagemaker_runtime.invoke_endpoint(
      EndpointName = SAGEMAKER_ENDPOINT_NAME,
      ContentType = 'application/json',      
      Body = payload                         
   )

    # 解析来自 SageMaker 的响应
    result = json.loads(response['Body'].read().decode())
    
    # 从响应中提取生成的文本
    generated_text = result.get('generated_text', 'No response generated.')
    
    # 将生成的文本返回给用户(作为 Lambda 输出)
   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..."
}