

# Amazon Nova Forge
<a name="nova-forge"></a>

Amazon Nova Forge는 Nova를 사용하여 프론티어 모델을 빌드하는 가장 쉽고 비용 효율적인 방법을 조직에 제공하는 최초의 서비스입니다.

Amazon Nova Forge는 '개방 훈련' 모델의 개념을 도입하여 다양한 초기 모델 체크포인트에 대한 액세스 권한과 모델 훈련의 모든 단계에서 독점 데이터를 Amazon에서 선별한 데이터세트와 혼합할 수 있는 기능을 조직에 제공합니다. 이를 통해 모델은 추론과 같은 기초적인 기술을 잊을 위험을 최소화하면서 독점 데이터에서 학습을 극대화할 수 있습니다.

Nova Forge는 다음과 같은 주요 기능을 제공합니다.
+ 모델 개발의 모든 단계에서 체크포인트에 액세스하고 새로운 Nova 모델을 광범위하게 사용하기 전에 활용
+ 독점 데이터를 Amazon Nova에서 선별한 훈련 데이터와 혼합
+ 환경에서 보상 기능을 사용하여 강화 학습 수행
+ 시각적 워크플로 또는 명령줄 인터페이스를 통해 Nova를 사용해 빌드하도록 최적화된 푸시 버튼 레시피 사용
+ 책임 있는 AI 툴킷을 사용하여 훈련 프로세스 중에 모델을 Amazon Nova의 책임 있는 AI 지침에 맞추고 추론 중에 모델 응답을 조정하기 위한 런타임 제어를 구현합니다.

## 사전 조건
<a name="nova-forge-prereq"></a>

**Topics**
+ [

### Nova Forge 구독
](#nova-forge-prereq-access)
+ [

### 기타 사전 조건
](#nova-forge-prereq-other)

### Nova Forge 구독
<a name="nova-forge-prereq-access"></a>

Amazon Nova Forge 서비스에 대한 액세스를 요청하려면 콘솔 IAM 역할에 키가 forge-subscription이고 값이 true인 태그를 추가합니다. 이 태그를 역할에 추가한 후 SageMaker AI 콘솔 > 모델 훈련 및 사용자 지정으로 이동하여 Nova Forge를 클릭합니다. 이 페이지에서는 서비스, 요금 정보 및 기능에 대한 세부 정보를 확인할 수 있습니다. 이 페이지에서 구독을 요청한 다음 구독을 관리할 수 있습니다.

1. 역할에는 `ListAttachedRolePolicy` API를 직접 호출할 권한이 있어야 하며 응답에는 `AdministratorAccess` 또는 `AmazonSageMakerFullAccess` 정책이 포함되어야 합니다.

1. 로그인 역할에는 `ListRoleTags` API를 직접 호출할 권한이 있어야 하며 응답 태그에는 `tag.key=forge-subscription`이 포함되어야 합니다.

### 기타 사전 조건
<a name="nova-forge-prereq-other"></a>

또한 다음 사전 조건이 완료되었는지 확인합니다.

1. [일반적인 사전 조건](https://docs.aws.amazon.com//nova/latest/nova2-userguide/nova-model.html#nova-model-general-prerequisites)

1. 사용자를 위한 추가 단계: SageMaker HyperPod 클러스터에 제한된 인스턴스 그룹(RIG) 추가(완료하려면 [여기](https://docs.aws.amazon.com//sagemaker/latest/dg/nova-hp-cluster.html) 단계 수행)

# Nova Forge 액세스 및 설정
<a name="nova-forge-access"></a>

Nova Forge에 온보딩하려면 다음 2단계 프로세스를 따릅니다.
+ 1단계: Nova Forge 구독
+ 2단계: HyperPod 인프라 설정

## Nova Forge 문서 가져오기
<a name="nova-forge-get-docs"></a>

Nova Forge 문서를 가져오려면 아래 단계를 따릅니다.

```
mkdir NovaForgeHyperpodCLI
cd NovaForgeHyperpodCLI
aws s3 cp s3://nova-forge-c7363-206080352451-us-east-1/v1/ ./ --recursive
pip install -e .
```

## 1단계: Nova Forge 구독
<a name="nova-forge-step1"></a>

### 빠른 요약:
<a name="nova-forge-quick-summary"></a>

1. Amazon Web Services 계정에 대한 관리자 액세스 권한이 있는지 확인하세요.

1. SageMaker AI 콘솔로 이동하여 Nova Forge에 대한 액세스를 요청하세요.

1. 구독 요청이 승인되면 Nova 팀이 확인 이메일을 보낼 때까지 기다리세요.

1. 실행 역할에 `forge-subscription` 태그를 지정하세요. 이 태그는 Nova Forge 기능 및 체크포인트에 액세스하는 데 필요합니다. 실행 역할에 다음 태그를 추가하세요.
   + 키: `forge-subscription`
   + 값: `true`

### 상세 가이드
<a name="nova-forge-detailed-guide"></a>

Nova Forge를 구독하고 사용자 지정 서비스를 효과적으로 사용하려면 Amazon Web Services 고객이 Amazon Web Services 계정에 대한 관리자 액세스 권한을 보유하거나 관리자가 고객에게 관리자 액세스 권한을 부여해야 합니다. 이 문서에서는 다음을 수행하는 데 필요한 단계를 간략하게 설명합니다.
+ 관리자 액세스 보안
+ Nova Forge를 구독하기 위해 정책 설정
+ 사용자 지정 레시피에 액세스
+ 사용자 지정 구성
+ 워크플로 모니터링
+ 사용자 지정된 모델 체크포인트 평가

### 옵션 A
<a name="nova-forge-option-a"></a>

흐름 1: 계정 사용자는 계정 관리자에게 문의하여 다음을 요청해야 합니다.
+ IAM을 통해 계정에 `forge-subscription` 태그를 추가합니다(단계는 부록 A 참조).
+ IAM을 통해 `ListRoleTags` 및 `ListAttachedRolePolicies` 권한을 추가합니다(단계는 부록 B 참조).

![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/Onboarding-option-a.png)


### 옵션 B
<a name="nova-forge-option-b"></a>

흐름: 계정 사용자는 계정 관리자에게 문의하여 계정에 대한 관리자 액세스를 요청해야 합니다.
+ 관리자 액세스 권한이 부여되면 흐름 2의 단계를 따릅니다.

### 흐름 2. 관리자 액세스 권한이 있는 Amazon Web Services 계정
<a name="nova-forge-flow2"></a>
+ IAM을 통해 계정에 forge-subscription 태그를 추가합니다. 부록 A의 단계 참조

### 부록 A. Amazon Web Services 계정에 forge-subscription 정책 추가
<a name="nova-forge-appendix-a"></a>

1. Amazon Web Services IAM 대시보드로 이동하세요. 왼쪽에서 역할을 클릭하세요. 관리자를 검색하고 관리자 역할을 클릭하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/add-forge-sub-policy.png)

1. <AssumedRoleToUse>(예: libsAdminAccess)를 선택하세요. 태그 탭을 클릭하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/add-forge-sub-policy-2.png)

1. 관리 탭을 클릭하세요. 새 태그를 추가하세요. 키 아래에 'forge-subscription'을 입력하고 변경 사항 저장을 클릭하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/add-forge-sub-tag-policy.png)

1. 태그 섹션에 forge-subscription이 키로 표시되는지 확인하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/forge-tag-policy-verify.png)

### 부록 B. 관리자에 의해 비관리자 역할의 Amazon Web Services 계정에 ListRoleTags 및 ListAttachedPolicies 정책 추가
<a name="nova-forge-appendix-b"></a>

1. Amazon Web Services IAM 대시보드로 이동하세요. 왼쪽에서 역할을 클릭하세요. <AssumedRoleToUse>(예: ForgeAccessRole)를 검색하고 <AssumedRoleToUse>(예: ForgeAccessRole) 역할을 클릭하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/forge-list-tags-policy.png)

1. <AssumedRoleToUse>(예: ForgeAccessRole) 역할을 클릭하고 태그를 선택하세요. 'forge-subscription' 유형의 새 태그를 추가하세요.  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/forge-tag-appendix.png)

