如何使用 Amazon AWS Bedrock 以及相关解决方案
本文将探讨如何使用 Amazon AWS Bedrock 以及使用它的最佳实践。.

如何使用 Amazon AWS Bedrock 以及相关解决方案

本文提供使用 Amazon AWS Bedrock 的分步指南。通过详细的解释,管理员、DevOps 工程师和机器学习工程师可以获得使用此服务开发 AI 模型的最佳体验。.
0 股票
0
0
0
0

如何安全、低延迟地使用 Amazon AWS Bedrock?

Amazon AWS Bedrock 是一项用于访问的托管服务。 基础模型 该产品由多家供应商提供(例如 Anthropic、AI21、Cohere 和亚马逊的专有型号)。这本实用技术指南提供了使用 Bedrock 的分步说明、推荐架构、安全配置、延迟缓解技巧以及生产部署的代码示例。.

您将在下方读到以下内容

本文涵盖以下内容:

  • 介绍 Bedrock 的功能和使用场景
  • 提出的推理和微调架构(与 GPU 云混合)
  • 安全配置:IAM、VPC 端点、KMS 和日志记录
  • 降低延迟和管理成本的实用技巧
  • 代码示例(AWS CLI、Python)和本地代理部署
  • 基于全球 85 多个地点的位置和网络推荐

Amazon AWS Bedrock — 描述和用途

Bedrock 允许您使用基础模型进行文本生成、摘要、信息提取和其他应用,而无需管理模型基础架构。 自然语言处理 使用标准的 Bedrock API 调用模型、发送提示并在应用程序中使用响应。.

对于应用程序 对延迟敏感 (例如交易或游戏),建议将 Bedrock 与目标市场附近的本地 GPU 服务器或 VPS 结合使用,以降低延迟。.

拟议架构

简单架构 — 应用服务器 ➜ 基岩

在这种架构中,应用程序(例如 Flask/FastAPI)部署在 VPS 或云服务器上,请求以 API 的形式发送到 Bedrock。它适用于概念验证和小规模应用。.

  • 优势: 实施简便,初始成本低。.
  • 缺点: 对于不在 AWS Bedrock 区域的用户,响应时间有所增加。.

混合架构——边缘+基岩+GPU云

在此模型中,边缘层位于靠近用户的位置(公司85个以上的办公地点中)。对延迟敏感的处理和初始缓存均在本地服务器或专用交易/游戏VPS上执行。高计算量请求则转发至GPU云或Bedrock。使用PrivateLink/VPC端点可确保安全性并减少公共路径。.

  • 优势: 低延迟、成本可控、可使用图形服务器进行训练和微调。.

面向大规模和隐私的架构

所有请求均通过 VPC 端点和 Transit Gateway 路由至 AWS Bedrock。敏感数据在传输前会进行过滤或令牌化处理,并使用 KMS 进行加密。.

设置和实际示例

前提条件(AWS 和本地部署)

  • AWS CLI 和正确的 IAM 访问权限
  • Python 3.8+ 和 boto3 或所需的 SDK
  • AWS 加密的 KMS 密钥
  • (可选)用于微调或低延迟缓存的 GPU 服务器

AWS CLI 初始配置:

aws configure
# Enter AWS Access Key, Secret, region (e.g., us-east-1)

使用 AWS CLI(运行时)调用模型的示例

使用 aws bedrock-runtime 调用模型的示例(命令名称可能因 CLI 版本而异):

aws bedrock-runtime invoke-model \
  --model-id anthropic.claude-v1 \
  --body '{"input":"سلام، خلاصه‌سازی کوتاه از متن زیر ارائه بده..."}' \
  response.json

输出结果存储在 response.json 文件中。要从 jq 中提取响应体,请执行以下操作:

cat response.json | jq -r '.body'

使用 Python (boto3) 调用模型

以下是一个简单的代码示例,用于发送提示并获取响应(请注意,modelIds 可在基岩版控制台中看到):

import boto3
import json

client = boto3.client('bedrock-runtime', region_name='us-east-1')

prompt = "Explain in Persian: بهترین روش برای کاهش latency در inference چیست؟"

resp = client.invoke_model(
    modelId='ai21.j2-large',
    contentType='application/json',
    accept='application/json',
    body=json.dumps({"input": prompt})
)

print(resp['body'].read().decode())

