

# SageMaker HyperPod에서 강화 미세 조정(RFT)
<a name="nova-hp-rft"></a>

강화 미세 조정은 정확히 올바른 답변으로 직접 감독하는 대신 응답 품질을 나타내는 피드백 신호(측정 가능한 점수 또는 보상)를 통해 모델 성능을 개선하는 기계 학습 기법입니다. 입력과 출력 페어로부터 학습하는 기존의 지도 미세 조정과 달리, RFT는 보상 함수를 사용하여 모델 응답을 평가하고 반복적으로 모델을 최적화하여 이러한 보상을 극대화합니다.

이 접근 방식은 정확히 올바른 출력을 정의하기 어려운 태스크에 특별히 효과적이지만 신뢰할 수 있는 방식으로 응답 품질을 측정할 수 있습니다. RFT를 사용하면 모델이 시험과 피드백을 통해 복잡한 행동과 선호도를 학습할 수 있으므로, 세심한 의사 결정, 창의적인 문제 해결 또는 프로그래밍 방식으로 평가할 수 있는 특정 품질 기준 준수가 필요한 애플리케이션에 적합합니다.

**RFT는 사용하는 경우**  
명확하고 측정 가능한 성공 기준을 정의할 수 있지만 훈련에 정확히 올바른 출력을 제공하는 데 어려움을 겪는 경우 RFT를 사용합니다. 여러 개의 유효한 솔루션이 존재하지만 일부가 다른 솔루션보다 분명히 더 좋은, 창의적 쓰기, 코드 최적화 또는 복잡한 추론과 같이 품질이 주관적이거나 다면적인 작업에 적합합니다.

RFT는 다음과 같은 경우에 가장 잘 작동합니다.
+ 프로그래밍 방식으로 모델 출력을 평가할 수 있는 신뢰할 수 있는 보상 함수가 있는 경우
+ 모델 동작을 특정 기본 설정 또는 제약 조건에 맞게 조정해야 하는 경우
+ 레이블이 지정된 고품질 예제를 수집하는 데 비용이 많이 들거나 이 방법이 실용적이지 않기 때문에 기존의 지도 미세 조정이 부족한 상황

반복된 개선, 개인화 또는 보상 신호로 인코딩될 수 있는 복잡한 비즈니스 규칙 준수가 필요한 애플리케이션의 경우 RFT를 고려합니다.

**RFT가 가장 적합한 작업**  
RFT는 출력 품질을 객관적으로 측정할 수 있지만 최적의 응답을 미리 정의하기 어려운 도메인에서 뛰어납니다.
+ **수학적 문제 해결**: 여러 솔루션 경로로 확인 가능한 정확성
+ **코드 생성 및 최적화**: 테스트 가능한 실행 결과 및 성능 지표
+ **과학적 추론 작업**: 논리적 일관성 및 사실적 정확도
+ **정형 데이터 분석**: 프로그래밍 방식으로 확인 가능한 출력
+ **여러 단계의 추론**: 단계별 논리적 진행이 필요한 태스크
+ **도구 사용 및 API 직접 호출**: 실행 결과로 측정 가능한 성공
+ **복잡한 워크플로**: 특정 제약 조건 및 비즈니스 규칙 준수

RFT는 정확도, 효율성, 스타일과 같은 여러 경쟁 목표의 균형을 맞춰야 할 때 매우 효과적입니다.

**RFT 훈련에 추론 모드를 사용해야 하는 경우**  
Amazon Nova 2.0은 RFT 훈련 중에 추론 모드를 지원합니다. 다음 모드를 사용할 수 있습니다.
+ **none**: 추론 없음(reasoning\$1effort 필드 생략)
+ **low**: 최소한의 추론 오버헤드
+ **high**: 최대 추론 기능(reasoning\$1effort를 지정할 때 기본값)

**참고**  
RFT에는 중간 옵션이 없습니다. 구성에 reasoning\$1effort 필드가 없으면 추론이 비활성화됩니다.

다음과 같은 경우 높은 수준의 추론을 사용합니다.
+ 복잡한 분석 태스크
+ 수학적 문제 해결
+ 여러 단계의 논리적 연역
+ 단계별 사고가 가치를 더하는 태스크

다음과 같은 경우에 none(reasoning\$1effort) 또는 낮은 수준의 추론을 사용합니다.
+ 단순한 사실적 쿼리
+ 직접 분류
+ 속도 및 비용 최적화
+ 간단한 질문과 답변

