跳至主要内容

Amazon Bedrock:构建 AI 应用的完整指南

探索如何使用 Amazon Bedrock 构建生成式 AI 应用。本分步教程将带您了解其功能、设置与优化技巧。
· 15分钟 阅读

使用 AI 探索

生成式 AI 已成为各行业的颠覆者,推动了自然语言处理、计算机视觉等诸多领域的进步。然而,释放其潜力往往伴随着成本高昂、基础设施复杂以及学习曲线陡峭等挑战。AWS Bedrock 正是在此背景下应运而生——它使您无需管理基础设施即可使用基础模型,从而破解这些难题。

本教程旨在为您全面介绍 Amazon Bedrock,包括它是什么、如何工作,以及如何使用它。阅读完本指南,您将具备开发自有生成式 AI 应用所需的信息与技能——这些应用可扩展、具备弹性,并与您的目标保持一致。

什么是 Amazon Bedrock?

Amazon Bedrock 是由 Amazon Web Services(AWS)提供的托管服务,用于访问和管理基础模型(FMs),它们是生成式 AI 的基本构件。Bedrock 将流程大幅简化,您无需为此操心 GPU 资源供给、模型流水线配置,或其他任何基础设施管理工作。

AWS Bedrock 是通往创新的门户。它是一个统一平台,使开发者能够探索、测试并部署来自 Anthropic、Stability AI 和 Amazon Titan 等领先提供商的前沿 AI 模型。

例如,设想您要开发一个客户支持聊天机器人。借助 AWS Bedrock,您可以选择先进的语言模型,针对应用需求进行调优,并将其嵌入到应用中,而无需编写任何服务器配置代码。

AWS Bedrock 的功能

AWS Bedrock 的功能旨在简化并加速从 AI 概念到生产落地的全过程。下面我们将详细拆解。

访问多种基础模型

AWS Bedrock 的一大优势在于其可用的基础模型种类丰富。无论您从事文本应用、视觉内容,还是强调安全可解释 AI 的项目,Bedrock 都能满足需求。以下是部分可用模型:

  • Amazon 模型:这些专有模型可用于为聊天机器人或内容创作应用生成类人文本、将长文档提炼为要点,或解读客户反馈的情感倾向。
  • Anthropic 模型:这些模型专注于构建良善且安全的人工智能,尤其适合需要合规与信任的行业,如银行或医疗健康。
  • Stability AI:Stability AI 模型以图像生成著称,可将创意转化为用于营销、艺术创作或产品开发的视觉内容。

Amazon Bedrock 示意图,连接 Amazon Models、Anthropic、Stability AI 及其他提供商,展示其作为生成式 AI 服务枢纽的角色。

Amazon Bedrock 概览,突出其与各类模型的集成。

无需管理基础设施

AWS Bedrock 抽象了基础设施管理,这意味着:

  • 无需自备 GPU 实例。
  • 您可以专注于借助无服务器架构构建应用。
  • 使用门槛大幅降低,设置时间常常可由数周缩短至数小时。

可扩展性与灵活性

生成式 AI 应用的需求通常难以预测。高峰时段聊天机器人可能需响应数百位用户,而深夜只有少量请求。AWS Bedrock 通过内置的可扩展性解决了这一问题:

  • 自动伸缩:模型可自动调整以应对工作负载高峰,无需您手动干预。
  • 并行工作负载:可在单个应用中同时运行多个模型以满足不同用例。
  • 全球可用性:依托 AWS 的全球网络,您可将应用部署在更靠近用户的位置,降低时延并提升体验。

与 AWS 生态集成

AWS Bedrock 不仅提供强大的模型——它还与其他 AWS 服务集成,支持端到端的 AI 工作流。部分集成包括:

  • Amazon SageMaker:支持对基础模型进行微调以满足特定需求。
  • AWS Lambda:便于构建事件驱动的 AI 应用,例如触发模型对新数据进行微调或审阅推理结果。
  • Amazon CloudWatch:提供监控与日志功能,用于分析模型性能并收集用户反馈。
  • Amazon S3:作为数据集的存储解决方案,支持性能追踪与成本分析。

设置 AWS Bedrock

