概要
ベースモデルは、膨大な公開テキスト全体で次の単語を予測するという事前学習を通じて知識を習得しました。継続的事前学習は、お客様のテキストを使用して、同じプロセスを再度実行します。プロンプトも回答も評価者も存在しません。モデルはお客様のドキュメントを読み込み、その続きを予測する能力を向上させます。つまり、その語彙、エンティティ、および事実を吸収します。
このアプローチは広く確立されています。Gururanganら(2020年)は、4つのドメイン(生物医学およびコンピューターサイエンスの論文、ニュース、レビュー)と8つのタスクにおいて、ドメイン内テキストでの第2段階の事前学習が結果を向上させること、さらにその後でもタスク自体のラベルなしテキストでの事前学習が役立つことを示しました。
テキストの準備方法
- 約700語のパッセージ。文脈が途切れないように段落の区切りで分割されます。非常に短いドキュメントはスキップされる場合があります。
- 他のデータ準備と同様に、個人データは秘匿化されます。
- 約5%のパッセージが除外されるため、モデルが学習しないテキストで損失を測定できます。
各プロバイダーの学習方法
Hugging Face: 各パッセージは1つの text 行になります。回答のみがカウントされる教師あり学習とは異なり、損失はすべてのトークンをカバーします。短いパッセージはフルレングスのシーケンスにパックされるため、パディングに計算リソースが消費されることはありません。
{"text": "Sharing reports\n\nAny report can be shared with a client from the Share menu. The client receives an email with a link that opens without an account…"}Vertex AIのオープンモデル(Gemma、Llama、Qwen): プレーンテキストモードがないため、各パッセージはプロンプトと補完として入力され、ドキュメントのタイトルがプロンプトになります。Vertexはパッセージである補完を学習します。Vertexは、この種のジョブの損失曲線を表示しない場合があります。
{"prompt": "Sharing reports",
"completion": "Any report can be shared with a client from the Share menu. The client receives an email with a link that opens without an account…"}text1パッセージにつき1行→すべてのトークンを学習promptドキュメントのタイトル+completionパッセージ→パッセージを学習他のプロバイダーでは利用不可。 Gemini、Azure、Fireworks、および現在のBedrockモデルは継続的事前学習を提供していません。Bedrockは廃止されたTitan Textに対してのみ提供していました。これらのプロバイダーでは、ドキュメントは代わりに生成されたQ&Aになります。
振る舞いではなく知識
継続的事前学習の後、モデルの知識は増えますが、必ずしも回答が上手くなるわけではありません。モデルはテキストを続けるように学習したのであり、質問に答えるように学習したわけではないからです。Allen-Zhu & Li(2023年)は、モデルが記憶した知識が常に質問によって抽出できるとは限らず、同じ事実の多様な言い回しが検索可能性を高めることを発見しました。そのため、通常の手順としては、まず継続的事前学習を行い、次にその学習済みモデルから継続する形で、チャットや生成されたQ&Aによる教師あり学習を実行します。
- 12万語のヘルプセンターは、約700語のパッセージ約170個に分割されます。
- 約5%(9パッセージ)が除外され、161パッセージ(約11万3,000語)が学習に使用されます。
- 1語あたり約1.3トークンとすると、1エポックあたり約15万トークンになります。2エポックでは約30万トークンを学習します。
- 2,048トークンのシーケンスにパックすると、1エポックは約72シーケンスになります。小規模なオープンモデルでLoRAランクを32に設定した場合、これは短時間で安価なジョブとなります。
- その後、サポートチャットと生成されたQ&Aによる教師あり学習がそこから継続され、それに基づいて評価されます。
- 対照的に、2,000語のドキュメントでのパイロット版では3つのパッセージが生成されます。これはパイプラインが機能することを証明しますが、モデルを変化させるにはテキスト量が少なすぎます。
選択するタイミング
- 大量のドキュメント(数万語以上)があり、オープンモデルをトレーニングし、その後教師あり学習を計画している場合は、これを選択してください。
- より良い回答をすぐに得たい場合、ドキュメントが少ない場合、または継続的な事前学習を提供していないプロバイダーでトレーニングする場合は、生成されたQ&Aを選択してください。
- 両方を検討: 継続的な事前学習でドキュメントを吸収させ、その後、生成されたQ&Aとチャットを使用して、そこから回答するようにモデルに学習させます。
設定
各トレーニングパッセージの長さです。段落の区切りで分割された約700語であり、各パッセージが一貫したテキストとして1つのトレーニングシーケンスに適切に収まるようにしています。非常に短いドキュメントは、学習に不十分であるとしてスキップされる場合があります。
モデルがすべてのパッセージを読み込む回数です。低く保ってください。回数が多すぎると、モデルは知識を活用するのではなく、パッセージを一語一句暗唱するようになります。また、1エポックごとに約1エポック分のコストが追加されます。
モデルが学習した内容を保持するアダプターのサイズです。新しい知識の学習には、スタイルの変更よりも大きなアダプターが必要となるため、Scalataでは継続的な事前学習にランク32を、その他の手法にはランク16を使用しています。Bidermanら(2024年)は、コードと数学の分野において、フルファインチューニングでは一般的なLoRA設定の10〜100倍のランクの変更を学習することを発見しました。これは、新しい知識の獲得を目的とする場合に、低いランクでは不十分となる可能性が高い理由の1つです。
よくある間違い
- 数ページで実行し、変化を期待すること。数万語以上が必要です。
- 継続的事前学習の後に停止すること。モデルの知識は増えますが、適切に回答するには依然として教師あり学習が必要です。
- 多くのエポックを使用すること。モデルは内容を活用するのではなく、パッセージを暗唱し始めます。
- LoRAランクを小さく保つこと。知識はスタイルよりも多くのアダプター容量を必要とします。
- Gemini、Azure、Fireworks、またはBedrockでこの機能を探すこと。これらのプロバイダーでは生成されたQ&Aを使用してください。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01Don't Stop Pretraining: Adapt Language Models to Domains and TasksGururangan et al., 2020 · arXiv · arxiv.orgドメイン適応型およびタスク適応型事前学習に関する古典的な研究。
- 02LoRA Learns Less and Forgets LessBiderman et al., 2024 · arXiv · arxiv.org継続的事前学習におけるLoRAとフルファインチューニングの比較、およびランクが重要である理由。
- 03Synthetic continued pretrainingYang et al., 2024 · arXiv · arxiv.org小規模なコーパス単独ではほとんど学習効果がない理由と、合成バリエーションがどのように役立つか。
- 04SFT TrainerHugging Face TRL docs · huggingface.coHugging Face TRLを使用したプレーンテキストでの学習とシーケンスのパッキング。
- 05Supervised and distillation fine-tuning for open modelsGoogle Cloud docs · cloud.google.comVertex AIでのGemma、Llama、Qwenなどのオープンモデルのチューニング。