

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

Nova Forge SDK는 Amazon Nova 모델을 사용자 지정하기 위한 포괄적인 Python SDK입니다. 이 SDK에서는 SageMaker AI 및 Amazon Bedrock을 비롯한 다양한 플랫폼에서 Amazon Nova 모델의 훈련, 평가, 모니터링, 배포 및 추론을 위한 통합 인터페이스를 제공합니다. 모델을 도메인별 태스크에 맞게 적응하든 사용 사례에 맞게 성능을 최적화하든 관계없이 이 SDK는 하나의 통합 인터페이스에서 필요한 모든 기능을 제공합니다.

## 이점
<a name="nova-forge-sdk-why-choose"></a>
+ 데이터 준비부터 배포 및 모니터링에 이르기까지 전체 모델 사용자 지정 수명 주기를 위한 단일 SDK입니다.
+ 지속적인 사전 훈련(CPT), 지도 미세 조정(SFT), 직접 선호 최적화(DPO), 강화 미세 조정(RFT), 싱글턴 및 멀티턴 모두를 포함하여 LoRA 및 전체 순위 접근 방식을 함께 여러 훈련 방법에 대한 지원.
+ 자동 리소스 관리를 통해 SageMaker 훈련 작업 및 SageMaker HyperPod, Amazon Bedrock에 대한 기본 제공 지원.
+ 훈련 기법에 적합한 레시피 또는 컨테이너 URI를 더 이상 찾을 필요 없음.
+ 자체 훈련 레시피를 가져오거나 파라미터 재정의와 함께 SDK의 지능형 기본값을 사용합니다.
+ 이 SDK는 지원되는 모델 및 인스턴스 조합에 대해 구성을 검증하고 검증 지원을 제공하여 훈련이 시작되기 전에 오류를 방지합니다.
+ 통합 Amazon CloudWatch 모니터링을 사용하면 훈련 진행 상황을 실시간으로 추적할 수 있습니다.
+ MLFlow를 통합하여 SageMaker AI MLFlow 추적 서버로 훈련 실험을 추적합니다.

## 요구 사항
<a name="nova-forge-sdk-requirements"></a>

**지원되는 Python 버전**

Nova Forge SDK는 다음에서 테스트됩니다.
+ Python 3.12

## 설치
<a name="nova-forge-sdk-installation"></a>

이 SDK를 설치하려면 아래 명령을 따르세요.

```
pip install amzn-nova-forge
```

## 지원되는 모델 및 기법
<a name="nova-forge-sdk-supported-models"></a>

이 SDK는 Amazon Nova 패밀리 내에서 다음과 같은 모델과 기법을 지원합니다.


****  

