AWS Bedrock - Image Generation

AWS Bedrock - Image Generation

Stable Diffusion, Amazon Titan Image Generator, Amazon Nova Canvas 모델로 Bedrock 이미지 생성을 사용해요.

출처: 문서

본문

지원 모델 (Supported Models)

모델 이름 함수 호출 비용 추적
Stable Diffusion 3 - v0 image_generation(model="bedrock/stability.stability.sd3-large-v1:0", prompt=prompt)
Stable Diffusion - v0 image_generation(model="bedrock/stability.stable-diffusion-xl-v0", prompt=prompt)
Stable Diffusion - v1 image_generation(model="bedrock/stability.stable-diffusion-xl-v1", prompt=prompt)
Amazon Titan Image Generator - v1 image_generation(model="bedrock/amazon.titan-image-generator-v1", prompt=prompt)
Amazon Titan Image Generator - v2 image_generation(model="bedrock/amazon.titan-image-generator-v2:0", prompt=prompt)
Amazon Nova Canvas - v1 image_generation(model="bedrock/amazon.nova-canvas-v1:0", prompt=prompt)

사용법 (Usage)

기본 사용법 (SDK)

import os
from litellm import image_generation

os.environ["AWS_ACCESS_KEY_ID"] = ""
os.environ["AWS_SECRET_ACCESS_KEY"] = ""
os.environ["AWS_REGION_NAME"] = ""

response = image_generation(
    prompt="A cute baby sea otter",
    model="bedrock/stability.stable-diffusion-xl-v0",
)
print(f"response: {response}")

선택 파라미터 설정

import os
from litellm import image_generation

os.environ["AWS_ACCESS_KEY_ID"] = ""
os.environ["AWS_SECRET_ACCESS_KEY"] = ""
os.environ["AWS_REGION_NAME"] = ""

response = image_generation(
    prompt="A cute baby sea otter",
    model="bedrock/stability.stable-diffusion-xl-v0",
    ### OPENAI-COMPATIBLE ###
    size="128x512",  # width=128, height=512
    ### PROVIDER-SPECIFIC ###
    # see `AmazonStabilityConfig` in bedrock.py for all params
    seed=30,
)
print(f"response: {response}")

LiteLLM Proxy

1. config.yaml 설정:

model_list:
  - model_name: amazon.nova-canvas-v1:0
    litellm_params:
      model: bedrock/amazon.nova-canvas-v1:0
      aws_region_name: "us-east-1"
      aws_secret_access_key: my-key  # OPTIONAL - all boto3 auth params supported
      aws_secret_access_id: my-id  # OPTIONAL - all boto3 auth params supported

2. Proxy 시작:

litellm --config /path/to/config.yaml

3. 테스트:

텍스트 → 이미지:

curl -L -X POST 'http://0.0.0.0:4000/v1/images/generations' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $LITEL..._KEY' \
  -d '{
    "model": "amazon.nova-canvas-v1:0",
    "prompt": "A cute baby sea otter"
  }'

색상 가이드 생성:

curl -L -X POST 'http://0.0.0.0:4000/v1/images/generations' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer $LITEL..._KEY' \
  -d '{
    "model": "amazon.nova-canvas-v1:0",
    "prompt": "A cute baby sea otter",
    "taskType": "COLOR_GUIDED_GENERATION",
    "colorGuidedGenerationParams": {"colors":["#FFFFFF"]}
  }'

Amazon Nova Canvas - 이미지 편집

Bedrock Nova Canvas(amazon.nova-canvas-v1:0)와 함께 OpenAI 호환 image_edit()를 사용해요. 요청은 생성과 동일한 InvokeModel API를 사용하며, LiteLLM이 입력을 Nova Canvas task type으로 매핑해요:

시나리오 Bedrock에 보내는 taskType
이미지 + 프롬프트 (마스크 없음) IMAGE_VARIATION
이미지 + 프롬프트 + 마스크 INPAINTING (inPaintingParams.image, maskImage 또는 maskPrompt)
taskType: OUTPAINTING + mask 또는 maskPrompt OUTPAINTING (Bedrock은 둘 중 하나를 요구; LiteLLM은 둘 다 없으면 명확한 에러 발생)
BACKGROUND_REMOVAL BACKGROUND_REMOVAL

BACKGROUND_REMOVAL의 경우 AWS 요청에 imageGenerationConfig를 포함하면 안 되며, LiteLLM은 size, n, seed 등을 전달해도 그 태스크에 대해 이를 생략해요. 이미지 편집용 추가 Nova Canvas inference ID는 model_prices_and_context_window.json에서 supports_nova_canvas_image_edit: true를 설정해야 해요 (amazon.nova-canvas-v1:0 참고).

from litellm import image_edit

response = image_edit(
    image=open("photo.png", "rb"),
    prompt="Add soft sunset lighting",
    model="bedrock/amazon.nova-canvas-v1:0",
)

Inference Profiles로 이미지 생성

AWS Bedrock Application Inference Profiles를 이미지 생성에 쓸 때 model_id 파라미터로 inference profile ARN을 지정해요.

SDK:

from litellm import image_generation

response = image_generation(
    model="bedrock/amazon.nova-canvas-v1:0",
    model_id="arn:aws:bedrock:eu-west-1:000000000000:application-inference-profile/a0a0a0a0a0a0",
    prompt="A cute baby sea otter",
)
print(f"response: {response}")

Proxy:

model_list:
  - model_name: nova-canvas-inference-profile
    litellm_params:
      model: bedrock/amazon.nova-canvas-v1:0
      model_id: arn:aws:bedrock:eu-west-1:000000000000:application-inference-profile/a0a0a0a0a0a0
      aws_region_name: "eu-west-1"

더 알아보기 (Learn more)