本节将引导您完成必要的权限配置、创建 AWS 账户,并开始上手 AWS Bedrock。

步骤 1:创建 AWS 账户(如尚未创建)

如果您还没有账户,请前往 AWS 注册页面创建账户。对于现有用户,请确保您的 IAM 用户具备管理员权限。

AWS 注册页面,包含输入根用户电子邮件地址和 AWS 账户名称的表单。

AWS 注册页面,展示新账户可探索的免费套餐产品。

如需详细步骤,请访问 AWS 官方指南。

步骤 2:进入 AWS Bedrock

可通过 AWS 管理控制台访问 Amazon Bedrock。按照以下步骤查找并开始使用:

  • 登录 AWS 管理控制台:前往 AWS 控制台并输入您的登录凭证。
  • 搜索 Bedrock:使用控制台顶部的搜索栏,输入“Bedrock”,并在下拉列表中选择。

AWS 管理控制台中搜索 “Bedrock” 的结果截图,显示用于构建生成式 AI 应用的 Amazon Bedrock、用于数据与 AI 分析的 Amazon SageMaker,以及突出显示的跨区域资源搜索介绍

AWS 管理控制台关于 Bedrock 的搜索结果。

  • 浏览 Bedrock 控制台:进入 Bedrock 控制台后,您将看到选择模型提供商与基础模型的选项。

Amazon Bedrock Providers 页面截图,展示三家无服务器模型提供商:Amazon、Anthropic 和 Meta

Amazon Bedrock Providers 页面展示来自 Amazon 的无服务器模型选项。

  • 选择模型提供商与基础模型:
    • 根据您的用例选择提供商(例如,文本生成可选 Amazon Titan,图像生成可选 Stability AI 等)。
    • 查看模型特定选项,如输入类型、支持的功能以及输出参数。
  • 运行测试推理:AWS Bedrock 允许您在控制台中直接运行示例推理。这是了解各模型工作方式的好方法,有助于在集成到应用前做出选择。

Amazon Bedrock 聊天/文本 Playground 截图,展示 Claude 3 Opus 模型。界面包括输入提示、运行响应以及对比不同模型的选项。左侧面板列出“入门”“基础模型”“Playgrounds”“构建者工具”“防护措施”等选项。

Amazon Bedrock 聊天/文本 Playground 界面。

步骤 3:配置 IAM 权限

AWS 身份与访问管理(IAM)对于安全访问 AWS Bedrock 至关重要。按照以下步骤配置权限:

  • 在 AWS 管理控制台中,进入 IAM 服务。
  • 在侧边栏点击 Roles,并选择 Create policy。
  • 在 Specify permissions, 选择“JSON”。

AWS IAM 策略编辑器的 JSON 模式截图,显示部分配置的策略,包含空的 “Action” 与 “Resource” 列表。左侧显示两步流程:“Specify permissions” 和 “Review and create”。右侧面板提供添加操作、筛选服务和移除语句的选项。

AWS IAM 策略编辑器(JSON 模式)

  • 将以下策略粘贴到文本框:
{
    "Version": "2012-10-17",
    "Statement": [        {
            "Sid": "BedrockFullAccess",
            "Effect": "Allow",
            "Action": ["bedrock:*"],
            "Resource": "*"
        }
    ]
}

注意: 上述策略可附加到任何需要访问 Amazon Bedrock 服务的角色上。可以是 SageMaker 或用户。在使用 Amazon SageMaker 时,笔记本的执行角色通常不同于您登录 AWS 管理控制台所使用的用户或角色。若要通过 AWS 控制台体验 Amazon Bedrock 服务,请确保为您的控制台用户或角色授予权限。您可以在任何具备 AWS Bedrock 服务访问权限且拥有有效凭证的环境中运行笔记本。

将 Amazon Bedrock 用于生成式 AI 应用

生成式 AI 应用基于为特定任务(如文本生成、图像创建或数据转换)微调后的基础模型构建。以下是选择基础模型、使用基础推理作业以及调整模型响应以满足您需求的分步指南。

选择基础模型

挑选合适的基础模型至关重要,因为它取决于项目需求。您可以这样进行选择:

