Amazon SageMaker 설정 가이드

Amazon SageMaker 설정 가이드

이 문서는 개발 팀이 Amazon SageMaker에서 Cohere의 서비스를 이용할 수 있도록 설정하는 방법을 안내해요. 사전 준비물부터 실제 모델 호출 코드까지 차근차근 살펴볼게요.

출처: 문서

본문

이 문서는 개발 팀이 Amazon SageMaker에서 Cohere의 서비스에 접근하도록 하는 방법을 안내해요.

사전 준비물 (Prerequisites)

Amazon SageMaker에서 Cohere의 서비스를 성공적으로 구독하려면 사용자에게 다음 Identity and Access Management (IAM) 권한이 필요해요:

  • AmazonSageMakerFullAccess
  • aws-marketplace:ViewSubscriptions
  • aws-marketplace:Subscribe
  • aws-marketplace:Unsubscribe

이 권한들은 사용자가 조직의 Amazon SageMaker 구독을 관리할 수 있게 해줘요. Amazon IAM 권한 관리에 대해 자세히 알아보세요. 계정 권한에 대해 궁금한 점이 있다면 AWS 관리자에게 문의하세요.

Cohere with Amazon SageMaker 설정

먼저 Cohere의 SageMaker Marketplace로 이동해 사용 가능한 제품 제공 목록을 확인해요. 구독하고 싶은 제품을 선택하세요.

다음으로 Product Detail 페이지의 도구를 살펴보며 구독을 어떻게 구성할지 평가할 수 있어요. 페이지에는 다음 정보가 담겨 있어요:

  • Pricing: 이 섹션에서는 다양한 인스턴스 유형에서 추론(inference)을 실행하는 비용을 예상할 수 있어요.
  • Usage: 이 섹션에는 각 모델이 지원하는 데이터 형식에 대한 기술적 세부 정보가 들어 있고, 개발자들이 Cohere 모델과 통합하는 데 필요한 작업량을 파악하는 데 도움이 되는 문서 및 노트북 링크도 제공돼요.
  • Subscribing: 이 섹션에서는 제안을 수락하기 전에 최종 검토를 위해 가격 세부 정보와 EULA를 다시 보여줘요. 이 정보는 Product Detail 페이지의 정보와 동일해요.
  • Configuration: 이 섹션의 주요 목적은 구독한 제품의 Amazon Resource Name (ARN)을 검색하는 거예요.

Warning

Cohere software 버전 1.0.5 이후(또는 model 버전 3.0.5 이후)부터는 엔드포인트 구성 시(변형 옵션으로) InferenceAmiVersion=al2-ami-sagemaker-inference-gpu-2 파라미터를 지정해야 배포 오류를 피할 수 있어요.

Embeddings

이 코드로 Amazon SageMaker에서 Cohere의 Embed v4 모델을 호출할 수 있어요:

PYTHON

import cohere

co = cohere.SagemakerClientV2(
    aws_region="us-east-1",
    aws_access_key="...",
    aws_secret_key="...",
    aws_session_token="...",
)

# Input parameters for embed. In this example we are embedding hacker news post titles.
texts = [
    "Interesting (Non software) books?",
    "Non-tech books that have helped you grow professionally?",
    "I sold my company last month for $5m. What do I do with the money?",
    "How are you getting through (and back from) burning out?",
    "I made $24k over the last month. Now what?",
    "What kind of personal financial investment do you do?",
    "Should I quit the field of software development?",
]
input_type = "clustering"
model_id = "<YOUR ENDPOINT NAME>"  # On SageMaker, you create a model name that you'll pass here.


# Invoke the model and print the response
result = co.embed(
    model=model_id,
    input_type=input_type,
    texts=texts,
    embedding_types=["float"],
)

print(result)

Warning

Cohere의 embed 모델은 배치 변환(batch transform) 작업을 지원하지 않아요.

텍스트뿐만 아니라 이미지도 처리할 수 있는 멀티모달 임베딩 모델도 출시했어요.

텍스트 생성 (Text Generation)

이 코드로 Amazon SageMaker에서 Cohere의 Command 모델을 호출할 수 있어요:

PYTHON

import cohere

co = cohere.SagemakerClient(
    aws_region="us-east-1",
    aws_access_key="...",
    aws_secret_key="...",
    aws_session_token="...",
)

# Invoke the model and print the response
result = co.chat(message="Write a LinkedIn post about starting a career in tech:",
                 model="<YOUR ENDPOINT NAME>") # On SageMaker, you create a model name that you'll pass here. 

print(result)

Reranking

이 코드로 Amazon SageMaker에서 Cohere의 Rerank v4.0 모델을 호출할 수 있어요:

PYTHON

import cohere

co = cohere.SagemakerClientV2(
    aws_region="us-east-1",
    aws_access_key="...",
    aws_secret_key="...",
    aws_session_token="...",
)

