Amazon Web Services 한국 블로그

Amazon Bedrock – Amazon Titan 이미지 생성기, 다중 모드 임베딩 및 텍스트 모델 지원

오늘, 두 가지 새로운 Amazon Titan 멀티모달 파운데이션 모델(FM)인 Amazon Titan Image Generator(프리뷰)와 Amazon Titan Multimodal Embeddings을 소개합니다. 또한 Amazon Titan Text Lite와 Amazon Titan Text Express가 이제 Amazon Bedrock에서 정식 출시되었다는 소식을 전하게 되어 기쁩니다. 이제 Amazon Titan Multimodal Embeddings을 포함하여 출시된 세 가지 Amazon Titan Text FM 중에서 선택할 수 있습니다.

Amazon Titan 모델은 Amazon에서 25년간 쌓아온 인공 지능(AI) 및 기계 학습(ML) 혁신을 통합하고 완전 관리형 API를 통해 다양한 고성능 이미지, 멀티모달 및 텍스트 모델 옵션을 제공합니다. AWS는 대규모 데이터 세트를 대상으로 이러한 모델을 사전 훈련하여 다양한 사용 사례를 지원하는 동시에 AI의 책임 있는 사용을 지원하도록 구축된 강력한 범용 모델을 만들었습니다.

기본 모델을 그대로 사용하거나 자신의 데이터를 사용하여 비공개로 사용자 지정할 수 있습니다. Amazon Titan FM에 대한 액세스를 활성화하려면 Amazon Bedrock 콘솔로 이동하여 왼쪽 하단 메뉴에서 모델 액세스를 선택하세요. 모델 액세스 개요 페이지에서 모델 액세스 관리를 선택하고 Amazon Titan FM에 대한 액세스를 활성화합니다.

Amazon Titan 모델

새로운 모델을 간단히 소개해 드리겠습니다.

Amazon Titan Image Generator(프리뷰)
콘텐츠 제작자는 이제 Amazon Titan Image Generator를 사용하여 영어로 된 자연어 프롬프트를 사용하여 이미지를 빠르게 생성하고 개선할 수 있습니다. 이를 통해 광고, 전자 상거래, 미디어 및 엔터테인먼트 분야의 기업은 저렴한 비용으로 스튜디오 품질의 사실적인 이미지를 대량으로 제작할 수 있습니다. 모델을 사용하면 텍스트 설명을 기반으로 여러 이미지 옵션을 생성하여 이미지 개념을 쉽게 반복할 수 있습니다. 모델은 여러 객체가 포함된 복잡한 프롬프트를 이해하고 관련 이미지를 생성할 수 있습니다. 고품질의 다양한 데이터를 대상으로 훈련되었으며, 속성이 포괄적이고 제한된 왜곡이 제한된 사실적인 이미지와 같은 보다 정확한 결과를 생성합니다.

Titan Image Generator의 이미지 편집 기능에는 내장된 분할 모델을 사용하여 텍스트 프롬프트로 이미지를 자동으로 편집할 수 있는 기능이 포함됩니다. 모델은 이미지 마스크를 사용한 인페인팅과 이미지의 배경을 확장하거나 변경하는 아웃페인팅을 지원합니다. 또한 이미지 크기를 구성하고 모델에서 생성할 이미지 변형 수를 지정할 수 있습니다.

또한 자산 데이터로 모델을 사용자 지정하여 브랜드 가이드라인에 맞는 이미지를 생성하거나, 예를 들어 이전 마케팅 캠페인의 이미지로 모델을 미세 조정하는 등 특정 스타일의 이미지를 생성할 수 있습니다. 또한 Titan Image Generator는 유해한 콘텐츠 생성을 완화하여 AI의 책임 있는 사용을 지원합니다. Amazon Titan에서 생성한 모든 이미지에는 보이지 않는 워터마크가 포함되어 있으며, 기본적으로 AI가 생성한 이미지를 식별하는 신중한 메커니즘을 제공하여 잘못된 정보의 확산을 줄이는 데 도움이 되도록 설계되었습니다.