1. 明确您的用例:

  • 文本生成:针对摘要、内容创作或聊天机器人开发等任务,可考虑以下模型:
    • Amazon Titan Text G1:该模型具备良好的上下文理解能力,可生成高质量文本。
    • Anthropic Claude 3:该模型擅长生成连贯且与语境相关的文本,适合对话式 AI 应用。
  • 图像生成:如果您的项目涉及生成图像或其他形式的视觉内容,Stability AI 模型是不二之选:
    • Stable Diffusion 3.5 Large:该模型擅长将文本描述转换为图像,无论是写实风格还是艺术风格。
  • 多模态任务:对于同时需要文本与图像处理的应用,推荐使用 Amazon Nova 模型:
    • Nova Lite:具成本优势的多模态模型,支持文本、图像与视频输入,并输出文本。
    • Nova Pro:适用于更复杂任务的强大多模态模型。

2. 评估模型能力:

  • 审视各模型的具体优势,确保与项目需求相匹配。有关受支持基础模型的详细信息(包括其能力与支持的区域)请参阅 AWS 文档。

启用模型访问

在使用这些模型之前,您需要在 AWS 账户中启用模型访问。配置步骤如下:

  • 在 Bedrock 控制台中,导航到 Models access。
  • 在控制台中点击 Modify model access.
  • 浏览各提供商的可用模型并选择您喜欢的模型。本示例选择了 Titan Text G1—Express。

Amazon Bedrock “Edit model access” 页面截图,显示一列 Amazon Titan 模型及其访问状态。有的标记为“Access granted”,有的为“Available to request”。界面包含筛选模型、展开/折叠、按提供商分组等选项。左侧显示两步流程:“Edit model access” 和 “Review and submit”。

Amazon Bedrock 模型访问管理页面。

  • 点击 Next,然后点击Review and submit。

运行基础推理

要使用 AWS Bedrock 中选定的基础模型执行推理,请按照以下步骤操作:

  • 设置 AWS SDK for Python(boto3):
pip install boto3
  • 初始化 Bedrock 客户端: 在您选择的 AWS 区域中创建 Bedrock 运行时客户端:
import boto3
import json
from botocore.exceptions import ClientError

# 设置 AWS 区域
region = "us-east-1"

# 初始化 Bedrock Runtime 客户端
client = boto3.client("bedrock-runtime", region_name=region)
  • 调用模型: 定义模型 ID 和输入提示词:
# 定义 Amazon Titan Express v1 的模型 ID
model_id = "amazon.titan-text-express-v1"

# 定义输入提示词
prompt = """
Command: Compose an email from Tom, Customer Service Manager, to the customer "Nancy" 
who provided negative feedback on the service provided by our customer support 
Engineer"""
  • 构造请求载荷:
# 配置推理参数
inference_parameters = {
   "inputText": prompt,
   "textGenerationConfig": {
       "maxTokenCount": 512,  # 限制响应长度
       "temperature": 0.5,    # 控制输出的随机性
   },
}

# 将请求载荷转换为 JSON
request_payload = json.dumps(inference_parameters)
  • 处理响应:
try:
   # 调用模型
   response = client.invoke_model(
       modelId=model_id,
       body=request_payload,
       contentType="application/json",
       accept="application/json"
   )

   # 解码响应主体
   response_body = json.loads(response["body"].read())

   # 提取并打印生成文本
   generated_text = response_body["results"][0]["outputText"]
   print("Generated Text:\n", generated_text)

except ClientError as e:
   print(f"ClientError: {e.response['Error']['Message']}")
except Exception as e:
   print(f"An error occurred: {e}")

注意:您可以直接从GitHub Gist 访问并复制完整代码。

预期输出如下:

% python3 main.py

Generated Text:
 
Tom:
Nancy,

I am writing to express my sincere apologies for the negative experience you had with our customer support engineer. It is unacceptable that we did not meet your expectations, and I want to assure you that we are taking steps to prevent this from happening in the future.

Sincerely,
Tom
Customer Service Manager

自定义模型输出

