Nova 2.0 での CPT - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Nova 2.0 での CPT

Amazon Nova Lite 2.0 は、Nova Lite 1.0 よりも大規模で多様なデータセットでトレーニングされた推論モデルです。より大きなモデルであるにもかかわらず、Nova Lite 2.0 は Nova Lite 1.0 よりも高速な推論を実現すると同時に、推論機能の強化、コンテキスト長の延長、多言語パフォーマンスの向上を実現します。

Nova 2.0 の CPT では、これらの高度な機能をドメイン固有のデータで拡張できるため、モデルは優れた推論と分析能力を維持しながら、専門分野に関する深い専門知識を開発できます。

2.0 での CPT のデータ準備

データ形式の要件

トレーニングデータセットと検証データセットは、以下に示す形式の JSONL ファイルである必要があります。各行には、必須フィールドと構造との会話を表す JSON オブジェクトが含まれています。以下がその例です。

{"text": "AWS stands for Amazon Web Services"} {"text": "Amazon SageMaker is a fully managed machine learning service"} {"text": "Amazon Bedrock is a fully managed service for foundation models"}

テキストエントリには、ターゲットドメインを表す自然に流れる高品質のコンテンツを含める必要があります。

データが Arrow 形式に変換できることをテストします。以下の Python スクリプトを参考にしてください。少なくとも datasets==2.18.0バージョンが使用されていることを確認します。

from datasets import load_dataset, load_from_disk from pathlib import Path input_path = Path("<Your jsonl file>") output_path = Path("<Your output directory>") dataset = load_dataset("json", data_files=str(input_path), split="train") dataset.save_to_disk(str(output_path), max_shard_size="1GB") try: test_dataset = datasets.load_from_disk(output_dir) print(f"Dataset loaded successfully ✅! Contains {len(test_dataset)} samples") except Exception as e: print(e)

JSONL ファイルと同じ数の行を出力する必要があります。

データ混合を使用する場合は、 で最初のジョブを実行しますmax_steps=2。これにより、データアクセスのための最適化をクラスターに作成し、すべてのデータミックスが利用可能であることを検証できます。

CPT のデータを準備する方法

トレーニングデータは、継続的な事前トレーニングを成功させるための最も重要な決定要素です。CPT データは「ラベルなし」と記述されることがよくありますが、現実ははるかに微妙です。データの構造化、フォーマット、提示の方法によって、モデルがビジネスユースケースに必要な知識とスキルを習得するかどうかが決まります。

CPT 用の構造化ビジネスデータセットの準備

これは、ドメインに特化した基盤モデルを構築する企業や組織にとって一般的な課題です。ほとんどの企業は、製品カタログ、ユーザープロファイル、トランザクションログ、フォーム送信、API コール、運用メタデータなど、構造化データの豊富なリポジトリを持っています。一見すると、これは標準の事前トレーニングで通常使用される非構造化ウェブテキストとは大きく異なります。

構造化されたビジネスデータから効果的に学習するには、ダウンストリームタスクを慎重に検討し、モデルが適切な予測関係を学習するようにデータプレゼンテーションを設計します。

継続的な事前トレーニングの可能性を最大限に引き出すには、次の点を考慮してください。

  • モデルが推論時に実行するタスク

  • raw データに存在する情報

  • モデルが情報の正しい抽出と操作を学習するようにデータを構築する方法

構造化データをトレーニングにダンプするだけでは、モデルにその理由を教えることはできません。データプレゼンテーションを積極的に形成し、モデルが学習する内容をガイドします。

以下のセクションでは、データ拡張の重要性を示す文献レビューと、CPT のビジネスデータセットを扱い、整理する方法に関する有用なアイデアを提供する構造化ビジネスデータの拡張戦略の例を示します。

文献の CPT の構造化データ

CPT はドメインの事実をモデルにパックできますが、入力やタスクがシフトしたときにそれらの事実を取得および操作できないことがよくあります。制御された実験は、事前トレーニング中に多様な拡張を行わないと、モデルは、後の命令調整後も抽出が難しいままの脆弱な方法で事実を記憶し、トレーニングの早い段階でシグナルのような指示を挿入することをお勧めします。半構造化データの場合、ランダム化シリアル化やその他の拡張によりスキーマのオーバーフィットが軽減されるため、CPT は最初に実行し、後で IFT を実行するのではなく、命令スタイルのタスクとインターリーブする必要があります。財務に重点を置いた作業では、バッチ時に CPT と命令データを一緒に組み合わせることで一般化が向上し、シーケンシャルレシピと比較して忘れることが減ることがさらにわかります。Qwen テクニカルレポートは、高品質の指示データを事前トレーニング自体に統合することで、同じパターンに収束します。これにより、コンテキスト学習が強化され、新しいドメインの知識を取得しながら指示が保持されます。

