

# 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 オブジェクトです。
+ **messages**: システム、ユーザー、オプションでアシスタントロールを使用した会話ターンの配列
+ **reference\_answer**: 報酬計算に期待される出力または評価基準
+ **tools** (オプション): モデルで使用できる関数定義の配列
+ **id** (オプション): 追跡と重複排除のための一意の識別子

各例は、JSONL ファイルの 1 行上にあり、1 行に 1 つの JSON オブジェクトが必要です。

### 例 1: 化学の問題
<a name="nova-hp-rft-example-chemistry"></a>

次の例は、グラウンドトゥルース値を含む参照回答が付いた化学問題を示しています。

```
{  
  "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\_answer には、ドメイン固有のルールを使用して計算されたグラウンドトゥルース値が含まれています。報酬関数は、モデルの予測値をこれらの参照値と比較して、報酬スコアを計算します。

### 例 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>


| フィールド | 説明 | 追加のメモ | 必須 | 
| --- |--- |--- |--- |
| id | この RFT 例の一意の識別子 | 文字列 (「sample-001」など)。追跡と重複排除に役立ちます。 | いいえ | 
| メッセージ | プロンプトとコンテキストを定義するチャットメッセージの順序付きリスト | オブジェクトの配列。モデルはそれらを順番に表示します。通常、システムメッセージで始まり、ユーザーが続きます。 | はい | 
| messages[].role | メッセージで話している人 | 一般的な値:「system」、「user」 (他のコンテキストでは「assistant」になることも) | いいえ | 
| messages[].content | メッセージのテキストコンテンツ | プレーン文字列。システムの場合は手順、ユーザーの場合はタスクまたは入力です。 | いいえ | 
| ツール | この例でモデルで使用できるツール仕様 | 配列。各項目は、ツールのインターフェイスとメタデータを定義します。タイプには、「関数」または「内部」を含めることができます。 | いいえ | 
| reference\_answer | この例で予想されるモデル出力 | タスクに応じて文字列またはオブジェクト。評価またはトレーニングのターゲットとして使用されます。 | いいえ | 

**注記**  
追加のカスタムフィールド (Task\_id、 difficulty\_level、context\_data など) は検証されず、メタデータとして報酬関数に渡されます。

## ハイパーパラメータガイダンス
<a name="nova-hp-rft-monitoring-hyperparams"></a>

トレーニングアプローチに基づいて、次の推奨ハイパーパラメータを使用します。

**全般:**
+ エポック: 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\_id: 追跡用の一意の識別子
+ difficulty\_level: 問題の複雑さインジケータ
+ domain: サブジェクトエリアまたはカテゴリ
+ expected\_reasoning\_steps: ソリューションのステップ数

**評価の基準:**
+ evaluation\_criteria: 特定のグレーディングルーブリック
+ custom\_scoring\_weights: さまざまな側面の相対的な重要性
+ context\_data: 問題の背景情報
+ external\_references: 関連するドキュメントまたはリソースへのリンク

### 追加プロパティの例
<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 と効果的に並列化する
+ 一貫性のある信頼できるスコアを返す
+ さまざまなタイプのモデル出力を適切に処理する

高速でスケーラブルな報酬関数により、迅速なイテレーションと費用対効果の高い実験が大規模に行えます。