

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

# Nova 2.0 上的 RFT
<a name="nova-hp-rft-nova2"></a>

RFT 訓練資料遵循 OpenAI 對話格式。每個訓練範例都是 JSON 物件，其中包含訊息、參考答案和選用的工具定義。本節提供在 Nova 2.0 上準備 RFT 有效訓練資料的指引。

**Topics**
+ [資料格式和結構](#nova-hp-rft-data-format)
+ [欄位描述](#nova-hp-rft-field-descriptions)
+ [超參數指引](#nova-hp-rft-monitoring-hyperparams)
+ [其他屬性](#nova-hp-rft-additional-properties)
+ [資料集大小建議](#nova-hp-rft-dataset-size)
+ [有效訓練資料的特性](#nova-hp-rft-effective-data)
+ [監控 RFT 訓練](nova-hp-rft-monitoring.md)

## 資料格式和結構
<a name="nova-hp-rft-data-format"></a>

每個訓練範例都是包含下列項目的 JSON 物件：
+ **訊息**：一系列使用系統、使用者和選擇性助理角色的對話式轉場
+ **reference\$1answer**：獎勵計算的預期輸出或評估條件
+ **工具** （選用）：模型可用的函數定義陣列
+ **id** （選用）：追蹤和刪除重複資料的唯一識別符

每個範例應該位於 JSONL 檔案中的單一行上，每行一個 JSON 物件。

### 範例 1：化學測試問題
<a name="nova-hp-rft-example-chemistry"></a>

下列範例顯示包含 Ground Truth 值的參考答案的化學問題：

```
{  
  "id": "chem-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a helpful chemistry assistant"  
    },  
    {  
      "role": "user",  
      "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C"  
    }  
  ],  
  "reference_answer": {  
    "donor_bond_counts": 2,  
    "acceptor_bond_counts": 4,  
    "explanation": "Calculated using Lipinski's rule of five: N-H groups (2 donors), N and O atoms with lone pairs (4 acceptors)"  
  }  
}
```

**注意**  
reference\$1answer 包含使用網域特定規則計算的 Ground Truth 值。您的獎勵函數會將模型的預測值與這些參考值進行比較，以計算獎勵分數。

### 範例 2：數學問題
<a name="nova-hp-rft-example-math"></a>

下列範例顯示解決方案步驟的數學問題：

```
{  
  "id": "math-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a math tutor"  
    },  
    {  
      "role": "user",  
      "content": "Solve: 2x + 5 = 13"  
    }  
  ],  
  "reference_answer": {  
    "solution": "x = 4",  
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]  
  }  
}
```

### 範例 3：工具用量
<a name="nova-hp-rft-example-tool"></a>

下列範例顯示具有預期行為的工具用量：

```
{  
  "id": "tool-001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a helpful game master assistant"  
    },  
    {  
      "role": "user",  
      "content": "Generate a strength stat for a warrior character. Apply a +2 racial bonus modifier."  
    }  
  ],  
  "tools": [  
    {  
      "type": "function",  
      "function": {  
        "name": "StatRollAPI",  
        "description": "Generates character stats by rolling 4d6, dropping the lowest die result, and applying a modifier.",  
        "parameters": {  
          "type": "object",  
          "properties": {  
            "modifier": {  
              "description": "An integer representing the modifier to apply to the total of the stat roll.",  
              "type": "integer"  
            }  
          },  
          "required": ["modifier"]  
        }  
      }  
    }  
  ],  
  "reference_answer": {  
    "tool_called": "StatRollAPI",  
    "tool_parameters": {  
      "modifier": 2  
    },  
    "expected_behavior": "Call StatRollAPI with modifier=2 and return the calculated stat value"  
  }  
}
```

## 欄位描述
<a name="nova-hp-rft-field-descriptions"></a>


| 欄位 | Description | 其他備註 | 必要 | 
| --- |--- |--- |--- |
| id | 此 RFT 範例的唯一識別符 | 字串 （例如 "sample-001")。適用於追蹤和重複資料刪除。 | 否 | 
| messages | 定義提示和內容的聊天訊息排序清單 |  物件的陣列。模型會依序查看它們。通常以系統訊息開頭，然後是使用者。 | 是 | 
| messages【】.role | 誰在訊息中說話 | 常見值："system"、"user" （有時在其他內容中為 "assistant") | 否 | 
| messages【】.content | 訊息的文字內容 | 純字串。對於系統，它是指示，對於使用者，它是任務或輸入。 | 否 | 
| 工具 | 在此範例中，模型可用的工具規格 | 陣列。每個項目都會定義工具的界面和中繼資料。類型可能包括「函數」或「內部」。 | 否 | 
| reference\$1answer | 此範例的預期模型輸出 | 字串或物件，視任務而定。用作評估或訓練的目標。 | 否 | 

**注意**  
任何其他自訂欄位 （例如 task\$1id、Cucky\$1level、 context\$1data) 都不會經過驗證，並將做為中繼資料傳遞給您的獎勵函數。

## 超參數指引
<a name="nova-hp-rft-monitoring-hyperparams"></a>

根據您的訓練方法，使用以下建議的超參數：

**一般：**
+ Epochs：1
+ 學習率 (lr)：1e-7
+ 世代數：8
+ 最大新權杖數：8192
+ 批次大小：256

**LoRA （低排名調整）：**
+ LoRA 排名：32

**注意**  
根據您的資料集大小和驗證效能調整這些值。監控訓練指標以防止過度擬合。

## 其他屬性
<a name="nova-hp-rft-additional-properties"></a>

「additionalProperties」： true 設定可讓您包含核心結構描述需求以外的自訂欄位，讓您靈活地新增獎勵函數進行適當評估所需的任何資料。

### 常見的其他欄位
<a name="nova-hp-rft-common-fields"></a>

您可以包含下列類型的其他欄位：

**中繼資料：**
+ task\$1id：追蹤的唯一識別符
+ difficulty\$1level：問題複雜性指標
+ 網域：主旨區域或類別
+ expected\$1reasoning\$1steps：解決方案中的步驟數

**評估條件：**
+ evaluation\$1criteria：特定分級盧布
+ custom\$1scoring\$1weights：不同層面的相對重要性
+ context\$1data：問題的背景資訊
+ external\$1references：相關文件或資源的連結

### 具有其他屬性的範例
<a name="nova-hp-rft-additional-example"></a>

下列範例包含自訂中繼資料欄位：

```
{  
  "id": "algebra_001",  
  "messages": [  
    {  
      "role": "system",  
      "content": "You are a math tutor"  
    },  
    {  
      "role": "user",  
      "content": "Solve: 2x + 5 = 13"  
    }  
  ],  
  "reference_answer": {  
    "solution": "x = 4",  
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]  
  },  
  "task_id": "algebra_001",  
  "difficulty_level": "easy",  
  "domain": "algebra",  
  "expected_reasoning_steps": 3  
}
```

## 資料集大小建議
<a name="nova-hp-rft-dataset-size"></a>

### 起點
<a name="nova-hp-rft-starting-point"></a>

從下列最低資料集大小開始：
+ 最少 100 個訓練範例
+ 最少 100 個評估範例

優先考慮高品質的輸入資料和可靠的獎勵函數，該函數會在模型回應時一致地執行。

### 評估優先方法
<a name="nova-hp-rft-evaluation-first"></a>

在投資大規模 RFT 訓練之前，請評估模型的基準效能：
+ **高效能 （超過 95% 的獎勵）**：RFT 可能不必要，您的模型已表現良好
+ **效能非常差 (0% 獎勵）**：先切換到 SFT 以建立基本功能
+ **中等效能**：RFT 可能是適當的

此評估優先方法可確保獎勵函數沒有錯誤，並判斷 RFT 是否適合您的使用案例。從小型開始，您可以熟悉 RFT 工作流程、及早識別和修正問題、在擴展之前驗證您的方法，以及測試獎勵函數可靠性。驗證後，您可以擴展到更大的資料集，以進一步改善效能。

## 有效訓練資料的特性
<a name="nova-hp-rft-effective-data"></a>

### 清晰度和一致性
<a name="nova-hp-rft-clarity"></a>

良好的 RFT 範例需要清晰、不明確的輸入資料，以便在不同的模型輸出間實現準確的獎勵計算。避免資料中的雜訊，包括：
+ 不一致的格式
+ 矛盾的標籤或指示
+ 模棱兩可的提示
+ 衝突的參考答案

任何模棱兩可的情況都會誤導訓練程序，導致模型學習非預期的行為。

### 多樣性
<a name="nova-hp-rft-diversity"></a>

您的資料集應擷取生產使用案例的完整多樣性，以確保強大的實際效能。包括：
+ 各種問題類型和困難程度
+ 不同的輸入格式和邊緣案例
+ 來自所有預期案例的代表性範例

這種多樣性有助於防止過度擬合，並確保模型正常處理不熟悉的輸入。

### 獎勵函數考量事項
<a name="nova-hp-rft-reward-considerations"></a>

設計您的獎勵函數以進行高效訓練：
+ 在幾秒鐘內執行 （非分鐘）
+ 使用 Lambda 有效平行化
+ 傳回一致、可靠的分數
+ 正常處理不同類型的模型輸出

快速、可擴展的獎勵函數可大規模進行快速迭代和經濟實惠的實驗。