AWS 기술 블로그

모델의 정확도와 품질 향상을 위해 Amazon Bedrock에서 Anthropic’s Claude 3 Haiku 모델 미세 조정하기

이 글은 AWS Machine Learning Blog에 게시된 ‘Fine-tune Anthropic’s Claude 3 Haiku in Amazon Bedrock to boost model accuracy and quality‘ by Yanyan Zhang를 한국어 번역 및 편집하였습니다.

Amazon Bedrock에서 제공되는 Anthropic Claude와 같은 최첨단 대규모 언어 모델(LLM)은 방대한 양의 데이터를 학습하여 인간과 같은 텍스트를 이해하고 생성할 수 있습니다. Anthropic Claude 3 Haiku를 독점 데이터셋으로 미세 조정(Fine-tuning)하면 특정 분야나 작업에서 최적의 성능을 제공할 수 있습니다. 이와 같은 심층 맞춤화는 고유한 데이터를 활용하여 차별화된 요소로 작용합니다.

Amazon Bedrock은 고성능의 파운데이션 모델(FM)을 선택할 수 있는 완전 관리형 서비스로, 생성형 인공지능(AI) 애플리케이션을 구축하기 위한 다양한 기능을 제공하며, 보안, 프라이버시, 책임 있는 AI를 통해 개발을 단순화합니다. Amazon Bedrock 커스텀 모델을 통해 사용자는 데이터를 안전하게 사용하여 FM을 커스터마이징할 수 있습니다. Anthropic에 따르면 Claude 3 Haiku는 지능 카테고리에서 가장 빠르고 비용 효율적인 모델입니다. 이제 미국 서부(Oregon) AWS 리전에서 Amazon Bedrock을 통해 Anthropic Claude 3 Haiku를 프리뷰로 미세 조정할 수 있습니다. Amazon Bedrock은 Anthropic Claude 모델을 미세 조정할 수 있는 유일한 완전 관리형 서비스입니다.

이번 게시글 에서는 Amazon Bedrock에서 Anthropic Claude 3 Haiku를 미세 조정하는 워크플로우를 소개합니다. 먼저 미세 조정의 일반적인 개념을 설명한 후, 권한 설정, 데이터 준비, 미세 조정 작업 시작, 미세 조정된 모델의 평가 및 배포 등 중요한 단계에 대해 중점적으로 다룹니다.

솔루션 개요

미세 조정은 사전 학습된 언어 모델을 특정 작업에 맞게 맞춤화하는 자연어 처리(NLP) 기술입니다. 미세 조정 중에는 사전 학습된 Anthropic Claude 3 Haiku 모델의 가중치가 업데이트되어 특정 목표 작업에서 성능이 향상됩니다. 미세 조정을 통해 모델은 작업별 데이터 분포와 어휘에 맞게 지식을 적응시킬 수 있습니다. 학습률과 배치 크기와 같은 하이퍼파라미터를 최적의 미세 조정을 위해 조정해야 합니다.

Amazon Bedrock에서 Anthropic Claude 3 Haiku를 미세 조정하면 기업에 상당한 이점을 제공합니다. 이 과정은 작업별 모델 성능을 향상시켜 모델이 Anthropic Claude 3 Sonnet 또는 Anthropic Claude 3 Opus와 같은 더 강력한 모델을 능가하거나 이에 맞먹는 작업별 성능 지표를 달성할 수 있게 합니다. 그 결과, 기업은 비용과 지연 시간을 줄이면서 성능을 향상시킬 수 있습니다. 본질적으로, Anthropic Claude 3 Haiku의 미세 조정은 Anthropic Claude를 맞춤화할 수 있는 다재다능한 도구를 제공하여 특정 성능 및 지연 시간 목표를 효율적으로 달성할 수 있게 합니다.