1. 권한에서 새 권한 추가: 권한 추가 → 인라인 정책 생성 → 아래에 나열된 다음 정책 추가

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "iam:ListRoleTags",
                   "iam:ListAttachedRolePolicies"
               ],
               "Resource": "*"
           }
       ]
   }
   ```  
![\[alt text not found\]](http://docs.aws.amazon.com/ko_kr/nova/latest/nova2-userguide/images/forge-add-tag-polices-example.png)

## 2단계. HyperPod 인프라 설정
<a name="nova-forge-step2"></a>

Forge 지원 기능으로 환경을 구성하기 위한 [워크숍 지침](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US)에 따라 필요한 인프라를 설정합니다.

## 콘텐츠 조정 설정
<a name="nova-forge-content-moderation"></a>

Nova Forge에 액세스해야 하는 경우 Amazon Nova Lite 1.0 및 Pro 1.0 모델에서 사용자 지정 가능한 콘텐츠 조정 설정(CCMS)을 사용할 수 있습니다. CCMS를 사용하면 특정 비즈니스 요구 사항에 맞게 콘텐츠 조정 제어를 조정하는 동시에 핵심적인 책임 있는 AI 보호를 유지 관리할 수 있습니다. 비즈니스 모델이 CCMS에 적합한지 확인하려면 AWS 계정 관리자에게 문의하세요.

사용자 지정 모델에서 CCMS를 구성하고 사용하는 방법에 대한 자세한 내용은 [책임 있는 AI 도구 키트 및 콘텐츠 조정 섹션](nova-responsible-ai-toolkit.md)을 참조하세요.

# 지속적인 사전 훈련 및 중간 훈련
<a name="nova-forge-cpt"></a>

**참고**  
구독하면 세부 설명서가 제공됩니다.

Nova Forge CPT는 중간 체크포인트에 대한 액세스 및 Nova의 사전 훈련 코퍼스와의 데이터 혼합을 포함하여 표준 CPT 이상의 고급 기능을 제공합니다. 이러한 기능을 사용하면 도메인 적응의 효율성을 높이고 모델의 일반 기능을 더 잘 유지할 수 있습니다.

## 중간 체크포인트란 무엇이며 왜 필요한가요?
<a name="nova-forge-cpt-checkpoints"></a>

중간 체크포인트는 모델이 최종 프로덕션 준비 상태에 도달하기 전에 사전 훈련의 여러 단계에 저장된 Amazon Nova 모델의 스냅샷입니다. 모델 개발 중에 Amazon Nova는 일정한 학습 속도의 초기 사전 훈련, 학습 속도 감소, 컨텍스트 확장 훈련, 마지막으로 지침 준수 조정 및 안전 훈련과 같은 여러 훈련 단계를 거칩니다. CPT의 경우 중간 체크포인트는 최종 프로덕션 체크포인트보다 선호되는 경우가 많습니다. 중간 체크포인트는 도메인 적응에 대한 가소성 및 수용성이 더 뛰어나기 때문입니다. 프로덕션 체크포인트는 광범위한 지침 준수 조정과 안전 훈련을 거칩니다. 이를 통해 일반적인 대화 사용에 맞게 모델을 최적화하지만 CPT 중에 새로운 도메인별 패턴을 학습하는 데 저항이 나타날 수도 있습니다. 반대로, 부분 및 완전히 사전 훈련된 텍스트 전용 체크포인트는 모델의 사전 훈련 특성을 유지합니다. 특정 동작에 지나치게 편향되지 않으므로 도메인 적응을 위한 보다 효율적인 시작점입니다. 대규모 CPT(10B 초과 토큰)를 수행할 때 중간 체크포인트부터 시작하면 일반적으로 수렴 속도가 빨라지고 훈련 안정성이 향상되며 도메인 지식 획득의 효율성이 개선됩니다. 그러나 소규모 CPT(10B 미만 토큰)의 경우 또는 지침 준수 기능을 유지해야 하는 경우 프로덕션 체크포인트가 더 적합할 수 있습니다. 모델의 대화형 기능을 유지 관리하면서 도메인 적응을 허용하기 때문입니다.

CPT에는 여러 중간 체크포인트가 필요합니다. 모델이 새로운 도메인 지식을 얼마나 효율적으로 흡수할 수 있는지에 영향을 미치는 여러 수준의 모델 가소성을 제공하기 때문입니다. 최종 프로덕션 체크포인트는 광범위한 지침 준수 조정과 안전 훈련을 거칩니다. 이를 통해 일반적인 대화 사용에 맞게 최적화하지만 새로운 도메인별 패턴을 학습하는 데 저항이 나타날 수도 있습니다. 즉, 사후 훈련을 통해 강화되었습니다. 반면 이전 체크포인트는 모델의 사전 훈련 특성을 유지하며 특정 동작에 크게 편향되지 않으므로 도메인 적응에 대한 가소성 및 수용성이 더 뛰어납니다.

최고의 훈련 효율성을 달성하기 위해 여러 중간 체크포인트가 제공됩니다.

## 어떤 체크포인트를 사용할 수 있나요?
<a name="nova-forge-cpt-available"></a>

**Nova 2.0**  
3개의 Amazon Nova Lite 2.0 체크포인트가 있습니다.
+ 사전 훈련 - [`nova-lite-2/pretraining-text-RD`]: 수조 단위의 토큰에서 모델을 훈련하는 Amazon Nova 사전 훈련의 일정한 학습 속도 및 감소 단계 이후 체크포인트입니다.
+ 중간 훈련 - [`nova-lite-2/pretraining-text-CE`]: 이 체크포인트에서는 사전 훈련보다 더 보수적인 학습 속도로 중간 볼륨의 비정형 데이터를 도입하여 도메인별 지식을 흡수하는 동시에 파괴적 망각을 방지할 수 있습니다.
+ 사후 훈련 - [`nova-lite-2/prod`]: 모든 관련 및 사후 훈련 단계를 거친 모델의 완전히 조정된 최종 체크포인트입니다.

다음 표에서는 사전 훈련 및 중간 훈련에 대한 여러 조건을 자세히 설명합니다.


| 데이터 형식 | 수행 | 체크포인트 사용 | 
| --- |--- |--- |
| 대규모 비정형 원시 도메인 데이터(문서, 로그, 문서, 코드 등) | 지속적인 사전 훈련 | 사전 훈련 | 
| 대규모 비정형 원시 도메인 데이터(문서, 로그, 문서, 코드 등) | 중간 훈련 | 사전 훈련 | 
| 더 작은 양의 비정형 원시 데이터. 정형 추론 트레이스/CoT 데이터 | 중간 훈련 | 중간 훈련 | 
| 비정형 데모(고품질 입력-출력 페어, 선별된 태스크 지침, 멀티턴 대화) | 전체 미세 조정 | 중간 훈련 | 
| 비정형 데모(고품질 입력-출력 페어, 선별된 태스크 지침, 멀티턴 대화) | 파라미터 효율적 미세 조정 | 사후 훈련 | 

## 사용할 체크포인트는 무엇인가요?
<a name="nova-forge-cpt-which"></a>

부분 사전 훈련된 텍스트 전용 체크포인트 및 완전히 사전 훈련된 텍스트 전용 체크포인트는 일반적으로 더 빠르게 수렴되며 도메인 적응을 위해 필요한 훈련 단계가 더 적습니다. 그러나 지침 조정이 없으며 유용한 태스크를 수행하고 지침을 따르려면 사후 훈련 단계를 거쳐야 합니다. GA 체크포인트를 조정하려면 적응하는 데 더 많은 단계가 필요하지만 소규모 실험을 위한 더 안전한 시작점을 제공하고 CPT 훈련 후에도 일부 사후 훈련 기능을 유지 관리할 수 있습니다.

일반적으로 큰 훈련 데이터세트(10B 초과 토큰)에서는 모델의 지식 베이스가 크게 수정되므로 보다 효율적이고 안정적인 훈련을 위해 부분 사전 훈련된 텍스트 전용 체크포인트 또는 완전히 사전 훈련된 텍스트 전용 체크포인트에서 시작합니다. 작은 데이터세트(10B 미만 토큰)에서는 GA 체크포인트를 사용하여 도메인에 적응하면서 지침 준수 기능을 유지합니다.

## Nova 2.0에 대해 데이터 혼합을 사용하려면 어떻게 해야 하나요?
<a name="nova-forge-cpt-mixing"></a>

새 도메인 데이터로 CPT를 수행하는 경우 새 데이터를 모델의 사전 훈련 단계에서 이전에 사용한 일부 데이터와 혼합하는 것이 매우 유용합니다. 이전 데이터를 새 도메인 데이터와 혼합하면 다음과 같은 두 가지 문제가 해결됩니다.
+ 망각 제어: 모델의 기존 기술과 지식을 유지하여 파괴적 망각을 방지합니다. 데이터 혼합이 없으면 좁은 도메인 데이터에서만 훈련해 모델이 일반 기능을 덮어씁니다. 예를 들어, 법률 문서에서만 훈련된 모델은 코딩 또는 수학 기능을 상실할 수 있습니다. 일반 도메인 데이터세트를 혼합하면 새 도메인을 획득하는 동안 이러한 일반 기술을 유지할 수 있습니다.
+ 최적화 안정성: 모델의 내부 표현을 고정하여 훈련 안정성을 유지 관리합니다. CPT 중에 모델의 학습된 기능이 수정되고 데이터 혼합은 이러한 조정을 원활하게 안내하는 다양한 소스의 그라데이션을 제공합니다. 이 기능 없이 좁은 분포에서 훈련하면 그라데이션이 불안정해질 수 있습니다. 그러면 모델의 표현이 너무 급격하게 전환되어 훈련 분산, 손실 급증 또는 기존 기능의 축소가 나타날 수 있습니다. 이는 안정성과 가소성의 상쇄 효과입니다. 모델은 새로운 도메인 지식을 학습할 수 있을 만큼 충분한 가소성을 갖추어야 하지만, 이미 알고 있는 지식을 파괴하지 않을 만큼 충분히 안정적이어야 합니다.

**Nova CPT 데이터 혼합 기능**  
Amazon Nova 사전 훈련 데이터 및 체크포인트에 대한 액세스는 Amazon Nova CPT 사용자 지정의 핵심 오퍼링 중 하나입니다. Amazon Nova CPT 사용자 지정을 사용하면 도메인 데이터를 Amazon Nova의 사전 훈련 코퍼스와 쉽게 혼합할 수 있습니다. 또한 특정 Amazon Nova 데이터 범주(예: 코드, 수학, 추론 등)의 샘플링 비율을 변경하고 도메인 데이터를 보완하도록 해당 비율을 제어할 수 있습니다. 이를 통해 모델을 특정 도메인에 맞게 적응하면서 사용 사례에 맞는 기능을 강화할 수 있습니다.

**최적의 혼합 비율 찾기**  
Amazon Nova 데이터 및 도메인 데이터의 최적 비율은 데이터세트의 도메인, 복잡성, 크기, 품질 및 일반적인 기능 유지 관리의 중요성에 따라 달라집니다. 이 비율은 실험을 통해 찾아야 합니다. 혼합할 Amazon Nova 데이터의 양을 결정하는 실험 프레임워크는 다음과 같습니다.

도메인 데이터의 대표적인 하위 세트(예: 5B 토큰)를 선택하고 모든 실험 실행에서 이를 일정하게 유지합니다.

다음과 같이 혼합된 Amazon Nova 데이터의 양만 달라지는 소규모 CPT 실험을 실행합니다.
+ 혼합 없음: 100% 도메인 → 5B 도메인만(총 5B)
+ 가벼운 혼합: 90% 도메인 → 5B 도메인 \$1 \$10.56B Amazon Nova(총 \$15.56B)
+ 중간 혼합: 70% 도메인 → 5B 도메인 \$1 \$12.14B Amazon Nova(총 \$17.14B)
+ 과중한 혼합: 50% 도메인 → 5B 도메인 \$1 5B Amazon Nova(총 10B)

도메인 및 일반 도메인 벤치마크에서 각 체크포인트를 평가합니다. 또한 시작 체크포인트(훈련 전 Amazon Nova 체크포인트)를 평가합니다.
+ 고객 도메인 성능이 여러 실행에서 대략적으로 일정하게 유지되나요? 각 실행에서 동일한 수의 도메인 토큰이 보이므로 일반적으로 그렇습니다. 많은 혼합에서 도메인 성능이 향상되면 Amazon Nova 데이터는 유용한 정규화를 제공합니다.
+ 혼합이 증가하면 일반 벤치마크 점수가 개선되나요?
  + Amazon Nova 데이터가 더 추가되면 일반적인 기능은 단조롭게 개선되는 것이 예상되는 동작입니다.
  + MMLU(일반 지식), HumanEval(코딩), GSM8K(수학) 또는 특정 관심 벤치마크 등 여러 일반 벤치마크를 측정합니다.
+ 사용 사례에 적합한 일반 기능을 제공하면서 도메인 성능을 유지 관리하는 혼합 비율을 선택합니다. 많은 데이터 혼합을 사용하는 추가 훈련 비용을 고려합니다.

최적의 혼합 비율이 식별되면 선택한 혼합 비율로 전체 도메인 데이터세트를 사용하여 전체 규모 CPT를 실행합니다.

## 데이터 혼합 범주 분석
<a name="nova-forge-cpt-data-mixing-categories"></a>

아래에서는 데이터 혼합에서 사용 가능한 각 범주를 분석합니다. 이를 기반으로 전체 데이터 혼합에서 가장 적합한 데이터 범주에 대한 최선의 결정을 내릴 수 있습니다.

### 데이터 혼합을 활성화하는 방법
<a name="nova-forge-cpt-enable-mixing"></a>

여러 데이터세트 범주에서 적절한 백분율 분포를 사용하여 레시피에 `data_mixing` 섹션을 추가합니다. `nova_data` 백분율의 합계는 100이어야 합니다.

#### 데이터 혼합을 사용하는 Nova 2.0 구성
<a name="nova-forge-cpt-nova2-config"></a>

```
# Note:
# This recipe can run on p5.48xlarge

