

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

Amazon Nova Forge 是first-of-its-kind的服務，為組織提供使用 Nova 建置自己的前沿模型最簡單且最具成本效益的方式。

Amazon Nova Forge 引進「開放式訓練」模型的概念，可讓組織存取各種早期模型檢查點，並在模型訓練的每個階段，將專屬資料與 Amazon 策劃的資料集混合。這可讓模型最大限度地從專屬資料中學習，同時將忘記基礎技能的風險降至最低，例如推理。

Nova Forge 提供下列重要功能：
+ 跨模型開發的所有階段存取檢查點，並在新 Nova 模型廣泛推出之前加以利用
+ 使用 Amazon Nova 策劃的訓練資料混合您的專屬資料
+ 在您的環境中使用獎勵函數執行強化學習
+ 使用最佳化的按鈕配方，透過視覺化工作流程或命令列界面使用 Nova 建置
+ 在訓練過程中，使用負責任的 AI Toolkit 使模型與 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 角色：值為 true 的金鑰 forge-subscription。將此標籤新增至角色後，請前往 SageMaker AI 主控台 > 模型訓練和自訂，然後按一下 Nova Forge。在此頁面上，您將找到有關服務、定價資訊和功能的詳細資訊。您可以從此頁面請求訂閱，然後管理訂閱。

1. 角色應具有呼叫 api 的許可`ListAttachedRolePolicy`，且回應應包含 `AdministratorAccess`或 `AmazonSageMakerFullAccess`政策。

1. 登入角色應具有呼叫 api 的許可`ListRoleTags`，且回應標籤應包含 `tag.key=forge-subscription`。

### 其他先決條件
<a name="nova-forge-prereq-other"></a>

也請確定下列先決條件已完成：

1. [一般先決條件](nova-model-general-prerequisites.md)

1. 使用者的其他步驟：將受限制執行個體群組 (RIG) 新增至 SageMaker HyperPod 叢集 （若要完成以下步驟，請參閱[此處](https://docs.aws.amazon.com//sagemaker/latest/dg/nova-hp-cluster.html))

## 初始 SageMaker HyperPod 設定
<a name="nova-forge-setup-hp"></a>

請依照 [Amazon Web Services 文件](https://docs.aws.amazon.com//sagemaker/latest/dg/nova-hp-train.html)中的步驟，將 HyperPod CLI 連接至您的叢集。請確定您使用 SageMaker HyperPod CLI 的`nova-lite-2.0-release`分支。[本主題](https://docs.aws.amazon.com//sagemaker/latest/dg/nova-hp-train.html)涵蓋：
+ 設定 IAM 許可和政策
+ 設定 SageMaker HyperPod CLI
+ 使用必要的執行個體群組建立叢集
+ 連線至叢集

**驗證**：完成設定後，請確認您可以成功執行`hyperpod connect-cluster`和存取叢集。

# 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/zh_tw/nova/latest/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：將 forge-subscription 政策新增至 Amazon Web Services 帳戶
<a name="nova-forge-appendix-a"></a>

1. 前往 Amazon Web Services IAM 儀表板。按一下左側的角色。搜尋管理員並按一下管理員角色  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/nova/latest/userguide/images/add-forge-sub-policy.png)

1. 選取 <AssumedRoleToUse> （例如 libsAdminAccess)。按一下標籤索引標籤。  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/nova/latest/userguide/images/add-forge-sub-policy-2.png)

1. 按一下管理索引標籤。新增標籤。在金鑰下輸入「forge-subscription」，然後按一下儲存變更  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/nova/latest/userguide/images/add-forge-sub-tag-policy.png)

1. 請確定您在標籤區段中將 forge-subscription 視為索引鍵  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/nova/latest/userguide/images/forge-tag-policy-verify.png)

### 附錄 B：依管理員將 ListRoleTags 和 ListAttachedPolicies 政策新增至非管理員角色的 Amazon Web Services 帳戶
<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/zh_tw/nova/latest/userguide/images/forge-list-tags-policy.png)