要微调模型输出行为,您可以调整 temperature 与 maxTokenCount 等参数:

  • temperature:控制输出的随机性。数值越低,输出越确定;数值越高,输出变化越大。
  • MaxTokenCount:设置生成输出的最大长度。

例如:

inference_parameters = {
   "inputText": prompt,
   "textGenerationConfig": {
       "maxTokenCount": 256,  # 限制响应长度
       "temperature": 0.7,    # 控制输出的随机性
   },
}

通过调整这些参数,您可以更好地根据应用需求定制生成内容的创造性与长度。

Amazon Bedrock 高级功能

接下来我们将聚焦两个高级方法:利用检索增强生成(RAG)提升 AI,以及规模化管理与部署模型。

使用检索增强生成(RAG)自定义 AI 输出

RAG 需要具备一个知识库。在 Amazon Bedrock 中设置知识库之前,您需要创建一个 S3 存储桶并上传所需文件。具体步骤如下:

步骤 1:创建 S3 存储桶

  • 登录 AWS 管理控制台:
    • 进入 S3 服务。
  • 创建新存储桶:
    • 点击 Create bucket。
    • 输入唯一的存储桶名称。
    • 除非有特定安全或加密需求,否则保持默认设置。
  • 配置存储桶设置:
    • 确保启用阻止公共访问,除非确有需要。
    • (可选)如需保留文件版本,可启用版本控制。
  • 创建存储桶:
    • 点击 Create bucket 完成设置。

步骤 2:将文件上传到 S3 存储桶

  • 下载文件:
    • 提供的 GitHub 链接包含一个带有 模拟数据的示例 PDF 文件: octank_financial_10K.pdf。您也可以使用其他文件。
    • 将其保存到本地计算机。
  • 将文件上传至 S3:
    • 在 AWS 控制台中打开新建的 S3 存储桶。
    • 点击 Upload 并选择文件 octank_financial_10K.pdf。
    • 检查并设置权限(默认:私有)。
    • 点击 Upload 将文件添加到存储桶。

名为 “amazon-bedrock-099” 的 Amazon S3 存储桶截图,显示 “Objects” 标签页,其中包含名为 “octank_financial_10K.pdf” 的单个 PDF 文件。

“amazon-bedrock-099” 的 Amazon S3 存储桶视图。

Amazon Bedrock 允许您基于向量数据库创建知识库。以下步骤将带您创建知识库、配置数据源,并选择嵌入模型与向量存储。

步骤 1:提供知识库详情

  • 进入 Amazon Bedrock 控制台,在 Builder tools 部分选择 Knowledge Bases。
  • 点击 Create Knowledge Base 并填写以下信息:
    • 知识库名称:输入唯一名称(例如 knowledge-base-quick-start)。
    • 知识库描述:(可选)简要描述知识库。
  • 在 IAM permissions 部分:
    • 选择“Create and use a new service role”或“Use an existing service role”。
    • 确保该服务角色具备访问 Bedrock 的必要权限。
    • 示例服务角色:AmazonBedrockExecutionRoleForKnowledgeBase。
  • 点击 Next 进入数据源配置。

Amazon Bedrock 知识库创建界面截图,显示配置知识库的步骤。

Amazon Bedrock 知识库创建向导。

步骤 2:配置数据源

  • 在 Data source details 部分,选择您的数据源:
    • Amazon S3:由于数据存储在 S3,请选择该选项。
  • 指定以下内容:
    • 数据源位置:在 “This AWS Account” 与 “Other AWS Account” 之间选择。
    • S3 URI:提供包含数据的 S3 存储桶 URI,选择您在前一步创建的 S3 与文件。
    • 加密密钥:(可选)如果数据已加密,请添加客户管理的 KMS 密钥。
  • 配置解析策略:
    • 默认解析器:处理纯文本数据。可以保持默认。
    • 以基础模型为解析器:处理复杂文档或图像。可以保持默认。
  • 分块策略:
    • 默认设置会将文本拆分为约 300 个 token 的块以生成嵌入。可以保持默认。
  • (可选)添加 Transformation functions 或高级设置以预处理数据。可以保持默认。
  • 点击 Next 继续。

Amazon Bedrock 数据源配置界面截图,显示连接 Amazon S3 数据源的设置