Anthropic Claude 3 Haiku를 귀사의 데이터로 미세 조정하여 다양한 사용 사례에서 혜택을 얻을 수 있습니다. 아래의 예시는 Anthropic Claude 3 Haiku 모델의 미세 조정에 적합합 사용 사례입니다.

  • Classification(분류) – 10,000개의 레이블이 지정된 예시가 있고 Anthropic Claude 가 이 작업을 효율적으로 수행하도록 하고 싶을 때.
  • Structured outputs (구조화된 출력) – Anthropic Claude 의 응답이 항상 주어진 구조를 따를 필요가 있을 때.
  • Industry knowledge(산업 지식) – Anthropic Claude 에게 귀사의 회사나 산업에 관한 질문에 답하는 방법을 가르쳐야 할 때.
  • Tools and APIs(도구 및 API) – Anthropic Claude 에게 귀사의 API를 매우 잘 활용하는 방법을 가르쳐야 할 때.

다음 섹션에서는 Amazon Bedrock 콘솔Amazon Bedrock API를 사용하여 Anthropic Claude 3 Haiku를 미세 조정하고 배포하는 단계를 살펴봅니다.

사전 요구 사항

이 기능을 사용하려면 다음 요구 사항을 충족했는지 확인하세요.

  • 활성화된 AWS 계정.
  • Amazon Bedrock에서 Anthropic Claude 3 Haiku가 활성화됨. Amazon Bedrock 콘솔의 모델 액세스 페이지에서 활성화 여부를 확인할 수 있습니다.
  • Amazon Bedrock에서 Anthropic Claude 3 Haiku 미세 조정 프리뷰에 대한 액세스. 액세스를 요청하려면 AWS 계정 팀에 연락하거나 AWS Management Console을 사용해 지원 티켓을 제출하십시오. 지원 티켓을 작성할 때, ServiceBedrock을 선택하고 CategoryModel을 선택하십시오.
  • 필수 학습 데이터셋(및 선택적 검증 데이터셋)이 Amazon Simple Storage Service(Amazon S3)에 준비되고 저장되어 있어야 합니다.

Amazon Bedrock을 사용하여 모델 맞춤화 작업을 생성하려면 다음 권한을 가진 AWS Identity and Access Management(IAM) 역할을 생성해야 합니다(자세한 내용은 ‘모델 사용자 지정을 위한 서비스 역할 생성’ 을 참조하세요).