Amazon Titan Image Generator 작동 방식
이미지를 생성하라는 영어 자연어 프롬프트를 제출하거나 편집할 이미지를 업로드하여 Amazon Bedrock 콘솔에서 모델 사용을 시작할 수 있습니다. 다음 예제에서는 AWS SDK for Python(Boto3)을 사용하여 Amazon Titan Image Generator로 이미지를 생성하는 방법을 보여줍니다.

먼저, 추론 요청 본문에서 지정할 수 있는 이미지 생성을 위한 구성 옵션을 살펴보겠습니다. 작업 유형의 경우 TEXT_IMAGE를 선택하여 자연어 프롬프트에서 이미지를 생성하겠습니다.

import boto3
import json

bedrock = boto3.client(service_name="bedrock")
bedrock_runtime = boto3.client(service_name="bedrock-runtime")

# ImageGenerationConfig 옵션:
#   numberOfImages:생성할 이미지 수
#   quality: 생성된 이미지의 품질, standard 또는 premium
#   height: 출력 이미지의 높이
#   width: 출력 이미지의 너비
#   cfgScale: 분류 자유도 척도
#   seed: 재현성을 위해 사용할 시드  

body = json.dumps(
    {
        "taskType": "TEXT_IMAGE",
        "textToImageParams": {
            "text": "green iguana",   # 필수
#           "negativeText": "<text>"  # 선택 사항
        },
        "imageGenerationConfig": {
            "numberOfImages": 1,   # 범위: 1~5 
            "quality": "premium",  # 옵션: standard 또는 premium
            "height": 768,         # 문서에서 지원되는 높이 목록 
            "width": 1280,         # 문서에서 지원되는 너비 목록
            "cfgScale": 7.5,       # 범위: 1.0(제외)~10.0
            "seed": 42             # 범위: 0~214783647
        }
    }
)

다음으로, Amazon Titan Image Generator의 모델 ID를 지정하고 InvokeModel API를 사용하여 추론 요청을 보냅니다.

response = bedrock_runtime.invoke_model(
    body=body, 
    modelId="amazon.titan-image-generator-v1" 
    accept="application/json", 
    contentType="application/json"
)

그런 다음 응답을 구문 분석하고 base64로 인코딩된 이미지를 디코딩합니다.

import base64
from PIL import Image
from io import BytesIO

response_body = json.loads(response.get("body").read())
images = [Image.open(BytesIO(base64.b64decode(base64_image))) for base64_image in response_body.get("images")]

for img in images:
    display(img)

짜잔, 여기 초록색 이구아나가 나타났습니다(사실 제가 가장 좋아하는 동물 중 하나입니다).

Amazon Titan Image Generator로 생성된 초록색 이구아나

모든 Amazon Titan Image Generator 기능에 대해 자세히 알아보려면 Amazon Titan 제품 페이지를 참조하세요. (이 페이지에서 더 많은 이구아나를 볼 수 있습니다.)

다음으로, 이 이미지를 새로운 Amazon Titan Multimodal Embeddings 모델에 사용해 보겠습니다.

Amazon Titan Multimodal Embeddings
Amazon Titan Multimodal Embeddings을 사용하면 최종 사용자를 위해 보다 정확하고 상황에 맞는 멀티모달 검색과 추천 환경을 구축할 수 있습니다. 멀티모달이란 고유한 유형의 데이터(양식)를 사용하여 정보를 처리하고 생성하는 시스템의 능력을 말합니다. Titan Multimodal Embeddings을 사용하면 텍스트나 이미지 또는 이 둘의 조합을 입력으로 제출할 수 있습니다.

이 모델은 이미지와 최대 128토큰의 짧은 영어 텍스트를 임베딩으로 변환하여 의미론적 의미와 데이터 간의 관계를 포착합니다. 이미지 캡션 쌍에 대해 모델을 미세 조정할 수도 있습니다. 예를 들어 텍스트와 이미지를 결합하여 회사별 제조 부품을 설명하면 부품을 더 효과적으로 이해하고 식별할 수 있습니다.