**중요**  
더 높은 추론 모드일수록 훈련 시간과 비용, 추론 지연 시간 및 비용이 증가하지만 복잡한 추론 태스크에 대한 모델 기능도 증가합니다.

**지원되는 모델**  
SageMaker HyperPod에서 RFT는 Amazon Nova Lite 2.0(amazon.nova-2-lite-v1:0:256k)을 지원합니다.

**주요 단계**  
RFT 프로세스에는 다음과 같은 4개의 주요 단계가 포함됩니다.
+ **평가자 구현**: 보상 함수를 생성하여 품질 기준을 기반으로 모델 응답 점수를 프로그래밍 방식으로 매깁니다.
+ **프롬프트 업로드**: 평가를 위해 참조 데이터와 함께 지정된 대화형 형식으로 훈련 데이터를 준비하고 업로드합니다.
+ **작업 시작**: 구성된 파라미터를 사용하여 강화 미세 조정 프로세스를 시작합니다.
+ **모니터링**: 지표 대시보드를 통해 훈련 진행 상황을 추적하여 모델이 효과적으로 학습되도록 보장합니다.

각 단계는 이전 단계를 기반으로 빌드되며, 평가자는 일관된 피드백 신호를 제공하여 전체 훈련 프로세스를 안내하는 파운데이션 역할을 합니다.

**Topics**
+ [Nova 2.0에서 SFT](nova-hp-rft-nova2.md)

# Nova 2.0에서 SFT
<a name="nova-hp-rft-nova2"></a>

RFT 훈련 데이터는 OpenAI 대화 형식을 따릅니다. 각 훈련 예제는 메시지, 참조 답변 및 선택적 도구 정의를 포함하는 JSON 객체입니다. 이 섹션에서는 Nova 2.0에서 RFT에 대한 효과적인 훈련 데이터를 준비하는 방법에 대한 지침을 제공합니다.

