

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

# Amazon Nova 모델에 대한 미세 조정 작업 생성 및 관리
<a name="rft-submit-job"></a>

Amazon Bedrock 콘솔 또는 API를 사용하여 강화 미세 조정(RFT) 작업을 생성할 수 있습니다. RFT 작업은 훈련 데이터의 크기, epoch 수, 보상 함수의 복잡성에 따라 몇 시간이 걸릴 수 있습니다.

## 사전 조건
<a name="rft-prerequisites"></a>
+ 필요한 권한을 가진 IAM 서비스 역할을 생성합니다. RFT별 권한을 포함한 포괄적인 보안 및 권한 정보는 섹션을 참조하세요[Amazon Nova 모델의 액세스 및 보안](rft-access-security.md).
+ (선택 사항) 사용자 지정 모델에 대한 입력 및 출력 데이터, RFT 작업 또는 추론 요청을 암호화합니다. 자세한 내용은 [ 사용자 지정 모델 암호화를](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-custom-job.html) 참조하세요.

## RFT 작업 생성
<a name="rft-submit-job-how-to"></a>

원하는 방법의 탭을 선택한 후 다음 단계를 따릅니다.

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

콘솔에서 RFT 작업을 제출하려면 다음 단계를 수행합니다.

1. Amazon Bedrock 콘솔을 열고 **튜닝** 아래의 **사용자 지정 모델**로 이동합니다.

1. **생성을** 선택한 다음 **강화 미세 조정 작업 생성을** 선택합니다.

1. **모델 세부 정보** 섹션에서 **Amazon Nova 2 Lite**를 기본 모델로 선택합니다.

1. **사용자 지정 세부 정보** 섹션에서 사용자 지정 이름을 입력합니다.

1. **훈련 데이터** 섹션에서 데이터 소스를 선택합니다. Amazon S3에 저장된 사용 가능한 호출 로그 중에서 선택하거나 훈련 데이터 세트 파일의 Amazon S3 위치를 선택하거나 디바이스에서 직접 파일을 업로드합니다.
**참고**  
훈련 데이터 세트는 OpenAI Chat Completions 데이터 형식이어야 합니다. Amazon Bedrock 호출 또는 대화 형식으로 호출 로그를 제공하면 Amazon Bedrock이 자동으로 이를 채팅 완료 형식으로 변환합니다.

1. **보상 함수** 섹션에서 보상 메커니즘을 설정합니다.
   + **판단형 모델(RLAIF)** - Bedrock 호스팅 기본 모델을 판단형으로 선택하고 평가 지침을 구성합니다. 콘텐츠 조정과 같은 주관적 작업에 사용합니다.
**참고**  
콘솔의 **판단형 모델** 옵션은 훈련 중에 구성을 Lambda 함수로 자동 변환합니다.
   + **사용자 지정 코드(RLVR)** - Lambda 함수를 통해 실행되는 Python 코드를 사용하여 사용자 지정 보상 함수를 생성합니다. 코드 생성과 같은 목표 작업에 사용합니다.

   자세한 내용은 [Amazon Nova 모델에 대한 보상 함수 설정](reward-functions.md) 단원을 참조하십시오.

1. (선택 사항) **하이퍼파라미터** 섹션에서 훈련 파라미터를 조정하거나 기본값을 사용합니다.

1. **출력 데이터** 섹션에서 Amazon Bedrock이 작업 출력을 저장해야 하는 Amazon S3 위치를 입력합니다.

1. **역할 구성** 섹션의 드롭다운 목록에서 기존 역할을 선택하거나 생성할 서비스 역할의 이름을 입력합니다.

1. (선택 사항) **추가 구성** 섹션에서 Amazon S3 버킷, KMS 암호화 설정, 작업 및 모델 태그를 가리켜 검증 데이터를 구성합니다.

1. **강화 미세 조정 작업 생성을** 선택하여 작업을 시작합니다.

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

를 로 `customizationType` 설정하여 CreateModelCustomizationJob 요청을 보냅니다`REINFORCEMENT_FINE_TUNING`.

**필수 필드:** `roleArn`, `baseModelIdentifier`, `customModelName`, `jobName`, `trainingDataConfig`, `outputDataConfig`, `rftConfig` 

**요청 예제:**

```
{
    "roleArn": "arn:aws:iam::123456789012:role/BedrockRFTRole",
    "baseModelIdentifier": "amazon.nova-2.0",
    "customModelName": "my-rft-model",
    "jobName": "my-rft-job",
    "customizationType": "REINFORCEMENT_FINE_TUNING",
    "trainingDataConfig": {
        "s3Uri": "s3://my-bucket/training-data.jsonl"
    },
    "customizationConfig": {
        "rftConfig" : {
            "graderConfig": {
                "lambdaGrader": {
                    "lambdaArn": "arn:aws:lambda:us-east-1:123456789012:function:function-name"
                }
            },
            "hyperParameters": {
                "batchSize": 64,
                "epochCount": 2,
                "evalInterval": 10,
                "inferenceMaxTokens": 8192,
                "learningRate": 0.00001,
                "maxPromptLength": 4096,
                "reasoningEffort": "high",
                "trainingSamplePerPrompt": 4
            }
        }
    },
    "outputDataConfig": {
        "s3Uri": "s3://my-bucket/rft-output/"
    }
}
```

**Python API 샘플 요청:**