Amazon Bedrock 数据源配置页面,将 S3 作为知识库集成。

步骤 3:选择嵌入模型并配置向量存储

  • 选择一个 嵌入模型(Embeddings model),将数据转换为向量表示:
    • Titan Embeddings G1 - Text v1.2(本教程可选择该项)。
    • Embed English v3
    • Embed Multilingual v3
  • 在 Vector database 部分:
    • 选择 “Quick create a new vector store”(推荐),或选择已有存储。
    • 可选项包括:
      • Amazon OpenSearch Serverless:适合提供与上下文高度相关的响应。本教程可选择该项。
      • Amazon Aurora PostgreSQL Serverless:针对快速相似性搜索进行了优化。
      • Amazon Neptune Analytics:适用于基于图的分析与检索增强生成(RAG)。
  • 点击 Next 以审阅并完成配置。

Amazon Bedrock 界面截图:选择嵌入模型并配置向量数据库。

Amazon Bedrock 配置页面:选择嵌入模型与向量存储。

步骤 4:审阅与创建

  • 审阅所有配置。
  • 确认无误后,点击 Create 完成知识库创建。
  • 创建完成后,您的知识库将显示在控制台的 Knowledge Bases 部分。

步骤 5:测试知识库

  • 访问知识库概览:
    • 前往 Amazon Bedrock 控制台中的 Knowledge Bases 部分。
    • 选择您创建的知识库(例如 knowledge-base-quick-start)。
    • 查看概览信息:
      • 知识库名称与 ID
      • 确保状态为 “Available”。
      • 确认使用了正确的服务角色。
  • 同步并添加数据源:
    • 如果数据源尚未同步,点击 Sync 发起同步。
    • 您也可以通过 Add documents from S3 添加更多文档或数据源。

Amazon Bedrock 知识库概览页面截图,显示知识库名称、ID、服务角色、状态与 RAG 类型等关键信息。

Amazon Bedrock 知识库概览展示配置详情与数据源状态。

步骤 6:选择用于测试的模型

  • 选择基础模型:
    • 在 Test Knowledge Base 面板点击 Select model。
    • 浏览来自 Amazon、Anthropic、Cohere 等提供商的可用模型。
    • 示例:选择 Claude Instant (v1.2) 进行文本查询。
  • 推理类型:
    • 若未设置预置吞吐量,选择 On-demand 推理。
  • 应用模型:
    • 点击 Apply 完成选择。

Amazon Bedrock “Select model” 界面截图,显示 Amazon、Anthropic、Cohere、Meta、Mistral AI 等模型提供商。

Amazon Bedrock 模型选择界面,展示多款 Anthropic 的 Claude 模型。

步骤 7:运行查询并生成响应

  • 生成响应:
    • 在输入框中输入查询(例如:“Help me with Financial Statement Schedules”)。
    • 点击 Run 测试知识库。
  • 查看来源详情:
    • 响应将包含与查询相关的数据块。
    • 展开 Source Details 查看元数据与检索信息来源。
  • 审阅输出:
    • 验证响应是否与知识库内容一致。
    • 必要时微调检索配置。

Amazon Bedrock 知识库测试页面截图。选定模型为 “Claude Instant v1.2”,设置为按需推理。

Amazon Bedrock 知识库测试界面展示针对查询的响应。

示例查询输出:

  • 查询:“Help me with Financial Statement Schedules.”
  • 响应:知识库将检索财务报表中各科目的详细信息,例如资产、负债明细及相关元数据。

规模化管理与部署 AI 模型

借助 AWS Lambda 等服务,Amazon Bedrock 可实现模型的规模化管理与部署。这种高性价比的方法确保高可用性,并可为 AI 应用自动扩缩容。

本节我们将使用 AWS Lambda 动态调用 Bedrock 模型,以便按需处理提示词。

步骤 1:创建 AWS Lambda 函数

  • 登录 AWS 管理控制台。
  • 进入 Lambda 服务并点击 Create function。
  • 选择函数配置:
    • 选择 “Author from Scratch”。
    • 函数名称:bedrock。
    • 运行时:Python 3.x。
    • 权限:选择本教程前文创建的 IAM 角色。
  • 点击 Create function 完成初始化。