# Run config
display_name: "Nova Lite Pretrain on P5 GPU"
versions: ["2.0"]
instance_types: ["ml.p5.48xlarge"]

run:
  name: "my-cpt-run"     # A descriptive name for your training job
  model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change
  model_name_or_path: "nova-lite-2/prod" # Base model path, do not change
  replicas: 8       # Number of compute instances for training, allowed values are 4, 8, 16, 32
  data_s3_path: ""       # Customer data paths
  validation_data_s3_path: ""        # Customer validation data paths
  output_s3_path: ""   # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training jobs

## Training specific configs
training_config:
  task_type: cpt
  max_length: 8192              # Maximum context window size (tokens)
  global_batch_size: 64        # Global batch size, allowed values are 32, 64, 128, 256.

  trainer:
    max_steps: 10               # The number of training steps to run total
    val_check_interval: 10      # The number of steps between running validation
    limit_val_batches: 2        # Batches of the validation set to use each trigger

  model:
    hidden_dropout: 0.0           # Dropout for hidden states, must be between 0.0 and 1.0
    attention_dropout: 0.0        # Dropout for attention weights, must be between 0.0 and 1.0

  optim:
    optimizer: adam
    lr: 1e-5                      # Learning rate
    name: distributed_fused_adam  # Optimizer algorithm, do not change
    adam_w_mode: true             # Enable AdamW mode
    eps: 1e-06                    # Epsilon for numerical stability
    weight_decay: 0.0             # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9               # Beta1 for Adam optimizer
    adam_beta2: 0.95              # Beta2 for Adam optimizer
    sched:
      warmup_steps: 10            # Learning rate warmup steps
      constant_steps: 0           # Steps at constant learning rate
      min_lr: 1e-6                # Minimum learning rate, must be lower than lr

data_mixing:
  dataset_catalog: cpt_text_lite
  sources:
    nova_data:   # percent inputs for Nova data must sum to 100%; use 0% if you want to exclude a data grouping
      agents: 20
      business-and-finance: 4
      scientific: 10
      code: 5
      factual-and-news: 5
      longform-text: 6
      health-and-medicine: 1
      humanities-and-education: 1
      legal: 1
      math: 9
      additional-languages: 15
      social-and-personal-interest: 11
      entertainment: 0.5
      reasoning: 10
      other: 0.5
      tables: 1
    customer_data: # percent input of customer data. 100 = use only customer data, 0 = use only the nova_data mix above
      percent: 25
```

**이러한 범주의 의미**

**참고**: Nova 2.0에는 Nova 1.0에서 사용할 수 없는 추가적인 추론별 범주(예: `reasoning-code`, `reasoning-math`, `reasoning-instruction-following`)가 포함되어 있습니다.

범주 및 정보 레이블 요약:


| 범주 이름 | 세부 정보 | 
| --- | --- | 
| agents | AI 시스템의 자율 의사 결정, 태스크 완료 및 목표 지향적 동작에 초점을 맞춘 훈련 데이터 | 
| baseline | 일반적인 이해, 기본 커뮤니케이션 및 핵심 언어 기능에 초점을 맞춘 기초적인 언어 데이터 | 
| chat | 자연스러운 대화 흐름, 컨텍스트 유지 관리 및 적절한 사회적 상호 작용을 보여주는 대화식 교환 | 
| code | 다양한 프로그래밍 언어 및 플랫폼의 프로그래밍 소스 코드, 설명서 및 기술 토론 | 
| factuality | 정확성, 소스 검증 및 사실 평가에 초점을 둔 참조 자료 및 확인된 정보 | 
| identity | 일관된 캐릭터 특성, 가치 및 상호 작용 스타일에 초점을 둔 성격 프레임워크 및 행동 패턴 | 
| long-context | 여러 긴 교환에서 일관성과 관련성을 유지 관리하는 데 초점을 둔 확장된 텍스트 및 복잡한 서술 | 
| math | 교과서, 문제, 솔루션, 수학적 토론을 포함한 수학 콘텐츠 | 
| rai | 윤리적 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례 및 시나리오 | 
| instruction-following | 다양한 수준의 사용자 프롬프트 및 지침에 기반한 정확한 태스크 실행 예제 | 
| stem | 문제 해결 및 이론적 개념을 포함하여 과학, 기술, 엔지니어링 및 수학을 다루는 기술 콘텐츠 | 
| planning | 전략적 사고, 단계별 태스크 분석 및 효율적인 리소스 할당을 보여주는 시퀀스 | 
| reasoning-chat | 논리적 토론 및 구조화된 대화 흐름에 초점을 둔 분석 대화 시나리오 | 
| reasoning-code | 체계적인 솔루션 개발에 초점을 둔 프로그래밍 문제 및 알고리즘 문제 | 
| reasoning-factuality | 중요한 평가 및 확인 프로세스에 초점을 둔 정보 평가 시나리오 | 
| reasoning-instruction-following | 체계적인 해석 및 실행에 초점을 둔 복잡한 태스크 분석 | 
| reasoning-math | 논리적 진행 및 솔루션 전략에 초점을 둔 수학적 문제 해결 시나리오 | 
| reasoning-planning | 목표 달성에 대한 체계적인 접근 방식에 초점을 둔 전략적 의사 결정 시나리오 | 
| reasoning-rag | 컨텍스트 이해 및 관련 애플리케이션에 초점을 둔 정보 검색 및 가상 시나리오 | 
| reasoning-rai | AI 안전 및 공정성에 대한 체계적인 평가에 초점을 둔 윤리적 의사 결정 시나리오 | 
| reasoning-stem | 체계적인 분석 및 솔루션 개발에 초점을 둔 과학적 문제 해결 시나리오 | 
| rag | 검색된 외부 지식을 생성된 응답과 효과적으로 결합하여 상황에 맞는 정확한 정보를 제공하는 예제 | 
| translation | 컨텍스트, 어조 및 문화적 뉘앙스를 유지하면서 정확한 번역을 보여주는 다국어 콘텐츠 페어 | 

#### 파라미터 가이드
<a name="nova-forge-cpt-param-guide"></a>
+ **dataset\$1catalog:** 멀티모달 훈련을 활성화할 때까지 현재 유일한 값은 cpt\$1text\$1lite입니다.
+ **nova\$1data:** 혼합 시 Nova 데이터의 개별 범주 백분율. 최대 합계는 1.0입니다.
+ **customer\$1data**: Nova 데이터에 혼합된 고객 데이터의 백분율.

훈련에 사용된 총 토큰 수는 `max_length` \$1 `global_batch_size` \$1 `max_steps` 공식에서 계산할 수 있습니다.

**제한 사항**  
현재 CPT는 텍스트 데이터만 지원하며 고객 멀티모달 데이터세트를 지원하지 않습니다.

# 지도 미세 조정
<a name="nova-forge-sft"></a>

## 소개
<a name="introduction"></a>

지도 미세 조정은 관심 태스크에 입력-출력 페어가 있는 데이터세트를 사용합니다. 즉, 올바른 응답이나 원하는 응답과 함께 프롬프트의 예제(질문, 지침 등)를 제공하고 이를 기반으로 모델을 계속 훈련합니다. 모델의 가중치는 지도 손실, 일반적으로 예측과 대상 응답 토큰 간 교차 엔트로피를 최소화하도록 조정됩니다.

## SFT는 언제 사용하나요?
<a name="when-to-use-sft"></a>

SFT는 원하는 출력이 명확한 잘 정의된 태스크가 있는 경우에 가장 적합합니다. 'X 입력 제공, 올바른 출력/원하는 출력은 Y'라고 명시적으로 말할 수 있고 이러한 X-Y 매핑의 예제를 수집할 수 있는 경우 지도 미세 조정이 가장 적합합니다. SFT가 탁월한 일부 시나리오는 다음과 같습니다.
+ **구조화되거나 복잡한 분류 태스크**: 예를 들어 내부 문서 또는 계약을 여러 사용자 지정 범주로 분류. SFT를 사용하면 모델은 프롬프트만 사용할 때보다 이러한 특정 범주를 훨씬 더 잘 학습할 수 있습니다.
+ **알려진 답변이 있는 질문 답변 또는 변환 태스크**: 예를 들어 회사의 지식 베이스를 통해 질문에 답변하거나 각 입력에 올바른 응답이 있는 경우 여러 형식 사이에서 데이터를 변환하도록 모델 미세 조정.
+ **형식 지정 및 스타일 일관성**: 모델이 항상 특정 형식 또는 어조로 응답해야 하는 경우 올바른 형식/어조의 예제를 미세 조정할 수 있습니다. 예를 들어 특정 브랜드 음성 또는 스타일을 보여주는 프롬프트-응답 페어를 훈련하는 경우 출력에서 해당 스타일로 모델을 학습시킬 수 있습니다. 지침 준수 동작은 종종 처음에 SFT를 통해 선별된 올바른 어시스턴트 동작 예제를 통해 학습됩니다.

SFT는 올바른 동작을 지정할 수 있는 경우 LLM에 새로운 기술이나 동작을 가르치는 가장 직접적인 방법입니다. 그리고 모델의 기존 언어 이해를 활용하고 태스크에 집중합니다. 동작이 아닌 지식에서 격차가 있는 경우 SFT를 사용하지 마세요. 모델은 새로운 사실, 전문 용어 또는 최근 이벤트를 학습하지는 않습니다. 이 경우 추론 시 외부 지식을 제공하기 위해 대규모 도메인 내 코포라 또는 검색 증강 생성에 대한 지속적인 사전 훈련이 선호됩니다. 품질을 측정할 수 있지만 하나의 올바른 답변에 레이블을 지정할 수 없는 경우 SFT보다 검증 가능한 보상 또는 평가형 LLM을 사용한 강화 미세 조정이 더 선호될 수 있습니다.

조정 없이 Nova 모델의 태스크 복잡성과 성능에 따라 원시 볼륨보다 더 중요한 데이터 품질, 일관성 및 다양성을 고려하여 태스크당 수천에서 수만 개의 데모를 계획합니다.

## 언제 파라미터 효율적 미세 조정을 사용하고, 언제 전체 순위 SFT를 사용해야 하나요?
<a name="parameter-efficient-vs-full-rank"></a>

Nova 사용자 지정 레시피를 사용하면 파라미터 효율적 미세 조정, 특히 LoRA 또는 전체 순위 SFT를 수행할 수 있습니다. 간단하고 비용 효율적인 모델 업데이트를 원하거나 데이터가 거의 없는 경우 대부분의 백본을 그대로 유지하면서 소형 어댑터를 훈련할 수 있도록 파라미터 효율적 미세 조정 방법을 선호합니다(전체 순위 SFT는 모든 모델 파라미터를 업데이트함).

## SFT에 대한 데이터 혼합
<a name="data-mixing"></a>

데이터 혼합을 사용하면 사용자 지정 훈련 데이터세트를 Nova의 독점 훈련 데이터와 결합할 수 있습니다. 이 기능은 Nova 1.0 및 Nova 2.0 모델 모두에서 사용할 수 있습니다.

**Nova 독점 데이터 유형**: Nova는 텍스트 및 멀티모달 SFT 데이터 유형을 모두 지원합니다. 각각 해당 범주와 관련된 태스크 혼합을 포함하는 여러 데이터 범주로 구성됩니다.

**Nova 독점 데이터 범주**: 이 텍스트 데이터세트에는 자율 의사 결정, 태스크 완료, 목표 중심 데이터세트(에이전트), 추론 및 비추론과 관련된 정확한 태스크 실행 데이터세트(추론 지침 준수, 지침 준수), 전략적 사고 및 단계별 태스크 분류를 보여주는 시퀀스(계획), 책임 있는 AI(rai), 긴 컨텍스트, 사실성, 수학, 어간 등을 비롯한 여러 범주가 포함됩니다. 마찬가지로 멀티모달 데이터세트에는 비디오, 스크린샷, 차트 등이 포함됩니다.

데이터 혼합 기능을 사용하면 자체 미세 조정 훈련 샘플을 Nova를 미세 조정하는 데 사용되는 Nova 데이터세트의 샘플과 혼합할 수 있습니다. 이를 통해 사용자 지정 훈련의 과적합과 Nova 기능의 '파괴적 망각'을 방지하거나 사전 훈련된 새 체크포인트에서 훈련할 때 기능을 빌드하는 데 도움이 될 수 있습니다.

Nova 데이터를 혼합하려면 training\$1config 섹션 아래에서 레시피 YAML 파일에 data\$1mixing 블록을 추가하기만 하면 됩니다. 텍스트 및 멀티모달 데이터 혼합 블록에서 콘텐츠는 서로 다릅니다. 해당 레시피를 참조하세요.

### 지원되는 모델
<a name="supported-models"></a>
+ Nova 2.0 Lite

### 지원되는 모달리티
<a name="supported-modality"></a>
+ 텍스트
+ 멀티모달

## YAML 구성 예제
<a name="yaml-configuration-examples"></a>

### Nova 2.0 구성 예제
<a name="nova-2-configuration"></a>

```
run:
  name: my-lora-sft-run
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  data_s3_path: s3://my-bucket-name/train.jsonl
  replicas: 4
  output_s3_path: s3://my-bucket-name/outputs/
  mlflow_tracking_uri: ""
  mlflow_experiment_name: "my-lora-sft-experiment"
  mlflow_run_name: "my-lora-sft-run"
  
