

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

Nova Forge SDK 是一套功能完整的 Python SDK，专用于 Amazon Nova 模型的自定义开发。该 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)评测自定义模型，包括：
+ MMLU（大规模多任务语言理解）
+ BBH（高级推理任务）
+ GPQA（Google 无法解答的研究生级别问答基准）

您可直接使用基准默认配置，或根据需求自行定义：
+ 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 模型了吗？ 前往我们的 GitHub 存储库，查看详细指南、API 参考及更多示例：：[https://github.com/aws/nova-forge-sdk](https://github.com/aws/nova-forge-sdk)