半構造化コーポラのデータ拡張はキーレバーです。合成グラフ対応 CPT は、小さなドメインセットをエンティティにリンクされたコーポラに拡張します。エンティティにリンクされたコーポラは、推論時に取得する関係とコンパウンドを明示的に教えます。ジョイント CPT と命令の混合は、財務およびバランシングドメインのシーケンシャルパイプラインを一般的なデータで上回り、一般的なスキルの低下を軽減します。非常に大規模なドメイン CPT は、幅広い能力を保持し、モデルマージによるトレードオフも可能にできますが、それでも次のステップとして命令チューニングを指し、CPT 中に命令シグナルを導入する価値を強化します。

ランダム化とシャッフルによる多様性の注入

構造化データセットと半構造化データセットからモデルを効果的に教育するのに役立つ一般的な戦略は、データセット内のフィールドの順序をシャッフルし、いくつかのキーをランダムにドロップすることです。

フィールドをシャッフルすると、モデルは各値が表示される場所ではなく意味を読み取って、すべてのフィールド間の関係を学習します。例えば、Amazon ストアに投稿されたビデオゲームの場合、「タイトル」、「プラットフォーム」、「価格」、「条件」、および「編集」が異なる順序で到着すると、モデルは「3 番目のスロットはプラットフォーム」に依存しません。ラベルを値にバインドし、属性間の相互関係を学習する必要があります。タイトル ⇄ プラットフォーム、プラットフォーム ⇄ 価格、条件 ⇄ 価格。そのため、例えば、ゲーム名と観測価格からプラットフォームの可能性を推測したり、タイトルとプラットフォームを考慮して妥当な価格範囲を見積もったりすることができます。

シリアル化中にキーをランダムにドロップすると、特徴量のドロップアウトのように動作します。これにより、1 つのフィールドでの同時適応が防止され、モデルは残りの証拠から欠落した情報を強制的に回復します。「プラットフォーム」がない場合、モデルはタイトル文字列または互換性テキストから取得する必要があります。「価格」が非表示の場合は、プラットフォーム、エディション、および条件から三角形分割する必要があります。これにより、対称性 (A→B および B→A)、乱雑な実世界の出品に対する堅牢性、フィールドが欠落、名前変更、または順序変更された場合のスキーマの不変が構築されます。

ショッピングスタイルの例では、具体的に説明しています。同じアイテムを複数の方法でシリアル化します。「タイトル: 'Elden ring' | Platform: PlayStation 5 | Condition: Used」-Like New | Price: $34.99」と「Price: $34.99 | Title: 'Elden Ring' | Condition: Used」のような置換は、「Like New | Platform: PlayStation 5」です。一部のパスでは、説明にPS5 と互換性がある」のままで「Platform」がドロップします。{title, price} からのプラットフォームの予測や {title, platform} からの価格バケットの予測など、補完的な目標をトレーニングします。キーの順序や存在も異なるため、唯一の安定した戦略は、テンプレートを記憶するのではなく、属性間の真の関係を学習することです。

データの表示方法が重要

LLMsすでに見たものから次のトークンを予測することで学習します。したがって、トレーニング中に表示されるフィールドとイベントの順序によって、モデルが学習できる内容が決まります。トレーニング形式が実際のタスクと一致する場合、損失は正確な決定トークンになります。フィールドが構造なしで一緒に投げられると、モデルはショートカットを学習するか、人気を記憶し、オプションから選択するように求められたときに失敗します。

まず状況を示し、次にオプション、次に決定を示します。モデルが結果や説明についても学習する必要がある場合は、決定後にそれらを配置します。

CPT のサンプルのパッキング

パッキングとは

つまり、トレーニングデータの各シーケンスウィンドウを複数の全体例で埋めるだけで、ウィンドウはパディングではなく実際のトークンで密集します。

重要な理由

トレーニング中、最大コンテキスト長、例えば 8,192 トークンが設定されます。バッチは [バッチサイズ × コンテキスト長] の形になります。トレーニング例がコンテキストの長さより短い場合、残りの位置はパディングされます。パディングは、損失がマスクされても注意と MLP カーネルを経由するため、学習信号を持たないトークンに対してコンピューティングが課金されます。

パッキングの方法

複数のサンプルをパックするには、複数のトレーニングサンプルを [DOC] 区切り記号で連結し ([DOC] の前後のスペースに注意してください)、サンプルの全長が目的のコンテキストの長さ未満になるようにします。

パックされたドキュメントの例は次のようになります。

{"text": "training sample 1 [DOC] training sample 2 [DOC] training sample 3"}