```
import boto3

bedrock = boto3.client(service_name='bedrock')
    
# Set parameters
customizationType = "REINFORCEMENT_FINE_TUNING"
baseModelIdentifier = "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-lite-v1:0:256k"
roleArn = "${your-customization-role-arn}"
jobName = "MyFineTuningJob"
customModelName = "MyCustomModel"

customizationConfig = {
    'rftConfig' : {
        'graderConfig': {
            'lambdaGrader': {
                'lambdaArn': 'arn:aws:lambda:us-east-1:123456789012:function:function-name'
            }
        },
        'hyperParameters': {
            'batchSize': 64,
            'epochCount': 2,
            'evalInterval': 10,
            'inferenceMaxTokens': 8192,
            'learningRate':0.00001,
            'maxPromptLength': 4096,
            'reasoningEffort': 'high',
            'trainingSamplePerPrompt':4
        }
    }
}

trainingDataConfig = {"s3Uri": "s3://${training-bucket}/myInputData/train.jsonl"}
outputDataConfig = {"s3Uri": "s3://${output-bucket}/myOutputData"}

# Create job
response_ft = bedrock.create_model_customization_job(
    jobName=jobName, 
    customModelName=customModelName,
    roleArn=roleArn,
    baseModelIdentifier=baseModelIdentifier,
    customizationConfig=customizationConfig,
    trainingDataConfig=trainingDataConfig,
    outputDataConfig=outputDataConfig,
    customizationType=customizationType
)

jobArn = response_ft['jobArn']
```

------

## RFT 훈련 작업 모니터링
<a name="rft-monitor-job"></a>

Amazon Bedrock은 RFT 훈련 중에 시각적 그래프 및 지표를 사용하여 실시간 모니터링을 제공합니다. 이러한 지표는 모델이 제대로 수렴되는지 여부와 보상 함수가 학습 프로세스를 효과적으로 안내하는지 이해하는 데 도움이 됩니다.

### 작업 상태 추적
<a name="rft-job-status"></a>

Amazon Bedrock 콘솔의 검증 및 훈련 단계를 통해 RFT 작업 상태를 모니터링할 수 있습니다.

**완료 지표:**
+ 훈련이 성공적으로 완료되면 작업 상태가 **완료**됨으로 변경됩니다.
+ 사용자 지정 모델 ARN 배포 가능
+ 훈련 지표가 수렴 임계값에 도달

### 실시간 훈련 지표
<a name="rft-real-time-metrics"></a>

Amazon Bedrock은 훈련 및 검증 지표를 표시하는 시각적 그래프를 사용하여 RFT 훈련 중에 실시간 모니터링을 제공합니다.

#### 핵심 훈련 지표
<a name="rft-core-metrics"></a>
+ **훈련 손실** - 모델이 훈련 데이터에서 얼마나 잘 학습하고 있는지 측정합니다.
+ **훈련 보상 통계** - 보상 함수에서 할당한 보상 점수를 표시합니다.
+ **보상 마진** - 좋은 대응 보상과 나쁜 대응 보상의 차이를 측정합니다.
+ **훈련 및 검증 세트의 정확도** - 훈련 및 홀드아웃 데이터 모두에 대한 모델 성능을 보여줍니다.

**세부 지표 범주**
+ **보상 지표** - `critic/rewards/mean`, `critic/rewards/max`, `critic/rewards/min` (보상 배포) 및 `val-score/rewards/mean@1` (검증 보상)
+ **모델 동작** - `actor/entropy` (정책 변형, 높을수록 더 탐색적임)
+ **훈련 상태** - `actor/pg_loss` (정책 그라데이션 손실), `actor/pg_clipfrac` (클리핑된 업데이트 빈도) 및 `actor/grad_norm` (완전한 크기)
+ **응답 특성** - `prompt_length/mean`, `prompt_length/max`, `prompt_length/min` (입력 토큰 통계), `response_length/mean`, `response_length/max`, `response_length/min` (출력 토큰 통계) 및 `response/aborted_ratio` (미완료 생성 속도, 0은 모두 완료됨)
+ **성능** - `perf/throughput` (훈련 처리량), `perf/time_per_step` (훈련 단계당 시간) 및 `timing_per_token_ms/*` (토큰당 처리 시간)
+ **리소스 사용량** - `perf/max_memory_allocated_gb`, `perf/max_memory_reserved_gb` (GPU 메모리) 및 `perf/cpu_memory_used_gb` (CPU 메모리)

#### 훈련 진행 상황 시각화
<a name="rft-progress-visualization"></a>

콘솔에는 RFT 작업이 진행됨에 따라 실시간으로 업데이트되는 대화형 그래프가 표시됩니다. 이러한 시각화는 다음과 같은 이점을 제공합니다.
+ 최적의 성능을 향한 수렴 추적
+ 잠재적 훈련 문제를 조기에 식별
+ 최적의 중지 지점 결정
+ 다양한 에포크의 성능 비교

## 추론 설정
<a name="rft-setup-inference"></a>

작업 완료 후 온디맨드 추론을 위해 RFT 모델을 배포하거나 일관된 성능을 위해 프로비저닝된 처리량을 사용합니다. 추론 설정은 섹션을 참조하세요[사용자 지정 모델의 추론 설정](model-customization-use.md).

**플레이그라운드에서 테스트를** 사용하여 응답을 평가하고 기본 모델과 비교합니다. 완료된 RFT 모델을 평가하려면 섹션을 참조하세요[RFT 모델 평가](rft-evaluate-model.md).