| 방법 | 지원되는 모델 | 
| --- | --- | 
| 지속적인 사전 훈련 | [모든 Nova 모델](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference)(SMHP만 해당) | 
| 지도 미세 조정 LoRA | [모든 Nova 모델](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference) | 
| 지도 미세 조정 전체 순위 | [모든 Nova 모델](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-recipes.html#nova-model-recipes-reference)(SMHP 및 SMTJ만 해당) | 
| 직접 선호 최적화 LoRA | Nova 1.0 모델(SMHP 및 SMTJ만 해당) | 
| 직접 선호 최적화 전체 순위 | Nova 1.0 모델(SMHP 및 SMTJ만 해당) | 
| 강화 미세 조정 LoRA | Nova Lite 2.0 | 
| 강화 미세 조정 전체 순위 | Nova Lite 2.0(SMHP 및 SMTJ만 해당) | 
| 멀티턴 강화 미세 조정 LoRA | Nova Lite 2.0(SMHP만 해당) | 
| 멀티턴 강화 미세 조정 전체 순위 | Nova Lite 2.0(SMHP만 해당) | 

## 시작하기
<a name="nova-forge-sdk-getting-started"></a>

**Topics**
+ [1. 데이터 준비](#nova-forge-sdk-prepare-data)
+ [2. 인프라 구성](#nova-forge-sdk-configure-infrastructure)
+ [3. 훈련](#nova-forge-sdk-train)
+ [4. 모니터링](#nova-forge-sdk-monitor)
+ [5. 평가](#nova-forge-sdk-evaluate)
+ [6. 배포](#nova-forge-sdk-deploy)

### 1. 데이터 준비
<a name="nova-forge-sdk-prepare-data"></a>

로컬 파일 또는 S3에서 데이터세트를 로드하고 SDK가 선택한 훈련 방법에 맞는 올바른 형식으로 변환을 처리하게 합니다. 또는 형식이 지정된 데이터를 제공하고 즉시 시작합니다.

```
from amzn_nova_forge.dataset.dataset_loader import JSONLDatasetLoader
from amzn_nova_forge.model.model_enums import Model, TrainingMethod, TransformMethod

loader = JSONLDatasetLoader()
loader.load("s3://your-bucket/training-data.jsonl")
loader.transform(
    method=TransformMethod.SCHEMA,
    training_method=TrainingMethod.SFT_LORA,
    model=Model.NOVA_LITE,
    column_mappings={"question": "input", "answer": "output"},
)
```

### 2. 인프라 구성
<a name="nova-forge-sdk-configure-infrastructure"></a>

컴퓨팅 리소스를 선택합니다. SDK에서 구성을 검증하고 최적의 설정을 보장합니다.

```
from amzn_nova_forge.manager.runtime_manager import BedrockRuntimeManager, SMTJRuntimeManager, SMHPRuntimeManager

# Bedrock
runtime = BedrockRuntimeManager(
     execution_role="arn:aws:iam::123456789012:role/ExampleRole"
)

# SageMaker Training Jobs
runtime = SMTJRuntimeManager(
    instance_type="ml.p5.48xlarge",
    instance_count=4
)

# SageMaker HyperPod
runtime = SMHPRuntimeManager(
    instance_type="ml.p5.48xlarge",
    instance_count=4,
    cluster_name="my-hyperpod-cluster",
    namespace="kubeflow"
)
```

### 3. 훈련
<a name="nova-forge-sdk-train"></a>

몇 줄의 코드만으로 훈련을 시작합니다.

```
from amzn_nova_forge.model import NovaModelCustomizer
from amzn_nova_forge.model.model_enums import Model, TrainingMethod

customizer = NovaModelCustomizer(
    model=Model.NOVA_LITE_2,
    method=TrainingMethod.SFT_LORA,
    infra=runtime,
    data_s3_path="s3://your-bucket/prepared-data.jsonl"
)

result = customizer.train(job_name="my-training-job")
```

### 4. 모니터링
<a name="nova-forge-sdk-monitor"></a>

SDK에서 훈련 진행 상황을 직접 추적합니다.

```
from amzn_nova_forge.monitor.log_monitor import CloudWatchLogMonitor

# Monitor training logs
customizer.get_logs()

# Or monitor directly via CloudWatchLogMonitor
monitor = CloudWatchLogMonitor.from_job_result(result)
monitor.show_logs(limit=10)

# Check job status
result.get_job_status() # InProgress, Completed, Failed
```

### 5. 평가
<a name="nova-forge-sdk-evaluate"></a>

다양한 [기본 제공 벤치마크](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-model-evaluation.html#nova-model-evaluation-benchmark)를 사용하여 모델 성능을 평가하거나 자체 평가를 설계합니다.

```
from amzn_nova_forge.recipe_config.eval_config import EvaluationTask

# Evaluate on benchmark tasks
eval_result = customizer.evaluate(
    job_name="model-eval",
    eval_task=EvaluationTask.MMLU,
    model_path=result.model_artifacts.checkpoint_s3_path
)
```

### 6. 배포
<a name="nova-forge-sdk-deploy"></a>

Amazon Bedrock 또는 SageMaker에 대한 기본 지원을 통해 사용자 지정 모델을 프로덕션에 배포합니다.

```
from amzn_nova_forge.model.model_enums import DeployPlatform

# Bedrock provisioned throughput
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.BEDROCK_PT,
    unit_count=10
)

# Bedrock On-Demand
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.BEDROCK_OD
)

# Sagemaker Real-time Inference
deployment = customizer.deploy(
    model_artifact_path=result.model_artifacts.checkpoint_s3_path,
    deploy_platform=DeployPlatform.SAGEMAKER,
    unit_count=10,
    sagemaker_instance_type="ml.p5.48xlarge",
    sagemaker_environment_variables={
        "CONTEXT_LENGTH": "12000",
        "MAX_CONCURRENCY": "16",
    }
)
```

## 주요 기능
<a name="nova-forge-sdk-key-capabilities"></a>

### 즉시 레시피 생성
<a name="nova-forge-sdk-recipe-creation"></a>

이 SDK를 사용하면 특정 기법에 적절한 레시피 또는 컨테이너 URI를 검색할 필요가 없습니다.

### 지능형 데이터 처리
<a name="nova-forge-sdk-data-processing"></a>

SDK에서 훈련을 위한 올바른 형식으로 데이터를 자동 변환합니다. JSON, JSONL 또는 CSV 파일로 작업하는 경우 데이터 로더에서 변환을 원활하게 처리합니다. 데이터 로더는 텍스트와 멀티모달 데이터(이미지 및 비디오)를 지원합니다.

### 엔터프라이즈 인프라 지원
<a name="nova-forge-sdk-infrastructure-support"></a>

이 SDK는 SageMaker 훈련 작업과 SageMaker HyperPod 모두에서 작동하며 다음을 자동으로 관리합니다.
+ 인스턴스 유형 검증
+ 레시피 검증
+ 데이터세트 검증
+ 작업 오케스트레이션 및 모니터링

SDK는 SageMaker 훈련 작업 서버리스 및 Bedrock 사용자 지정도 지원합니다.

### 포괄적인 평가
<a name="nova-forge-sdk-evaluation"></a>

다음을 포함한 [표준 벤치마크](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html)를 기준으로 사용자 지정 모델을 평가합니다.
+ Massive Multitask Language Understanding(MMLU)
+ 고급 추론 작업(BBH)
+ Graduate-Level Google-Proof Q&A(GPQA)

벤치마크 기본값을 사용하거나 필요에 맞게 수정합니다.
+ 자체 지표 가져오기(BYOM)
+ 자체 데이터세트 가져오기(BYOD)

### 프로덕션 배포
<a name="nova-forge-sdk-deployment"></a>

다음 옵션을 사용하여 Amazon Bedrock 또는 SageMaker에 모델을 배포합니다.
+ **Bedrock 프로비저닝된 처리량** - 일관된 성능을 위한 전용 용량
+ **Bedrock 온디맨드(LoRA 기반 사용자 지정에만 해당)** - 종량제 요금
+ **Sagemaker 실시간 추론** - 일관된 성능을 위한 전용 용량

### 배치 추론
<a name="nova-forge-sdk-batch-inference"></a>

대규모 추론 작업을 효율적으로 실행합니다.
+ 수천 개의 요청을 병렬로 처리
+ 자동 결과 집계
+ 비용 효율적인 배치 처리

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

Nova Forge 구독자의 경우 SDK는 데이터 혼합 레시피를 지원합니다.

## 자세히 알아보기
<a name="nova-forge-sdk-learn-more"></a>

Nova Forge SDK를 사용하여 Nova 모델 사용자 지정을 시작할 준비가 되셨나요? 자세한 가이드, API 참조 및 추가 예제는 GitHub 리포지토리([https://github.com/aws/nova-forge-sdk](https://github.com/aws/nova-forge-sdk))를 참조하세요.