기본적으로 Titan Multimodal Embeddings은 1,024차원의 벡터를 생성하며, 이를 통해 높은 수준의 정확성과 속도를 제공하는 검색 환경을 구축할 수 있습니다. 속도와 가격 성능을 최적화하기 위해 더 작은 벡터 치수를 구성할 수도 있습니다. 이 모델은 비동기 배치 API를 제공하며, Amazon OpenSearch Service는 곧 신경 검색을 위한 Titan Multimodal Embeddings 지원을 추가하는 커넥터를 제공할 예정입니다.

Amazon Titan Multimodal Embeddings 작동 방식
이 데모에서는 결합된 이미지와 텍스트 임베딩을 만듭니다. 먼저 이미지를 base64로 인코딩한 다음 추론 요청 본문에 inputText 또는 inputImage를 지정하거나 둘 다 지정합니다.

# 지원되는 최대 이미지 크기는 2048 x 2048 픽셀입니다
with open("iguana.png", "rb") as image_file:
    input_image = base64.b64encode(image_file.read()).decode('utf8')

# 텍스트나 이미지 또는 둘 다 지정할 수 있습니다
body = json.dumps(
    {
        "inputText": "Green iguana on tree branch",
        "inputImage": input_image
    }
)

다음으로, Amazon Titan Multimodal Embeddings의 모델 ID를 지정하고 InvokeModel API를 사용하여 추론 요청을 보냅니다.

response = bedrock_runtime.invoke_model(
	body=body, 
	modelId="amazon.titan-embed-image-v1", 
	accept="application/json", 
	contentType="application/json"
)

응답을 살펴보겠습니다.

response_body = json.loads(response.get("body").read())
print(response_body.get("embedding"))
	
[-0.015633494, -0.011953583, -0.022617092, -0.012395329, 0.03954641, 0.010079376, 0.08505301, -0.022064181, -0.0037248489, ...]

간략히 보기 위해 출력을 수정했습니다. 코사인 유사도(Cosine Similarity) 또는 유클리드 거리(Euclidean Distance)와 같은 지표로 측정된 멀티모달 임베딩 벡터 간의 거리는 표현된 정보가 양식 간에 얼마나 유사하거나 다른지를 보여줍니다. 거리가 짧을수록 유사성이 커지고 거리가 멀수록 비유사성이 커집니다.

다음 단계로 벡터 저장소 또는 벡터 데이터베이스에 멀티모달 임베딩을 저장하고 인덱싱하여 이미지 데이터베이스를 구축할 수 있습니다. 텍스트-이미지(text-to-image) 검색을 구현하려면 inputText를 사용하여 데이터베이스를 쿼리하세요. 이미지-이미지(image-to-image) 검색의 경우 inputImage를 사용하여 데이터베이스를 쿼리하세요. 이미지+텍스트-이미지(image+text-to-image) 검색의 경우 inputImageinputText를 모두 사용하여 데이터베이스를 쿼리하세요.

Amazon Titan Text
Amazon Titan Text Lite와 Amazon Titan Text Express는 요약, 번역 및 대화형 챗봇 시스템을 비롯한 광범위한 텍스트 관련 작업을 지원하는 대규모 언어 모델(LLM)입니다. 또한 코드를 생성할 수 있으며 JSON 및 CSV와 같은 널리 사용되는 프로그래밍 언어와 텍스트 형식을 지원하도록 최적화되어 있습니다.

Titan Text Express – Titan Text Express는 최대 컨텍스트 길이가 8,192토큰이며 개방형 텍스트 생성 및 대화형 채팅, 검색 증강 생성(RAG) 워크플로 내 지원과 같은 광범위한 작업에 이상적입니다.

Titan Text Lite – Titan Text Lite는 최대 컨텍스트 길이가 4,096토큰이며 영어 작업에 적합한 가격 대비 성능이 뛰어난 버전입니다. 이 모델은 사용자 정의가 가능하며 기사 요약 및 카피라이팅과 같은 작업에 맞게 미세 조정할 수 있습니다.

