ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS Bedrock] Bedrock 시작하기
    Programing/AWS 2024. 2. 27. 00:59
    반응형

    LLM의 빠른 도입과 테스트를 위해 Bedrock을 이용해 LLM서비스를 구축하기로 선택했습니다. (아래의 이전 글 참조)

     

    [생성AI 서비스 선택] AWS Sagemaker VS AWS Bedrock

    생성AI를 비즈니스에 도입하는 경우가 급증하고 있는 만큼, '우리도...!!'를 외치게 되는 분들이 많으실 겁니다. OpenAI나 기타 기업 및 서비스의 API를 직접 가져다 쓰기에는 리소스가 만만치 않고,

    brain-nim.tistory.com

     

    이제 AWS Bedrock이 제공하는 Foundation Model 중 하나를 선택해 서비스를 구축해봅시다.

     

    주의사항

    주의1) 리전 별 이용 가능한 모델, 가격이 다릅니다.

    https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/models-supported.html

    미국 동부, 미국 서부를 제외하면 선택 가능 모델이 매우 제한됩니다.

    https://aws.amazon.com/ko/bedrock/pricing/?refid=06301b9b-f6b6-4cc7-a841-f8e2afa0e4d0

    같은 모델이더라도 미국이 더 쌉니다.

    마음편하게 미국 동부나 서부를 선택하겠습니다.

     

    주의2) 모델 별 제공가능 범위가 다릅니다.

    https://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/models-supported.html

    이미지를 지원하는가, 임베딩을 지원하는가, fine-tuning을 지원하는가 등등이 모두 다릅니다.

     

    구축하고자 하는 서비스를 커버할 수 있는 모델이 없다면,

    일찌감치 Sagemaker나 타 서비스로 넘어가는게 좋을 수 있습니다.

    (물론, 섞어서 쓰거나 맛만 보려고 Bedrock을 계속 진행해봐도 좋겠죠)

     

    저는 자료 임베딩, RAG까지 테스트 해보고 싶어서 Cohere Command Light를 선택하겠습니다.

     

     

    시작하기

    Machine Learning -> Amazon Bedrock

     

    1) Model access

    FM을 이용하기 위해서는 access 권한을 얻어야 합니다.
    사용할 모델을 선택한 후 Request 합니다.
    제 경우에는 권한 요청하고 약 3분정도 소요됐습니다.

    2) IAM Access Key 발급

    이미 IAM 발급받은 키가 있으시다면 다음으로 넘어가셔도 됩니다.

    더보기

    a. Create User

    Create user
    Step1에서 User의 이름 적당히 짓고난 뒤, Step2(사진)에서 Bedrock에 접근할 수 있는 policy를 잘 선택해주세요

    추가) 사진에서는 BedrockFullAccess만 예시로 넣었는데, RAG를 위한 지식베이스 추가를 위해 설정하는 과정에서 필요한 Access들을 그때그때 추가로 넣었습니다.

     

    b. Create access key

    생성한 User로 들어가서 오른쪽 상단의 Create access key를 눌러 Key를 발급받습니다.
    • Access key ID
    • Secret access key

     

    환경설정 (Python)

    Python으로 요청을 주고받는 걸 가정하고 설명 이어갑니다.

    1) pip install boto3, awscli

    pip install boto3 awscli

     

    2) aws cli 환경설정

    C:\Users\OOOOO> aws configure
    AWS Access Key ID [None]: $$$$$$$$$$$$$$$$$$$$
    AWS Secret Access Key [None]: $$$$$$$$$$$$$$$$$$$$$$
    Default region name [None]: us-west-2  # 모델을 선택했던 리전을 입력해주세요.
    Default output format [None]:   # 전 입력 안했습니다.

     

     

    Bedrock으로 Request

    각 회사마다, 모델마다 request 방식이 다르니 유의해주세요.

    request 방식을 확인하는 방법은 다음과 같습니다.

    좌측 Examples, Providers에서 방식확인
    각 회사의 각 모델별로 API request에 필요한 정보와 형식을 알 수 있습니다.

    저는 Cohere Command Light 모델을 기준으로 진행하겠습니다.

     

    import json
    import boto3
    
    bedrock = boto3.client(service_name="bedrock-runtime")
    
    prompt_data = "안녕, Python의 장단점을 각각 1개씩만 말해줄래?"
    
    # body <- Inference configuration
    body = {"prompt": prompt_data, "max_tokens": 100, "temperature": 0.8}
    
    # invoke_model <- API Request
    response = bedrock.invoke_model(
        modelId="cohere.command-light-text-v14",
        contentType="application/json",
        accept="application/json",
        body=json.dumps(body)
    )
    
    status_code = response['ResponseMetadata']['HTTPStatusCode']
    if status_code == 200:
        response_body = json.loads(response['body'].read())
        print(response_body['generations'][0]['text'])

     

    Hello, fellow coders!

    While it's not necessary to learn every single fundamental concept of Python in a depth of 1 concept per day, here is a list of the most fundamental concepts in Python, each one addressed in a single sentence:

    1. **Variables**: store data for later use.
    2. **Booleans**: Used to represent a condition, usually in the form of True or False.
    3. **Conditional Statements**: Used to make decisions in code,

     

    신호를 잘 주고받았습니다!

     

    영어만 서포트하는 모델임에도 한국어 프롬프트를 이해한 듯 합니다.

    물론 장단점 1개씩만 말해달라고 했는데 저렇게 길게 말하는걸 보면, 기본모델을 바로쓰는건 무리인 것으로 보입니다.

    나중에 프롬프트 엔지니어링을 진행해야 할 듯 합니다.

     


     

    반응형

    댓글

Designed by Tistory.