반복 훈련
개요
반복 훈련은 여러 훈련 방법(훈련, 평가, 오류 분석, 데이터/목표/하이퍼파라미터 조정 등)에서 여러 훈련 주기를 통해 모델을 반복적으로 미세 조정하는 프로세스로, 각 라운드는 이전 체크포인트에서 시작됩니다. 이 접근 방식을 사용하면 모델 실패 모드를 체계적으로 목표로 지정하고, 특정 약점을 해결하는 선별된 예제를 통합하며, 시간이 지남에 따라 변화하는 요구 사항에 적응할 수 있습니다.
단일 패스 훈련의 이점:
-
목표 개선: 평가를 통해 발견한 특정 실패 패턴 해결
-
적응형 개선: 배포 전환 또는 진화하는 제품 요구 사항에 대응
-
위험 완화: 긴 단일 훈련 실행에 커밋하지 않고 점진적으로 개선 사항 검증
-
데이터 효율성: 모델 성능이 낮은 영역에 데이터 수집 노력 집중
-
커리큘럼 훈련: 점점 더 높은 품질의 데이터를 사용하는 여러 라운드로 구성된 훈련
작동 방식
체크포인트 위치 및 액세스
각 훈련 작업이 완료되면 훈련 구성의 output_path 파라미터로 지정된 출력 위치에 매니페스트 파일이 생성됩니다.
체크포인트에 액세스하는 방법
-
S3에서 지정된
output_path로 이동 -
output.tar.gz파일을 다운로드하고 압축 풀기 -
내부에서
manifest.json파일 열기 -
훈련된 모델의 S3 URI를 포함하는
checkpoint_s3_bucket파라미터 찾기
manifest.json 구조 예제
{ "checkpoint_s3_bucket": "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>/stepID", ... }
에스크로 버킷 이해
Amazon Nova 가중치는 독점 데이터이므로 훈련된 모델 체크포인트는 계정에 복사되지 않고 AWS 관리형 계정 내 에스크로 S3 버킷에 저장됩니다. 다음은 이러한 에스크로 버킷의 특징입니다.
-
사용자 지정된 모델 가중치를 안전하게 포함함
-
다른 AWS 서비스(추론, 평가 및 후속 훈련 작업)에서 참조할 수 있음
-
IAM 권한을 통해 AWS 계정에만 액세스할 수 있음
-
계정에서 표준 S3 스토리지 요금 발생(비용 고려 사항 참조)
다음 훈련 실행에서 에스크로 버킷 경로를 model_name_or_path로 사용하여 반복 훈련을 계속할 수 있습니다.
반복 훈련에 체크포인트 사용
이전 체크포인트를 기본 모델로 사용하도록 다음 훈련 작업을 구성합니다.
run: name: "my-iterative-training-job" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<previous-job-name>" data_s3_path: s3://<bucket>/<data-file>.jsonl replicas: 4
반복 훈련을 사용해야 하는 경우
이상적인 사용 사례
다음과 같은 경우에 반복 훈련을 사용합니다.
-
피드백 루프 - 실제 실패 사례를 수집하고 체계적으로 해결하는 기능
-
동적 환경 - 주기적 모델 업데이트가 필요한 문서, API 또는 지원 주제 개선
-
강력한 평가 - 개선 사항을 신뢰할 수 있는 방식으로 측정하기 위한 강력한 벤치마크 및 평가 프레임워크(아래 예제 참조)
-
ML 운영 기능 - 여러 훈련 주기 및 버전 제어를 관리하는 리소스
강력한 평가 프레임워크 예제
-
통과/실패 임계치가 있는 자동하된 벤치마크 모음
-
평가자 간 신뢰성 지표를 포함하는 인적 평가 프로토콜
-
엣지 사례 및 적대적 입력을 다루는 레드 팀 테스트 시나리오
-
프로덕션 영향을 측정하기 위한 A/B 테스트 인프라
일반적인 패턴
SFT → RFT 파이프라인: 자주 사용되는 반복 패턴에는 다음이 포함됩니다.
-
SFT 우선 - 데모 예제를 통해 문제를 해결하는 방법을 모델에 가르침
-
RFT 보조 - 보상 신호를 사용하여 광범위한 문제 공간에서 성능 최적화
이 시퀀스는 처음에 모델의 성능이 낮은 경우에 필수적입니다. 정확도가 거의 0에 가까운 모델의 경우 먼저 SFT를 통해 기본적인 문제 해결 기능을 설정하지 않으면 RFT로느 성능이 개선되지 않습니다.
반복 훈련을 사용하지 않는 경우
다음 경우에는 반복 훈련을 피합니다.
-
안정적이고 잘 정의된 태스크 - 일관된 요구 사항이 이미 성능 상한에 가까운 고정 데이터
-
간단한 분류 문제 - 단일 패스 훈련으로 충분한 좁은 범위의 태스크
-
리소스 제약 - 여러 훈련 주기를 관리하기 위한 전용 ML 운영 기능 부족
-
마진 게인 - 오버헤드로 최소 성능 개선 사항이 정당화되지 않는 경우
워크플로 예제: SFT → RFT
이 예제에서는 추론 모델에 대한 일반적인 반복 훈련 패턴을 보여줍니다.
1단계: 초기 SFT 훈련
데이터세트를 사용하여 SFT 훈련 작업을 구성하고 시작합니다.
run: name: "initial-sft-training" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod" data_s3_path: s3://<bucket>/sft-training-data.jsonl validation_data_s3_path: s3://<bucket>/sft-validation-data.jsonl
근거: SFT는 모델 출력을 원하는 형식과 음성으로 형성하여 기본 기능을 설정하는 추가 데모를 제공합니다.
훈련이 완료된 후
-
훈련 작업에 구성된
output_path기록 -
해당 위치에서
output.tar.gz다운로드 -
manifest.json추출 및 찾기 -
checkpoint_s3_bucket값 복사
2단계: SFT 체크포인트에서 RFT 훈련
SFT 체크포인트를 사용하여 새 RFT 훈련 작업을 생성합니다.
run: name: "rft-on-sft-checkpoint" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<initial-sft-training>" data_s3_path: s3://<bucket>/rft-training-data.jsonl reward_lambda_arn: <your-reward-function-arn>
근거: RFT 훈련은 SFT 파운데이션을 기반으로 구축되므로 모델은 보상 함수에 의해 최적화된 보다 복잡한 추론 패턴을 개발할 수 있습니다.
3단계: 평가 및 반복
RFT 체크포인트에서 평가를 실행하여 성능을 평가합니다.
run: name: "evaluate-rft-checkpoint" model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<rft-on-sft-checkpoint>" data_s3_path: s3://<bucket>/evaluation-data.jsonl
목표 지표가 충족되지 않으면 조정된 데이터 또는 하이퍼파라미터로 계속 반복합니다.
중요
훈련 기법(LoRA 및 전체 순위)은 모든 반복에서 일관성을 유지해야 합니다.
-
SFT를 LoRA와 함께 사용하는 경우 RFT를 LoRA와 함께 사용해야 함
-
SFT를 전체 순위와 함께 사용하는 경우 RFT를 전체 순위와 함께 사용해야 함
-
LoRA 및 전체 순위 중간 파이프라인 사이를 전환할 수 없습니다.
중요
Amazon에서 소유한 출력 S3 버킷에서 암호화에 KMS 키를 사용하는 경우 향후 모든 반복에 동일한 KMS 키를 사용해야 합니다.
여러 반복에서 진행 상황 모니터링
작업에 대한 MLflow를 설정하여 MLflow를 통해 지표를 추적할 수 있습니다.
MLflow 앱 생성
Studio UI 사용: Studio UI를 통해 훈련 작업을 생성하는 경우 기본 MLflow 앱이 자동으로 생성되고 고급 옵션에서 기본적으로 선택됩니다.
CLI 사용: CLI를 사용하는 경우 MLflow 앱을 생성하고 이를 훈련 작업 API 요청에 대한 입력으로 전달해야 합니다.
mlflow_app_name="<enter your MLflow app name>" role_arn="<enter your role ARN>" bucket_name="<enter your bucket name>" region="<enter your region>" mlflow_app_arn=$(aws sagemaker create-mlflow-app \ --name $mlflow_app_name \ --artifact-store-uri "s3://$bucket_name" \ --role-arn $role_arn \ --region $region)
MLflow 앱에 액세스
CLI 사용: 미리 서명된 URL을 생성하여 MLflow 앱 UI에 액세스합니다.
aws sagemaker create-presigned-mlflow-app-url \ --arn $mlflow_app_arn \ --region $region \ --output text
Studio UI 사용: Studio UI는 MLflow에 저장된 주요 지표를 표시하고 MLflow 앱 UI에 대한 링크를 제공합니다.
추적할 주요 지표
여러 반복에서 이러한 지표를 모니터링하여 개선 사항을 평가하고 작업 진행 상황을 추적합니다.
SFT의 경우
-
훈련 손실 곡선
-
소비된 샘플 수 및 샘플 처리 시간
-
홀드아웃 테스트 세트의 성능 정확도
-
형식 규정 준수(예: 유효한 JSON 출력 비율)
-
도메인별 평가 데이터의 퍼플렉시티
RFT의 경우
-
훈련 대비 평균 보상 점수
-
보상 분포(높은 보상 응답의 백분율)
-
검증 보상 추세(과적합 감시)
-
태스크별 성공률(예: 코드 실행 통과 비율, 수학 문제 정확도)
일반
-
반복 간 벤치마크 성능 델타
-
대표 샘플에 대한 인적 평가 점수
-
프로덕션 지표(반복적으로 배포하는 경우)
중지 시점 결정
다음과 같은 경우 반복을 중지합니다.
-
성능 정체 - 추가 훈련으로도 대상 지표가 더 이상 유의미하게 개선되지 않음
-
기법 전환 지원 - 한 기법이 정체된 경우 성능 상한을 깨뜨리려면 전환(예: SFT → RFT → SFT) 시도
-
목표 지표 달성 - 성공 기준을 충족함
-
회귀 감지 - 새 반복은 성능을 저하시킴(아래 롤백 절차 참조)
자세한 평가 절차는 평가 섹션을 참조하세요.
모범 사례
소규모로 시작하여 점진적으로 확장
스케일 업하기 전에 최소 데이터세트와 단일 훈련 에포크로 시작하여 접근 방식을 검증합니다. 그러면 신뢰가 구축되고 문제를 조기에 식별하는 데 도움이 됩니다.
명확한 성공 지표 설정
시작하기 전에 다음과 같이 정량적 및 정성적 지표를 정의합니다.
사용 사례별 성공 지표 예제
-
질문 답변 - 정확한 일치 정확도, F1 점수, 인적 선호도 등급
-
코드 생성 - 유닛 테스트 통과 비율, 컴파일 성공, 실행 시간
-
추론 태스크 - 단계 정확도, 최종 답변 정확성, 보상 점수
-
콘텐츠 생성 - 일관성 점수, 실제 정확도, 스타일 준수
자동화된 평가 구현
자동화된 평가 파이프라인을 설정하여 각 라운드 후 성능을 추적하여 빠른 반복 및 목표 비교를 지원합니다.
엄격한 버전 제어 유지 관리
각 반복에 대해 문서화합니다.
-
데이터세트 버전 및 수정 사항
-
모델 체크포인트 위치
-
하이퍼파라미터 변경 사항
-
성능 지표 및 델타
-
정성적 관찰
그러면 하면 규격화된 지식이 구축되고 디버깅을 지원합니다.
수량보다 데이터 품질에 집중
단순히 데이터세트 크기를 늘리는 대신, 이전 라운드의 실패 사례를 분석하고 목표에 맞는 고품질 예제를 추가합니다.
반복 예산 계획
일반적인 범위로 3~5회 반복을 계획합니다.
-
1~2회 반복 - 종종 단순한 개선 또는 최종 다듬기 작업에 충분함
-
3~5회 반복 - 여러 개선 주기가 필요한 복잡한 태스크에 적합함
-
5회 이상의 반복 - 반복 감소를 나타내거나 여러 접근 방식에 필요할 수 있음
컴퓨팅 예산 및 성능 개선률에 따라 조정합니다.
롤백 기능 구현
반복 시 회귀가 발생하는 경우:
-
회귀 식별 - 체크포인트 간 평가 지표 비교
-
이전 체크포인트로 돌아가기 - 이전 체크포인트의 S3 경로를
model_name_or_path로 사용 -
훈련 접근 방식 조정 - 재시도 전에 데이터, 하이퍼파라미터 또는 기법 수정
-
실패 사례 문서화 - 똑같은 상황을 방지하기 위해 회귀의 원인 기록
롤백 예제
run: name: "rollback-to-iteration-2" model_type: amazon.nova-2-lite-v1:0:256k # Use iteration 2 checkpoint instead of failed iteration 3 model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<iteration-2-job-name>"
비용 고려 사항
체크포인트 저장
-
위치 - 에스크로 버킷에 저장된 체크포인트에서는 AWS 계정에 청구되는 표준 S3 스토리지 요금이 발생함
-
보존 - 명시적으로 삭제되지 않는 한 체크포인트는 무기한 보존됨
-
관리 - 수명 주기 정책을 구현하여 더 이상 필요하지 않은 오래된 체크포인트를 아카이브하거나 삭제함
비용 최적화 팁
-
최신 반복을 검증한 후 중간 체크포인트 삭제
-
더 저렴한 비용으로 장기 보존을 위해 S3 Glacier에 체크포인트 아카이브
-
규정 준수 및 실험 요구 사항에 따라 보존 정책 설정
제한 사항
모델 패밀리 일관성
반복적으로 훈련하는 경우 모든 반복에서 동일한 모델 유형을 사용해야 합니다.
초기 훈련
run: model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: "nova-lite-2/prod"
후속 반복에서는 동일한 model_type을 사용해야 함
run: model_type: amazon.nova-2-lite-v1:0:256k # Must match original model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
훈련 기법의 일관성
훈련 기법은 여러 반복에서 일관성을 유지해야 합니다.
-
LoRA 훈련 모델은 LoRA로만 반복 훈련할 수 있습니다.
-
전체 순위 훈련 모델은 전체 순위로만 반복 훈련할 수 있습니다.
반복 훈련에서 LoRA 어댑터의 작동 방식
-
각 LoRA 훈련 반복은 새 어댑터 가중치를 생성함
-
새 어댑터는 이전 어댑터를 대체함(스택되지 않음)
-
기본 모델은 동결된 상태로 유지되며, 어댑터만 업데이트됨
기법 호환성 매트릭스
| 초기 훈련 | 반복을 지원하는 방법 |
|---|---|
| SFT(전체 순위) | SFT(전체 순위), RFT(전체 순위) |
| SFT(LoRA) | SFT(LoRA), RFT(LoRA) |
| RFT(전체 순위) | RFT(전체 순위) |
| RFT(LoRA) | RFT(LoRA) |
작업 시작 전에 호환성 확인
-
이전 훈련 레시피를 확인하여 모델 유형 및 훈련 기법(LoRA 및 전체 순위) 식별
-
새 레시피에서 모델 유형과 기법이 모두 일치하는지 확인
-
manifest.json을 검토하여 체크포인트 경로가 올바른지 확인
문제 해결
오류: 'Incompatible model training techniques detected'
원인: 훈련 기법(LoRA 및 전체 순위)이 체크포인트의 기법과 일치하지 않습니다.
해결 방법: 레시피가 원래 모델과 동일한 훈련 기법을 사용하는지 확인합니다.
-
체크포인트가 LoRA로 훈련된 경우 새 레시피에서 LoRA 사용
-
체크포인트가 전체 순위로 훈련된 경우 새 레시피에서 전체 순위 사용
오류: 'Base model for the job extracted from model_name_or_path does not match model_type'
원인: model_type에 지정된 모델 유형이 체크포인트의 실제 모델과 일치하지 않습니다.
해결 방법: 다음을 확인합니다.
-
레시피에서
model_type이 원래 모델 유형과 일치함 -
model_name_or_path에서 체크포인트 S3 경로가 올바름 -
올바른 manifest.json 파일의 경로를 사용하고 있음
올바른 구성 예제
run: model_type: amazon.nova-2-lite-v1:0:256k # Must match checkpoint's model model_name_or_path: "s3://customer-escrow-<account-number>-smtj-<unique-identifier>/<job-name>"
오류: 'Model configuration not found'
원인: model_name_or_path의 S3 경로가 유효하지 않거나 이에 액세스할 수 없습니다.
해결 방법:
-
S3 경로가 manifest.json 파일에서 올바르게 복사되었는지 확인
-
에스크로 버킷에 액세스할 수 있는 권한이 IAM 역할에 있는지 확인
-
이전 훈련 작업이 성공적으로 완료되었는지 확인
-
경로에 오타가 있는지 확인
반복 후 성능 회귀
증상: 새 훈련 반복 후 평가 지표가 감소합니다.
해결 방법:
-
롤백 - 이전 체크포인트를 기본 모델로 사용
-
분석 - 실패한 반복에 대한 훈련 로그 및 데이터 품질 검토
-
조정 - 하이퍼파라미터 수정(학습 속도 감소), 데이터 품질 향상 또는 훈련 에포크 감소
-
재시도 - 조정을 통해 새 반복 시작