training_config:
  max_steps: 100
  save_steps: 10
  save_top_k: 5
  max_length: 32768
  global_batch_size: 32
  reasoning_enabled: true
  lr_scheduler:
    warmup_steps: 15
    min_lr: 1e-6
  optim_config:
    lr: 1e-5
    weight_decay: 0.0
    adam_beta1: 0.9
    adam_beta2: 0.95
  peft:
    peft_scheme: "lora"
    lora_tuning:
      alpha: 64
      lora_plus_lr_ratio: 64.0
```

### Nova 2.0 텍스트 데이터 혼합
<a name="nova-2-text-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_1p5_text_chat
  sources:
    customer_data:
      percent: 50
    nova_data:
      agents: 1
      baseline: 10
      chat: 0.5
      code: 10
      factuality: 0.1
      identity: 1
      long-context: 1
      math: 2
      rai: 1
      instruction-following: 13
      stem: 0.5
      planning: 10
      reasoning-chat: 0.5
      reasoning-code: 0.5
      reasoning-factuality: 0.5
      reasoning-instruction-following: 45
      reasoning-math: 0.5
      reasoning-planning: 0.5
      reasoning-rag: 0.4
      reasoning-rai: 0.5
      reasoning-stem: 0.4
      rag: 1
      translation: 0.1
```

### Nova 2.0 멀티모달 데이터 혼합
<a name="nova-2-multimodal-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_1p5_mm_chat
  sources:
    customer_data:
      percent: 50
    nova_data:
      charts: 1
      chat: 38
      code: 20
      docs: 3
      general: 2
      grounding: 1
      rag: 4
      screenshot: 4
      text: 8
      translation: 4
      video: 15