1. 按一下 <AssumedRoleToUse> （例如 ForgeAccessRole) 角色，然後選取標籤。新增類型為 "forge-subscription" 的新標籤  
![\[alt text not found\]](http://docs.aws.amazon.com/zh_tw/nova/latest/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/zh_tw/nova/latest/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，請聯絡 Amazon Web Services 客戶經理。

如需搭配自訂模型設定和使用 CCMS 的詳細資訊，請參閱[負責任的 AI Toolkit 和內容管制一節](nova-responsible-ai-toolkit.md)。

# 持續訓練前和中訓練
<a name="nova-forge-cpt"></a>

**注意**  
訂閱後提供詳細文件

Nova Forge CPT 提供超越標準 CPT 的進階功能，包括存取中繼檢查點，以及與 Nova 訓練前 corpus 混合的資料。這些功能可更有效率地調整網域，並更好地保留模型的一般功能。

## 什麼是中繼檢查點？為什麼需要中繼檢查點？
<a name="nova-forge-cpt-checkpoints"></a>

中繼檢查點是在模型達到其最終生產就緒狀態之前，儲存在訓練前不同階段的 Amazon Nova 模型快照。在模型開發期間，Amazon Nova 會經歷多個訓練階段：具有持續學習率的初始預先訓練、學習率逐步下降、內容延伸訓練，以及最後的指示遵循一致性和安全性訓練。對於 CPT，中繼檢查點通常比最終產品檢查點更喜歡，因為它們更可整形且接受網域適應。Prod 檢查點經過廣泛的指示遵循一致性和安全性訓練，可最佳化模型以供一般對話使用，但可以在 CPT 期間防止學習新的領域特定模式。相反地，部分和完全預先訓練的純文字檢查點會保留模型的預先訓練特性。它們尚未嚴重轉向特定行為，使它們更有效率地開始適應網域。執行大規模 CPT (>10B 權杖） 時，從中繼檢查點開始，通常會產生更快的收斂、更好的訓練穩定性，以及更有效的領域知識取得。不過，對於小規模 CPT (<10B 權杖），或需要保留指示遵循功能時，Prod 檢查點可能更適合，因為它允許網域適應，同時維持模型的對話能力。

CPT 需要多個中繼檢查點，因為它們提供不同層級的模型可塑性，影響模型吸收新領域知識的效率。最終產品檢查點已經過廣泛的指示遵循一致性和安全性訓練，可將其最佳化以供一般對話使用，但可抵禦學習新的領域特定模式。換句話說，它已透過訓練後強化。相反地，較舊的檢查點會保留模型的預先訓練特性，並且尚未嚴重轉向特定行為，使它們更具可塑性且接受網域適應性。

為了獲得最佳訓練效率，提供了多個中繼檢查點。

## 有哪些檢查點可用？
<a name="nova-forge-cpt-available"></a>

**新版本 1.0**  
Amazon Nova 1.0 系列有三個模型 (Micro、Lite、Pro)，每個模型都有三個檢查點可用。
+ 預先訓練 - 【`nova-<micro/lite/pro>/pretraining-text-partial`】：這是 Amazon Nova 預先訓練的持續學習速率階段之後的檢查點，其中模型在數兆個文字字符上進行訓練。
+ MID-TRAINED - 【`nova-<micro/lite/pro>/pretraining-text-full`】：這是 Amazon Nova 預先訓練的所有階段，以及使用數兆個文字權杖進行中期訓練完成後的純文字檢查點。如果模型特別不應看到任何多模態資料，請使用這些項目。
+ MID-TRAINED - 【`nova-<lite/pro>/pretraining-mm-full`】：這是在處理完 Amazon Nova 預先訓練和中期訓練的所有階段之後的檢查點，包括具有數兆個字符的多模態資料。
+ POST-TRAINED - 【`nova-<micro/lite/pro>/prod`】：這是模型完全對齊的最終檢查點，已通過所有訓練前和訓練後步驟。

**新版本 2.0**  
有三個 Amazon Nova Lite 2.0 檢查點。
+ PRE-TRAINED - 【`nova-lite-2/pretraining-text-RD`】：這是 Amazon Nova 預先訓練的持續學習率和漸進階段之後的檢查點，其中模型會在數兆個字符上進行訓練。
+ MID-TRAINED - 【`nova-lite-2/pretraining-text-CE`】：此檢查點允許以比預先訓練更保守的學習速率引入中繼量的非結構化資料，吸收特定領域的知識，同時避免災難性忘記。
+ POST-TRAINED - 【`nova-lite-2/prod`】：這是模型完全對齊的最終檢查點，已經過所有相關和訓練後步驟。

下表詳細說明訓練前和中訓練的不同條件。


| 資料類型 | 執行 | 使用檢查點 | 
| --- |--- |--- |
| 大規模的非結構化原始網域資料 （文件、日誌、文章、程式碼等） | 持續預先訓練 | 預先訓練 | 
| 大規模的非結構化原始網域資料 （文件、日誌、文章、程式碼等） | 中階訓練 | 預先訓練 | 
| 少量的非結構化原始資料。結構化推理追蹤/CoT 資料 | 中階訓練 | 中階訓練 | 
| 結構化示範 （高品質輸入輸出對、策劃的任務指示、多迴轉對話） | 完整微調 | 中階訓練 | 
| 結構化示範 （高品質輸入輸出對、策劃的任務指示、多迴轉對話） | 參數高效率微調 | 訓練後 | 

## 要使用哪個檢查點？
<a name="nova-forge-cpt-which"></a>

部分預先訓練的純文字和完全預先訓練的純文字檢查點通常會收斂得更快，且需要較少的訓練步驟才能進行網域調整。不過，他們沒有指令調校，需要經過訓練後步驟，才能執行有用的任務並遵循指示。GA 檢查點可能需要更多步驟來調整，但為小規模實驗提供更安全的起點，即使經過 CPT 訓練，也會在訓練功能後維持其中一部分。

一般而言，對於大型訓練資料集 (>10B 權杖），從僅部分預先訓練的文字或僅完全預先訓練的文字檢查點開始，以獲得更有效率且穩定的訓練，因為模型的知識庫將會大幅修改。使用小型資料集 (<10B 字符），使用 GA 檢查點來保留指示遵循功能，同時適應網域。

## 如何使用 1.0 或 2.0 模型的資料混合？
<a name="nova-forge-cpt-mixing"></a>

使用新的網域資料執行 CPT 時，將新資料與先前在模型訓練前階段使用的一些資料混合使用會非常有益。將舊資料與新網域資料混合可解決兩個問題：
+ 忘記控制：保留模型的現有技能和知識，以防止災難性忘記。如果沒有資料混合，僅在窄域資料上進行訓練會導致模型覆寫一般功能。例如，僅根據法律文件訓練的模型可能會失去其編寫程式碼或執行數學的能力。混合一般網域資料集可在取得新網域時保留這些一般技能。
+ 最佳化穩定性：透過錨定模型的內部表示來維持訓練穩定性。在 CPT 期間，修改模型學習到的功能，資料混合提供來自各種來源的漸層，可順暢地引導此適應。如果沒有它，在窄分佈上進行訓練可能會導致梯度不穩定，其中模型的表示式移動太大，導致訓練差異、損失尖峰或現有功能摺疊。這是穩定性-持久性權衡：模型應足夠可整形，以學習新的領域知識，但足夠穩定，不會破壞其已知的內容。

**新 CPT 資料混合功能**  
存取 Amazon Nova 預先訓練資料和檢查點是 Amazon Nova CPT 自訂的核心產品之一。Amazon Nova CPT 自訂可讓您輕鬆地將網域資料與 Amazon Nova 的預先訓練 corpus 混合。此外，可以變更特定 Amazon Nova 資料類別 （例如程式碼、數學、推理等） 的取樣率，以及其控制成補充網域資料的比例。這允許強化與使用案例一致的功能，同時將模型調整為特定網域。

**尋找最佳混合比率**  
Amazon Nova 資料與網域資料的最佳比率取決於資料集的網域、複雜性、大小、品質，以及維護一般功能的重要性。此比率必須透過實驗探索。決定要混合多少 Amazon Nova 資料的實驗架構如下。

選取代表性的網域資料子集 （例如 5B 權杖），並在所有實驗執行中保持此常數。

執行小規模 CPT 實驗只會改變混合於以下項目的 Amazon Nova 資料量：
+ 不混合：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 1.0 組態與資料混合
<a name="nova-forge-cpt-nova1-config"></a>

```
run:
  name: "cpt-job-name"             # A descriptive name for your training job
  model_type: "amazon.nova-lite-v1:0:300k"  # Model variant specification, do not change
  model_name_or_path: "nova-lite/prod"
  replicas: 4 
  data_s3_path: "s3://path/to/data/xyz.jsonl"
  output_s3_path: "s3://path/to/output/checkpoint"
  
skip_recipe_validation: true
training_config:
  max_length: 32768
  global_batch_size: 64
  trainer:
    max_steps: 5000
  model:
    hidden_dropout: 0.1
    attention_dropout: 0.1
    ffn_dropout: 0.1
    optim:
      lr: 1.5e-05
      name: distributed_fused_adam
      adam_w_mode: true
      eps: 1.0e-06
      weight_decay: 0.05
      betas:
      - 0.9
      - 0.999
      sched:
        warmup_steps: 500
        constant_steps: 0
        min_lr: 1.5e-06
        
data_mixing:
  dataset_catalog: cpt_text_lite
  sources:
    nova_data:
      en-entertainment: 0.11%
      en-factual: 4.83%
      en-legal: 0.48%
      en-long-form-text: 6.26%
      en-mined: 16.79%
      en-other: 1.79%
      en-scientific: 10.53%
      en-social: 12.43%
      en-techqa: 13.95%
      code: 7.50%
      high-util-lang: 8.05%
      low-util-lang: 6.51%
      math: 8.76%
      en-finance: 1%
      tables: 1%
    customer_data:
      percent: 90
```

**這些類別代表什麼意思**


| 類別名稱 | 資訊詳細資訊 | 
| --- | --- | 
| en-entertainment | 媒體和娛樂內容，包括影片文字記錄、遊戲對話和以娛樂為重心的討論。 | 
| en-factual | 著重於傳達準確資訊的參考資料、百科全書內容、教育資源和事實文件。 | 
| en-finance | 財務文字，包括市場報告、經濟分析、投資策略、財務新聞文章、收益報告和其他財務相關內容，可協助模型了解經濟概念和財務術語。 | 
| en-legal | 法律文件、法院程序、合約、法律、法規和法律分析文字。 | 
| en-long-form-text | 延伸著作，包括書籍、學術論文、冗長文章和其他重要文字文件。 | 
| en-mined | 從各種 Web 來源擷取的文字資料，包括論壇、評論、討論和一般 Web 內容，並重新撰寫以確保高訓練效能。 | 
| en-other | 其他無法明確放入其他類別的英文內容。 | 
| en-scientific | 科學論文、研究文件、技術報告，以及各種領域的科學討論。 | 
| en-social | 社交媒體貼文、對話、討論和其他形式的社交通訊。 | 
| en-techqa | 技術文件、使用者指南、常見問答集頁面、技術論壇，以及與技術相關的 Q 內容。 | 
| code | 來自各種程式設計語言和平台的程式設計原始程式碼、文件和技術討論。 | 
| high-util-lang | 具有大量可用訓練資料的語言文字內容，包括 德文 (DE)、義大利文 (IT)、西班牙文 (ES)、法文 (FR)、印地文 (HI)、日文 (JP)、阿拉伯文 (AR) 和葡萄牙文 (PT) | 
| low-util-lang | 具有少量可用訓練資料的其他口語語言文字內容。 | 
| math | 數學內容，包括教科書、問題、解決方案和數學討論。 | 
| tables | 表格式格式的結構化資料，包括試算表、資料庫、CSV 檔案、統計資料表、財務報告和其他資料列欄的結構化資訊，可協助模型了解和處理結構化資料關係和模式。 | 

#### 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 `reasoning-code`1.0 中使用的其他推理特定類別 （例如 `reasoning-math`、、`reasoning-instruction-following`)。

類別和資訊標籤摘要：


| 類別名稱 | 資訊詳細資訊 | 
| --- | --- | 
| agents | 在 AI 系統中專注於自動決策、任務完成和目標導向行為的訓練資料 | 
| baseline | 專注於一般理解、基本溝通和核心語言功能的基本語言資料 | 
| chat | 顯示自然對話流程、內容維護和適當社交互動的對話交流 | 
| code | 來自各種程式設計語言和平台的程式設計原始程式碼、文件和技術討論。 | 
| factuality | 著重於準確性、來源驗證和事實評估的參考資料和已驗證資訊 | 
| identity | 專注於一致角色特徵、價值和互動風格的人格架構和行為模式 | 
| long-context | 延伸文字和複雜的敘述，著重於在冗長的交換之間維持一致性和相關性 | 
| math | 數學內容，包括教科書、問題、解決方案和數學討論。 | 
| rai | 強調道德 AI 原則、安全考量和負責任技術部署的案例和案例 | 
| instruction-following | 根據不同層級的使用者提示和指示詞，精確執行任務的範例 | 
| stem | 涵蓋科學、技術、工程和數學的技術內容，包括解決問題和理論概念 | 
| planning | 顯示策略思維、step-by-step任務明細和高效資源配置的序列 | 
| 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 Excel 的一些案例包括：
+ **結構化或複雜的分類任務**：例如，將內部文件或合約分類為許多自訂類別。使用 SFT，模型可以學習這些特定類別遠優於單獨提示。
+ **具有已知答案的問題回答或轉換任務**：例如，微調模型以回答公司知識庫的問題，或在格式之間轉換資料，其中每個輸入都有正確的回應。
+ **格式和樣式一致性**：如果您需要模型一律以特定格式或色調回應，您可以微調正確格式/色調的範例。例如，在顯示特定品牌語音或樣式的提示回應對上進行訓練，可以在其輸出中教導具有該樣式的模型。指示追蹤行為通常透過 SFT 最初就精心策劃的良好助理行為範例進行教學。

當您可以指定正確的行為時，SFT 是教導 LLM 新技能或行為的最直接方式。它利用模型現有的語言理解，並專注於您的任務。當差距是知識而非行為時，請勿使用 SFT；它不會讓模型學習新的事實、術語或最近的事件。在這些情況下， 偏好在大型網域內 corpora 或擷取擴增產生的持續預先訓練，以在推論時帶來外部知識。當您可以測量品質但無法標記單一正確答案時，使用可驗證的獎勵或 LLM-as-judge進行微調可能較 SFT 為佳。

根據 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 專屬資料類別**：文字資料集包含數個類別，包括：自動決策、任務完成、目標導向資料集 （代理程式）、推理和非理性的精確任務執行資料集 (reasoning-instruction-following、指示遵循）、展示策略思維的序列，以及step-by-step任務明細 （規劃）、負責任的 AI (rai)、長內容、事實、數學、莖等。同樣地，多模態資料集包括影片、螢幕擷取畫面、圖表等。

資料混合功能可讓您將自己的微調訓練範例與用於微調 Nova 的 Nova 資料集範例混合。這可以防止過度擬合您的自訂訓練和 Nova 功能的「災難性忘記」，或在從新的預先訓練檢查點訓練時協助您建置功能。

若要混合 Nova 資料，您只需在 training\$1config 區段下，將 data\$1mixing 區塊新增至配方 YAML 檔案。文字和多模態資料混合區塊具有不同的內容，而 Nova 1.0 和 Nova 2.0 的資料混合區塊略有不同。請參閱對應的配方。

### 支援模型
<a name="supported-models"></a>
+ Nova 1.0 (Micro、Lite、Pro)
+ Nova 2.0 Lite

### 支援的模態
<a name="supported-modality"></a>
+ 文字
+ 多模態

## YAML 組態範例
<a name="yaml-configuration-examples"></a>

### Nova 1.0 文字混合的範例資料混合區塊
<a name="nova-1-text-mixing"></a>

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

  ## MLFlow configs
  mlflow_tracking_uri: "" # Required for MLFlow
  mlflow_experiment_name: "my-lora-experiment" # Optional for MLFlow. Note: leave this field non-empty
  mlflow_run_name: "my-lora-run" # Optional for MLFlow. Note: leave this field non-empty
  
## Training specific configs
training_config:
  max_length: 32768               # Maximum context window size (tokens).
  global_batch_size: 64           # Global batch size, allowed values are 16, 32, 64

  trainer:
    max_epochs: 2                # Number of training epochs

  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
    ffn_dropout: 0.0             # Dropout for feed-forward networks, must be between 0.0 and 1.0

    optim:
      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
      betas:                   # Adam optimizer betas, must be between 0.0 and 1.0
        - 0.9
        - 0.999
      sched:
        warmup_steps: 10     # Learning rate warmup steps
        constant_steps: 0    # Steps at constant learning rate
        min_lr: 1e-6         # Minimum learning rate

    peft:
      peft_scheme: "lora"      # Enable LoRA for parameter-efficient fine-tuning
      lora_tuning:
        loraplus_lr_ratio: 8.0  # LoRA+ learning rate scaling factor, must be between 0.0 and 100.0
        alpha: 32            # Scaling factor for LoRA weights. Allowed values are 32, 64, 96, 128, 160 and 192
        adapter_dropout: 0.01  # Regularization for LoRA parameters. Must be between 0.0 and 1.0

data_mixing:
  dataset_catalog: sft_text       # 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
      chat: 51                    # Conversational exchanges demonstrating natural dialogue flow
      code: 8                     # Programming examples and solutions spanning multiple languages
      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: 6                     # science, technology, engineering, and mathematics content
      planning: 2                 # sequences demonstrating strategic thinking and step-by-step task breakdown
      reasoning: 8                # logical problem-solving and analytical thinking demonstrations
      rag: 1                      # retrieval-augmented generation examples
      translation: 9              # language translation tasks
```

### 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 1.0 多模態資料混合
<a name="nova-1-multimodal-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_mm
  sources:
    customer_data:
      percent: 50
    nova_data:
      agents: 11
      docs: 17
      perception: 10
      rag: 4
      rai: 3
      reasoning: 10
      stem: 17
      text: 10
      video: 18
```

### 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 1.0 檢查點
<a name="nova-1-checkpoints"></a>
+ **預先訓練 **【`nova-<micro/lite/pro>/pretraining-text-partial`】：在 Nova 預先訓練的持續學習率階段之後的檢查點，其中模型在數兆個文字字符上進行訓練。【階段 1 的結果】
+ **MID-TRAINED** 【`nova-<micro/lite/pro>/pretraining-text-full`】：在 Nova 預先訓練的所有階段之後的純文字檢查點，以及使用數兆個文字字符進行中期訓練。如果您不希望模型看到任何多模態資料，請使用 。【階段 3 的結果】
+ **MID-TRAINED** 【`nova-<lite/pro>/pretraining-mm-full`】：Nova 預先訓練和中階訓練所有階段之後的檢查點，包括多模態資料，具有數兆個字符。【具有多模式資料的階段 3 結果】
+ **最終 **【`nova-<micro/lite/pro>/prod`】：已通過所有訓練前和訓練後步驟的完全對齊最終檢查點。【階段 4 的結果】

### Nova 2.0 檢查點
<a name="nova-2-checkpoints"></a>
+ **預先訓練** 【`nova-lite-2/pretraining-text-RD`】：在持續學習率和漸進式階段之後的檢查點，其中模型是以數兆個字符進行訓練。【階段 2 的結果】
+ **MID-TRAINED** 【`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\$1 權杖 | 持續預先訓練 | 持續學習結束率 (CLR) | 
| 大規模的非結構化原始網域資料 | 100B\$1 權杖 | 中階訓練 | CLR 結束 | 
| 非結構化原始資料的較小磁碟區；結構化推理追蹤/CoT 資料 | 1B\$1 權杖 | 中階訓練 | Nova 基礎模型 | 
| 結構化示範 （高品質輸入輸出對、策劃的任務指示、多迴轉對話） | 1K\$1 範例 | 受管微調 (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**
  + **Nova Lite 1.0 – 4 p5.48xlarge**
  + **Nova Micro 1.0 – 4 p5.48xlarge**
  + **Nova Pro 1.0 – 6 p5.48xlarge**
+ 使用[此處](https://catalog.us-east-1.prod.workshops.aws/workshops/dcac6f7a-3c61-4978-8344-7535526bf743/en-US)提供的指示安裝 Forge Specific 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 最相關的參數是學習率、alpha （擴展參數）、訓練和暖機步驟的 epoch 數目；對於完整排名，主要是學習率、epoch 數目和暖機步驟。

## 實驗定序和資料混合
<a name="experiment-sequencing"></a>
+ 如果您只有一組任務的 SFT 資料 (train/dev/test)，並且只關心這些任務的測試效能
  + 在不混合 【最終】 Nova 檢查點的情況下執行 SFT。使用預設 SFT 超參數，並選擇性地針對您的使用案例進行最佳化。監控驗證指標和/或評估較大資料集的中繼檢查點。
+ 如果您只有一組任務的 SFT 資料 (train/dev/test)，並關心感興趣的領域中這些任務和一般基準測試的效能
  + 首先在訓練前檢查點 (PRE-TRAINED 或 MID-TRAINED 檢查點，而非 FINAL) 上使用 Nova 資料混合 SFT。使用中繼檢查點可讓模型更好地整合您的自訂資料與 Nova 的專屬資料，同時維持強大的一般功能。
  + 執行較短的 SFT 訓練執行時，混合了不同數量的 Nova 資料 （例如 10%、25%、50%、75%) 和 Nova 資料類別選擇，以補充您的使用案例 （例如，如果您關心以下功能的一般指示，請在類別後挑選指示）。監控驗證指標並評估混合是否有助於一般基準的效能。選取可在任務和一般效能上獲得最佳效能組合的訓練組合和檢查點。根據使用案例，可以使用強化微調 (RFT) 進一步改善任務和一般效能。

## 準備 SFT 的資料集
<a name="dataset-preparation"></a>

**Nova 1.0**：資料準備說明於 https：//[https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tune.html](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tune.html)

**Nova 2.0**：使用適用於 Nova 1.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：//[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>`除非任務特別要求，並確保推理內容清晰且與問題解決程序相關。

## 負責任的 AI Toolkit 和內容管制
<a name="responsible-ai"></a>

**內容管制設定**：Nova Forge 客戶可存取 Nova Lite 1.0 和 Pro 1.0 模型的可自訂內容管制設定 (CCMS)。CCMS 可讓您調整內容管制控制，以符合您的特定業務需求，同時維護基本的負責任 AI 防護措施。若要判斷您的業務使用案例是否符合 CCMS 的資格，請聯絡您的 Amazon Web Services 客戶經理。

Nova Forge 提供負責任的 AI Toolkit，其中包含訓練資料、評估基準和執行時間控制，協助您讓模型符合 Nova 負責任的 AI 準則。

**訓練資料**：資料混合中的「RAI」類別包含強調負責任 AI 原則、安全考量和負責任技術部署的案例和案例。使用這些來在持續的預先訓練期間，以負責任的方式調整您的模型。

**評估**：基準任務可用於測試模型偵測和拒絕不適當、有害或不正確內容的能力。使用這些評估來衡量基本模型效能與自訂模型效能之間的差異。

**執行時間控制**：根據預設，Nova 的執行時間會在推論期間控制中等模型回應。若要修改特定商業案例的這些控制項，請聯絡您的 Amazon Web Services 客戶經理，請求可自訂的內容管制設定 (CCMS)。

### 共同的安全責任
<a name="shared-responsibility"></a>

安全是 Amazon Web Services 與客戶共同的責任。變更基礎模型或使用持續的預先訓練來改善特定使用案例的效能，可能會影響新模型的安全性、公平性和其他屬性。

我們使用強大的適應方法，將安全、公平性和其他保護的變更降至最低，同時將模型未自訂任務對模型效能的影響降至最低。

您負責：
+ End-to-end測試
+ 判斷測試結果是否符合其對安全性、公平性和其他屬性的特定期望，以及整體有效性

如需詳細資訊，請參閱您計劃使用之服務的 Amazon Web Services 負責任使用 AI 指南、Amazon Web Services 負責任 AI 政策、 AWS 可接受的使用政策和 AWS 服務條款。

### 可自訂的內容管制設定 (CCMS)
<a name="ccms"></a>

CCMS 可讓您調整與業務需求相關的控制，同時維護基本、不可設定的控制，以確保負責任地使用 AI。

這些設定允許透過三種可用組態產生內容：
+ 僅安全性
+ 結合安全、敏感內容和公平性
+ 合併所有類別

四個內容管制類別為：

1. **安全** – 涵蓋危險的活動、武器和管制物質

1. **敏感內容** – 包括褻瀆、裸露和霸凌

1. **公平性** – 解決偏差和文化考量

1. **安全性** – 涉及網路犯罪、惡意軟體和惡意內容

無論您的 CCMS 組態為何，Amazon Nova 都會強制執行基本、不可設定的控制，以確保負責任地使用 AI，例如防止兒童受到傷害並保留隱私權的控制。

#### 使用 CCMS 的建議
<a name="ccms-recommendations"></a>

使用 CCMS 時，建議您使用持續預先訓練 (CPT)，並從 RAI 前對齊檢查點 (PRE-TRAINING-Early、PRE-TRAINING-Mid 或 PRE-TRAINING-Final) 開始，而不是 GA/FINAL 檢查點。這些檢查點尚未經過安全訓練或轉向特定的 RAI 行為，可讓您更有效率地根據內容管制要求進行自訂。

**秘訣**：使用 CCMS 與資料混合時，請考慮調整 nova\$1data 組態中的「rai」類別百分比，以符合您的特定內容管制要求。

#### 可用性
<a name="ccms-availability"></a>

CCMS 目前可供核准的客戶使用：
+ Nova Lite 1.0 和 Pro 1.0 模型
+ Amazon Bedrock 隨需推論
+ us-east-1 （維吉尼亞北部） 區域

若要為 Forge 模型啟用 CCMS，請聯絡您的 Amazon Web Services 客戶經理。

## 評估方法
<a name="evaluation"></a>

### 先決條件
<a name="evaluation-prerequisites"></a>
+ 來自訓練任務`manifest.json`檔案的檢查點 S3 URI （適用於訓練模型）
+ 以正確格式上傳至 S3 的評估資料集
+ 評估結果的輸出 S3 路徑

**現成基準**：使用現成基準驗證一般任務的效能。如需詳細資訊，請參閱：https：//[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>
+ **優先考慮磁碟區的資料品質**：高品質、多樣化和代表性的訓練資料比大量低品質資料更有價值。
+ **包含 reasoning-instruction-following 類別**：使用資料混合時，請包含 "reasoning-instruction-following" 類別，以維持跨任務的強大一般效能。
+ **使用預設學習率**：從預設學習率 (LoRA 為 1e-5，完整排名 SFT 為 5e-6) 開始，並僅在需要時根據驗證指標進行調整。
+ **Balance Nova 資料混合**：混合最大 50% 的 Nova 資料，以取得最佳的延遲效能平衡。較高的百分比可以改善一般功能，但可以增加訓練時間。
+ **監控驗證指標**：定期在訓練期間評估中繼檢查點，以提早偵測過度擬合或效能降低。
+ **對代表性資料集進行測試**：確保您的評估資料集準確代表您的生產使用案例，以進行有意義的效能評估。

## 準備訓練任務組態
<a name="prepare-training-job-config"></a>

### Hyper 參數
<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 最相關的參數是學習率、alpha （擴展參數）、訓練和暖機步驟的 epoch 數目；對於完整排名，主要是學習率、epoch 數目和暖機步驟。配方會預先填入建議的預設值。

## 設定資料混合區塊
<a name="set-up-data-mixing-block"></a>

使用跨資料集類別的適當百分比分佈，將 data\$1mixing 區段新增至您的配方。

以下說明每個可用的 Nova 資料類別。

### Nova 1.0 組態與資料混合
<a name="nova-1-config-data-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_text       # 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
      chat: 51                    # Conversational exchanges demonstrating natural dialogue flow
      code: 8                     # Programming examples and solutions spanning multiple languages
      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: 6                     # Technical content covering science, technology, engineering, and mathematics
      planning: 2                 # Sequences demonstrating strategic thinking and step-by-step task breakdown
      reasoning: 8                # Logical deduction, critical thinking, and analytical problem-solving scenarios
      rag: 1                      # combining retrieved external knowledge with generated responses
      translation: 9              # Multi-language content pairs showing accurate translation
```

這些類別代表什麼意思？


**Nova 1.0 文字資料類別**  

| 類別名稱 | 資訊詳細資訊 | 
| --- | --- | 
| 代理程式 | 在 AI 系統中專注於自動決策、任務完成和目標導向行為的訓練資料 | 
| chat | 顯示自然對話流程、內容維護和適當社交互動的對話交流 | 
| code | 涵蓋多種語言、偵錯案例和軟體開發最佳實務的程式設計範例和解決方案 | 
| rai | 強調道德 AI 原則、安全考量和負責任技術部署的案例和案例 | 
| instructions-flowing | 根據不同層級的使用者提示和指示詞，精確執行任務的範例 | 
| 主體 | 涵蓋科學、技術、工程和數學的技術內容，包括解決問題和理論概念 | 
| 規劃 | 顯示策略思維、step-by-step任務明細和高效資源配置的序列 | 
| 推論 | 邏輯扣除、關鍵思考和分析具有明確推理鏈的問題解決案例 | 
| 布 | 有效地將擷取的外部知識與產生的回應結合，以提供準確、情境式資訊的範例 | 
| translation | 多語言內容對顯示準確的翻譯，同時保留內容、色調和文化細微差別 | 

### 多模式資料混合 (Nova 1.0)
<a name="nova-1-mm-data-mixing"></a>

```
data_mixing:
  dataset_catalog: sft_mm        # Nova multi-modal 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: 11                  # Combining visual and textual inputs
      docs: 17                    # Document-centric data combining text, images, layouts, and formatting
      perception: 10              # Visual-linguistic pairs t
      rag: 4                      # Combining retrieved external knowledge with generated responses
      rai: 3                      # Ethical AI principles, safety considerations, and responsible technology deployment
      reasoning: 10               # Logical analysis, problem-solving, and drawing conclusions
      stem: 17                    # Technical content pairing visual elements (diagrams, charts, equations) with text
      text: 10                    # A balanced pool of contextual text data create from the text-only SFT datasets
      video: 18                   # Video datasets
```

這些類別代表什麼意思？


**Nova 1.0 多模式資料類別**  

| 類別名稱 | 資訊詳細資訊 | 
| --- | --- | 
| 代理程式 | 結合視覺和文字輸入的訓練組，示範 AI 系統應如何解譯、採取行動並與多感知環境資訊互動 | 
| 文件 | 文件中心資料結合文字、影像、配置和格式，以訓練模型了解和處理各種文件類型和結構，以協助處理 PDF 內容辨識等概念 | 
| 感知 | 視覺語言配對教學模型，以準確描述、解譯和推理自然語言的影像、影片和其他視覺輸入 | 
| 布 | 多模式擷取範例，示範如何有效地結合和參考視覺和文字外部知識，以產生準確的情境式回應 | 
| 推論 | 結合視覺和文字元素的案例，可示範邏輯分析、問題解決和跨多個模態得出結論 | 
| 主體 | 技術內容將視覺元素 （圖表、圖表、方程式） 與文字配對，以教導科學、數學和技術概念和問題解決 | 
| text | 從純文字 SFT 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 | 來自各種程式設計語言和平台的程式設計原始程式碼、文件和技術討論。 | 
| 事實 | 著重於準確性、來源驗證和事實評估的參考資料和已驗證資訊 | 
| 身分 | 專注於一致角色特徵、價值和互動風格的人格架構和行為模式 | 
| 長內容 | 延伸文字和複雜的敘述，著重於在冗長的交換之間維持一致性和相關性 | 
| 數學運算 | 數學內容，包括教科書、問題、解決方案和數學討論。 | 
| rai | 強調道德 AI 原則、安全考量和負責任技術部署的案例和案例 | 
| instructions-flowing | 根據不同層級的使用者提示和指示詞，精確執行任務的範例 | 
| 主體 | 涵蓋科學、技術、工程和數學的技術內容，包括解決問題和理論概念 | 
| 規劃 | 顯示策略思維、step-by-step任務明細和高效資源分配的序列 | 
| 推理聊天 | 專注於邏輯討論和結構化對話流程的分析對話案例 | 
| 推理程式碼 | 專注於系統化解決方案開發的程式設計挑戰和演算法問題 | 
| 推理事實 | 著重於關鍵評估和驗證程序的資訊評估案例 | 
| reasoning-instruction-following | 專注於系統化解譯和系統化執行的複雜任務分析 | 
| 推理數學 | 專注於邏輯進展和解決方案策略的數學問題解決案例 | 
| 推理規劃 | 專注於實現目標的系統性方法的策略決策案例 | 
| reasoning-rag | 著重於情境理解和相關應用程式的資訊擷取和合成案例 | 
| reasoning-rai | 專注於系統性評估 AI 安全和公平性的道德決策案例 | 
| reasoning-stem | 專注於系統分析和解決方案開發的科學問題解決案例 | 
| 布 | 有效結合擷取的外部知識與產生的回應，以提供準確、情境式資訊的範例 | 
| translation | 多語言內容對顯示準確的翻譯，同時保留內容、色調和文化細微差別 | 

### 多模式資料混合 (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 螢幕擷取畫面和技術圖表的程式設計界面和開發環境 | 
| 文件 | 文件中心資料結合文字、影像、配置和格式，以訓練模型了解和處理各種文件類型和結構，以協助處理 PDF 內容辨識等概念 | 
| 一般 | 以廣泛理解影像、圖形和隨附的描述性文字為重點的多樣化視覺文字內容 | 
| 依據 | 視覺參考資料和標籤影像，著重於將語言概念連接到真實世界視覺呈現 | 
| 布 | 多模式擷取範例，示範如何有效地結合和參考視覺和文字外部知識，以產生準確的情境式回應 | 
| 螢幕擷取畫面 | 應用程式界面擷取和數位顯示影像，著重於了解軟體界面和數位互動 | 
| text | 從純文字 SFT Nova 資料集類別建立的內容文字資料平衡集區，以提供一般功能 | 
| translation | 專注於影像和文化視覺元素中文字的多語言解釋的跨語言視覺內容 | 
| 影片 | 以動作為基礎的視覺內容，著重於時間理解和循序視覺敘述理解 | 

## 如何啟動任務
<a name="how-to-launch-job"></a>

如果您只需要取得啟動第一次 SFT 執行的基本詳細資訊，也可以參考 README。

容器資訊：


**容器資訊和啟動命令**  

| 模型 | 技術 | Subcategory | 映像 URI | Hyperpod 啟動器命令 | 
| --- | --- | --- | --- | --- | 
| 新版本 1.0 | 微調 | SFT/PEFT | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest | Hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/nova\$11\$10/nova\$1micro/SFT/nova\$1micro\$11\$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-latest" \$1' | 
| 新版本 1.0 | 微調 | 具有資料混合的 SFT | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX | Hyperpod start-job \$1 -n kubeflow \$1 --recipe fine-tuning/nova/forge/nova\$11\$10/nova\$1micro/SFT/nova\$1micro\$11\$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:HP-SFT-DATAMIX" \$1' | 
| 新版本 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' | 
| 新版本 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' | 
| 新版本 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' | 
| 新版本 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 1.0 軸：
+ 如果您想要使用一般 sft 任務 ，您應該可以在此資料夾下看到一個配方
  + cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/fine-tuning/nova\$11\$10/nova\$1lite/SFT，然後您應該能夠在此資料夾下看到一個名為 nova\$1lite\$11\$10\$1p5x8\$1gpu\$1sft.yaml 的配方
+ 如果您想要使用資料混合 sft 任務，您可以導覽至 sft Forge 配方資料夾
  + cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/fine-tuning/nova/forge/nova\$11\$10/nova\$1lite/SFT，您應該能夠在此資料夾下看到一個名為：nova\$1lite\$11\$10\$1p5x8\$1gpu\$1sft\$1with\$1datamix.yaml 的配方
+ 編輯任務所需配方中的區段，例如名稱、data\$1s3\$1path、validation\$1s3\$1path、 output\$1s3\$1path 和 max\$1steps。由於我們正在執行 sft，因此在此不適用 epochs 的概念。

對於 Nova 2.0 軸：
+ 如果您想要使用一般 sft 任務 ，您應該可以在此資料夾下看到一個配方
  + cd /src/hyperpod\$1cli/sagemaker\$1hyperpod\$1recipes/recipes\$1collection/recipes/fine-tuning/nova\$12\$10/nova\$1lite/SFT，然後您應該能夠在此資料夾下看到一個名為 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，您應該能夠在此資料夾下看到一個名為：nova\$1lite\$12\$10\$1p5x8\$1gpu\$1sft\$1with\$1datamix.yaml 的配方
+ 編輯任務所需配方中的區段，例如名稱、data\$1s3\$1path、validation\$1s3\$1path、put\$1s3\$1path 和 max\$1steps。由於我們正在執行 sft，因此在此不適用 epochs 的概念。

資料混合組態看起來會相同，但底部會有類似這樣的額外資料混合區段

```
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 的結果百分比。例如，在上述百分比選擇中，在訓練期間，我們將使用 25% 的 customer\$1data 和 75% 的 nova\$1data，其中 15% 將是客服人員、15% 將是business-and-finance、15% 將是科學、15% 將是程式碼，而 15% 將是factual-and-news

秘訣：再次執行 pip install -e 。您已準備好提交任務！

我們將覆寫這裡的幾個參數，以使用資料混合：

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

專業秘訣 ：請務必一律使用 -o wide 旗標，因為任務執行所在的 EKS 節點可協助您在 UI AWS 中更快地找到日誌

## 如何監控任務
<a name="how-to-monitor-job"></a>

您可以透過以下三種方式之一來檢視日誌：

### a) 使用 CloudWatch
<a name="using-cloudwatch"></a>

您的日誌可在包含 CloudWatch 下 Hyperpod 叢集的 Amazon Web Services 帳戶中使用。若要在瀏覽器中檢視它們，請導覽至您帳戶中的 CloudWatch 首頁，並搜尋您的叢集名稱。例如，如果您的叢集稱為 my-hyperpod-rig，則日誌群組會有 字首：
+ 日誌群組：/aws/sagemaker/Clusters/my-hyperpod-rig/\$1UUID\$1
+ 進入日誌群組後，您可以使用 - hyperpod-i-00b3d8a1bf25714e4 等節點執行個體 ID 來尋找您的特定日誌。
  + 此處的 i-00b3d8a1bf25714e4 代表訓練任務執行所在的 Hyperpod 易記機器名稱。請記得在先前的命令 kubectl 中，如何取得稱為 NODE 的 Pod -o wide -w -n kubeflow \$1 (head -n1 ； grep my-cpt-run) 輸出。
  + 在此情況下，「主要」節點執行是在 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
```

若要完成任務，請將啟動 SFT 任務取代為完成 SFT 任務

然後，您可以按一下結果並挑選「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>

您也可以提供自訂資料，方法是將它們格式化為以下格式，然後使用下列容器取得推論結果，並視需要取得校正的日誌機率。

具有下列結構的每個任務的 Crate 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'}"
}
```

欄位描述：
+ 提示：傳送至模型的格式化輸入
+ 推論：模型產生的回應
+ 金色：來自輸入資料集的預期正確答案、來自輸入的回應欄位
+ 中繼資料：從輸入傳遞的選用中繼資料

### 準備評估組態
<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 | 命令 | 
| --- | --- | --- | --- | --- | 
| 新版本 1.0 | 評估 | 評估 | 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest | Hyperpod start-job \$1 -n kubeflow \$1 --recipe evaluation/nova/nova\$11\$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' | 
| 新版本 2.0 | 評估 | 評估 | 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 的專屬「reasoning-instruction-following」類別可大幅改善一般基準測試的效能。如果您關心使用資料集執行 SFT 之後所迴歸的一般基準，建議您在資料混合策略中包含此類別。
+ 對於 MM 資料集，我們的實驗指出，將超過 20% 的視訊類別整合到混合中有助於維持一般基準效能。
+ 此外，具有資料混合的 SFT 對學習率非常敏感，因此我們的調查結果建議使用預設學習率進行微調，即 1e-5 for LoRA 和 5e-6 for FR。
+ 最後，如果您混合 Nova 專屬資料集，則會在延遲和效能之間做出取捨，因此我們的問題清單建議在最大範圍內混合 50% 作為良好的平衡。

# 負責任的 AI Toolkit 和內容管制
<a name="nova-responsible-ai-toolkit"></a>

## 負責任的 AI Toolkit
<a name="nova-responsible-ai-toolkit-overview"></a>

Nova Forge 提供負責任的 AI Toolkit，其中包含訓練和評估資料，以在訓練過程中使模型與 Amazon Nova 負責任的 AI 指導方針保持一致，以及在推論期間控制執行時間以調節模型回應。

**訓練資料** – 強調負責任 AI 原則、安全考量和負責任技術部署的案例和案例可用於資料混合，以便在繼續訓練期間以負責任的方式調整模型。

**評估** – 測試模型偵測和拒絕不適當、有害或不正確內容能力的評估可作為基準任務，以確定基本模型效能和自訂模型效能之間的差異。

**執行時間控制** – 根據預設，Amazon Nova 的執行時間會在推論期間控制中等模型回應。若要修改這些執行時間控制項，請聯絡 Amazon Web Services 客戶經理，請求 Amazon Nova 的可自訂內容管制設定。

安全是 Amazon Web Services 與其使用者之間的共同責任。變更基礎模型或使用持續的預先訓練來改善特定使用案例的效能，可能會影響新模型的安全性、公平性和其他屬性。強大的適應方法可將基本模型內建的安全、公平性和其他保護變更降至最低，同時將模型未自訂任務對模型效能的影響降至最低。需要對代表使用案例的資料集上的應用程式End-to-end測試，以判斷測試結果是否符合對安全性、公平性和其他屬性的特定期望，以及整體有效性。如需詳細資訊，請參閱 Amazon Web Services 負責任地使用 AI 指南、Amazon Web Services 負責任的 AI 政策、Amazon Web Services 可接受的使用政策和 Amazon Web Services 服務條款。

## 可自訂的內容管制
<a name="nova-customizable-content-moderation"></a>

可自訂的內容管制設定 (CCMS) 允許調整與業務需求相關的控制，同時維護基本、不可設定的控制，以確保負責任地使用 AI。

這些設定允許透過三種可用組態產生內容：
+ 僅限安全性
+ 結合安全、敏感內容和公平性
+ 合併所有類別

四個內容管制類別為：

1. **安全** – 涵蓋危險的活動、武器和管制物質

1. **敏感內容** – 包括褻瀆、裸露和霸凌

1. **公平性** – 解決偏差和文化考量

1. **安全性** - 涉及網路犯罪、惡意軟體和惡意內容

無論您的 CCMS 組態為何，Amazon Nova 都會強制執行基本、不可設定的控制，以確保負責任地使用 AI，例如防止兒童受到傷害並保留隱私權的控制。

使用 CCMS 時，建議使用持續預先訓練 (CPT)，並從預先 RAI 對齊檢查點 （僅部分或完全預先訓練的文字） 開始，而不是完全對齊的生產檢查點。這些檢查點尚未經過安全訓練或轉向特定的 RAI 行為，可讓您更有效率地根據內容管制要求進行自訂。

**提示**  
搭配資料混合使用 CCMS 時，請考慮調整 nova\$1data 組態中的「rai」類別百分比，以符合您的特定內容管制需求。

### 可用性
<a name="nova-ccms-availability"></a>

CCMS 目前可供核准的客戶使用：
+ Amazon Nova Lite 1.0 和 Pro 1.0 模型
+ Amazon Bedrock 隨需推論
+ us-east-1 （維吉尼亞北部） 區域

若要為 Forge 模型啟用 CCMS，請聯絡 Amazon Web Services 客戶經理。