

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

Nova Forge SDK は、Amazon Nova モデルをカスタマイズするための包括的な Python SDK です。SDK は、SageMaker AI や Amazon Bedrock など、さまざまなプラットフォームで Amazon Nova モデルのトレーニング、評価、モニタリング、デプロイ、推論を行うための統合インターフェイスを提供します。モデルをドメイン固有のタスクに適応させる場合でも、ユースケースに合わせてパフォーマンスを最適化する場合でも、この SDK は 1 つの統合インターフェイスで必要なものをすべて提供します。

## 利点
<a name="nova-forge-sdk-why-choose"></a>
+ データ準備からデプロイ、モニタリングまで、モデルカスタマイズライフサイクル全体で 1 つの 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>

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

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

### 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 ファイルのいずれを使用している場合でも、データローダーは変換をシームレスに処理します。Data Loader は、テキストデータとマルチモーダルデータ (イメージとビデオ) をサポートしています。

### エンタープライズインフラストラクチャのサポート
<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)と照らし合わせて評価します。
+ MMLU (Massive Multitask Language Understanding)
+ BBH (Advanced Reasoning Tasks)
+ GPQA (Graduate-Level Google-Proof Q&A)

ベンチマークのデフォルトを使用するか、ニーズに合わせて変更します。
+ BYOM (Bring Your Own Metric)
+ BYOD (Bring Your Own Dataset)

### 本番稼働のデプロイ
<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)