Как управлять затратами на ИИ с помощью Amazon Bedrock Projects

Искусственный интеллект

Manage AI costs with Amazon Bedrock Projects

По мере масштабирования AI-нагрузок в Amazon Bedrock понимание того, что именно формирует расходы, становится критически важным. Командам может понадобиться выполнять chargeback, разбираться в скачках затрат и принимать решения по оптимизации — для этого нужна атрибуция расходов на уровне конкретной нагрузки.

С помощью Amazon Bedrock Projects можно относить затраты на inference к конкретным рабочим нагрузкам и анализировать их в AWS Cost Explorer и AWS Data Exports. В этой статье показано, как настроить Projects end-to-end — от разработки стратегии тегирования до анализа расходов.

Как работают Amazon Bedrock Projects и распределение затрат

Project в Amazon Bedrock — это логическая граница, которая представляет рабочую нагрузку, например приложение, окружение или эксперимент. Чтобы отнести стоимость проекта, нужно добавить resource tags и передать project ID в API-вызовах. Затем можно активировать cost allocation tags в AWS Billing, чтобы фильтровать, группировать и анализировать расходы в AWS Cost Explorer и AWS Data Exports.

Следующая диаграмма показывает полный поток работы:

Amazon Bedrock Projects cost attribution architecture showing flow from user API calls through tagged projects to AWS billing and cost management tools

Figure 1: End-to-end cost attribution flow with Amazon Bedrock Projects

Примечания:

  • Amazon Bedrock Projects поддерживают OpenAI-compatible APIs: Responses API и Chat Completions API.
  • Запросы без project ID автоматически связываются с default project в вашем AWS account.

Предварительные требования

Чтобы повторить шаги из этой статьи, вам потребуется:

Определите стратегию тегирования

Теги, которые вы прикрепляете к project, становятся измерениями, по которым можно фильтровать и группировать данные в отчетах о расходах. Мы рекомендуем продумать их до создания первого project. Распространенный подход — тегировать по application, environment, team и cost center:

Tag key Purpose Example values
Application Какой workload или service CustomerChatbot, Experiments, DataAnalytics
Environment Стадия жизненного цикла Production, Development, Staging, Research
Team Владелец CustomerExperience, PlatformEngineering, DataScience
CostCenter Привязка к финансам CC-1001, CC-2002, CC-3003

Подробнее о построении стратегии распределения затрат см. в Best Practices for Tagging AWS Resources. Когда стратегия тегирования определена, можно создавать projects и начинать атрибутировать затраты.

Создайте project

Когда стратегия тегирования и permissions настроены, можно создать первый project. У каждого project есть собственный набор cost allocation tags, который попадает в billing data. В следующем примере показано, как создать project с помощью Projects API.

Сначала установите необходимые зависимости:

$ pip3 install openai requests

Создайте project с вашей таксономией тегов:

OpenAI SDK использует переменную среды OPENAI_API_KEY. Укажите в ней ваш Bedrock API key.

import os
import requests
# Configuration
BASE_URL = "https://bedrock-mantle.<YOUR-REGION-HERE>.api.aws/v1"
API_KEY  = os.environ.get("OPENAI_API_KEY")  # Your Amazon Bedrock API key
def create_project(name: str, tags: dict) -> dict:
 """Create a Bedrock project with cost allocation tags."""
    response = requests.post(
        f"{BASE_URL}/organization/projects",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={"name": name, "tags": tags}
    )

    if response.status_code != 200:
        raise Exception(
            f"Failed to create project: {response.status_code} - {response.text}"
        )

    return response.json()

# Create a production project with full tag taxonomy
project = create_project(
    name="CustomerChatbot-Prod",
    tags={
        "Application": "CustomerChatbot",
        "Environment": "Production",
        "Team":        "CustomerExperience",
        "CostCenter":  "CC-1001",
        "Owner":       "alice"
    }
)
print(f"Created project: {project['id']}")

API возвращает сведения о project, включая project ID и ARN:

{
  "id": "proj_123",
  "arn": "arn:aws:bedrock-mantle:<YOUR-REGION-HERE>:<YOUR-ACCOUNT-ID-HERE>:project/<YOUR-PROJECT-ID>"
}

Сохраните project ID. Он понадобится, чтобы связать inference requests на следующем шаге. ARN используется для прикрепления IAM policy, если вам нужно ограничить доступ к этому project. Повторите это для каждой workload. В следующей таблице показан пример структуры project для организации с тремя application:

Project name Application Environment Team Cost Center
CustomerChatbot-Prod CustomerChatbot Production CustomerExperience CC-1001
CustomerChatbot-Dev CustomerChatbot Development CustomerExperience CC-1001
Experiments-Research Experiments Production PlatformEngineering CC-2002
DataAnalytics-Prod DataAnalytics Production DataScience CC-3003

В одном AWS account можно создать до 1 000 projects, чтобы подстроиться под потребности вашей организации.

Свяжите inference requests с вашим project

Когда projects созданы, можно связать inference requests, передавая project ID в API-вызовах. Следующий пример использует Responses API:

from openai import OpenAI

client = OpenAI(
    base_url="https://bedrock-mantle.<YOUR-REGION-HERE>.api.aws/v1",
    project="<YOUR-PROJECT-ID>", # ID returned when you created the project
)
response = client.responses.create(
    model="openai.gpt-oss-120b",
    input="Summarize the key findings from our Q4 earnings report."
)
print(response.output_text)

Чтобы обеспечить корректную атрибуцию расходов, всегда указывайте project ID в API-вызовах вместо того, чтобы полагаться на default project.

Активируйте cost allocation tags

Прежде чем теги project появятся в отчетах о расходах, их нужно активировать как cost allocation tags в AWS Billing. Эта одноразовая настройка связывает теги project с billing pipeline. Подробнее об активации cost allocation tags см. в документации AWS Billing.

Для распространения тегов в AWS Cost Explorer и AWS Data Exports может потребоваться до 24 часов. Чтобы избежать пробелов в данных о расходах, можно активировать теги сразу после создания первого project.

Просмотр расходов по project

Когда projects созданы, inference requests размечены и cost allocation tags активированы, вы можете точно увидеть, куда уходит ваш Amazon Bedrock spend. Теперь каждое измерение из вашей таксономии доступно как фильтр или группировка в отчетах AWS Billing.

AWS Cost Explorer

AWS Cost Explorer — самый быстрый способ визуализировать расходы по project. Выполните следующие шаги, чтобы посмотреть расходы по project:

  1. Откройте AWS Billing and Cost Management console и выберите Cost Explorer.
  2. В панели Filters разверните Service и выберите Amazon Bedrock.
  3. В разделе Group by выберите Tag и укажите ключ тега, например Application.
Amazon Bedrock AWS Cost Explorer projects view

Figure 2: Cost Explorer showing daily Amazon Bedrock spending grouped by the Application tag

Другие способы уточнить представление см. в Analyzing your costs and usage with AWS Cost Explorer.

Для более детального анализа и line-item detail по вашим project tags см. раздел Creating Data Exports в документации AWS Billing.

Заключение

С помощью Amazon Bedrock Projects можно относить затраты к отдельным workload и отслеживать расходы с помощью инструментов AWS, на которые ваша организация уже опирается. По мере масштабирования workloads используйте стратегию тегирования и подходы к видимости затрат, описанные в этой статье, чтобы сохранять ответственность между командами и приложениями.

Дополнительные сведения см. в документации Amazon Bedrock Projects и в AWS Cost Management User Guide.


Материал — перевод статьи с английского.

Оригинал: Manage AI costs with Amazon Bedrock Projects