AWS Lambda 函数创建界面截图。选择了 “Author from scratch”,函数名称设为 “bedrock”。

AWS Lambda 函数创建页面。

步骤 2:添加 Lambda 函数代码

  • 在 Lambda 控制台的 Code 部分打开函数编辑器。
  • 将默认代码替换为 Github Gist 中提供的代码。
  • 点击 Deploy 保存变更。

步骤 3:测试 Lambda 函数

  • 在 Lambda 控制台的 Test 选项卡中创建如下 JSON 的测试事件:
{
    "prompt": "Write a formal apology letter for a late delivery."
}
  • 保存测试事件。
  • 点击 Test 以调用 Lambda 函数。
  • 在 Execution results 部分查看输出。生成文本应类似如下:

AWS Lambda 执行结果截图,显示函数执行成功

AWS Lambda 执行结果,显示函数成功运行。

AI 模型部署最佳实践

优化成本:

  • 对于偶发用例,使用按需推理。
  • 如预期请求频繁,考虑使用预置吞吐量。

保护 Lambda 函数安全:

  • 将 IAM 角色权限限制在必要范围内。
  • 使用环境变量,避免在代码中暴露敏感数据。

监控与日志:

  • 使用 CloudWatch 日志追踪调用指标并排查问题。
  • 为错误或高时延设置告警。

使用 AWS Bedrock 的最佳实践

本节分享使用 Amazon Bedrock 的一些最佳实践,从成本优化到保障安全与准确性。 

成本优化

在 AWS Bedrock 中管理成本可能涉及借助 Amazon SageMaker 部署模型,并使用 Spot 实例以节省高达 90% 的费用。以下是我的一些最佳实践:

  • 选择合适的基础模型:选择与需求匹配的模型。对于不太复杂的任务,优先选择更小、更省资源的模型以降低计算成本。例如,文本类任务可使用 Amazon Titan 模型,简单图像生成可使用 Stability AI。
  • 批量推理:将多个推理请求合并为批次处理,而非逐个处理。这样可降低模型调用频率,从而减少成本。
  • 利用 S3 生命周期策略:仅在 Amazon S3 中存储推理或微调所需的数据。通过生命周期策略自动将数据转移至更低成本的存储层(例如 S3 Glacier),或在设定时间后删除未使用数据。
  • 监控与控制支出:使用 AWS Cost Explorer 分析支出模式并识别优化空间。设置 AWS Budgets,当接近预设阈值时接收告警。

显示 Amazon Bedrock 服务成本与使用情况的图表

Amazon Bedrock 服务的成本与使用图。

  • 结合 SageMaker 使用 Bedrock 提升成本效率: 在 SageMaker 中使用 Bedrock 基础模型,以利用托管的 Spot 实例来运行推理与训练作业。
  • 在 SageMaker 中使用 Spot 实例:Spot 实例可将成本相较按需实例降低最高 90%。SageMaker 会代表您处理 Spot 中断,如 Spot 容量不可用将自动重试训练作业。示例:
from sagemaker.mxnet import MXNet

# 使用 Spot 实例以提高成本效率
use_spot_instances = True

# 训练作业的最⼤运⾏时间(秒)
max_run = 600

# Spot 实例可⽤性的最⼤等待时间(秒);仅在使⽤ Spot 实例时设置
max_wait = 1200 if use_spot_instances else None

# 定义训练作业的 MXNet 估计器
mnist_estimator = MXNet(
    entry_point='source_dir/mnist.py',  # 包含模型训练代码的脚本路径
    role=role,  # 访问 AWS 资源(如 S3、SageMaker)的 IAM 角色
    output_path=model_artifacts_location,  # 保存训练后模型制品的 S3 位置
    code_location=custom_code_upload_location,  # 上传训练脚本的 S3 位置
    instance_count=1,  # 训练实例数量
    instance_type='ml.m4.xlarge',  # 训练作业实例类型
    framework_version='1.6.0',  # 使用的 MXNet 框架版本
    py_version='py3',  # 环境的 Python 版本
    distribution={'parameter_server': {'enabled': True}},  # 启用参数服务器的分布式训练
    hyperparameters={  # 训练超参数
        'learning-rate': 0.1,  # 学习率
        'epochs': 5  # 训练轮数
    },
    use_spot_instances=use_spot_instances,  # 启用 Spot 实例以节省成本
    max_run=max_run,  # 训练作业的最⼤运⾏时间
    max_wait=max_wait,  # Spot 实例可⽤性的最⼤等待时间
    checkpoint_s3_uri=checkpoint_s3_uri  # 保存中间检查点的 S3 URI
)