**Topics**
+ [데이터 형식 및 구조](#nova-hp-rft-data-format)
+ [필드 설명](#nova-hp-rft-field-descriptions)
+ [하이퍼파라미터 지침](#nova-hp-rft-monitoring-hyperparams)
+ [추가 속성](#nova-hp-rft-additional-properties)
+ [데이터세트 크기 권장 사항](#nova-hp-rft-dataset-size)
+ [효과적인 훈련 데이터의 특성](#nova-hp-rft-effective-data)
+ [RFT 훈련 모니터링](nova-hp-rft-monitoring.md)

## 데이터 형식 및 구조
<a name="nova-hp-rft-data-format"></a>

각 훈련 예제는 다음을 포함하는 JSON 객체입니다.
+ **messages**: 시스템, 사용자 및 선택적으로 어시스턴트 역할을 사용하는 대화 턴 배열
+ **reference\$1answer**: 보상 계산에 대한 평가 기준 또는 예상 출력
+ **tools**(선택 사항): 모델에서 사용할 수 있는 함수 정의 배열
+ **id**(선택 사항): 추적 및 중복 제거를 위한 고유 식별자

각 예제는 JSONL 파일에서 한 줄에 있어야 하며 한 줄에 하나의 JSON 객체가 있어야 합니다.

### 예제 1: 화학 문제
<a name="nova-hp-rft-example-chemistry"></a>

다음 예제에서는 실측 정보 값을 포함하는 참조 답변을 사용하는 화학 문제를 보여줍니다.

```
{  
  "id": "chem-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a helpful chemistry assistant"  
    },  
    {  
      "role": "user",  
      "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C"  
    }  
  ],  
  "reference_answer": {  
    "donor_bond_counts": 2,  
    "acceptor_bond_counts": 4,  
    "explanation": "Calculated using Lipinski's rule of five: N-H groups (2 donors), N and O atoms with lone pairs (4 acceptors)"  
  }  
}
```

**참고**  
reference\$1answer에는 도메인별 규칙을 사용하여 계산된 실측 정보 값이 포함되어 있습니다. 보상 함수는 모델 예측 값을 이러한 참조 값과 비교하여 보상 점수를 계산합니다.

### 예제 2: 수학 문제
<a name="nova-hp-rft-example-math"></a>

다음 예제에서는 해법 단계를 포함하는 수학 문제를 보여줍니다.

```
{  
  "id": "math-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a math tutor"  
    },  
    {  
      "role": "user",  
      "content": "Solve: 2x + 5 = 13"  
    }  
  ],  
  "reference_answer": {  
    "solution": "x = 4",  
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]  
  }  
}
```

### 예제 3: 도구 사용
<a name="nova-hp-rft-example-tool"></a>

다음 예제에서는 예상 동작이 있는 도구 사용을 보여줍니다.

```
{  
  "id": "tool-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a helpful game master assistant"  
    },  
    {  
      "role": "user",  
      "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier."  
    }  
  ],  
  "tools": [  
    {  
      "type": "function",  
      "function": {  
        "name": "StatRollAPI",  
        "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.",  
        "parameters": {  
          "type": "object",  
          "properties": {  
            "modifier": {  
              "description": "An integer representing the modifier to apply to the total of the stat roll.",  
              "type": "integer"  
            }  
          },  
          "required": ["modifier"]  
        }  
      }  
    }  
  ],  
  "reference_answer": {  
    "tool_called": "StatRollAPI",  
    "tool_parameters": {  
      "modifier": 2  
    },  
    "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value"  
  }  
}
```

## 필드 설명
<a name="nova-hp-rft-field-descriptions"></a>


| 필드 | 설명 | 추가 참고 사항 | 필수 | 
| --- |--- |--- |--- |
| id | 이 RFT 예제의 고유 식별자 | 문자열(예: 'sample-001'). 추적 및 중복 제거에 유용합니다. | 아니요 | 
| messages | 프롬프트 및 컨텍스트를 정의하는 채팅 메시지의 정렬된 목록 |  객체의 배열입니다. 모델은 이를 순서대로 확인합니다. 일반적으로 시스템 메시지로 시작한 다음 사용자로 진행합니다. | 예 | 
| messages[].role | 메시지에서 화자 | 공통 값: 'system', 'user'(다른 컨텍스트에서 때때로 'assistant') | 아니요 | 
| messages[].content | 메시지의 텍스트 콘텐츠 | 일반 문자열. 시스템의 경우 지침, 사용자의 경우 태스크 또는 입력에 해당합니다. | 아니요 | 
| 도구 | 이 예제에서 모델에 사용할 수 있는 도구 사양 | 배열. 각 항목은 도구의 인터페이스와 메타데이터를 정의합니다. 유형으로 'function' 또는 'internal'이 포함될 수 있습니다. | 아니요 | 
| reference\$1answer | 이 예제의 예상 모델 출력 | 태스크에 따라 문자열 또는 객체에 해당합니다. 평가 또는 훈련의 대상으로 사용됩니다. | 아니요 | 

**참고**  
추가 사용자 지정 필드(예: task\$1id, difficulty\$1level, context\$1data)는 검증되지 않으며 보상 함수에 메타데이터로 전달됩니다.

## 하이퍼파라미터 지침
<a name="nova-hp-rft-monitoring-hyperparams"></a>

훈련 접근 방식을 기반으로 다음과 같은 권장 하이퍼파라미터를 사용합니다.

**일반:**
+ 에포크: 1
+ 학습률(lr): 1e-7
+ 세대 수: 8
+ 최대 새 토큰 수: 8192
+ 배치 크기: 256

**저순위 적응(LoRA)**
+ LoRA 순위: 32

**참고**  
데이터세트 크기 및 검증 성능에 따라 이러한 값을 조정합니다. 훈련 지표를 모니터링하여 과적합을 방지합니다.

## 추가 속성
<a name="nova-hp-rft-additional-properties"></a>

'additionalProperties': true 설정을 사용하면 핵심 스키마 요구 사항 이외의 사용자 지정 필드를 포함할 수 있으므로 적절한 평가를 위해 보상 함수에 필요한 데이터를 유연하게 추가할 수 있습니다.

### 일반적인 추가 필드
<a name="nova-hp-rft-common-fields"></a>

다음과 같은 유형의 추가 필드를 포함할 수 있습니다.

**메타데이터:**
+ task\$1id: 추적을 위한 고유 식별자
+ difficulty\$1level: 문제 복잡성 지표
+ domain: 주제 영역 또는 카테고리
+ expected\$1reasoning\$1steps: 해법의 단계 수

**평가 기준:**
+ evaluation\$1criteria: 특정 등급 루브릭
+ custom\$1scoring\$1weights: 여러 측면의 상대적 중요도
+ context\$1data: 문제에 대한 배경 정보
+ external\$1references: 관련 설명서 또는 리소스에 대한 링크

### 추가 속성이 있는 예제
<a name="nova-hp-rft-additional-example"></a>

다음 예제에는 사용자 지정 메타데이터 필드가 포함되어 있습니다.

```
{  
  "id": "algebra_001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a math tutor"  
    },  
    {  
      "role": "user",  
      "content": "Solve: 2x + 5 = 13"  
    }  
  ],  
  "reference_answer": {  
    "solution": "x = 4",  
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]  
  },  
  "task_id": "algebra_001",  
  "difficulty_level": "easy",  
  "domain": "algebra",  
  "expected_reasoning_steps": 3  
}
```

## 데이터세트 크기 권장 사항
<a name="nova-hp-rft-dataset-size"></a>

### 시작점
<a name="nova-hp-rft-starting-point"></a>

다음과 같은 최소 데이터세트 크기로 시작합니다.
+ 최소 100개의 훈련 예제
+ 최소 100개의 평가 예제

모델 응답에서 일관되게 실행되는 신뢰할 수 있는 보상 함수와 고품질 입력 데이터의 우선순위를 지정합니다.

### 평가 우선 접근 방식
<a name="nova-hp-rft-evaluation-first"></a>

대규모 RFT 훈련에 투자하기 전에 모델의 기준 성능을 평가합니다.
+ **높은 성능(> 95% 보상)**: RFT가 불필요할 수 있음 - 모델이 이미 잘 작동함
+ **매우 낮은 성능(0% 보상)**: 먼저 SFT로 전환하여 기본 기능을 설정함
+ **중간 성능**: RFT가 적절할 가능성이 큼

이 평가 우선 접근 방식은 보상 함수에 버그가 없도록 보장하고 RFT가 사용 사례에 올바른 방법인지를 결정합니다. 소규모로 시작하여 RFT 워크플로에 익숙해지면서, 문제를 조기에 식별 및 수정하고, 스케일 업하기 전에 접근 방식을 검증하며, 보상 함수 신뢰성을 테스트할 수 있습니다. 검증 후에 더 큰 데이터세트로 확장하여 성능을 더욱 개선할 수 있습니다.

## 효과적인 훈련 데이터의 특성
<a name="nova-hp-rft-effective-data"></a>

### 명확성 및 일관성
<a name="nova-hp-rft-clarity"></a>

좋은 RFT 예제에는 여러 모델 출력에서 정확한 보상을 계산할 수 있는 명확하고 모호하지 않은 입력 데이터가 필요합니다. 다음을 포함하여 데이터에서 노이즈를 방지합니다.
+ 일관되지 않은 형식 지정
+ 모순되는 레이블 또는 지침
+ 모호한 프롬프트
+ 참조 답변 충돌

모호할 경우 훈련 프로세스에서 오해가 발생하고 모델이 의도하지 않은 동작을 학습하게 됩니다.

### 다양성
<a name="nova-hp-rft-diversity"></a>

데이터세트는 강력한 실제 성능을 보장하기 위해 프로덕션 사용 사례의 완전한 다양성을 캡처해야 합니다. 포함:
+ 다양한 문제 유형 및 난이도
+ 여러 입력 형식 및 엣지 케이스
+ 모든 예상 시나리오의 대표 샘플

이러한 다양성은 과적합을 방지하는 데 도움이 되고 모델이 익숙하지 않은 입력을 정상적으로 처리하도록 보장합니다.

### 보상 함수 고려 사항
<a name="nova-hp-rft-reward-considerations"></a>

효율적인 훈련을 위해 보상 함수를 설계합니다.
+ 분이 아닌 초 단위 내 실행
+ Lambda를 사용하여 효과적으로 병렬 처리
+ 일관되고 신뢰할 수 있는 점수 반환
+ 여러 유형의 모델 출력을 정상적으로 처리

빠르고 확장 가능한 보상 함수를 사용하면 대규모로 신속한 반복과 비용 효율적인 실험이 가능합니다.

# RFT 훈련 모니터링
<a name="nova-hp-rft-monitoring"></a>

훈련 중 주요 지표를 모니터링하여 효과적인 학습을 보장하고 잠재적 문제를 조기에 식별합니다.

**Topics**
+ [추적할 주요 지표](#nova-hp-rft-monitoring-metrics)
+ [RFT 이후 평가](#nova-hp-rft-monitoring-evaluation)
+ [미세 조정 모델 사용](#nova-hp-rft-monitoring-checkpoints)
+ [제한 사항 및 모범 사례](#nova-hp-rft-monitoring-limitations)
+ [문제 해결](#nova-hp-rft-monitoring-troubleshooting)

## 추적할 주요 지표
<a name="nova-hp-rft-monitoring-metrics"></a>

훈련 중에 MlFlow를 사용하여 다음 지표를 모니터링합니다.

**보상 지표:**
+ **평균 보상 점수**: 모델 응답의 전반적인 품질(시간 경과에 따라 증가해야 함)
+ **보상 분포**: 높음, 중간, 낮음 수준의 보상을 받는 응답 비율
+ **훈련 및 검증 보상 비교**: 과적합 감지와 비교

**훈련 지표:**
+ **정책 업데이트**: 성공적인 가중치 업데이트 수
+ **롤아웃 완료율**: 성공적으로 평가된 샘플 비율

**우려되는 패턴:**
+ 보상 정체(열악한 수준의 학습을 나타냄)
+ 훈련 보상이 증가하는 동안 검증 보상 삭제(과적합)
+ 시간 경과에 따라 크게 증가하는 보상 분산(불안정성)
+ 높은 비율의 보상 함수 오류(구현 문제)

**훈련을 중지하는 경우:**
+ 목표 성능 지표를 달성함
+ 보상 정체 및 더 이상 개선되지 않음
+ 검증 성능이 저하됨(과적합 감지됨)
+ 최대 훈련 예산에 도달함

## RFT 이후 평가
<a name="nova-hp-rft-monitoring-evaluation"></a>

훈련이 완료되면 미세 조정된 모델을 평가하여 성능 개선을 평가합니다.
+ **RFT 평가 작업 실행**: RFT 훈련의 체크포인트를 모델로 사용
+ **기준과 비교**: 동일한 테스트 세트에서 기본 모델과 미세 조정된 모델 모두 평가
+ **지표 분석**: 태스크별 지표(정확도, 보상 점수 등) 검토
+ **정성적 검토 수행**: 샘플 출력의 품질을 수동으로 검사

자세한 평가 절차는 평가 섹션을 참조하세요.

## 미세 조정 모델 사용
<a name="nova-hp-rft-monitoring-checkpoints"></a>

**체크포인트에 액세스:**

훈련이 완료되면 체크포인트를 찾습니다.

1. S3에서 `output_path`로 이동

1. `output.tar.gz` 다운로드 및 추출

1. `manifest.json`를 엽니다.

1. `checkpoint_s3_bucket` 값 복사

**추론에 대한 배포:**

추론 또는 추가 훈련을 위해 체크포인트 S3 경로를 사용합니다.

```
run:
    model_type: amazon.nova-2-lite-v1:0:256k
    model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
```

배포 및 추론 지침은 추론 섹션을 참조하세요.

## 제한 사항 및 모범 사례
<a name="nova-hp-rft-monitoring-limitations"></a>

**현재 제한 사항:**

**베타 제한 사항:**
+ RFT에 대한 새 RIG 그룹을 생성해야 합니다. 이 제한 사항은 GA에서 해결될 예정입니다.
+ 인스턴스 유형 요구 사항: P5 인스턴스(최소 8x P5.48xlarge)만 지원됩니다. 출시 예정: 더 작은 인스턴스 유형에 대한 지원(ETA: 2025년 1월 중순).

**기능 제한 사항:**
+ 15분의 Lambda 제한 시간: 보상 함수는 15분 이내에 완료되어야 함
+ 싱글턴만 - 멀티턴 대화는 지원되지 않음
+ 검증 데이터세트: 훈련 중에는 지원되지 않습니다. 별도의 평가 작업을 사용하여 훈련 진행 상황을 평가합니다.

**훈련 고려 사항:**
+ 낮은 보상 시나리오: 5% 미만의 예제에서 긍정적인 보상을 받을 때 어려움을 겪을 수 있음 - SFT 우선 고려
+ 데이터 요구 사항: 효과적으로 학습하려면 충분한 다양성이 필요함
+ 컴퓨팅 비용: 지도 미세 조정보다 비용이 많이 발생함

**Nova Forge에서는 다음과 같은 제한 사항 중 일부가 제거되었습니다.**
+ 멀티턴 대화 지원
+ 15분 제한 시간을 초과하는 보상 함수 허용
+ 고급 알고리즘 및 조정 옵션 제공
+ 복잡한 엔터프라이즈 사용 사례를 위해 설계되었으며, 특히 프론티어 모델을 빌드하도록 조정됨

**모범 사례:**

**작게 시작한 다음 규모 조정:**
+ 최소 데이터세트(100\$1200개의 예제)와 소수의 훈련 에포크로 시작
+ 스케일 업하기 전에 접근 방식 검증
+ 결과를 기반으로 점진적으로 데이터세트 크기 및 훈련 단계 증가

**SFT 우선 시 기준:**
+ 보상 점수가 지속적으로 낮은 경우(예: 항상 0) RFT 전에 SFT 수행
+ 효과적으로 개선하려면 RFT에 합리적인 기준 성능이 필요함

**효율적인 보상 함수 설계:**
+ 분이 아닌 초 단위 내 실행
+ 외부 API 직접 호출 최소화
+ 효율적인 알고리즘 및 데이터 구조 사용
+ 적절한 오류 처리 구현
+ 훈련 전에 철저하게 테스트
+ Lambda의 병렬 조정 기능 활용

**적극적으로 훈련 모니터링:**
+ 시간 경과에 따른 평균 보상 점수 추적
+ 여러 샘플에서 보상 분포 감시
+ 훈련 보상 및 검증 보상 비교
+ 우려되는 패턴(정체, 과적합, 불안정) 감지

**결과를 기반으로 반복:**
+ 여러 번 반복 후에도 보상이 개선되지 않으면 보상 함수 설계 조정
+ 데이터세트 다양성을 늘려 더 명확한 학습 신호 제공
+ 보상이 계속 0 근처로 유지되는 경우 SFT로 전환 고려
+ 여러 하이퍼파라미터(학습 속도, 배치 크기)로 실험

**데이터 품질 최적화:**
+ 다양한 대표 예제 보장
+ 엣지 케이스 및 어려운 샘플 포함
+ 보상 함수가 모든 예제 유형의 점수를 올바르게 매기는지 확인
+ 보상 함수를 혼동하는 샘플 제거 또는 수정

## 문제 해결
<a name="nova-hp-rft-monitoring-troubleshooting"></a>

**보상 함수 오류:**

증상: 훈련 중 보상 함수 직접 호출에서 높은 오류 비율


| 문제 | 증상 | 해결 방법 | 
| --- |--- |--- |
| Lambda 제한 시간 | 15분 후 빈번한 제한 시간 초과 | 함수 성능 최적화, 복잡한 평가에 Nova Forge 고려 | 
| 동시성 부족 | Lambda 스로틀링 오류 | lambda\$1concurrency\$1limit 증가 또는 할당량 증가 요청 | 
| 휴효하지 않은 반환 형식 | 형식 오류와 함께 훈련 실패 | 반환 구조가 필수 인터페이스 형식과 일치하는지 확인 | 
| 처리되지 않은 예외 | 간헐적 오류 | 포괄적인 오류 처리 및 로깅 추가 | 
| 외부 API 실패 | 일관되지 않은 점수 | 재시도 로직 및 대체 전략 구현 | 

**훈련 성능 저하:**

증상: 보상이 개선되지 않거나 낮은 값으로 정체됨

해결 방법:
+ **보상 함수 정확성 확인**: 알려진 좋은 예제 및 잘못된 예제로 테스트
+ **기준 성능 확인**: 기본 모델 평가, 정확도가 거의 0에 가까우면 SFT 우선 수행
+ **데이터 다양성 증가**: 여러 시나리오를 다루는 다양한 예제 더 추가
+ **하이퍼파라미터 조정**: 여러 학습률 또는 배치 크기 시도
+ **보상 신호 품질 검토**: 보상에서 좋은 응답과 나쁜 응답을 구별하는지 확인

**과적합:**

증상: 훈련 보상은 증가하지만 검증 보상은 감소함

해결 방법:
+ **훈련 단계 축소**: 조기에 훈련 중지
+ **데이터세트 크기 증가**: 훈련 예제 더 추가
+ **정규화 추가**: `weight_decay` 또는 `entropy_coeff` 조정
+ **데이터 다양성 증가**: 훈련 세트가 전체 분산을 나타내도록 보장