다음 코드는 Amazon Bedrock이 IAM 역할을 수임할 수 있도록 하는 신뢰 관계를 나타냅니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "account-id"
                },
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:bedrock:us-west-2:account-id:model-customization-job/*"
                }
            }
        }
    ] 
}

데이터 준비

Anthropic Claude 3 Haiku 모델을 미세 조정하려면 학습 데이터가 JSON Lines(JSONL) 형식이어야 하며, 각 줄은 하나의 학습 레코드를 나타냅니다. 구체적으로, 학습 데이터 형식은 MessageAPI와 일치해야 합니다.

{"system": string, "messages": [{"role": "user", "content": string}, {"role": "assistant", "content": string}]}
{"system": string, "messages": [{"role": "user", "content": string}, {"role": "assistant", "content": string}]}
{"system": string, "messages": [{"role": "user", "content": string}, {"role": "assistant", "content": string}]}

다음은 Amazon Bedrock에서 Anthropic Claude 3 Haiku를 미세 조정하기 위한 텍스트 요약 사용 사례에서 한 줄 입력으로 사용된 예시입니다. JSONL 형식에서는 각 레코드가 하나의 텍스트 줄로 구성됩니다.

{
    "system": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.",
    "messages": [
        {
            "role": "user", 
            "content": "instruction:\n\nSummarize the news article provided below.\n\ninput:\nSupermarket customers in France can add airline tickets to their shopping lists thanks to a unique promotion by a budget airline. ... Based at the airport, new airline launched in 2007 and is a low-cost subsidiary of the airline."
         },
        {
            "role": "assistant", 
            "content": "New airline has included voucher codes with the branded products ... to pay a booking fee and checked baggage fees ."
        }
    ]
}

동일한 MessageAPI 형식을 사용하여 미세 조정된 모델을 호출할 수 있으므로 일관성을 유지할 수 있습니다. 각 줄에서 “system” 역할은 선택적 정보로, 특정 목표나 역할을 지정하는 등 모델에 컨텍스트와 지침을 제공하는 방법이며, 흔히 System Prompt(시스템 프롬프트)라고 합니다. “user" 역할은 사용자의 지시에 해당하며 “assistant" 역할은 미세 조정된 모델이 제공해야 하는 바람직한 응답입니다. 미세 조정된 Amazon Bedrock의 Anthropic Claude 3 Haiku는 single-turn및 multi-turn 대화를 모두 지원합니다. multi-turn 대화를 사용하려는 경우 각 줄의 데이터 형식은 다음과 같습니다.

{
    "system": string, 
    "messages": [
        {
            "role": "user", 
            "content": string
        },
        {
            "role": "assistant", 
            "content": string
        },
        {
            "role": "user", 
            "content": string
        },
        {
            "role": "assistant",
            "content": string
        }
    ]
}

마지막 줄의 “assistant" 역할은 미세 조정된 모델의 원하는 출력을 나타내며, 이전 대화 기록은 프롬프트 입력으로 사용됩니다. single-turn 및 multi-turn 대화 데이터 모두에서 각 레코드의 총 길이(시스템, 사용자, 어시스턴트 내용을 포함하여)는 32,000 토큰을 초과해서는 안 됩니다.

학습 데이터 외에도 검증 및 테스트 데이터셋을 준비할 수 있습니다. 선택 사항이긴 하지만, 검증 데이터셋은 권장됩니다. 이 데이터셋을 통해 학습 중 모델의 성능을 모니터링할 수 있기 때문입니다. 검증 데이터셋은 조기 중지와 같은 기능을 가능하게 하며, 모델 성능과 수렴도를 향상시키는 데 도움을 줍니다. 별도로, 테스트 데이터셋은 학습이 완료된 후 최종 모델의 성능을 평가하는 데 사용됩니다. 이 추가 데이터셋은 학습 데이터와 유사한 형식을 따르지만, 미세 조정 과정에서 각기 다른 목적을 수행합니다.

이미 Amazon Bedrock을 사용하여 Amazon Titan, Meta Llama, 또는 Cohere 모델을 미세 조정하고 있다면, 학습 데이터는 다음 형식을 따라야 합니다.

{"prompt": "<prompt1>", "completion": "<expected generated text>"}
{"prompt": "<prompt2>", "completion": "<expected generated text>"}
{"prompt": "<prompt3>", "completion": "<expected generated text>"}

이 형식의 데이터를 위해, 미세 조정을 위한 요구되는 형식으로 변환하는 데 다음 Python 코드를 사용할 수 있습니다.

output_file = "Haiku-FT-Data.jsonl"

with open(input_file, "r") as f_in, open(output_file, "w") as f_out:
    for line in f_in:
        data = json.loads(line)
        prompt = data["prompt"]
        completion = data["completion"]

        new_data = {}
        if system_string:
            new_data["system"] = system_string
        new_data["messages"] = [
            {"role": "user", "content": prompt},
            {"role": "assistant", "content": completion}
        ]

        f_out.write(json.dumps(new_data) + "\n")

print("Conversion completed!")

미세 조정 성능을 최적화하기 위해서는 데이터셋의 크기보다 학습 데이터의 품질이 더 중요합니다. 모델을 미세 조정하고 성능을 평가하기 위해, 50~100개의 행으로 구성된 작지만 고품질의 학습 데이터셋으로 시작하는 것을 권장합니다. 평가 결과를 바탕으로 학습 데이터를 반복적으로 수정하고 개선할 수 있습니다. 일반적으로 고품질 학습 데이터의 크기가 커질수록 미세 조정된 모델의 성능이 향상될 것으로 기대할 수 있습니다. 그러나 데이터 품질에 집중하는 것이 중요합니다. 크기가 크지만 품질이 낮은 데이터셋은 미세 조정된 모델 성능에 원하는 개선을 가져오지 못할 수 있습니다.

현재 Anthropic Claude 3 Haiku의 미세 조정을 위한 학습 및 검증 데이터의 레코드 수 요구 사항은 Amazon Bedrock이 다른 모델의 미세 조정에 대해 설정한 맞춤화 한도와 일치합니다. 구체적으로, 학습 데이터는 10,000개의 레코드를 초과하지 않아야 하며, 검증 데이터는 1,000개의 레코드를 초과하지 않아야 합니다. 이러한 한도는 효율적인 자원 활용을 제공하면서 적절한 데이터 규모 내에서 모델 최적화 및 평가를 가능하게 합니다.

모델 미세 조정

Amazon Bedrock에서 Anthropic Claude 3 Haiku를 미세 조정할 때, 다양한 하이퍼파라미터를 구성할 수 있으며, 이는 미세 조정 과정과 결과 모델의 성능에 큰 영향을 미칠 수 있습니다. 다음 표는 지원되는 하이퍼파라미터를 요약한 것입니다.

하이퍼파라미터 이름 파라미터 설명 타입 기본값 값 범위
epochCount 전체 학습 데이터 세트에 대한 최대 반복 횟수입니다. epochCount는 Epoch와 동일합니다. integer 2 1–10
batchSize 모델 파라미터를 업데이트하기 전에 처리한 샘플 수입니다. integer 32 4–256
learningRateMultiplier 각 배치 후 모델 매개변수가 업데이트되는 학습 속도에 영향을 미치는 승수입니다. float 1 0.1–2
earlyStoppingThreshold 모델 학습 과정의 조기 중단을 방지하기 위해 필요한 최소한의 유효성 검사 손실 개선. float 0.001 0–0.1
earlyStoppingPatience 모델 학습 과정을 중단하기 전에 검증 손실 지표의 정체를 허용하는 한도. int 2 1–10

learningRateMultiplier 매개변수는 모델 자체에 의해 설정된 기본 학습률을 조정하는 요소로, 이 배율을 통해 모델의 기본 학습률을 조정하여 실제로 적용되는 학습률을 결정합니다. 일반적으로 학습 데이터셋 크기가 증가하면 batchSize를 늘려야 하며, 최적의 설정을 찾기 위해 하이퍼파라미터 최적화(HPO)를 수행할 필요가 있습니다. 조기 중지는 과적합을 방지하고 검증 손실이 더 이상 개선되지 않을 때 학습 과정을 중단하는 기법입니다. 검증 손실은 각 에포크가 끝날 때 계산됩니다.

검증 손실이 충분히 감소하지 않았을 경우(earlyStoppingThreshold에 의해 결정됨) 이를 earlyStoppingPatience 횟수만큼 반복하면 학습 과정이 중단됩니다.

예를 들어, 다음 표는 학습 과정 중 각 에포크에서의 검증 손실 예시를 보여줍니다.

Epoch Validation Loss
1 0.9
2 0.8
3 0.7
4 0.66
5 0.64
6 0.65
7 0.65

다음 표는 earlyStoppingThresholdearlyStoppingPatience의 다양한 설정에 따라 학습 중 조기 중지의 동작을 보여줍니다.

시나리오 earlyStoppingThreshold earlyStoppingPatience 학습 중단 최적화
1 0 2 Epoch 7 Epoch 5 (val loss 0.64)
2 0.05 1 Epoch 4 Epoch 4 (val loss 0.66)

최적의 미세 조정 성능을 달성하기 위해 적절한 하이퍼파라미터 값을 선택하는 것이 중요합니다. 다양한 설정을 실험하거나 HPO와 같은 기법을 사용하여 특정 사용 사례와 데이터셋에 가장 적합한 구성을 찾아야 할 수 있습니다.

Amazon Bedrock 콘솔에서 미세 조정 작업 실행

사전 요구 사항에서 논의한 대로, Amazon Bedrock에서 Anthropic Claude 3 Haiku 미세 조정 프리뷰에 대한 액세스 권한이 있는지 확인해야합니다. 액세스가 승인되면 다음 단계를 수행하세요.

  1. Amazon Bedrock 콘솔에서 탐색 창의 파운데이션 모델을 선택합니다.
  2. 사용자 지정 모델을 선택합니다.
  3. 모델 섹션에서 ‘사용자 지정 모델’ 메뉴에서 ‘미세 조정 작업 생성’을 선택합니다.
  4. Category(카테고리)에서 Anthropic을 선택합니다.
  5. Models available for fine-tuning(미세 조정이 가능한 모델)에서 Claude 3 Haiku를 선택합니다.
  6. Apply(적용)을 선택합니다.
  7. Fine-tuned model name(미세 조정된 모델 이름)에 모델의 이름을 입력합니다.
  8. Model encryption(모델 암호화)를 선택하여 KMS 키를 추가합니다.
  9. 옵션으로, Tags(태그) 섹션을 선택하여 비용및 사용률 추적을 위한 태그를 추가할 수 있습니다.
  10. Job name(작업 이름)에는 학습 작업의 이름을 입력합니다.
    미세 조정 작업을 시작하기 전에, 사전 요구 사항에서 언급된 대로 Amazon Bedrock 서비스와 동일한 리전에 S3 버킷을 생성하십시오(예: us-west-2). 작성 시점에서 Amazon Bedrock에서 Anthropic Claude 3 Haiku의 미세 조정은 미국 서부(Oregon) 리전에서 프리뷰로 지원하고 있습니다. 이 S3 버킷 내에 학습 데이터, 검증 데이터, 미세 조정 아티팩트를 위한 경로를 설정합니다. 학습 및 검증 데이터셋을 각 경로에 업로드합니다.
  11. Input data(입력 데이터) 항목에서 학습 및 Validation dataset(검증 데이터셋)의 S3 위치를 지정합니다.
    이 설정은 미세 조정 프로세스에 필요한 적절한 데이터 액세스와 리전 호환성을 보장합니다.
    다음으로 미세 조정 작업을 위한 하이퍼파라미터를 구성합니다.
  12. Epochs(에포크), Batch size(배치 크기), Learning rate multiplier(학습률 배수)를 설정합니다.
  13. Validation dataset(검증 데이터셋)를 포함했다면 조기 중지를 활성화할 수 있습니다.
    이 기능을 사용하면 조기 중지 임계값과 허용 지연값을 설정할 수 있습니다. 조기 중지는 검증 데이터셋에서 모델의 성능이 더 이상 개선되지 않을 때 학습 프로세스를 중단하여 과적합을 방지하는 데 도움이 됩니다.
  14. Output data(출력 데이터) 항목에서 S3 location(S3 위치)에 미세 조정 메트릭을 저장할 버킷의 S3 경로를 입력합니다.
  15. Service access(서비스 액세스) 항목에서 Amazon Bedrock에 권한을 부여하는 방법을 선택합니다. 세분화된 IAM 정책이 포함된 액세스 역할이 있는 경우 ‘Use an existing service role(기존 서비스 역할 사용)’을 선택하거나, ‘Create and use a new service role(새 서비스 역할 생성 및 사용)’을 선택할 수 있습니다.
  16. Anthropic Claude 3 Haiku의 미세 조정을 위한 모든 필수 구성을 완료한 후, ‘Create Fine-tuning job(미세 조정 작업 생성)’을 선택합니다.
    미세 조정 작업이 시작되면 ‘Jobs(작업)’에서 학습 작업의 상태(Training 또는 Complete)를 확인할 수 있습니다.
    미세 조정 작업이 진행됨에 따라 학습 작업에 대한 더 많은 정보를 확인할 수 있습니다. 여기에는 Job creation time(작업 생성 시간), Job duration(작업 지속 시간), Input data(입력 데이터), 미세 조정 작업에 사용된 Hyperparameters(하이퍼파라미터) 등이 포함됩니다. 출력 데이터 항목에서 S3 버킷의 미세 조정 폴더로 이동하여, 미세 조정 작업의 일환으로 계산된 학습 및 검증 메트릭을 확인할 수 있습니다.

Amazon Bedrock API를 사용하여 미세 조정 작업 실행

사전 요구 사항대로, Amazon Bedrock에서 Anthropic Claude 3 Haiku 미세 조정 프리뷰에 대한 액세스 요청이 필요합니다.

Amazon Bedrock API를 사용하여 Anthropic Claude 3 Haiku의 미세 조정 작업을 시작하려면 다음 단계를 수행하세요.

  1. Amazon Bedrock 클라이언트를 생성하고 Anthropic Claude 3 Haiku 모델의 기본 모델 ID를 설정합니다.
    import boto3
    bedrock = boto3.client(service_name="bedrock") 
    base_model_id = "anthropic.claude-3-haiku-20240307-v1:0:200k"
  2. 타임스탬프를 사용하여 고유한 작업 이름과 맞춤형 모델 이름을 생성합니다.
    from datetime import datetime  
    ts = datetime.now().strftime("%Y-%m-%d-%H-%M-%S")  
    customization_job_name = f"model-finetune-job-{ts}"  
    custom_model_name = f"finetuned-model-{ts}"
  3. 사전 요구 사항에서 논의한 대로, 미세 조정 작업에 필요한 리소스에 액세스할 수 있는 권한을 가진 IAM 역할의 ARN을 지정합니다.
    customization_role = "arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<YOUR_IAM_ROLE_NAME>"
  4. 맞춤화 유형을 FINE_TUNING으로 설정하고, 이전 섹션에서 지정한것과 같이 모델의 미세 조정을 위한 하이퍼파라미터를 정의합니다.
    customization_type = "FINE_TUNING" 
    hyper_parameters = {
        "epochCount": "5",
        "batchSize": "32",
        "learningRateMultiplier": "0.05",
        "earlyStoppingThreshold": "0.001",
        "earlyStoppingPatience": "2"
    }
  5. 미세 조정된 모델과 출력 데이터가 저장될 S3 버킷 및 경로(prefix)를 구성하고, 학습 및 검증 데이터셋의 S3 데이터 경로를 제공합니다(검증 데이터셋은 선택 사항입니다).
    s3_bucket_name = "<YOUR_S3_BUCKET_NAME>"
    s3_bucket_config = f"s3://{s3_bucket_name}/outputs/output-{custom_model_name}"
    s3_train_uri = "s3://<YOUR_S3_BUCKET_NAME>/<YOUR_TRAINING_DATA_PREFIX>"
    s3_validation_uri = "s3://<YOUR_S3_BUCKET_NAME>/<YOUR_VALIDATION_DATA_PREFIX>"
    training_data_config = {"s3Uri": s3_train_uri}
    validation_data_config = {
        "validators": [{
            "s3Uri": s3_validation_uri
        }]
    }
  6. 이러한 구성을 완료한 후, Amazon Bedrock 클라이언트의 create_model_customization_job 메서드를 사용하여 필요한 매개변수를 전달해 미세 조정 작업을 생성할 수 있습니다.
    training_job_response = bedrock.create_model_customization_job(
        customizationType=customization_type,
        jobName=customization_job_name,
        customModelName=custom_model_name,
        roleArn=customization_role,
        baseModelIdentifier=base_model_id,
        hyperParameters=hyper_parameters,
        trainingDataConfig=training_data_config,
        validationDataConfig=validation_data_config,
        outputDataConfig=output_data_config
    )

create_model_customization 메서드는 생성된 미세 조정 작업에 대한 정보를 포함하는 응답을 반환합니다. Amazon Bedrock API 또는 Amazon Bedrock 콘솔을 통해 작업 진행 상황을 모니터링하고, 작업이 완료되면 미세 조정된 모델을 가져올 수 있습니다.

미세 조정된 모델 배포 및 평가

모델을 성공적으로 미세 조정한 후, 과정 중 기록된 미세 조정 메트릭을 평가할 수 있습니다. 이러한 메트릭은 평가 목적으로 지정된 S3 버킷에 저장됩니다. 학습 데이터의 경우, 단계별 학습 메트릭이 기록되며, 열에는 step_number, epoch_number, 및 training_loss가 포함됩니다.

검증 데이터셋을 제공한 경우, 추가적인 검증 메트릭이 별도의 파일에 저장되며, 여기에는 step_number, epoch_number 및 해당하는 validation_loss가 포함됩니다.

미세 조정 메트릭이 안정적이라면, 프로비저닝 처리량을 구매하여 미세 조정된 모델을 배포할 수 있습니다. 이를 통해 애플리케이션에서 성능 향상 및 미세 조정된 모델의 특화된 기능을 활용할 수 있습니다. 프로비저닝 처리량은 모델이 처리하고 반환하는 입력 및 출력의 수와 속도를 나타냅니다. 미세 조정된 모델을 사용하려면, 프로비저닝 처리량을 구매해야 하며, 이는 시간 단위로 청구됩니다. 프로비저닝 처리량의 가격은 다음 요인에 따라 달라집니다.

  • 미세 조정된 모델이 맞춤화된 기본 모델.
  • 프로비저닝 처리량에 대해 지정된 Model Units(MU) 수.
    • MU는 주어진 모델에 대한 처리량 용량을 지정하는 단위로, 각 MU는 1분 내에 처리할 수 있는 입력 토큰 수와 생성할 수 있는 출력 토큰 수를 정의합니다.
  • 약정 기간은 약정 없음, 1개월 또는 6개월로 설정할 수 있으며, 약정 기간이 길수록 시간당 요금이 더 할인됩니다.

프로비저닝 처리량이 설정된 후, MessageAPI를 사용하여 미세 조정된 모델을 호출할 수 있으며, 이는 기본 모델을 호출하는 방식과 유사합니다. 이를 통해 원활한 전환이 가능하며, 기존 애플리케이션이나 워크플로와의 호환성을 유지할 수 있습니다.

미세 조정된 모델의 성능을 평가하는 것은 매우 중요하며, 이를 통해 원하는 기준을 충족하고 특정 작업에서 우수한 성능을 발휘하는지 확인할 수 있습니다. 다양한 평가를 수행할 수 있으며, 미세 조정된 모델과 기본 모델을 비교하거나, Anthropic Claude 3 Sonnet과 같은 더 발전된 모델과의 성능 비교도 가능합니다.

Amazon Bedrock 콘솔을 사용하여 미세 조정된 모델 배포

Amazon Bedrock 콘솔을 사용하여 미세 조정된 모델을 배포하려면, 다음 단계를 수행하세요.

  1. Amazon Bedrock 콘솔에서 탐색 창의 맞춤형 모델(Custom models)을 선택합니다.
  2. 미세 조정된 모델을 선택하고 ’프로비저닝 처리량 구매(Purchase Provisioned Throughput)’를 선택합니다.
  3. Provisioned Throughput name(프로비저닝 처리량 이름)에 이름을 입력합니다.
  4. 배포할 모델을 선택합니다.
  5. 약정 기간(Commitment term)에서 원하는 약정 수준을 선택합니다 (이 글에서는 ‘약정 없음(No commitment)’을 선택합니다).
  6. 프로비저닝 처리량 구매(Purchase Provisioned Throughput)’를 선택합니다.
    미세 조정된 모델이 프로비저닝 처리량을 사용하여 배포된 후, Amazon Bedrock 콘솔의 프로비저닝 처리량 페이지에서 모델 상태를 ’서비스 중(In service)’으로 확인할 수 있습니다.
    프로비저닝 처리량을 사용하여 배포된 미세 조정된 모델을 작업별 사용 사례에 활용할 수 있습니다. Amazon Bedrock 플레이그라운드에서 사용자 지정 모델(Custom models) 아래에 있는 미세 조정된 모델을 찾아 추론에 사용할 수 있습니다.

Amazon Bedrock API를 사용하여 미세 조정된 모델을 배포

Amazon Bedrock API를 사용하여 미세 조정된 모델을 배포하려면, 다음 단계를 수행하세요.

  1. 작업의 출력에서 미세 조정된 모델 ID를 가져오고, 원하는 모델 유닛으로 프로비저닝 처리량 모델 인스턴스를 생성합니다.
    import boto3
    bedrock = boto3.client(service_name='bedrock')
    
    custom_model_id = training_job_response["customModelId"]
    provisioned_model_id = bedrock.create_provisioned_model_throughput(
    modelUnits=1,
    provisionedModelName='finetuned-haiku-model',
    modelId=custom_model_id
    )['provisionedModelArn']
  2. 프로비저닝 처리량 모델이 준비되면, Amazon Bedrock 런타임 클라이언트에서 invoke_model 함수를 호출하여 미세 조정된 모델을 사용해 텍스트를 생성할 수 있습니다.
    import json
    bedrock_runtime = boto3.client(service_name='bedrock-runtime')
    
    body = json.dumps({
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 2048,
        "messages": [{"role": "user", "content": <YOUR_INPUT_PROMPT_STRING>}],
        "temperature": 0.1,
        "top_p": 0.9,
        "system": <YOUR_SYSTEM_PROMPT_STRING>
    })
    
    fine_tuned_response = bedrock_runtime.invoke_model(body=body, modelId=provisioned_model_id)
    fine_tuned_response_body = json.loads(fine_tuned_response.get('body').read())
    print("Fine tuned model response:", fine_tuned_response_body['content'][0]['text']+'\n')

    이 단계를 따르면 Amazon Bedrock API를 통해 미세 조정된 Anthropic Claude 3 Haiku 모델을 배포하고 사용할 수 있으며, 이를 통해 특정 요구 사항에 맞춘 맞춤형 Anthropic Claude 3 Haiku 모델을 생성할 수 있습니다.

결론

Amazon Bedrock에서 Anthropic Claude 3 Haiku를 미세 조정하면 기업이 이 대규모 언어 모델(LLM)을 특정 요구 사항에 맞게 최적화할 수 있습니다. Amazon Bedrock과 Anthropic Claude 3 Haiku의 속도 및 비용 효율성을 결합하여 모델을 효율적으로 맞춤화하면서도 강력한 보안을 유지할 수 있습니다. 이 과정은 모델의 정확도를 높이고, 출력 결과를 고유한 비즈니스 요구 사항에 맞추어 효율성과 효과성을 크게 향상시킵니다.

Amazon Bedrock에서 Anthropic Claude 3 Haiku의 미세 조정은 이제 미국 서부(Oregon) 리전에서 프리뷰로 제공됩니다. 프리뷰에 대한 액세스를 요청하려면, AWS 계정 팀에 연락하거나 지원 티켓을 제출하십시오. 사용자 지정 모델 기능을 통해 미세 조정을 실험하고 싶으시다면 bedrock-modle-fintuner Github 코드를 참고하시기 바랍니다.

Sewoong Kim

Sewoong Kim

김세웅 Cloud Architect는 AWS Professional Services 팀의 일원으로서 컨테이너와 서버리스를 중심으로 AWS 기반 서비스를 구성하는 고객들에게 최적화된 아키텍처를 제공하고, GenAI Application Architect를 보다 고도화 하기 위한 여러 기술적인 도움을 드리고 있습니다.