```

## 모델 체크포인트
<a name="model-checkpoints"></a>

### Nova 2.0 체크포인트
<a name="nova-2-checkpoints"></a>
+ **사전 훈련**[`nova-lite-2/pretraining-text-RD`]: 수조 단위의 토큰에서 모델을 훈련하는 일정한 학습 속도 및 감소 단계 이후 체크포인트. [2단계 결과]
+ **중간 훈련**[`nova-lite-2/pretraining-text-CE`]: 중간 볼륨의 비정형 데이터를 사용하는 고객이 사전 훈련보다 더 보수적인 학습 속도로 데이터를 도입하여 도메인별 지식을 흡수하는 동시에 파괴적 망각을 방지할 수 있습니다. [3단계 결과]
+ **최종**[`nova-lite-2/prod`]: 모든 사전 훈련 및 사후 훈련 단계를 거친 완전히 조정된 최종 체크포인트. [4단계 결과]

**훈련 단계:**
+ 1단계: PT Ckpt, 일정한 학습 속도의 초기 사전 훈련
+ 2단계: PT Ckpt, 학습 속도 감소
+ 3단계: PT Ckpt, 컨텍스트 확장 훈련
+ 4단계: 지침 준수 조정 및 안전 교육

## 훈련 접근 방식
<a name="training-approaches"></a>


**훈련 접근 방식 선택 가이드**  

| 데이터 형식 | 데이터 볼륨 | 수행 | 체크포인트 사용 | 
| --- | --- | --- | --- | 
| 대규모 비정형 원시 도메인 데이터(문서, 로그, 문서, 코드 등) | 1T 이상의 토큰 | 지속적인 사전 훈련 | 일정한 학습 속도CLR) 종료 | 
| 대규모 비정형 원시 도메인 데이터 | 100B 이상의 토큰 | 중간 훈련 | CLR 종료 | 
| 더 작은 양의 비정형 원시 데이터, 정형 추론 트레이스/CoT 데이터 | 1B 이상의 토큰 | 중간 훈련 | Nova 기본 모델 | 
| 비정형 데모(고품질 입력-출력 페어, 선별된 태스크 지침, 멀티턴 대화) | 1K 이상의 예제 | 지도 미세 조정(SFT) | Nova 기본 모델 | 

## 시작하기 전 사전 조건
<a name="prerequisites"></a>
+ 이 경우 활성 용량이 있는 제한된 인스턴스 그룹(RIG)으로 SMHP 클러스터를 이미 설정했다고 가정합니다. 그렇지 않으면 여기를 참조하여 SMHP 클러스터 및 RIG 설정을 완료하세요. [[문서 링크](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-forge.html), [워크숍 링크](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US)]
+ 이 레시피를 실행하려면 **p5.48xlarge** EC2 인스턴스가 필요합니다. 이 레시피를 효율적으로 실행하는 데 필요한 최소 인스턴스 수는 다음과 같습니다.
  + **Nova Lite 2.0 - 4 p5.48xlarge**
+ [여기](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US)에 제공된 지침을 사용하여 Forge 특정 SageMaker HyperPod CLI 설치
+ `hyperpod get-clusters`를 사용하여 클러스터에 연결할 수 있는지 확인
  + 이 명령은 계정의 모든 SMHP 클러스터를 나열함
+ SMHP 클러스터의 실행 역할이 액세스할 수 있는 S3 버킷에서 훈련 및 검증 데이터(선택 사항)를 사용할 수 있는지 확인합니다. 데이터 준비는 다음 섹션을 참조하세요.
+ 설정을 완료합니다. 설정을 완료하지 않은 경우 아래 [가이드](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)를 따르세요.
+ **확인**: 설정을 완료한 후 아래 명령을 성공적으로 실행할 수 있는지 확인

  ```
  aws sagemaker describe-cluster --cluster-name <cluster-name> --region <region>
  
  hyperpod connect-cluster --cluster-name cluster-name
  ```

## 성공적인 SFT를 달성하기 위한 체계적인 접근 방식
<a name="systematic-approach"></a>
+ **데이터 준비**: 정해진 지침에 따라 데이터세트를 생성, 정리 또는 필요한 구조로 다시 포맷합니다. 입력, 출력 및 보조 정보(예: 추론 트레이스 또는 메타데이터)가 올바르게 조정되고 형식이 지정되었는지 확인합니다.
+ **훈련 구성**: 모델 훈련 방법을 정의합니다. Amazon SageMaker HyperPod를 사용하는 경우 이 구성은 다음을 포함하는 YAML 레시피 파일로 작성됩니다.
  + 데이터 소스 경로(훈련 및 검증 데이터세트)
  + 주요 하이퍼파라미터(훈련 단계 수, 학습 속도, 배치 크기)
  + 선택적 구성 요소(분산 훈련 파라미터 등)
  + 데이터 혼합 설정(고객 및 Nova 데이터 범주의 비율 정의)
+ **SFT 하이퍼파라미터 최적화**: 권장하는 SFT 레시피 파라미터 값은 훌륭한 출발점이며 강력한 선택지입니다. 사용 사례에 맞게 더 최적화하려면 다양한 파라미터 조합으로 여러 SFT 실행을 수행하고 가장 적합한 항목을 선택합니다. 선택한 하이퍼파라미터 최적화 방법에 따라 파라미터 조합을 선택할 수 있습니다. 단순한 접근 방식은 다른 파라미터에 대한 다른 기본값을 유지하면서 한 파라미터의 값(기본값\$10.5, 기본값, 기본값\$12)을 변경한 다음, 최적화하려는 각 파라미터에 대해 이 작업을 다시 수행하고, 필요한 경우 이를 반복하는 것입니다. LoRA에 대해 가장 관련성이 높은 파라미터는 학습 속도, 알파(스케일링 파라미터), 훈련할 에포크 수 및 워밍업 단계입니다. 전체 순위의 경우 주로 학습 속도, 에포크 수 및 워밍업 단계입니다.

## 실험 시퀀싱 및 데이터 혼합
<a name="experiment-sequencing"></a>
+ 태스크 세트에 대한 SFT 데이터(train/dev/test)만 있고 이러한 태스크에서 테스트 성능에만 주의를 기울이는 경우
  + [최종] Nova 체크포인트에서 혼합하지 않고 SFT를 수행합니다. 기본 SFT 하이퍼파라미터를 사용하고 선택적으로 사용 사례에 맞게 최적화합니다. 검증 지표를 모니터링하고 또는 더 큰 데이터세트에 대한 중간 체크포인트를 평가합니다.
+ 태스크 세트에 대한 SFT 데이터(train/dev/test)만 있고 이러한 태스크에서 테스트 성능 및 관심 도메인의 일반 벤치마크에 주의를 기울이는 경우
  + 먼저 사전 훈련 체크포인트(사전 훈련 또는 중간 훈련 체크포인트에 해당하며, 최종 체크포인트가 아님)에서 Nova 데이터 혼합으로 SFT를 수행합니다. 중간 체크포인트를 사용하면 모델이 강력한 일반 기능을 유지 관리하면서 사용자 지정 데이터를 Nova의 독점 데이터와 더 잘 통합할 수 있습니다.
  + 혼합에서 Nova 데이터의 양(예: 10%, 25%, 50%, 75%)을 달리하고 사용 사례를 보완하는 Nova 데이터 범주(예: 일반 지침 준수 기능에 관심이 있는 경우 지침 준수 범주 선택)를 선택하여 더 짧은 SFT 훈련 실행을 수행합니다. 검증 지표를 모니터링하고 혼합이 일반 벤치마크의 성능에 도움이 되는지 평가합니다. 태스크 성능 및 일반 성능에서 최상의 조합을 구성하는 훈련 혼합 및 체크포인트를 선택합니다. 사용 사례에 따라 강화 미세 조정(RFT)을 사용하여 태스크 및 일반 성능을 더욱 개선할 수 있습니다.

## SFT에 대한 데이터세트 준비
<a name="dataset-preparation"></a>

**Nova 2.0**: Converse API 형식을 사용합니다([https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html)). Nova 2.0 데이터 형식에는 추가 추론 필드가 포함될 수 있습니다([https://docs.aws.amazon.com/bedrock/latest/APIReference/API\$1runtime\$1ReasoningContentBlock.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningContentBlock.html)).

추론 콘텐츠는 최종 답변을 생성하기 전에 모델의 중간 사고 단계를 캡처합니다. `assistant` 턴에서 `reasoningContent` 필드를 사용하여 추론 트레이스를 포함합니다. 추론 콘텐츠에 일반 텍스트를 사용하고, 태스크에 특별히 필요하지 않은 한 `<thinking>` 및 `</thinking>`과 같은 마크업 태그를 피하며, 추론 콘텐츠가 명확하고 문제 해결 프로세스와 관련이 있는지 확인합니다.

## 평가 지표
<a name="evaluation"></a>

### 사전 조건
<a name="evaluation-prerequisites"></a>
+ 훈련 작업 `manifest.json` 파일의 체크포인트 S3 URI(훈련된 모델의 경우)
+ 올바른 형식으로 S3에 업로드된 평가 데이터세트
+ 평가 결과에 대한 출력 S3 경로

**즉시 사용 가능한 벤치마크**: 즉시 사용 가능한 벤치마크를 통해 일반 태스크의 성능을 검증합니다. 자세한 내용은 [https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html)을 확인하세요.

### 자체 데이터 사용
<a name="bring-your-own-data"></a>

또한 아래 형식으로 지정한 다음 아래에 언급된 컨테이너를 사용하여 필요한 경우 보정에 대한 로그 확률과 함께 추론 결과를 가져와 사용자 지정 데이터를 제공할 수 있습니다.

다음 구조를 사용하여 태스크당 jsonl을 생성합니다.

```
{
  "metadata": "{key:4, category:'apple'}",
  "system": "arithmetic-patterns, please answer the following with no other words: ",
  "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?",
  "response": "32"
}
```

평가 작업의 추론 단계 중에 생성된 출력의 구조는 다음과 같습니다.

```
{
  "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]",
  "inference": "['32']",
  "gold": "32",
  "metadata": "{key:4, category:'apple'}"
}
```

**필드 설명:**
+ `prompt`: 모델로 전송된 형식 지정된 입력
+ `inference`: 모델의 생성된 응답
+ `gold`: 입력 데이터세트의 예상되는 정답, 입력의 응답 필드
+ `metadata`: 입력에서 전달되는 선택적 메타데이터

### 평가 구성 준비
<a name="evaluation-config"></a>

평가 작업을 시작하는 명령. 레시피에서 항목을 수정하려면 `"--override-parameters"`를 사용합니다.

```
hyperpod start-job -n kubeflow \
  --recipe evaluation/nova/nova_micro_p5_48xl_bring_your_own_dataset_eval \
  --override-parameters '{
    "instance_type": "p5.48xlarge",
    "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest",
    "recipes.run.name": "<your-eval-job-name>",
    "recipes.run.model_name_or_path": "<checkpoint-s3-uri>",
    "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/",
    "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl"
  }'
```

## 모범 사례
<a name="best-practices"></a>
+ **볼륨보다 데이터 품질 우선**: 고품질의 다양한 대표 훈련 데이터는 대량의 저품질 데이터보다 더 유용합니다.
+ **추론 지침 준수 범주 포함**: 데이터 혼합을 사용하는 경우 '추론 지침 준수' 범주를 포함하여 태스크 전반에서 강력한 일반 성능을 유지 관리합니다.
+ **기본 학습 속도 사용**: 기본 학습 속도(LoRA의 경우 1e-5, 전체 순위 SFT의 경우 5e-6)로 시작하고 검증 지표에 따라 필요한 경우에만 조정합니다.
+ **Nova 데이터 혼합 균형 조정**: 최적의 지연 시간과 성능 균형을 위해 최대 50% Nova 데이터를 혼합합니다. 비율이 높을수록 일반적인 기능이 향상될 수 있지만 훈련 시간이 늘어날 수 있습니다.
+ **검증 지표 모니터링**: 훈련 중에 중간 체크포인트를 정기적으로 평가하여 과적합 또는 성능 저하를 조기에 감지합니다.
+ **대표 데이터세트에서 테스트**: 평가 데이터세트가 의미 있는 성능 평가를 위한 프로덕션 사용 사례를 정확하게 대표하도록 보장합니다.

## 훈련 작업 구성 준비
<a name="prepare-training-job-config"></a>

### 하이퍼 파라미터
<a name="hyper-parameters"></a>

데이터 혼합 이외의 전체 하이퍼파라미터 세트:

```
## Run config
run:
  name: my-lora-sft-run
  model_type: amazon.nova-2-lite-v1:0:256k
  model_name_or_path: nova-lite-2/prod
  data_s3_path: s3://my-bucket-name/train.jsonl  # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job
  replicas: 4                      # Number of compute instances for training, allowed values are 4, 8, 16, 32
  output_s3_path: s3://my-bucket-name/outputs/               # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job
  
  ## MLFlow configs
  mlflow_tracking_uri: "" # Required for MLFlow
  mlflow_experiment_name: "my-lora-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-lora-sft-run" # Optional for MLFlow. Note: leave this field non-empty
  
training_config:
  max_steps: 100                   # Maximum training steps. Minimal is 4.
  save_steps: 10 # This parameter suggests after how many training steps the checkpoints will be saved. Should be less than or equal to max_steps(please override this value with a numerical value equal or less than max_steps value; min: 4)
  save_top_k: 5                    # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1.
  max_length: 32768                # Sequence length (options: 8192, 16384, 32768 [default], 65536)
  global_batch_size: 32            # Golbal batch size (options: 32, 64, 128)
  reasoning_enabled: true          # If data has reasoningContent, set to true; otherwise False

  lr_scheduler:
    warmup_steps: 15               # Learning rate warmup steps. Recommend 15% of max_steps
    min_lr: 1e-6                   # Minimum learning rate, must be between 0.0 and 1.0

  optim_config:                    # Optimizer settings
    lr: 1e-5                       # Learning rate, must be between 0.0 and 1.0
    weight_decay: 0.0              # L2 regularization strength, must be between 0.0 and 1.0
    adam_beta1: 0.9                # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0
    adam_beta2: 0.95               # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0

  peft:                            # Parameter-efficient fine-tuning (LoRA)
    peft_scheme: "lora"            # Enable LoRA for PEFT
    lora_tuning:
      alpha: 64                    # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192),
      lora_plus_lr_ratio: 64.0     # LoRA+ learning rate scaling factor (0.0–100.0)
