

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Bedrock에서 증류를 사용하여 모델 사용자 지정
<a name="model-distillation"></a>

*모델 증류*는 더 큰 지능형 모델(교사라고 함)에서 더 작고 빠르며 비용 효율적인 모델(학생이라고 함)로 지식을 전달하는 프로세스입니다. 이 프로세스에서는 특정 사용 사례에 맞게 학생 모델의 성능이 향상됩니다. Amazon Bedrock Model Distillation은 최신 데이터 합성 기법을 사용하여 교사 모델에서 다양한 고품질 응답(합성 데이터라고 함)을 생성하고 학생 모델을 미세 조정합니다.

## Amazon Bedrock Model Distillation 사용 방법
<a name="how-md-use"></a>

 Amazon Bedrock Model Distillation을 사용하려면 다음을 수행합니다.

1. **교사 모델과 학생 모델 선택 **- 자세한 내용은 단원을 참조하십시오[모델 추출을 위한 사전 조건](prequisites-model-distillation.md).

1. **훈련 데이터를 추출할 준비** - 훈련 데이터는 `.jsonl` 파일에 저장된 프롬프트 모음입니다. Amazon Bedrock는 입력 데이터를 사용해 교사 모델로부터 응답을 생성하고, 생성된 응답을 이용해 학생 모델을 미세 조정합니다.
   + **프롬프트 최적화** - 원하는 사용 사례에 맞게 입력 프롬프트의 형식을 지정합니다. 자세한 내용은 [합성 데이터 생성을 위한 입력 프롬프트 최적화](distillation-prepare-datasets.md#distillation-data-prep-prompt-optimization) 단원을 참조하십시오.
   + **레이블이 지정된 예제 사용** - 레이블이 지정된 입력 데이터를 프롬프트-응답 페어로 준비합니다. Amazon Bedrock은 교사 모델에서 응답을 생성하는 동안 이러한 페어를 골든 예제로 사용할 수 있습니다. 자세한 내용은 [옵션 1: 데이터 준비를 위한 자체 프롬프트 제공](distillation-data-prep-option-1.md) 단원을 참조하십시오.
   + **호출 로그 사용** - CloudWatch Logs 호출 로깅을 활성화하면 Amazon S3에 저장된 호출 로그의 기존 교사 응답을 훈련 데이터로 사용할 수 있습니다. Amazon Bedrock의 간접 호출 로그는 모델 간접 호출에 대한 자세한 레코드입니다. 자세한 내용은 [옵션 2: 데이터 준비를 위한 간접 호출 로그 사용](distillation-data-prep-option-2.md) 단원을 참조하십시오.

1. **추출 작업 생성** -이 작업은 사용 사례에 맞게 더 작고 빠르며 비용 효율적인 모델을 생성합니다. 사용자만 최종 추출 모델에 액세스할 수 있습니다. Amazon Bedrock은 데이터를 사용하여 다른 교사 또는 학생 모델을 대중에게 교육하지 않습니다. 자세한 내용은 [Amazon Bedrock에서 모델 증류 작업 제출](submit-model-distillation-job.md) 단원을 참조하십시오. 온디맨드 추론 설정에 대한 자세한 내용은 섹션을 참조하세요[사용자 지정 모델의 추론 설정](model-customization-use.md).

## Amazon Bedrock Model Distillation의 작동 방식
<a name="how-md-works"></a>

Amazon Bedrock Model Distillation은 추출된 모델 생성 프로세스를 자동화하는 단일 워크플로입니다. 이 워크플로에서는 Amazon Bedrock가 교사 모델로부터 응답을 생성하고, 응답 생성을 개선하기 위해 데이터 합성 기법을 적용한 후, 생성된 응답으로 학생 모델을 미세 조정합니다. 보강된 데이터세트는 별도의 데이터세트로 분할되어 훈련 및 검증에 사용됩니다. Amazon Bedrock은 훈련 데이터세트의 데이터만 사용하여 학생 모델을 미세 조정합니다.

교사 모델과 학생 모델을 식별한 후 Amazon Bedrock에서 사용 사례에 맞는 증류 모델을 생성하는 방법을 선택할 수 있습니다. Amazon Bedrock는 사용자가 제공한 프롬프트를 이용해 교사 모델 응답을 생성하거나, 간접 호출 로그를 통해 실제 운영 데이터에서 생성된 응답을 사용할 수 있습니다. Amazon Bedrock Model Distillation은 이러한 응답을 사용하여 학생 모델을 미세 조정합니다.

**참고**  
Amazon Bedrock Model Distillation이 독점 데이터 합성 기술을 사용하여 고품질의 교사 응답을 생성하는 경우, AWS 계정 는 교사 모델에 대한 추론 호출에 대해 추가 요금을 발생시킵니다. 이러한 요금은 교사 모델의 온디맨드 추론 요금으로 청구됩니다. 데이터 합성 기법은 미세 조정 데이터세트의 크기를 최대 15,000개의 프롬프트-응답 페어로 늘릴 수 있습니다. Amazon Bedrock 요금에 대한 자세한 내용은 [Amazon Bedrock 요금](https://aws.amazon.com/bedrock/pricing/)을 참조하세요.

### 제공하는 프롬프트를 사용하여 추출된 모델 생성
<a name="using-prompts"></a>

Amazon Bedrock은 사용자가 제공한 입력 프롬프트를 사용하여 교사 모델에서 응답을 생성합니다. 그런 다음 Amazon Bedrock은 응답을 사용하여 식별한 학생 모델을 미세 조정합니다. 사용 사례에 따라 Amazon Bedrock은 독점 데이터 합성 기술을 추가하여 다양하고 고품질의 응답을 생성할 수 있습니다. 예를 들어 Amazon Bedrock은 유사한 프롬프트를 생성하여 교사 모델에서 더 다양한 응답을 생성할 수 있습니다. 또는 레이블이 지정된 입력 데이터를 프롬프트-응답 페어로 선택적으로 제공하는 경우 Amazon Bedrock은 이러한 페어를 골든 예제로 사용하여 교사에게 유사한 고품질 응답을 생성하도록 지시할 수 있습니다.

### 프로덕션 데이터를 사용하여 추출된 모델 생성
<a name="using-prod-data"></a>

이미 교사 모델에서 생성한 응답이 있고 이를 간접 호출 로그에 저장한 경우 기존 교사 응답을 사용하여 학생 모델을 미세 조정할 수 있습니다. 이를 위해서는 간접 호출 로그에 대한 Amazon Bedrock 액세스 권한을 제공해야 합니다. Amazon Bedrock의 간접 호출 로그는 모델 간접 호출에 대한 자세한 레코드입니다. 자세한 내용은 [CloudWatch Logs를 사용하여 모델 간접 호출을 모니터링하기](https://docs.aws.amazon.com//bedrock/latest/userguide/model-invocation-logging.html) 섹션을 참조하세요.

이 옵션을 선택하면 [InvokeModel](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_runtime_InvokeModel.html) 또는 [Converse](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_runtime_Converse.html) API와 같은 Amazon Bedrocks 추론 API 작업을 계속 사용하고 Amazon Bedrock에서 사용되는 모든 간접 호출에 대한 간접 호출 로그, 모델 입력 데이터(프롬프트) 및 모델 출력 데이터(응답)를 수집할 수 있습니다.

`InvokeModel` 또는 `Converse` API 작업을 사용하여 모델에서 응답을 생성할 때 선택적으로 응답에 `requestMetadata`를 추가할 수 있습니다. 추출 작업을 생성할 때 간접 호출 로그 구성의 일부로 이 메타데이터를 기준으로 필터링할 수 있습니다. 특정 사용 사례를 기준으로 필터링하면 Amazon Bedrock은 필터링된 응답만 사용하여 학생 모델을 미세 조정할 수 있습니다. 간접 호출 로그를 사용하여 학생 모델을 미세 조정하도록 선택하면 Amazon Bedrock이 프롬프트만 사용하거나 프롬프트-응답 페어를 사용하도록 할 수 있습니다.

------
#### [ Choosing prompts with invocation logs ]

Amazon Bedrock이 간접 호출 로그의 프롬프트만 사용하도록 선택한 경우 Amazon Bedrock은 프롬프트를 사용하여 교사 모델에서 응답을 생성합니다. 이 경우 Amazon Bedrock은 응답을 사용하여 식별한 학생 모델을 미세 조정합니다. 사용 사례에 따라 Amazon Bedrock Model Distillation은 독점 데이터 합성 기술을 추가하여 다양하고 고품질의 응답을 생성할 수 있습니다.

------
#### [ Choosing prompt-response pairs with invocation logs ]

Amazon Bedrock이 간접 호출 로그의 프롬프트-응답 페어를 사용하도록 선택하면 Amazon Bedrock은 교사 모델의 응답을 다시 생성하지 않고 호출 로그의 응답을 사용하여 학생 모델을 미세 조정합니다. Amazon Bedrock이 간접 호출 로그에서 응답을 읽으려면 모델 증류 작업에 지정된 교사 모델이 간접 호출 로그에 사용된 모델과 일치해야 합니다. 일치하지 않으면 간접 호출 로그가 사용되지 않습니다. 간접 호출 로그의 응답에 요청 메타데이터를 추가한 다음 학생 모델을 미세 조정하는 경우 Amazon Bedrock이 사용 사례에 유효한 특정 로그만 읽도록 요청 메타데이터 필터를 지정할 수 있습니다.

------

# 모델 추출을 위한 사전 조건
<a name="prequisites-model-distillation"></a>

시작하기 전에 모델 증류에 대한 액세스 및 보안 제어를 이해해야 합니다. 또한 추출 작업에 대한 교사 및 학생 모델도 선택해야 합니다.

## 권한
<a name="model-distillation-access-security"></a>

시작하기 전에 모델 증류에 대한 액세스 및 보안 제어를 이해해야 합니다. 모델 증류 훈련 및 검증 데이터를 저장하려는 Amazon S3 버킷에 액세스할 수 있는 IAM 서비스 역할이 있어야 합니다. Amazon Bedrock에는 추출 작업 및 아티팩트를 암호화하고 추가로 보호하기 위한 옵션도 있습니다. 자세한 내용은 [모델 사용자 지정 액세스 및 보안](custom-model-job-access-security.md) 단원을 참조하십시오.

추출 작업에서 교사 모델에 교차 리전 추론 프로파일을 사용하려면 추론 프로파일의 각 리전에 있는 모델 AWS 리전외에도에서 추론 프로파일을 호출할 수 있는 권한이 서비스 역할에 있어야 합니다. 정책 예제는 [(선택 사항) 교차 리전 추론 프로파일을 사용하여 증류 작업을 생성할 수 있는 권한](custom-model-job-access-security.md#custom-models-cross-region-inference-profile-permissions) 섹션을 참조하세요. 교차 리전 추론에 대한 자세한 내용은 [교차 리전 추론을 통한 처리량 증대](cross-region-inference.md) 섹션을 참조하세요.

## 증류에 사용할 교사 모델 및 학생 모델 선택
<a name="prequisites-teacher-student-models"></a>


****  

| 모델 유형 | 선택 기준 | 주요 고려 사항 | 요구 사항 | 
| --- | --- | --- | --- | 
| 교사 모델 | 학생 모델보다 훨씬 더 크고 용량이 크며 사용 사례에 맞게 정확도를 달성할 수 있는 교사 모델을 선택하세요. | 증류의 효율성을 높이려면 사용 사례와 유사한 태스크에 대해 이미 훈련된 모델을 선택합니다. 일부 교사 모델의 경우 교차 리전 추론 프로파일을 선택할 수 있습니다. | 각 리전에서 추론 프로파일 및 모델을 호출할 수 있는 권한이 있어야 합니다. 정책 예제는 리전 간 추론 설명서를 참조하세요. | 
| 학생 모델 | 교사 모델보다 크기가 훨씬 작은 학생 모델을 선택합니다. | 학생 모델은 지원되는 모델 테이블에서 교사 모델과 페어링된 학생 모델 중 하나여야 합니다. | 다음 표와 같이 선택한 교사 모델과 호환되어야 합니다. | 

다음 섹션에서는 Amazon Bedrock Model Distillation에 지원되는 모델 및 리전을 나열합니다. 교사와 학생 모델을 선택한 후에는 훈련 데이터세트 증류를 위해 준비하고 최적화합니다. 자세한 내용은 [증류를 위한 훈련 데이터세트 준비](distillation-prepare-datasets.md) 단원을 참조하십시오.

### Amazon Bedrock Model Distillation에 지원되는 리전 및 모델
<a name="model-distillation-supported"></a>

다음 표에는 교사 및 학생 모델에 대해가 지원하는 모델과 AWS 리전 Amazon Bedrock Model Distillation이 나와 있습니다. 교차 리전 추론 프로필을 사용하는 경우 모델 증류에는 시스템 추론 프로필만 지원됩니다. 자세한 내용은 [교차 리전 추론을 통한 처리량 증대](cross-region-inference.md) 단원을 참조하십시오.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/bedrock/latest/userguide/prequisites-model-distillation.html)

**참고**  
Claude  및 Llama 모델의 경우, 증류 작업은 미국 서부(오리건)에서 실행됩니다. 미국 서부(오리건)에서 [프로비저닝된 처리량](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)을 구매하거나 [다른 리전에 배포된 모델을 복사](https://docs.aws.amazon.com//bedrock/latest/userguide/copy-model.html)한 다음 [프로비저닝된 처리량](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)을 구매할 수 있습니다.
Nova 모델의 경우 미국 동부(버지니아 북부)에서 증류 작업을 실행합니다. 추론을 위해서는 미국 동부(버지니아 북부)에서 [프로비저닝된 처리량](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)을 구매해야 합니다. Nova 모델을 다른 리전에 복사할 수 없습니다.

# 증류를 위한 훈련 데이터세트 준비
<a name="distillation-prepare-datasets"></a>

모델 사용자 지정 작업을 시작하기 전에 훈련 데이터세트는 반드시 준비해야 합니다. 사용자 지정 모델에 대한 입력 데이터세트를 준비하려면 각 라인이 레코드에 해당하는 JSON 객체인 `.jsonl` 파일을 만듭니다. 생성하는 파일은 선택한 모델 증류 및 모델 형식에 부합해야 합니다. 레코드는 크기 요구 사항도 준수해야 합니다.

입력 데이터를 프롬프트로 제공합니다. Amazon Bedrock은 입력 데이터를 사용하여 교사 모델에서 응답을 생성한 다음 이 응답을 사용하여 학생 모델을 미세 조정합니다. Amazon Bedrock에서 사용하는 입력에 대한 자세한 내용과 사용 사례에 가장 적합한 옵션을 선택하려면 [Amazon Bedrock Model Distillation의 작동 방식](model-distillation.md#how-md-works) 섹션을 참조하세요. 입력 데이터세트를 준비하는 몇 가지 옵션이 있습니다.

**참고**  
Amazon Nova 모델마다 증류 요구 사항이 다릅니다. 자세한 내용은 [Amazon Nova 모델 증류](https://docs.aws.amazon.com/nova/latest/userguide/customize-distill.html)를 참조하세요.

## 증류에 지원되는 양식
<a name="distillation-supported-modalities"></a>

[Amazon Bedrock Model Distillation에 지원되는 리전 및 모델](prequisites-model-distillation.md#model-distillation-supported)에 나열된 모델은 text-to-text 양식만 지원합니다.

## 합성 데이터 생성을 위한 입력 프롬프트 최적화
<a name="distillation-data-prep-prompt-optimization"></a>

모델 증류 중에 Amazon Bedrock은 특정 사용 사례에 맞게 학생 모델을 미세 조정하는 데 사용하는 합성 데이터세트를 생성합니다. 자세한 내용은 [Amazon Bedrock Model Distillation의 작동 방식](model-distillation.md#how-md-works) 단원을 참조하십시오.

원하는 사용 사례에 대한 입력 프롬프트의 형식을 지정하여 합성 데이터 생성 프로세스를 최적화할 수 있습니다. 예를 들어, 증류된 모델의 사용 사례가 검색 증강 생성(RAG)인 경우 모델이 에이전트 사용 사례에 집중하도록 하려는 경우와 다르게 프롬프트의 형식을 지정합니다.

다음은 RAG 또는 에이전트 사용 사례에 대한 입력 프롬프트의 형식을 지정하는 방법에 대한 예입니다.

------
#### [ RAG prompt example ]

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a financial analyst charged with answering questions about 10K and 10Q SEC filings. Given the context below, answer the following question."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "<context>\nDocument 1: Multiple legal actions have been filed against us as a result of the October 29, 2018 accident of Lion Air Flight 610 and the March 10, 2019 accident of Ethiopian Airlines Flight 302.\n</context>\n\n<question>Has Boeing reported any materially important ongoing legal battles from FY2022?</question>"
        }
      ]
    }
  ]
}
```

------
#### [ Agent prompt example ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": 'You are an expert in composing functions. You are given a question and a set of possible functions. Based on the question, you will need to make one or more function/tool calls to achieve the purpose.
                    Here is a list of functions in JSON format that you can invoke.
                    [
                        {
                            "name": "lookup_weather",
                            "description: "Lookup weather to a specific location",
                            "parameters": {
                                "type": "dict",
                                "required": [
                                    "city"
                                ],
                                "properties": {
                                    "location": {
                                        "type": "string",
                                    },
                                    "date": {
                                        "type": "string",
                                    }
                                }
                            }
                        }
                    ]'
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "What's the weather tomorrow?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
               {
                   "text": "[lookup_weather(location=\"san francisco\", date=\"tomorrow\")]"
               }
            ]
        }
    ]
}
```

------

# 옵션 1: 데이터 준비를 위한 자체 프롬프트 제공
<a name="distillation-data-prep-option-1"></a>

프롬프트를 수집하여 `.jsonl` 파일 형식으로 저장합니다. JSONL의 각 레코드는 다음 구조를 사용해야 합니다.
+ 값 `bedrock-conversion-2024`가 있어야 하는 `schemaVersion` 필드를 포함합니다.
+ [선택 사항] 모델에 할당된 역할을 나타내는 시스템 프롬프트를 포함합니다.
+ `messages` 필드에 모델에 제공된 입력 프롬프트가 포함된 사용자 역할을 포함합니다.
+ [선택 사항] `messages` 필드에 원하는 응답이 포함된 어시스턴트 역할을 포함합니다.

Anthropic 및 Meta Llama 모델은 한 번의 대화 프롬프트만 지원하므로 사용자 프롬프트는 하나만 가질 수 있습니다. Amazon Nova 모델은 멀티턴 대화를 지원하므로 하나의 레코드 내에서 여러 사용자 및 어시스턴트 교환을 제공할 수 있습니다.

**형식의 예시**

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [{
        "text": "A chat between a curious User and an artificial intelligence Bot. The Bot gives helpful, detailed, and polite answers to the User's questions."
    }],
    "messages": [{
            "role": "user",
            "content": [{
                "text": "why is the sky blue"
            }]
        },
        {
            "role": "assistant",
            "content": [{
                "text": "The sky is blue because molecules in the air scatter blue light from the Sun more than other colors."
            }]
        }
    ]
}}
```

## 데이터세트 검증
<a name="distillation-data-prep-option-1-validate"></a>

증류 작업을 실행하기 전에 [Python 스크립트](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/model_distillation/dataset-validation/README.md)를 사용하여 입력 데이터세트를 검증할 수 있습니다.

# 옵션 2: 데이터 준비를 위한 간접 호출 로그 사용
<a name="distillation-data-prep-option-2"></a>

증류 작업을 생성할 때 Amazon Bedrock이 CloudWatch Logs 간접 호출 로그의 기존 교사 응답을 훈련 데이터로 사용하도록 할 수 있습니다. Amazon Bedrock의 경우 간접 호출 로그는 모델 호출에 대한 자세한 레코드입니다.

모델 증류에 간접 호출 로그를 사용하려면 모델 간접 호출 로깅을 설정하고, 모델 간접 호출 작업 중 하나를 사용하고, Amazon S3 버킷을 로그의 대상으로 설정했는지 확인합니다. 모델 증류 작업을 시작하려면 먼저 로그에 액세스할 수 있는 Amazon Bedrock 권한을 제공해야 합니다. 간접 호출 로그 설정에 대한 자세한 내용은 [ Amazon CloudWatch Logs를 사용하여 모델 간접 호출 모니터링](https://docs.aws.amazon.com//bedrock/latest/userguide/model-invocation-logging.html)을 참조하세요.

이 옵션을 사용하면 Amazon Bedrock이 프롬프트만 사용할지 아니면 간접 호출 로그의 프롬프트-응답 페어를 사용할지 지정할 수 있습니다. Amazon Bedrock이 프롬프트만 사용하도록 하려면 Amazon Bedrock이 독점 데이터 합성 기술을 추가하여 교사 모델에서 다양하고 품질이 높은 응답을 생성할 수 있습니다. Amazon Bedrock이 프롬프트-응답 페어를 사용하도록 하려는 경우 Amazon Bedrock은 교사 모델의 응답을 다시 생성하지 않습니다. Amazon Bedrock은 간접 호출 로그의 응답을 직접 사용하여 학생 모델을 미세 조정합니다.

**중요**  
학생 모델을 미세 조정하기 위해 Amazon Bedrock에 최대 15,000개의 프롬프트 또는 프롬프트-응답 페어를 제공할 수 있습니다. 학생 모델이 특정 요구 사항에 맞게 미세 조정되도록 하려면 다음을 수행하는 것이 좋습니다.  
Amazon Bedrock이 프롬프트만 사용하도록 하려면 모든 모델에서 생성된 프롬프트-응답 페어가 100개 이상 있어야 합니다.
Amazon Bedrock이 간접 호출 로그의 응답을 사용하도록 하려면 선택한 교사 모델과 정확히 일치하는 간접 호출 로그의 모델에서 생성된 프롬프트-응답 페어가 100개 이상 있어야 합니다.

선택적으로 모델 간접 호출 작업 중 하나를 사용하여 간접 호출 로그의 프롬프트-응답 페어에 [요청 메타데이터를 추가](#add-metadata-to-prompts)한 다음 나중에 이를 사용하여 로그를 필터링할 수 있습니다. Amazon Bedrock은 필터링된 로그를 사용하여 학생 모델을 미세 조정할 수 있습니다.

여러 요청 메타데이터를 사용하여 로그를 필터링하려면 단일 작업 부울 연산자 AND, OR 또는 NOT을 사용합니다. 작업을 결합할 수 없습니다. 단일 요청 메타데이터 필터링의 경우 부울 연산자 NOT을 사용합니다.

## 모델 증류를 위해 간접 호출 로그의 프롬프트 및 응답에 요청 메타데이터 추가
<a name="add-metadata-to-prompts"></a>

모델 간접 호출 로깅은 Amazon Bedrock에서 사용되는 모든 간접 호출에 대한 간접 호출 로그, 모델 입력 데이터(프롬프트), 모델 출력 데이터(응답)를 수집합니다. 로깅을 활성화한 경우 `Invoke` 또는 `Converse` API 작업을 통해 Amazon Bedrock 파운데이션 모델과 상호 작용할 때마다 로그를 수집할 수 있습니다. Amazon Bedrock이 간접 호출 로그의 프롬프트 및 관련 응답을 사용하여 학생 모델을 미세 조정하도록 하려면 Amazon Bedrock에 이러한 로그에 대한 액세스 권한을 부여해야 합니다. 모델이 이미 생성한 응답을 사용하면 학생 모델을 더 빠르게 미세 조정할 수 있습니다. 또한 간접 호출 로그의 응답을 사용하면 모델 증류가 더 비용 효율적이지만 Amazon Bedrock의 독점 데이터 합성 기법이 추가되지 않아 성능이 더 뛰어난 모델이 될 수 있습니다.

간접 호출 로그를 사용하면 Amazon Bedrock이 모델 증류에 사용할 프롬프트-응답 페어를 식별할 수 있습니다. 이러한 프롬프트-응답 페어는 특정 사용 사례에 사용할 수 있습니다. 증류에 사용할 프롬프트-응답 페어를 식별하려면 모델을 간접 호출하거나 `Converse` API 작업을 사용할 때 프롬프트-응답 페어에 요청 메타데이터 문자열을 추가해야 합니다. 요청 메타데이터는 `"priority" : "High"` 형식으로 제공됩니다.

`Invoke` 또는 `Converse` API 작업을 사용하여 모델과 계속 상호 작용하면 상호 작용 및 요청 메타데이터가 간접 호출 로그에 로깅됩니다. 다음은 요청 메타데이터를 보여주는 `InvokeModel` 직접 호출의 간접 호출 로그의 예입니다.

```
{
    "schemaType": "ModelInvocationLog",
    "schemaVersion": "1.0",
    "timestamp": "2024-09-11T17:16:18Z",
    "accountId": "XXXXX",
    "identity": {
        "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX"
    },
    "region": "us-east-1",
    "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5",
    "operation": "InvokeModel",
    "modelId": "meta.llama3-1-405b-instruct-v1:0",
    "input": {
        "inputContentType": "application/json",
        "inputBodyJson": {
            "prompt": "story of two dogs",
            "max_tokens_to_sample": 300
        },
        "inputTokenCount": 13
    },
    "output": {
        "outputContentType": "application/json",
        "outputBodyJson": {
            "type": "completion",
            "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little",
            "stop_reason": "max_tokens",
            "stop": null
        },
        "outputTokenCount": 300
    },
    "requestMetadata": {
        "project": "CustomerService",
        "intent": "ComplaintResolution",
        "priority": "High"
    }
}
```

모델 증류 작업을 시작할 때 간접 호출 로그를 입력 데이터 소스로 지정할 수 있습니다. API AWS CLI또는 AWS SDK를 사용하여 Amazon Bedrock 콘솔에서 모델 추출 작업을 시작할 수 있습니다.

**요청 메타데이터를 제공하기 위한 요구 사항**

데이터 웨어하우스는 다음 요구 사항을 충족해야 합니다.
+ JSON `key:value` 형식으로 제공됩니다.
+ 키와 값 페어는 최대 256자의 문자열이어야 합니다.
+ 최대 16개의 키-값 페어를 제공합니다.

### 메타데이터 요청 필터 사용
<a name="request-metadata-filter"></a>

요청 메타데이터에 필터를 적용하여 학생 모델의 미세 조정을 위한 증류에 포함할 프롬프트-응답 쌍을 선택적으로 선택할 수 있습니다. 예를 들어 'project' : 'CustomerService' 및 'priority' : 'High' 요청 메타데이터가 있는 항목만 포함할 수 있습니다.

여러 요청 메타데이터를 사용하여 로그를 필터링하려면 단일 부울 연산자 AND, OR 또는 NOT을 사용합니다. 작업을 결합할 수 없습니다. 단일 요청 메타데이터 필터링의 경우 부울 연산자 NOT을 사용합니다.

간접 호출 로그를 입력 데이터 소스로 지정하고 모델 증류 작업을 시작할 때 프롬프트-응답 페어를 선택하는 데 사용할 필터를 지정할 수 있습니다. API AWS CLI또는 AWS SDK를 사용하여 Amazon Bedrock 콘솔에서 모델 추출 작업을 시작할 수 있습니다. 자세한 내용은 [Amazon Bedrock에서 모델 증류 작업 제출](submit-model-distillation-job.md) 단원을 참조하십시오.

## 데이터세트 검증
<a name="distillation-data-prep-option-2-validate"></a>

증류 작업을 실행하기 전에 [Python 스크립트](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/model_distillation/dataset-validation/README.md)를 사용하여 입력 데이터세트를 검증할 수 있습니다.

# Amazon Bedrock에서 모델 증류 작업 제출
<a name="submit-model-distillation-job"></a>

Amazon Bedrock 콘솔을 통해 또는 [Amazon Bedrock 컨트롤 플레인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-cp)로 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) 요청을 전송하여 모델 증류를 수행할 수 있습니다.

## 사전 조건
<a name="submit-model-distillation-job-prerequisites"></a>
+ 필요한 권한을 가진 IAM 서비스 역할을 생성합니다. 포괄적인 보안 및 권한 정보는 섹션을 참조하세요[모델 사용자 지정 액세스 및 보안](custom-model-job-access-security.md).
+ (선택 사항) 입력 및 출력 데이터, 사용자 지정 작업 또는 사용자 지정 모델에 대한 추론 요청을 암호화할 수 있습니다. 자세한 내용은 [사용자 지정 모델 암호화](encryption-custom-job.md) 단원을 참조하십시오.
+ (선택 사항) Virtual Private Cloud(VPC)를 생성하여 사용자 지정 작업을 보호합니다. 자세한 내용은 [(선택 사항) VPC를 사용하여 모델 사용자 지정 작업 보호](custom-model-job-access-security.md#vpc-model-customization) 단원을 참조하십시오.

온디맨드 추론 설정에 대한 자세한 내용은 섹션을 참조하세요[사용자 지정 모델의 추론 설정](model-customization-use.md).

## 작업 제출
<a name="submit-model-distillation-job-how-to"></a>

------
#### [ Console ]

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명 AWS Management Console 으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **조정**에서 **사용자 지정 모델**을 선택합니다.

1. **증류 작업 생성**을 선택합니다.

1. **증류된 모델 세부 정보**에서 다음을 수행합니다.

   1. **증류된 모델 이름**에 증류된 모델의 이름을 입력합니다.

   1. (선택 사항) 작업 및 관련 아티팩트를 암호화하기 위한 KMS 키를 제공하려면 **모델 암호화**에서 확인란을 선택합니다.

      자세한 내용은 [사용자 지정 모델 암호화](encryption-custom-job.md) 단원을 참조하십시오.

   1. (선택 사항) 증류된 모델에 **태그**를 적용합니다.

1. **작업 구성**에서 다음을 수행합니다.

   1. **작업 이름**의 경우 증류 작업의 이름을 입력합니다.

   1. (선택 사항) 작업 및 관련 아티팩트를 암호화하기 위한 KMS 키를 제공하려면 **모델 암호화**에서 확인란을 선택합니다.

      자세한 내용은 [사용자 지정 모델 암호화](encryption-custom-job.md) 단원을 참조하십시오.

   1. (선택 사항) 작업에 **태그**를 적용합니다.

1. **교사 모델 - 학생 모델 세부 정보**에서 증류된 모델을 생성할 교사 및 학생 모델을 선택합니다.

   자세한 내용은 [모델 추출을 위한 사전 조건](prequisites-model-distillation.md) 단원을 참조하십시오.

1. **합성 데이터 생성**의 경우 다음을 수행합니다.

   1. **최대 응답 길이**에 대해 교사 모델에서 생성된 합성 응답의 최대 길이를 지정합니다.

   1. **증류 입력 데이터세트**에서 다음 옵션 중 하나를 선택합니다.
      + **S3 위치에 직접 업로드** - 증류에 사용할 입력 데이터세트(프롬프트)를 저장할 S3 위치를 지정합니다. 자세한 내용은 [옵션 1: 데이터 준비를 위한 자체 프롬프트 제공](distillation-data-prep-option-1.md) 단원을 참조하십시오.
      + **간접 호출 로그에 대한 액세스 제공** - 증류에 사용할 입력 데이터세트(프롬프트)와 함께 간접 호출 로그를 저장할 S3 위치를 지정합니다. 자세한 내용은 [옵션 2: 데이터 준비를 위한 간접 호출 로그 사용](distillation-data-prep-option-2.md) 단원을 참조하십시오.
        + (선택 사항) Amazon Bedrock이 로그의 특정 프롬프트만 증류에 사용하도록 하려면 **메타데이터 필터 요청**에서 필터를 지정합니다.
        + Amazon Bedrock이 로그에서 액세스할 항목에 따라 **프롬프트 읽기** 또는 **프롬프트-응답 페어 읽기**를 선택합니다. 교사 모델이 로그의 모델과 일치하는 경우에만 응답을 읽습니다.

1. **증류 출력**에서 증류 작업에 대한 지표 및 보고서를 업로드할 S3 위치를 지정합니다.

   자세한 내용은 [모델 사용자 지정 작업 결과 분석모델 사용자 지정 작업 결과 분석](model-customization-analyze.md) 단원을 참조하십시오.

1. **VPC 설정**에서 훈련 데이터를 사용하여 S3 버킷에 액세스하기 위한 VPC 구성을 선택합니다.

   자세한 내용은 [(선택 사항) VPC를 사용하여 모델 사용자 지정 작업 보호](custom-model-job-access-security.md#vpc-model-customization) 단원을 참조하십시오.

1. **서비스 액세스**에서 훈련 데이터를 사용하여 S3 버킷에 액세스하기 위한 IAM 역할을 지정합니다. 교차 리전 추론 프로파일 또는 VPC 구성을 사용하지 않는 한, Amazon Bedrock 콘솔에서 자동으로 구성된 올바른 권한으로 이 역할을 생성할 수 있습니다. 또는 기존 서비스 역할을 사용할 수 있습니다.

    Amazon VPC 구성이 있거나 교차 리전 추론 프로파일을 사용하는 작업의 경우 필요한 권한이 있는 새 서비스 역할을 IAM에서 생성해야 합니다.

   자세한 내용은 [모델 사용자 지정을 위한 IAM 서비스 역할 생성](custom-model-job-access-security.md#custom-model-job-service-role) 단원을 참조하십시오.

1. **증류 작업 생성**을 선택하여 증류 작업을 시작합니다. 모델을 사용자 지정한 후 모델에 대한 추론을 설정할 수 있습니다. 자세한 내용은 [사용자 지정 모델의 추론 설정](model-customization-use.md) 단원을 참조하십시오.

------
#### [ API ]

Amazon Bedrock API를 사용할 때 모델 증류 작업을 제출하려면 최소한 다음 필드를 입력해야 합니다.


****  

| 필드 | 설명 | 
| --- | --- | 
| baseModelIdentifier | 학생 모델의 모델 식별자 | 
| customModelName | 새 증류 모델의 이름 | 
| jobName | 모델 증류 작업의 이름 | 
| roleArn | Amazon Bedrock에 훈련 및 검증 파일을 읽고 출력 경로에 쓸 수 있는 권한을 부여하는 역할 | 
| trainingDataConfig | 훈련 데이터가 있는 Amazon S3 경로 | 
| outputDataConfig | 훈련 및 검증 지표가 포함된 Amazon S3 경로 | 
| distillationConfig | 증류 작업에 필요한 입력 정보 | 
| customModelKmsKeyId | 사용자 지정 모델 암호화 | 
| clientRequestToken | 요청이 두 번 이상 완료되지 않도록 방지하는 토큰 | 

다음 필드는 선택 사항입니다.


****  

| 필드 | 설명 | 
| --- | --- | 
| customizationType | 증류 작업의 경우 기본적으로 DISTILLATION 으로 설정 | 
| validationDataConfig | 검증 데이터 Amazon S3 경로 목록 | 
| jobTags | 태그를 작업과 연결 | 
| customModelTags | 태그를 결과로 나타나는 사용자 지정 모델과 연결 | 
| vpcConfig | 훈련 데이터 및 증류 작업을 보호하기 위한 VPC | 

요청이 두 번 이상 완료되지 않도록 하려면 `clientRequestToken`을 포함합니다.

추가 구성을 위해 다음과 같은 선택적 필드를 포함할 수 있습니다.
+ `jobTags` 또는 `customModelTags` - [태그](tagging.md)를 사용자 지정 작업 또는 결과로 만들어진 사용자 지정 모델과 연결합니다.
+ `vpcConfig` - [훈련 데이터와 사용자 지정 작업을 보호할 수 있도록 가상 프라이빗 클라우드(VPC)](custom-model-job-access-security.md#vpc-model-customization)에 대한 구성을 포함합니다.

다음은 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) API의 예제 코드 조각입니다. 이 예제에서는 간접 호출 로그의 프롬프트-응답 페어를 입력 데이터 소스로 사용하고 프롬프트-응답 페어를 선택하기 위한 필터를 지정합니다.

```
"trainingDataConfig": {
    "invocationLogsConfig": {
        "usePromptResponse": true,
        "invocationLogSource": {
            "s3Uri": "string"
        },
        "requestMetadataFilters": {
            "equals": {
                "priority": "High"
            }
        }
    }
}
```

**응답**

응답은 모델 증류 작업의 `jobArn`을 반환합니다.

------

## 다음 단계
<a name="submit-model-distillation-next-steps"></a>
+ [증류 작업을 모니터링합니다](model-customization-monitor.md). 온디맨드 추론 설정에 대한 자세한 내용은 섹션을 참조하세요[사용자 지정 모델의 추론 설정](model-customization-use.md).

# 증류 작업 복제
<a name="clone-model-distillation-job"></a>

Amazon Bedrock 콘솔을 사용하여 증류 작업을 복제할 수 있습니다. 증류 작업을 복제하여 유사한 설정으로 여러 작업을 실행합니다. 복제를 사용하여 중지했거나 문제가 있는 작업으로 다시 시도합니다. 새 작업은 서비스 액세스 구성, VPC 설정 및 태그를 제외한 모든 설정을 상속합니다.

1. Amazon Bedrock 콘솔을 사용할 권한이 있는 IAM 자격 증명AWS Management Console으로에 로그인합니다. 그 다음 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)에서 Amazon Bedrock 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **조정**에서 **사용자 지정 모델**을 선택합니다.

1. 복제하려는 증류 작업을 선택한 다음 **작업 복제**를 선택합니다.

1. 필요한 경우 작업의 설정을 조정합니다.

1. **증류 작업 생성**을 선택하여 새 작업을 시작합니다.