Amazon Titan Text 작동 방식
이번 데모에서는 Titan Text에 팀원들에게 라이브 스트림 구성을 제안하는 이메일을 보내달라고 요청합니다. “Principal Developer Advocate인 Antje가 Developer Relations 팀의 동료들에게 새로운 Amazon Titan V1 모델을 시연하기 위한 라이브 스트림을 구성하도록 독려하는 짧은 이메일을 작성해 주세요.”

body = json.dumps({
    "inputText": prompt, 
    "textGenerationConfig":{  
        "maxTokenCount":512,
        "stopSequences":[],
        "temperature":0,
        "topP":0.9
    }
})

Titan Text FM은 응답의 무작위성과 다양성을 제어하기 위해 temperaturetopP 추론 파라미터를 지원할 뿐만 아니라 응답의 길이를 제어하기 위해 maxTokenCountstopSequences도 지원합니다.

다음으로, Titan Text 모델 중 하나의 모델 ID를 선택하고 InvokeModel API를 사용하여 추론 요청을 보냅니다.

response = bedrock_runtime.invoke_model(
    body=body,
	# 모델ID 선택
	# Titan Text Express: "amazon.titan-text-express-v1"
	# Titan Text Lite: "amazon.titan-text-lite-v1"
	modelID="amazon.titan-text-express-v1"
    accept="application/json", 
    contentType="application/json"
)

응답을 살펴보겠습니다.

response_body = json.loads(response.get('body').read())
outputText = response_body.get('results')[0].get('outputText')

text = outputText[outputText.index('\n')+1:]
email = text.strip()
print(email)

제목: 새로운 Amazon Titan V1 모델을 라이브로 시연해 보세요!

친애하는 동료 여러분,

잘 지내고 계시기를 바랍니다. 최근에 새로운 Amazon Titan V1 모델을 출시했다는 소식을 발표하게 되어 기쁘게 생각합니다. 이번 기회는 더 넓은 개발자 커뮤니티에 모델의 기능을 선보일 수 있는 좋은 기회가 될 것이라고 믿습니다.

이러한 모델을 시연하고 기능, 이점 및 개발자가 혁신적인 애플리케이션을 구축하는 데 어떻게 도움이 되는지 논의하는 라이브 스트림을 구성할 것을 제안드립니다. 이 라이브 스트림은 YouTube 채널, Twitch 또는 시청자에게 적합한 기타 플랫폼에서 호스팅될 수 있습니다.

새로운 모델을 선보임으로써 가시성이 높아질 뿐만 아니라 개발자들과 더 돈독한 관계를 구축하는 데도 도움이 될 것이라고 생각합니다. 또한 피드백을 받고 개발자의 요구 사항에 따라 제품을 개선할 수 있는 기회도 가질 수 있을 것입니다.

이 라이브 스트림을 구성하는 데 관심이 있으시면 알려주세요. 필요한 지원이나 지침을 기꺼이 제공해 드리겠습니다. 함께 이 라이브 스트림을 성공으로 이끌고 Amazon Titan V1 모델의 성능을 전 세계에 보여주세요!

감사합니다.
Antje
Principal Developer Advocate

좋습니다. 이 이메일을 지금 바로 보낼 수 있겠습니다!

가용성 및 요금
Amazon Titan Text FM은 오늘부터 AWS 리전 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(싱가포르, 도쿄) 및 유럽(프랑크푸르트)에서 사용할 수 있습니다. Amazon Titan Multimodal Embeddings은 오늘부터 미국 동부(버지니아 북부) 및 미국 서부(오레곤) AWS 리전에서 사용할 수 있습니다. Amazon Titan Image Generator는 미국 동부(버지니아 북부) 및 미국 서부(오레곤) AWS 리전에서 공개 프리뷰로 사용할 수 있습니다. 요금 세부 정보는 Amazon Bedrock 요금 페이지를 참조하세요.

자세히 알아보기

지금 바로 AWS Management Console로 이동하여 Amazon Bedrock에서 Amazon Titan FM을 사용하여 생성형 AI 애플리케이션 구축을 시작해 보세요!

– Antje