# 启动训练作业,并指定训练与测试数据集的位置
mnist_estimator.fit({
    'train': train_data_location,  # 训练数据集的 S3 位置
    'test': test_data_location  # 测试/验证数据集的 S3 位置
})
  • 使用 CloudWatch 指标与日志: 训练指标与日志可在 Amazon CloudWatch 获取,为性能与资源使用提供洞察。

AWS CloudWatch 日志事件截图,显示 /opt/ml/model 路径下机器学习模型的日志条目。每条日志包含时间戳、源 IP 以及对 /ping 的 HTTP GET 请求返回 200 状态码。

AWS CloudWatch 日志

安全性

为确保 Amazon Bedrock 的安全性、合规性与性能,遵循最佳实践至关重要。以下是我的建议:

  • 最小权限原则:限制 IAM 权限与服务角色仅访问必要资源,防止未授权访问。
  • 验证服务角色与安全组:确保 Bedrock 代理与模型定制作业正确配置有效的服务角色与安全设置。
  • 在 VPC 中运行工作负载:在 虚拟私有云(VPC)中运行定制作业与数据处理可提升安全性。
  • 加密关键数据:使用 Amazon KMS 客户管理密钥(CMKs)对代理会话、Bedrock Studio 工作区、自定义模型与临时知识库数据进行加密。
  • 实施数据删除策略:仅在知识库数据源处于活动状态时保留向量化数据;在不再需要时设置自动删除。
  • 强化 Bedrock 防护:将 Prompt Attack Strength 设为 HIGH,并启用敏感信息过滤,以防御对抗性攻击与数据泄露。
  • 保护代理会话:使用防护措施阻止未授权访问并保护敏感交互。
  • 启用日志提升可见性:在账号层面开启模型调用日志以追踪活动并检测异常。
  • 防御跨服务攻击:使用服务角色策略,防止跨服务困惑副手攻击(Confused Deputy)。

模型监控与评估

通过监控与评估,确保模型准确、可靠并与业务目标一致。以下是一些最佳实践:

  • 跟踪性能指标:使用 CloudWatch 监控时延、错误与调用趋势。
  • 记录输入与输出:启用详细日志用于调试与趋势分析。
  • 引入反馈回路:使用 Amazon A2I 等工具,对关键输出进行人工审阅。
  • 定期评估输出:与验证数据集或真实标注进行对比。
  • 持续改进模型:根据需要使用更新数据集或特定领域数据进行微调。

包含四个图表的仪表板,用于跟踪 Amazon Bedrock 模型的指标。

指标仪表板展示了 Amazon Bedrock 各模型的调用次数、时延与 token 计数。

结论

AWS Bedrock 正在重塑生成式 AI 应用的开发方式,它为使用基础模型提供了一个无需操心基础设施的集中平台。

从现在开始,本分步教程应能帮助您识别合适的模型,构建安全且可扩展的工作流,并集成检索增强生成(RAG)等功能以实现更高程度的定制化。借助在成本、安全与监控上的最佳实践,您已准备好开发与管理满足业务目标的 AI 解决方案。

若想进一步提升您的 AWS 专业能力,请探索以下课程:

Rahul Sharma

作者

Rahul Sharma

Rahul Sharma 是一位 AWS 大使、DevOps 架构师与技术博主,专注于云计算、DevOps 实践与开源技术。凭借在 AWS、Kubernetes 与 Terraform 方面的专长,他通过生动易懂的文章与教程,为学习者与专业人士化繁为简。Rahul 热衷于解决 DevOps 难题,并分享洞见以赋能技术社区。

主题