```

LoRA에 대해 가장 관련성이 높은 파라미터는 학습 속도, 알파(스케일링 파라미터), 훈련할 에포크 수 및 워밍업 단계입니다. 전체 순위의 경우 주로 학습 속도, 에포크 수 및 워밍업 단계입니다. 레시피는 권장되는 기본값으로 미리 채워집니다.

## 데이터 혼합 블록 설정
<a name="set-up-data-mixing-block"></a>

여러 데이터세트 범주에서 적절한 백분율 분포를 사용하여 레시피에 data\$1mixing 섹션을 추가합니다.

아래에서는 사용 가능한 각 Nova 데이터 범주를 설명합니다.

### 데이터 혼합을 사용하는 Nova 2.0 구성
<a name="nova-2-config-data-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_1p5_text_chat       # Nova text dataset catalog
  sources:
    customer_data:
      percent: 50                 # Percent of overall mix to draw from customer data
    nova_data:                    # The remainder will be drawn from Nova data. The categories below must add to 100
      agents: 1                   # autonomous decision-making, task completion, goal-oriented behavior in AI systems
      baseline: 10                 # [New in Nova 1.5]
      chat: 0.5                    # Conversational exchanges demonstrating natural dialogue flow
      code: 10                     # Programming examples and solutions spanning multiple languages
      factuality: 0.1               # [New in Nova 1.5]
      identity: 1                 # [New in Nova 1.5]
      long-context: 1             # [New in Nova 1.5]
      math: 2                     # [New in Nova 1.5]
      rai: 1                      # ethical AI principles, safety considerations, and responsible technology deployment
      instruction-following: 13   # precise task execution based on varying levels of user prompts and directives
      stem: 0.5                     # Technical content covering science, technology, engineering, and mathematics
      planning: 10                 # Sequences demonstrating strategic thinking and step-by-step task breakdown
      reasoning-chat: 0.5
      reasoning-code: 0.5
      reasoning-factuality: 0.5
      reasoning-instruction-following: 45
      reasoning-math: 0.5
      reasoning-planning: 0.5
      reasoning-rag: 0.4
      reasoning-rai: 0.5
      reasoning-stem: 0.4
      rag: 1                      # combining retrieved external knowledge with generated responses
      translation: 0.1
```

이러한 범주는 무엇을 의미하나요?


**Nova 2.0 텍스트 데이터 범주**  

| 범주 이름 | 세부 정보 | 
| --- | --- | 
| 에이전트 | AI 시스템의 자율 의사 결정, 태스크 완료 및 목표 지향적 동작에 초점을 맞춘 훈련 데이터 | 
| 기준 | 일반적인 이해, 기본 커뮤니케이션 및 핵심 언어 기능에 초점을 맞춘 기초적인 언어 데이터 | 
| chat | 자연스러운 대화 흐름, 컨텍스트 유지 관리 및 적절한 사회적 상호 작용을 보여주는 대화식 교환 | 
| code | 다양한 프로그래밍 언어 및 플랫폼의 프로그래밍 소스 코드, 설명서 및 기술 토론 | 
| factuality | 정확성, 소스 검증 및 사실 평가에 초점을 둔 참조 자료 및 확인된 정보 | 
| identity | 일관된 캐릭터 특성, 가치 및 상호 작용 스타일에 초점을 둔 성격 프레임워크 및 행동 패턴 | 
| long-context | 여러 긴 교환에서 일관성과 관련성을 유지 관리하는 데 초점을 둔 확장된 텍스트 및 복잡한 서술 | 
| math | 교과서, 문제, 솔루션, 수학적 토론을 포함한 수학 콘텐츠 | 
| rai | 윤리적 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례 및 시나리오 | 
| instruction-following | 다양한 수준의 사용자 프롬프트 및 지침에 기반한 정확한 태스크 실행 예제 | 
| 어간 | 문제 해결 및 이론적 개념을 포함하여 과학, 기술, 엔지니어링 및 수학을 다루는 기술 콘텐츠 | 
| 계획 | 전략적 사고, 단계별 태스크 분석 및 효율적인 리소스 할당을 보여주는 시퀀스 | 
| reasoning-chat | 논리적 토론 및 구조화된 대화 흐름에 초점을 둔 분석 대화 시나리오 | 
| reasoning-code | 체계적인 솔루션 개발에 초점을 둔 프로그래밍 문제 및 알고리즘 문제 | 
| reasoning-factuality | 중요한 평가 및 확인 프로세스에 초점을 둔 정보 평가 시나리오 | 
| reasoning-instruction-following | 체계적인 해석 및 실행에 초점을 둔 복잡한 태스크 분석 | 
| reasoning-math | 논리적 진행 및 솔루션 전략에 초점을 둔 수학적 문제 해결 시나리오 | 
| reasoning-planning | 목표 달성에 대한 체계적인 접근 방식에 초점을 둔 전략적 의사 결정 시나리오 | 
| reasoning-rag | 컨텍스트 이해 및 관련 애플리케이션에 초점을 둔 정보 검색 및 가상 시나리오 | 
| reasoning-rai | AI 안전 및 공정성에 대한 체계적인 평가에 초점을 둔 윤리적 의사 결정 시나리오 | 
| reasoning-stem | 체계적인 분석 및 솔루션 개발에 초점을 둔 과학적 문제 해결 시나리오 | 
| rag | 검색된 외부 지식을 생성된 응답과 효과적으로 결합하여 상황에 맞는 정확한 정보를 제공하는 예제 | 
| 변환 | 컨텍스트, 어조 및 문화적 뉘앙스를 유지하면서 정확한 번역을 보여주는 다국어 콘텐츠 페어 | 

### 멀티모달 데이터 혼합(Nova 2.0)
<a name="nova-2-mm-data-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_1p5_mm_chat       # Nova text dataset catalog
  sources:
    customer_data:
      percent: 50                 # Percent of overall mix to draw from customer data
    nova_data:                    # The remainder will be drawn from Nova data. The categories below must add to 100
      charts: 1
      chat: 38
      code: 20
      docs: 3
      general: 2
      grounding: 1
      rag: 4
      screenshot: 4
      text: 8
      translation: 4
      video: 15
```

참고: Nova 2.0에는 Nova 1.0에서 사용할 수 없는 비디오 데이터 범주 지원이 포함되어 있습니다.

이러한 범주는 무엇을 의미하나요?


**Nova 2.0 멀티모달 데이터 범주**  

| 범주 이름 | 세부 정보 | 
| --- | --- | 
| 차트 | 모델이 정량적 정보를 효과적으로 이해하고 전달하는 데 도움이 되는 그래프, 파이 차트, 막대 차트, 선형 플롯 및 기타 통계 시각화의 시각적 표현 및 설명 | 
| chat | 컨텍스트 기반 대화 이해 및 이미지 기반 상호 작용에 초점을 둔 시각적 요소와 페어를 이루는 대화 데이터 | 
| code | 시각적 코드 해석, IDE 스크린샷 및 기술 다이어그램에 초점을 둔 프로그래밍 인터페이스 및 개발 환경 | 
| docs | PDF 콘텐츠 인식과 같은 개념에 도움이 되도록 다양한 문서 유형 및 구조를 이해하고 처리하는 모델을 훈련하기 위해 텍스트, 이미지, 레이아웃 및 형식을 결합한 문서 중심 데이터 | 
| 일반 | 이미지, 그래픽 및 수반되는 설명 텍스트의 광범위한 이해에 초점을 둔 다양한 시각적-텍스트 콘텐츠 | 
| 그라운딩 | 언어 개념을 실제 시각적 표현에 연결하는 데 초점을 둔 시각적 참조 자료 및 레이블이 지정된 이미지 | 
| rag | 시각적 및 텍스트 외부 지식을 효과적으로 결합하고 참조하여 정확한 컨텍스트 기반 응답을 생성하는 방법을 보여주는 멀티모달 검색 예제 | 
| screenshot | 소프트웨어 인터페이스 및 디지털 상호 작용을 이해하는 데 초점을 둔 애플리케이션 인터페이스 캡처 및 디지털 표시 이미지 | 
| 텍스트 | 일반론적 기능을 제공하기 위해 텍스트 전용 SFT Nova 데이터세트 범주에서 생성된 컨텍스트 기반 텍스트 데이터의 균형 잡힌 풀 | 
| 변환 | 이미지 및 문화적 시각적 요소 내 텍스트의 다국어 해석에 초점을 둔 교차 언어 시각적 콘텐츠 | 
| 비디오 | 시간적 이해와 순차적인 시각적 서술 이해에 초점을 둔 모션 기반 시각적 콘텐츠 | 

## 작업을 시작하는 방법
<a name="how-to-launch-job"></a>

첫 번째 SFT 실행을 시작하는 데 필요한 핵심 세부 정보만 가져오는 경우 README를 참조할 수도 있습니다.

컨테이너 정보:


**컨테이너 정보 및 시작 명령**  

| 모델 | 기술 | Subcategory | 이미지 URI | Hyperpod 런처 명령 | 
| --- | --- | --- | --- | --- | 
| Nova 2.0 | 미세 조정 | SFT 텍스트 | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest | hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/nova\$12\$10/nova\$1lite/SFT/nova\$1lite\$12\$10\$1p5\$1gpu\$1sft \$1 --override-parameters '\$1 "instance\$1type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest" \$1' | 
| Nova 2.0 | 미세 조정 | SFT 텍스트 \$1 데이터 혼합 | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest | hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/forge/nova\$12\$10/nova\$1lite/SFT/nova\$1lite\$12\$10\$1p5\$1gpu\$1sft\$1text\$1with\$1datamix \$1 --override-parameters '\$1 "instance\$1type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest" \$1' | 
| Nova 2.0 | 미세 조정 | SFT MM | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest | hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/nova\$12\$10/nova\$1lite/SFT/nova\$1lite\$12\$10\$1p5\$1gpu\$1sft \$1 --override-parameters '\$1 "instance\$1type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest" \$1' | 
| Nova 2.0 | 미세 조정 | SFT MM \$1 데이터 혼합 | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest | hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/forge/nova\$12\$10/nova\$1lite/SFT/nova\$1lite\$12\$10\$1p5\$1gpu\$1sft\$1mm\$1with\$1datamix \$1 --override-parameters '\$1 "instance\$1type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest" \$1' | 

설정이 모두 완료되면 sagemaker-hyperpod-cli 리포지토리의 루트에서 시작하여 기본 nova sft 레시피 폴더로 이동합니다.
+ cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/training/nova/
+ 여기서 기본 모델 선택에 따라 nova 1 또는 nova 2 레시피를 실행할지를 선택할 수 있습니다.

Nova 2.0 sft의 경우:
+ 일반 sft 작업을 사용하려면 이 폴더에서 레시피 하나를 볼 수 있어야 함
  + cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/fine-tuning/nova\$12\$10/nova\$1lite/SFT and then you should be able to see one recipe under this folder called nova\$1lite\$12\$10\$1p5x8\$1gpu\$1sft.yaml
+ 데이터 혼합 sft 작업을 사용하려면 sft Forge 레시피 폴더로 이동할 수 있음
  + cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/fine-tuning/nova/forge/nova\$12\$10/nova\$1lite/SFT and you should be able to see one recipe under this folder called: nova\$1lite\$12\$10\$1p5x8\$1gpu\$1sft\$1with\$1datamix.yaml
+ name, data\$1s3\$1path, validation\$1s3\$1path, output\$1s3\$1path, max\$1steps와 같이 작업에 필요한 레시피의 섹션을 편집합니다. sft를 수행하므로 여기에 epoch 개념은 적용되지 않습니다.

데이터 혼합 구성이 동일하게 보이지만 하단에 이와 비슷한 추가 데이터 혼합 섹션이 있습니다.

```
data_mixing:
  dataset_catalog: sft_text_lite
  sources:
    nova_data:   # percent inputs for Nova data must sum to 100%; use 0% if you want to exclude a data grouping
      agents: 20
      business-and-finance: 20
      scientific: 20
      code: 20
      factual-and-news: 20
      longform-text: 0
      health-and-medicine: 0
      humanities-and-education: 0
      legal: 0
      math: 0
      additional-languages: 0
      social-and-personal-interest: 0
      entertainment: 0
      reasoning: 0
      other: 0
      tables: 0
    customer_data: # percent input of customer data. 100 = use only customer data, 0 = use only the nova_data mix above
      percent: 25