# Set up your documents and query
query = "YOUR QUERY"
docs = [
    "String 1",
    "String 2"
]

# Invoke the model and print the response
results = co.rerank(
    model="<YOUR RERANK-V4.0 ENDPOINT NAME>", # On SageMaker, you create a model name that you'll pass here.
    query=query,
    documents=docs,
    top_n=2,
)

print(results)

Parsing

이 코드로 Amazon SageMaker에서 Cohere의 Parse 모델을 호출할 수 있어요. 데이터 URI가 페이로드 제한을 넘지 않도록 먼저 이미지 크기를 조정하고 WEBP로 변환하세요.

PYTHON

from PIL import Image
import base64
import cohere

IMG_MAX_SIZE = 2048
with Image.open("page.png") as img:
    img.thumbnail(
        (IMG_MAX_SIZE, IMG_MAX_SIZE), Image.Resampling.LANCZOS
    )
    if img.mode != "RGB":
        img = img.convert("RGB")
    img.save("page.webp", format="WEBP", quality=90)

with open("page.webp", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()
image_url = f"data:image/webp;base64,{b64}"

co = cohere.SagemakerClientV2(
    aws_region="us-east-1",
    aws_access_key="...",
    aws_secret_key="...",
    aws_session_token="...",
)

# Invoke the model and print the response
result = co.parse(
    model="<YOUR PARSE ENDPOINT NAME>",  # On SageMaker, you create a model name that you'll pass here.
    document={
        "type": "image_url",
        "image_url": image_url,
    },
    output_format="markdown",  # or "blocks"
)

print(result)

Amazon SageMaker Jumpstart를 통한 접근

Cohere의 모델은 Amazon SageMaker Jumpstart에서도 사용할 수 있어요. 몇 번의 클릭만으로 모델에 쉽게 접근할 수 있도록 도와주는 기능이에요.

SageMaker Jumpstart에서 Cohere 모델에 접근하려면 다음 단계를 따라가세요:

  • AWS Console에서 Amazon SageMaker로 이동해 Studio를 클릭해요.
  • 그다음 Open Studio를 클릭해요. 이 옵션이 보이지 않는다면 먼저 사용자 프로필을 만들어야 해요.
  • 그러면 SageMaker Studio 페이지로 이동하게 돼요. Prebuilt and automated solutions에서 JumpStart를 선택해요.
  • 모델 목록이 나타나요. Cohere 모델을 찾으려면 검색창에 "cohere"를 입력해요.
  • Cohere 모델을 선택하면 모델에 대한 세부 정보와 추가 리소스 링크를 확인할 수 있어요.
  • Notebooks 탭으로 이동해 JupyterLab에서 노트북을 실행하면 모델을 직접 사용해 볼 수 있어요.

이 과정에 대해 궁금한 점이 있으면 [email protected]으로 문의하세요.

추론 지연 시간 최적화 (Optimize your Inference Latencies)

기본적으로 SageMaker 엔드포인트는 무작위 라우팅 전략을 사용해요. 즉, 모델 엔드포인트로 들어오는 요청이 머신러닝 인스턴스에 무작위로 전달되는데, 이는 생성형 AI에 집중하는 애플리케이션에서 지연 문제를 일으킬 수 있어요. 2023년에 SageMaker 플랫폼은 라우팅에 'least outstanding requests'(LOR) 접근 방식을 사용할 수 있게 해주는 RoutingStrategy 파라미터를 도입했어요. LOR을 사용하면 SageMaker가 엔드포인트 뒤에 있는 인스턴스의 부하와 각 인스턴스에 배포된 모델 또는 추론 구성 요소를 모니터링한 다음, 요청을 서빙하기에 가장 적합한 인스턴스로 최적으로 라우팅해요.

LOR은 다양한 조건에서 지연 시간 개선 효과를 보여줬어요. 자세한 내용은 블로그 게시물에서 확인할 수 있어요.

다음 단계 (Next Steps)

선택한 구성과 Product ARN이 준비되면 SageMaker에서 Cohere의 모델 서비스와 통합하는 데 필요한 모든 것을 갖추게 된 거예요.

Cohere가 추천하는 다음 단계는 Cohere의 Amazon SageMaker 노트북 목록에서 적절한 노트북을 찾아 그 안내를 따르거나, Cohere의 SageMaker 노트북 링크를 개발 팀에 전달해 구현하도록 하는 거예요. 이 노트북들은 철저하고 개발자 중심적인 가이드로, 팀이 프로덕션에서 라이브 추론을 위해 Cohere 엔드포인트를 활용하기 시작하는 데 도움을 줄 거예요.

Amazon SageMaker에서 Cohere 제품을 구독하거나 구성하는 데 추가 질문이 있다면 [email protected]으로 문의하세요.

더 알아보기 (Learn more)