部署本地代理用于缓存和速率限制

为了降低成本和延迟,轻量级代理可以缓存类似的请求或处理高速率请求。下面提供了一个简单的 Flask 示例,可以部署在用户附近的 VPS 上。.

from flask import Flask, request, jsonify
import requests, boto3, json

app = Flask(__name__)
cache = {}

@app.route('/api/generate', methods=['POST'])
def generate():
    prompt = request.json.get('prompt')
    if prompt in cache:
        return jsonify({"cached": True, "response": cache[prompt]})
    client = boto3.client('bedrock-runtime')
    resp = client.invoke_model(modelId='ai21.j2-large', contentType='application/json', accept='application/json', body=json.dumps({"input": prompt}))
    body = resp['body'].read().decode()
    cache[prompt] = body
    return jsonify({"cached": False, "response": body})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

安全和隐私

身份与访问管理 (IAM) 和访问控制最佳实践

从一开始 最小特权 创建一个特定于应用程序的角色,其策略仅限于 InvokeModel,并使用临时凭据 (STS) 来提供服务。.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect":"Allow",
      "Action":[ "bedrock-runtime:InvokeModel" ],
      "Resource": "*"
    }
  ]
}

加密和KMS

使用 KMS 对存储在 S3 中的数据进行加密并监控访问。为遵守隐私法规,请在将敏感数据发送到 Bedrock 之前对其进行过滤或标记化处理。.

网络和 VPC 端点

使用 VPC 端点(PrivateLink)以私有方式连接到 Bedrock,以防止流量经过公共互联网。建议设置一个受限的安全组,仅允许所需的 IP 地址访问。.

日志记录和监控

启用 CloudWatch、CloudTrail 和 AWS Config 对于全面了解活动至关重要。考虑将日志发送到企业级 SIEM 或内部监控系统。.

性能和成本优化

降低延迟

  • 在靠近用户的位置放置代理和缓存(使用 85 个以上位置)。.
  • 对于紧急请求,请使用边缘计算或专用交易VPS。.
  • 选择速度更快、重量更轻的模型进行实时推理。.

降低成本

  • 缓存通用和重复响应。.
  • 在GPU云上进行批量处理,以支持大规模请求和离线处理。.
  • 在不需要高精度的情况下,可以使用较小或量化的模型。.

将模型导入 GPU 云

对于训练和微调,您可以使用图形服务器(GPU Cloud),而只将推理生成工作交给 Bedrock。这种模式适用于不希望将私有数据发送到外部服务的组织。.

真实场景和位置对比

实际案例:

  • 外汇/加密货币交易者: 使用专用的VPS进行交易,服务器位置应靠近交易所;同时使用代理服务器调用Bedrock服务器进行新闻或信号分析。某些应用需要低于20毫秒的延迟;因此,从85多个服务器位置中选择合适的服务器位置至关重要。.
  • 游戏和游戏聊天机器人: 使用游戏 VPS 和 CDN 实现快速资源交付,并使用 Bedrock 实现高级对话——重点是使用更轻量级的模型来减少延迟。.
  • 人工智能和渲染: 在 GPU 云上进行大型模型和批量推理;Bedrock 支持各种工作负载并可访问多供应商模型。.

发布前的实用技巧和检查清单

  • 选择合适的 AWS Bedrock 区域和靠近用户的 Edge 区域。.
  • 定义一个具有有限访问权限的IAM角色。.
  • 设置合适的 VPC 端点和安全组。.
  • 制定KMS和加密策略。.
  • 设置日志记录(CloudWatch、CloudTrail)。.
  • 在边缘端实现缓存和速率限制。.
  • 负载和延迟测试(wrk、hey、ab)和成本监控。.

使用 curl 进行延迟测试的示例:

time curl -s -X POST https://proxy.example.com/api/generate -d '{"prompt":"سلام"}' -H "Content-Type: application/json"

总结与结论

Amazon AWS Bedrock 是访问基础模型的强大工具。通过正确的架构组合(边缘 + Bedrock + GPU 云),您可以体验到 低延迟高安全性可控成本 确实如此。.

对于延迟敏感型应用,建议使用距离较近的服务器位置,并将部分处理任务迁移到本地服务器或 GPU 云平台。使用 VPC 端点、最小权限的 IAM 以及 KMS 加密是必要的安全措施。.

您可能也喜欢