```

여기에는 두 가지 최상위 데이터 범주가 있습니다.
+ nova\$1data : 실제 데이터 혼합이며 더 많은 범주로 세분화됩니다. 100%까지 합산해야 합니다.
  + 토큰 수를 포함한 이러한 범주의 전체 분석은 아래에서 확인할 수 있음
+ customer\$1data : yaml 상단의 data\$1s3\$1path 키에서 참조되는 훈련 데이터입니다. 여기에 제공된 백분율은 nova\$1data에 대한 결과 백분율을 결정합니다. 예를 들어 위의 백분율 선택에서 훈련 중에 customer\$1data로 25%, nova\$1data로 75%(이때 15%는 agents, 15%는 business-and-finance, 15%는 scientific, 15%는 code, 15%는 factual-and-news)를 사용함

팁: pip install -e를 다시 한 번 실행합니다. 그러면 작업을 제출할 준비가 됩니다\$1

여기서는 데이터 혼합을 사용하기 위해 몇 가지 파라미터를 재정의합니다.

```
hyperpod start-job \
 -n kubeflow \
 --recipe fine-tuning/nova/forge/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5x8_gpu_sft_with_datamix \
 --override-parameters '{
 "instance_type": "ml.p5.48xlarge",
 "recipes.run.name": "nova-sft-datamixing",
 "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-Datamix",
 "recipes.run.data_s3_path": "s3://sft-data/sft_train_data.jsonl",
 "recipes.run.validation_data_s3_path": "s3://sft-data/sft_val_data.jsonl",
 "recipes.run.output_s3_path": "s3://sft-data/output/
 }'
```

출력에는 다음과 같은 작업 이름이 포함됩니다.

```
⚡ MY Desktop ⚡ % hyperpod start-job \
 -n kubeflow \
 --recipe training/nova/forge/nova_2_0/nova_lite/sft/nova_lite_2_0_p5x8_gpu_pretrain_with_datamix \
 --override-parameters '{
 "instance_type": "ml.p5.48xlarge",
 "recipes.run.name": "nova-sft-datamixing",
 "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-Datamix",
 "recipes.run.data_s3_path": "s3://sft-data/sft_train_data.jsonl",
 "recipes.run.validation_data_s3_path": "3://sft-data/sft_val_data.jsonl",
 "recipes.run.output_s3_path": "3://sft-data/output/
 }'
```

출력은 다음과 같습니다.

```
Final command: python3 /local/home/my/Downloads/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/main.py recipes=training/nova/nova_micro_p5x8_gpu_pretrain cluster_type=k8s cluster=k8s base_results_dir=/local/home/niphaded/Downloads/sagemaker-hyperpod-cli/results cluster.pullPolicy="IfNotPresent" cluster.restartPolicy="OnFailure" cluster.namespace="kubeflow" instance_type="p5d.48xlarge" container="900867814919.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:sft-datamix-rig-final"
Prepared output directory at /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/k8s_templates
Found credentials in shared credentials file: ~/.aws/credentials
Helm script created at /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/niphaded-sft-run-wzdyn_launch.sh
Running Helm script: /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/niphaded-sft-run-wzdyn_launch.sh

NAME: my-sft-run-wzdyn
LAST DEPLOYED: Tue Aug 26 16:21:06 2025
NAMESPACE: kubeflow
STATUS: deployed
REVISION: 1
TEST SUITE: None
Launcher successfully generated: /local/home/my/Downloads/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nova/k8s_templates/SFT

{
 "Console URL": "https://us-east-1.console.aws.amazon.com/sagemaker/home?region=us-east-1#/cluster-management/hyperpod-eks-ga-0703"
}
```

hyperpod list-pods -n kubeflow --job-name my-sft-run-wzdyn을 사용하여 작업 상태를 볼 수 있습니다.

```
hyperpod list-pods -n kubeflow --job-name my-sft-run-wzdyn 
{
 "pods": [
  {
   "PodName": "my-sft-run-wzdyn-master-0",
   "Namespace": "kubeflow",
   "Status": "Pending",
   "CreationTime": "2025-08-26 16:21:06+00:00"
  },
  {
   "PodName": "my-sft-run-wzdyn-worker-0",
   "Namespace": "kubeflow",
   "Status": "Pending",
   "CreationTime": "2025-08-26 16:21:06+00:00"
  }
 ]
}
```

또는 kubectl 명령을 직접 사용하여 찾습니다.

예:

```
kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-sft-run)

NAME                                                         READY   STATUS      RESTARTS   AGE     IP              NODE                           NOMINATED NODE   READINESS GATES
my-sft-run-5suc8-master-0                              0/1     Completed   0          3h23m   172.31.32.132   hyperpod-i-00b3d8a1bf25714e4   <none>           <none>
my-sft-run-5suc8-worker-0                              0/1     Completed   0          3h23m   172.31.44.196   hyperpod-i-0aa7ccfc2bd26b2a0   <none>           <none>
my-sft-run-5suc8-worker-1                              0/1     Completed   0          3h23m   172.31.46.84    hyperpod-i-026df6406a7b7e55c   <none>           <none>
my-sft-run-5suc8-worker-2                              0/1     Completed   0          3h23m   172.31.28.68    hyperpod-i-0802e850f903f28f1   <none>           <none>
```

전문가 팁: 작업이 실행되는 EKS 노드는 AWS UI에서 로그를 더 빨리 찾는 데 도움이 되므로 항상 -o wide 플래그를 사용해야 합니다.

## 작업을 모니터링하는 방법
<a name="how-to-monitor-job"></a>

다음과 같은 세 가지 방법 중 하나로 로그를 볼 수 있습니다.

### a) CloudWatch 사용
<a name="using-cloudwatch"></a>

로그는 CloudWatch 아래의 하이퍼포드 클러스터를 포함하는 Amazon Web Services 계정에서 사용할 수 있습니다. 브라우저에서 보려면 계정의 CloudWatch 홈페이지로 이동하여 클러스터 이름을 검색합니다. 예를 들어 my-hyperpod-rig라고 하는 클러스터가 있으면 로그 그룹에 다음과 같은 접두사가 붙습니다.
+ 로그 그룹: /aws/sagemaker/Clusters/my-hyperpod-rig/\$1UUID\$1
+ 로그 그룹에 있으면 - hyperpod-i-00b3d8a1bf25714e4와 같은 노드 인스턴스 ID를 사용하여 특정 로그를 찾을 수 있습니다.
  + 여기서, i-00b3d8a1bf25714e4는 훈련 작업이 실행 중인 Hyperpod 친화적인 시스템 이름을 나타냅니다. 이전 명령 kubectl get pods -o wide -w -n kubeflow \$1 (head -n1 ; grep my-cpt-run) 출력에서 NODE 열을 캡처한 방법을 떠올려 보세요.
  + 이 경우에 '마스터' 노드 실행은 hyperpod-i-00b3d8a1bf25714e4에서 실행되었으므로 해당 문자열을 사용하여 보려는 로그 그룹을 선택합니다. SagemakerHyperPodTrainingJob/rig-group/[NODE]라고 표시된 항목을 선택합니다.

로그는 다음과 같아야 합니다.

### b) CloudWatch Insights 사용
<a name="using-cloudwatch-insights"></a>

작업 이름이 유용하고 위의 모든 단계를 진행하지 않으려는 경우 /aws/sagemaker/Clusters/my-hyperpod-rig/\$1UUID\$1에서 모든 로그를 쿼리하여 개별 로그를 찾을 수 있습니다.

CPT

```
fields @timestamp, @message, @logStream, @log 
| filter @message like /(?i)Starting CPT Job/
| sort @timestamp desc 
| limit 100
```

작업 완료 시 Starting SFT Job을 SFT Job completed로 바꾸기

그런 다음 결과를 클릭하고 'Epoch 0'이라고 표시된 결과를 선택할 수 있습니다. 마스터 노드가 되기 때문입니다.

### c) aws cli 사용
<a name="using-aws-cli"></a>

다음을 사용하여 로그를 테일링하도록 선택할 수 있습니다. 이렇게 하기 전에 aws --version을 사용하여 aws cli 버전을 확인하세요. 또한 터미널에서 라이브 로그를 추적하는 데 도움이 되는 이 유틸리티 스크립트를 사용하는 것이 좋습니다.

V1의 경우:

```
aws logs get-log-events \
 --log-group-name /aws/sagemaker/YourLogGroupName \
 --log-stream-name YourLogStream \
 --start-from-head | jq -r '.events[].message'
```

V2의 경우:

```
aws logs tail /aws/sagemaker/YourLogGroupName \
  --log-stream-name YourLogStream \
 --since 10m \
 --follow
```

### d) ML 흐름 설정:
<a name="setup-mlflow"></a>

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
```

ML 흐름이 설정되면 레시피에서 URI를 전달하거나 작업을 시작할 때 재정의를 사용할 수 있습니다. 이를 수행하는 방법에 대한 한 가지 예제는 README에서 확인할 수 있습니다.

## SFT 이후 모델을 평가하려면 어떻게 해야 하나요?
<a name="how-to-evaluate-after-sft"></a>

### 사전 조건
<a name="eval-prerequisites"></a>
+ 훈련 작업 manifest.json 파일의 체크포인트 S3 URI(훈련된 모델의 경우)
+ 올바른 형식으로 S3에 업로드된 평가 데이터세트
+ 평가 결과에 대한 출력 S3 경로

즉시 사용 가능한 벤치마크: 즉시 사용 가능한 벤치마크를 통해 일반 태스크의 성능을 검증합니다. 자세한 내용은 여기에서 확인하세요.

### 자체 데이터 사용:
<a name="bring-your-own-eval-data"></a>

또한 아래 형식으로 지정한 다음 아래에 언급된 컨테이너를 사용하여 필요한 경우 보정에 대한 로그 확률과 함께 추론 결과를 가져와 사용자 지정 데이터를 제공할 수 있습니다.

다음 구조를 사용하여 태스크당 jsonl을 생성합니다.

```
{
  "metadata": "{key:4, category:'apple'}",
  "system": "arithmetic-patterns, please answer the following with no other words: ",
  "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?",
  "response": "32"
}
```

평가 작업의 추론 단계 중에 생성된 출력의 구조는 다음과 같습니다.

```
{
  "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]",
  "inference": "['32']",
  "gold": "32",
  "metadata": "{key:4, category:'apple'}"
}
```

필드 설명:
+ prompt: 모델로 전송된 형식 지정된 입력
+ 추론: 모델의 생성된 응답
+ gold: 입력 데이터세트의 예상되는 정답, 입력의 응답 필드
+ 메타데이터: 입력에서 전달되는 선택적 메타데이터

### 평가 구성 준비
<a name="prepare-eval-config"></a>

평가 작업을 시작하는 명령. '--override-parameters'를 사용하여 레시피의 모든 항목을 수정합니다.

```
hyperpod start-job -n kubeflow \
  --recipe evaluation/nova/nova_micro_p5_48xl_bring_your_own_dataset_eval \
  --override-parameters '{
    "instance_type": "p5.48xlarge",
    "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest",
    "recipes.run.name": "<your-eval-job-name>",
    "recipes.run.model_name_or_path": "<checkpoint-s3-uri>",
    "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/",
    "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl"
  }'
```

### 평가 작업 시작
<a name="launch-eval-job"></a>

해당되는 이미지를 포함하는 여러 레시피에 대한 명령을 시작하는 작업.


**평가 작업 시작 명령**  

| 모델 | 기술 | Subcategory | 이미지 URI | Command | 
| --- | --- | --- | --- | --- | 
| Nova 2.0 | 평가 | Eval | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest | hyperpod start-job -n kubeflow \$1 --recipe evaluation/nova/nova\$12\$10/nova\$1lite/nova\$1lite\$12\$10\$1p5\$148xl\$1gpu\$1ft\$1eval \$1 --override-parameters '\$1 "instance\$1type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest" \$1' | 

## 학습한 교훈 및 팁
<a name="lessons-learned-tips"></a>
+ SFT 데이터세트의 품질은 매우 중요합니다. 저품질 데이터를 필터링하기 위해 모든 노력을 기울여야 합니다. 복잡성과 정확성 측면에서 예외적으로 품질이 뛰어난 데이터의 하위 세트가 작은 경우 모델이 더 잘 수렴될 수 있도록 훈련이 끝날 때 배치하는 것이 좋습니다.
+ 데이터 혼합을 위해 텍스트 및 멀티모달(MM) 데이터세트를 모두 활용합니다. 텍스트 데이터세트를 사용하는 실험에서는 Nova의 독점 '추론 지침 준수' 범주를 추가할 때 일반 벤치마크 전반에서 성능이 크게 향상되는 것으로 나타났습니다. 사용자 데이터세트로 SFT를 수행한 후 회귀되는 일반 벤치마크에 관심이 있는 경우 데이터 혼합 전략에 이 범주를 포함하는 것이 좋습니다.
+ MM 데이터세트의 경우 실험에서는 비디오 범주를 20% 넘게 혼합에 통합하면 일반적인 벤치마크 성능을 유지 관리하는 데 도움이 되는 것으로 나타났습니다.
+ 또한 데이터 혼합을 사용하는 SFT는 학습 속도에 매우 민감하므로 연구 결과에 따라 기본 학습 속도(LoRA의 경우 1e-5, FR의 경우 5e-6)에서 미세 조정할 것을 제안합니다.
+ 마지막으로 Nova 독점 데이터세트를 혼합하면 지연 시간과 성능이 절충되므로 조사 결과에 따라 바람직한 균형 수치로 최대 50%를 혼합할 것을 제안합니다.

# 강화 학습
<a name="nova-hp-rft-forge"></a>

**참고**  
구독하면 세부 설명서가 제공됩니다.

Nova Forge는 사용자 환경에서 원격 보상 함수를 사용하는 옵션과 함께 고급 강화 학습 기능을 제공합니다. 고객은 자체 엔드포인트를 통합하여 즉각적인 실제 피드백에 대한 검증을 실행하거나 자체 오케스트레이터를 사용하여 환경에서 에이전트 멀티턴 평가를 조정할 수도 있습니다.

## 에이전트 멀티턴 평가를 위한 자체 오케스트레이터 가져오기
<a name="nova-hp-rft-forge-byoo"></a>

15분 제한 시간을 초과하는 멀티턴 대화 또는 보상 함수가 필요한 Forge 사용자를 위해 Nova Forge는 자체 오케스트레이션 가져오기(BYOO) 기능을 제공합니다. 이를 통해 환경에서 에이전트 멀티턴 평가를 조정할 수 있습니다(예: 화학 도구를 사용하여 분자 설계 점수를 매기거나 효율적인 태스크 완료에 대한 보상을 제공하고 충돌에 페널티를 적용하는 로봇 시뮬레이션).

**Topics**
+ [

### 아키텍처 개요
](#nova-hp-rft-forge-architecture)
+ [

### 설정 및 실행
](#nova-hp-rft-forge-setup)

### 아키텍처 개요
<a name="nova-hp-rft-forge-architecture"></a>

BYOO 아키텍처는 고객 관리형 인프라를 통해 롤아웃 및 생성 프로세스를 완벽하게 제어합니다.

**훈련 VPC:**
+ **롤아웃**: 고객 인프라에 롤아웃 생성을 위임하여 훈련 조정
+ **트레이너**: 수신된 롤아웃을 기반으로 모델 가중치 업데이트 수행

**고객 VPC(예: EC2 기반 ECS):**
+ **프록시 Lambda**: 롤아웃 요청을 수신하고 고객 인프라에 맞게 조정
+ **롤아웃 응답 SQS**: 완료된 롤아웃을 훈련 인프라로 반환하기 위한 대기열
+ **요청 생성 SQS**: 모델 생성 요청에 대한 대기열
+ **응답 생성 SQS**: 모델 생성 응답에 대한 대기열
+ **고객 컨테이너**: 사용자 지정 오케스트레이션 로직 구현(제공된 스타터 키트 사용 가능)
+ **DynamoDB**: 오케스트레이션 프로세스 전반에 걸쳐 상태 저장 및 검색

**워크플로:**

1. 롤아웃은 프록시 Lambda에 롤아웃 생성을 위임함

1. 프록시 Lambda가 롤아웃 API 요청을 푸시하여 요청 생성 SQS로 푸시함

1. 고객 컨테이너에서 요청을 처리하고, 멀티턴 상호 작용을 관리하며, 보상 함수를 직접 호출함

1. 컨테이너는 필요에 따라 DynamoDB에서 상태를 저장 및 검색함

1. 컨테이너가 롤아웃 응답을 롤아웃 응답 SQS로 푸시함

1. 롤아웃은 가중치 업데이트를 위해 완료된 롤아웃을 트레이너에게 전송함

### 설정 및 실행
<a name="nova-hp-rft-forge-setup"></a>

자세한 설정 지침, 레시피 구성, 요청 및 응답 형식, 환경 예제는 Nova Forge 구독자에게 제공되는 기밀 설명서를 참조하세요. Nova Forge 문서를 가져오려면 아래 단계를 따릅니다.

```
aws s3 cp s3://nova-forge-c7363-206080352451-us-east-1/v1/ ./ --recursive
```

자산이 다운로드되면 `docs` 폴더에서 모든 설명서를 찾을 수 있습니다.

# 책임 있는 AI 도구 키트 및 콘텐츠 조정
<a name="nova-responsible-ai-toolkit"></a>

## 책임 있는 AI 도구 키트
<a name="nova-responsible-ai-toolkit-overview"></a>

Nova Forge는 훈련 프로세스 중에 모델을 Amazon Nova의 책임 있는 AI 지침에 맞추기 위한 훈련 및 평가 데이터를 포함하는 책임 있는 AI 툴킷을 제공하고 추론 중에 모델 응답을 조정하기 위한 런타임 제어를 제공합니다.

**훈련 데이터** - 책임 있는 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례 및 시나리오를 데이터 혼합에 사용하여 지속적인 사전 훈련 중에 모델을 책임감 있게 조정할 수 있습니다.

**평가** - 부적절하거나 유해하거나 잘못된 콘텐츠를 감지 및 거부하는 모델의 기능을 테스트하는 평가는 기본 모델 성능과 사용자 지정 모델 성능 간 델타를 결정하는 벤치마크 태스크로 사용할 수 있습니다.

**런타임 제어** - 기본적으로 Amazon Nova의 런타임은 추론 중에 중간 모델 응답을 제어합니다. 이러한 런타임 제어를 수정하려면 AWS 계정 관리자에게 문의하여 Amazon Nova의 사용자 지정 가능한 콘텐츠 조정 설정을 요청합니다.

보안은 AWS 및 사용자 간의 공동 책임입니다. 기본 모델을 변경하거나 지속적인 사전 훈련을 사용하여 특정 사용 사례의 성능을 개선하면 새 모델의 안전성, 공정성 및 기타 속성에 영향을 미칠 수 있습니다. 강력한 적응 방법은 기본 모델에 빌드된 안전, 공정성 및 기타 보호 기능의 변경을 최소화하는 동시에 모델이 사용자 지정되지 않은 태스크의 모델 성능에 미치는 영향을 최소화합니다. 테스트 결과가 안전성, 공정성 및 기타 속성과 전반적인 효과에 대한 특정 기대치를 충족하는지 확인하려면 사용 사례를 대표하는 데이터세트에서 애플리케이션을 포괄적으로 테스트해야 합니다. 자세한 내용은 Amazon Web Services 책임 있는 AI 사용 가이드, Amazon Web Services 책임 있는 AI 정책, Amazon Web Services 이용 정책, Amazon Web Services 서비스 약관을 참조하세요.