LLMプロンプトチューニング・プレイブック
(github.com/varungodbole)この文書は誰のためのものか?
- Post-Trained LLMのプロンプト作成能力を向上させたい人のための文書
- 技術的な背景が不足していても、基本的なLLM利用経験がある人を対象とする
- 前半: 事後学習とプロンプトに対する直感的な理解を提供
- 後半: 具体的なプロンプト作成手順およびコツを提供
なぜチューニングガイドが必要なのか?
- LLMのプロンプト作成は経験的であり、継続的な学習と修正が必要な作業
- この文書は効果的なプロンプト作成戦略を体系的に共有することを目的とする
- Geminiのような事後学習済みモデルを中心に書かれているが、他のモデルにも適用可能
Pre-Training vs. Post-Training
事前学習 (Pre-training)
- 事前学習の概念
- 事前学習はディープラーニングにおける古くからの概念で、小さなデータセット(A)と似ているがはるかに大きいデータセット(B)を活用して一般的な特徴をまず学習し、その後Aデータセットで細かな調整を行う方法である。
- 例としては、少量のマンモグラフィデータセット(A)と、インターネットから収集された大規模な自然画像データセット(B)を考えることができる。
- 事前学習の手順
- 大きなデータセット(B)でモデルを学習し、一般的に有用な特徴を学習する。
- その後、モデルをAデータセットに合わせて微調整し、Aでより良い性能を得る。
- 具体的には、Bデータセットで物体分割や画像内の位置に関係なく概念を認識する基本技術を学習し、その上でAデータセットの特定の技術を追加学習する方式である。
- 事前学習の必要性
- Bデータセットを通じて学習しなければ、Aデータセットだけでは一般的な技術を学習するにはデータが不足し、性能が低下する可能性がある。
- Bデータセットで一般的な技術を学習したモデルは、Aデータセットでは限られたデータを使って専門化された技術だけを追加で学習すればよい。
- LLM(大規模言語モデル)の事例
- LLMの事前学習は、インターネット上のテキストの「次の単語を予測するタスク」を実行することで行われる。
- この過程で、モデルはWebに反映された世界の構造を暗黙的に学習する。
- インターネットと世界の反映
- インターネットがどのような世界を反映しているのかという問いは重要であり、これを理解するために「シネマティック・ユニバース」という比喩を使うことができる。
事前学習の「シネマティック・ユニバース」直感
- テキストと世界の描写
- 大規模言語モデル(LLM)はテキストを通じて世界を学習する。
- テキストは必ずしも「真実」だけを反映しなければならないという制約を持たない。
- 虚偽情報や誤った記述以外にも、テキストが単一の客観的現実だけを反映しない理由はさまざまである。
- 例: アラゴルンとゴンドール
- 「アラゴルンは最終的にゴンドールの王になる」という文が真実かどうかは、文脈と前提によって変わる。
- 「ロード・オブ・ザ・リング」シネマティック・ユニバース: 真実と見なされうる。
- 「マーベル・シネマティック・ユニバース」または現実: アラゴルンとゴンドールは架空の存在であるため真実ではない。
- 「アラゴルンは最終的にゴンドールの王になる」という文が真実かどうかは、文脈と前提によって変わる。
- 真実の基準
- 記述が真実かどうかは、どの「世界」を前提にするかによって変わる。
- これは哲学・言語学における長年の議論のテーマであり、真理に関する詳細な概説はこのリンクで確認できる。
- 実用的には、「ある記述が真実かどうかは、その記述が背景としているシネマティック・ユニバースによって変わる」という概念に単純化できる。
- 事前学習データとシネマティック・ユニバース
- 事前学習コーパスは、人間文化が作り出したさまざまなシネマティック・ユニバースの和集合に近い。
- より正確には、事前学習データソース(例: Web)に大きく寄与した文化の集合である。
> 重要
> 事前学習コーパスは人間文化が作り出したシネマティック・ユニバースの和集合と見なすことができ、特にWebのようなデータソースに大きく寄与した文化を反映している。
- モデルの文脈理解
- LLMは与えられた文脈(つまりプレフィックス)に基づいて、どの「ユニバース」にいるのかを推論する。
- その後、そのユニバースのルール、慣習、事実に従って振る舞う。
- 強い文脈シグナルを持つプロンプトは、モデルが「スクリプト」を理解しやすくする。
- 例: ニューヨークについてのブログ記事の書き出し(「夢がかなうコンクリート・ジャングルは、単なる歌詞ではなく、ニューヨークの電気のような真実だ...」)
- 一方、「Hi, how are you?」のように文脈が弱いプロンプトでは、モデルはどのユニバースにいるのかを判断しにくい。
- このような一般的な表現はさまざまなコーパスにまたがって登場するため、複数の可能性を残す。
- 事後学習(Post-training)の役割
- 文脈が不足している場合、モデルがより具体的で一貫した出力を生成できるようにするうえで、事後学習が重要な役割を果たす。
事後学習 (Post-training)
- 事後学習の役割
- 事後学習は、LLMが基本的に動作する「デフォルト・ユニバース」に関する指針を提供する。
- プロンプトだけでユニバースを推論する代わりに、事後学習を通じて特定の前提を固定したり、曖昧さを一貫して解消するよう制約を設定したりする。
- これはモデルの有用性を高めるために必要であり、たとえばLLMにデフォルトで「ユーザー指示に従うこと」を教えるのに有用である。
- 事後学習の重要性
- 事後学習がなければ、「ジョージ・ワシントンに関するレポートを書け」という指示が、単にその指示に続くテキストを生成する形で誤作動する可能性がある。
- 事後学習は、モデルの基本動作を社会的規範と一致させるのに役立つ。
- これにより、モデルがより安全で生産的なツールになるよう支援する。
> 重要
> 事後学習は、さまざまなデプロイ環境でモデルが一貫した基本的役割を果たすよう教える。
- 事後学習で学習できる内容
- 事後学習中にモデルが学習できる内容は、実用的で具体的なものから主観的で個人的なものまで多岐にわたる。
- 事後学習で教えられる主な内容
- 特定の形式に従う方法
- 例: Gemma's Formatterでは、モデルが常にユーザーと会話するシネマティック・ユニバースで動作すると仮定する。
- このシナリオでは、モデルはシステム指示に従って行動し、会話は常に人間ユーザーのターンから始まる。
- ユーザーの指示に従う方法
- 例: 「犬についてのエッセイを書け」という要求に対して、実際にエッセイを書く必要がある。
- ユーザーの要求を無視して別の形で応答しないように、事後学習を通じて学習できる。
- 「現実世界」との整合
- モデルのデフォルト・シネマティック・ユニバースを、ユーザーが主に関心を持つ「現実世界」に合わせるために活用される。
- 例: 「有名人 $CELEBRITY はどこで生まれたか?」という質問に対して、ファンフィクションの世界ではなく現実世界の情報をデフォルトで前提にする。
- 安全性の強化
- インターネットにはさまざまな規範的基準が含まれており、一部のコンテンツは商用配布環境では不適切な場合がある。
- 事後学習は、モデルが特定の安全ポリシーに合わせて調整されるよう支援し、生成内容に関する規範的基準を設定する。
- これにより、モデルが複雑なテキストを生成する際に不可欠な規範的前提を内包するようになる。
- 特定の形式に従う方法
- 結論
- 事後学習は、モデルがさまざまな利用環境で期待に沿う動作を一貫して行えるよう支援する。
- モデルの有用性と安全性を最大化するために不可欠なプロセスである。
事後学習データの収集
- 要点の要約
- 事後学習では、LLMは人間の評価者が作成したデータに基づいて学習・評価される。
- 事後学習中、モデルは「デジタルなロールプレイヤー」として、データを生成した人間の評価者をロールモデルにする。
- 事後学習データ収集のプロセス
- 多様な入力例データセットの作成
- LLMが実行できるタスクを記述したプロンプト集を作成する(例: JSONでのデータ再構成、結婚式の計画支援など)。
- このデータは、開発者の直感や人間の評価者が提案したアイデアに基づいて作成されることがある。
- 人間の評価者の募集
- 評価者の役割: 入力例に対する「正解」を作成する、またはモデルの応答を順位付けして評価する。
- モデルの学習段階に応じて、評価者は異なる種類のデータを生成する。
- 評価ガイドラインの作成
- 評価者がタスクを十分に理解できるように、例示と詳細な指示を提供する。
- データ収集と事後学習の実施
- 収集したデータを事前学習済みモデルに活用して事後学習を進める。
- モデルのデプロイ
- 事後学習の完了後、モデルを実環境にデプロイする。
- 多様な入力例データセットの作成
- 事後学習の影響
- LLMが人間のように振る舞える理由の一つは、慎重に収集された人間の行動データセットを学習しているためである。
- 事前学習はモデルの中核的な能力を構築し、事後学習は人間のデモンストレーションを通じてモデルの行動の方向性を調整する。
重要
LLMが人間のように振る舞える理由は、慎重に収集された人間の行動データを学習しているためである。
- 事後学習データ収集の課題
- 反復作業の単調さ
- 評価作業は退屈になりがちである。たとえば、優秀なPythonプログラマーにとっては、自分のプロジェクトを進めるほうがより興味深いかもしれない。
- 詩人は自分の詩を書くことを好み、AIが生成した詩を評価することにはあまり関心を持たない可能性が高い。
- 評価者は、作業の反復性、データ所有権に対するコントロールの乏しさ、仕事の社会的意義の欠如などにより、モチベーションの低下を経験することがある。
- 「良い」応答の定義の難しさ
- タスクにおける「良い」応答を定義することは複雑である。
- 良い文章、事実性、社会的現実の複雑さを反映するタスクの基準を明確にするのは難しい。
- 法体系が判例によってエッジケースを解決するように、こうした問題は主観性と文脈に大きく依存する。
- 評価者のタスク理解不足
- 評価者がタスクを十分に理解していない可能性がある。
- 技術レベルの合わない評価者を採用したり、評価者自身が自らの限界を認識していなかったりする場合に発生する。
- 例: 生物学の質問に対して、古い大学時代の知識に基づいて誤った応答を作成する。
- 人間のミス
- 人間はミスをする。教授は誤答を含む試験問題を出すことがあり、医師は疲労時に誤診する可能性が高くなる。
- 人間の評価データの品質は完全ではないため、AIシステムもしばしば誤ったデータを学習してしまう可能性がある。
- 反復作業の単調さ
- 結論
- 事後学習データの収集はモデル品質に重要な役割を果たすが、データ品質を保証するためには多くの努力が必要である。
- 正確で信頼できるデータを得るには、評価者とタスクの適合性を確保することが重要である。
プロンプト作成
- 要点の要約
- システム指示文とプロンプトを作成する際には、事後学習チームの評価者集団の「集合的精神」を念頭に置いて作成すべきである。
- 評価者が理解し、忠実に従える指示を書けば、モデルもそれによりよく従う可能性が高い。
重要
システム指示文とプロンプトは、事後学習チームの評価者集団の集合的精神を反映するように作成すべきである。
プロンプト作成時の主な考慮事項
-
明確で簡潔かつ明示的な指示かを確認する
- 例: Pythonコードを生成する指示であれば、無作為に選ばれた熟練Pythonプログラマーがその指示を読んですぐ理解できるべきである。
- 悪い例: "Write a Python function that computes prime numbers."
- 良い例: "Write a Python function that computes prime numbers from 1 to 100. Include pytype annotations for the function and use 2-space indentation."
- 例: Pythonコードを生成する指示であれば、無作為に選ばれた熟練Pythonプログラマーがその指示を読んですぐ理解できるべきである。
-
指示が矛盾していたり従いにくかったりしないか確認する
- 人が疲れていたり空腹だったりしても指示に忠実に従えるよう、簡潔で直感的に書くべきである。
- 悪い例: "Don’t write a story about a mean dog, unless it's friendly, and also sad..."
- 良い例: "Write a short story (200-300 words) about a loyal golden retriever named Buddy..."
- 人が疲れていたり空腹だったりしても指示に忠実に従えるよう、簡潔で直感的に書くべきである。
-
指示が多すぎないか?
- モデルは長く複雑な指示をすべて守るのが難しいことがある。可能であれば、タスクをサブタスクに分割するのが望ましい。
- 悪い例: "Read each article and, for each key idea, rate it on a scale of 1-10..."
- 良い例: サブタスクに分割する: 1) 主要なアイデアの一覧を作成、2) 各アイデアを評価、3) 上位のアイデアを翻訳、4) ソーシャルメディア向けの投稿を作成。
- モデルは長く複雑な指示をすべて守るのが難しいことがある。可能であれば、タスクをサブタスクに分割するのが望ましい。
-
肯定的な指示を使う
- 「してはいけないこと」を指示するより、「すべきこと」を明示するほうが効果的である。
- 悪い例: "Don’t ever end your response with a full stop."
- 良い例: "Your response should always end with an exclamation mark or a question mark."
- 「してはいけないこと」を指示するより、「すべきこと」を明示するほうが効果的である。
-
モデルへの「リマインダー」として機能する指示
- さまざまな入力例を考慮し、曖昧なケースに対する追加のガイダンスを提供する。
- 例: 「追加の考慮事項」または「追加の前提」セクションでエッジケースを明確に説明する。
-
プロンプトは新たなハイパーパラメータ
- プロンプトの品質はシステム性能に大きく影響する。「最適な」プロンプトを見つけることは不可能だが、段階的により良いプロンプトを見つけるための実験は重要である。
-
「わからない」と応答するよう指示する
- 「不明」や「曖昧な場合」について明示的な指針を与え、モデルが誤った応答をする代わりに、曖昧さをはっきり示すよう促す。
-
プロンプトとチェックポイントの密接な連携
- プロンプトは特定のモデルチェックポイントと深く結び付いている。新しいモデルバージョンでは、同じプロンプトでも異なる動作をすることがある。
プロンプトスタイルガイド(基礎)
- Markdownの使用を検討する : 各プロンプトを個別のMarkdownファイルに保存し、タイトルとセクションを適切に構成して可読性を高める。
- 他の利用者への配慮 : プロンプトはモデルだけでなく、保守担当者のためにも書かれるべきである。
- 単純さを保つ : プロンプトが長すぎたり複雑すぎたりすると、モデル変更時の保守負担が増える可能性がある。簡潔で明確に書くこと。
- ゼロショット指示を優先する : ゼロショット指示はシンプルで、デバッグや理解がしやすい。few-shotは最後の手段として使う。
- 例を統合する : "For example" のような形で、指示文に例を自然に組み込むのが望ましい。
- 例: "Always start your response to the user with something passive aggressive. For example, start with something like 'Oh that’s what you want? ...'"
新しいシステム指示文の反復的改善プロセス
- プロンプト開発は反復的なプロセス
- プロンプト作成は、検証データセットを使ってモデルを訓練するプロセスに似ている。
- 明確で簡潔な文章を書くことが重要であり、生成と編集の段階を分けて進めるのが効果的である。
- 検証データセットなしでも開始可能
- 初期段階ではシンプルなMVP(Minimum Viable Product)を素早く構築し、後で定量評価によって性能を追跡すべきである。
- 予想外のモデルの挙動があっても製品が安定して動作するように設計することが重要である。
システム指示文の反復手順
- 多様な入力例を用意
- 問題をよく表す約10〜50件の多様な入力例を収集する。
- 望ましい出力の振る舞いに対する直感を形作る。
- シンプルな指示文から始める
- できるだけ簡単で明確な指示文を書く。
- コストの低いモデル(例: Gemini Flash 8B)を先に使う。
- 最初の入力例で実行
- モデルが適切な応答を生成するかテストする。
- 最初の例に過学習させる
- モデルの応答で見つかった特定の欠陥を解消するため、指示文に「リマインダー」を追加する。
- 例: 人名だけを抽出すべきなのに建物名まで含まれる場合は、その点を指示文に明示的に書く。
- 次の例へ進む
- 別の入力例でも指示文が有効かテストする。
- 最初の例に過度に合わせた指示があるなら調整し、より一般化する。
- 指示文を整理
- すべての入力例で機能する指示文を作った後、文を整え、スペルミスを修正する。
- 整理後の指示文が引き続きすべての例で機能するか確認する。
- 自動化の可能性
- 将来的にはメタ最適化ツールが指示文生成を自動化できる可能性がある。
- ただし、定性的分析と品質保証の作業は依然として必要である。
重要
定性的分析はモデル開発において不可欠であり、これを避けることはできない。
LLMが有用な場面
- 検証しやすい問題
- LLMは「答えを作るのは難しいが、検証は簡単な」問題に最も適している。
- 例: 生成AIの「スイートスポット」に関するChris Gorgolewskiの投稿を参照。
- 問題を下位問題に分解
- 複雑なプロンプトを作る代わりに、問題をよく定義された下位問題に分け、モデルの推論チェーンを構成する。
- 将来を見据えたアプローチ
- ハードウェアやビジネスモデルの革新によって推論能力が向上する可能性を考慮する。
- 現在のコストではなく、価値を中心に機能を設計する。
- 推論コストの低下
- 推論コストは徐々に低下すると見込まれ、「価値」中心の意思決定が必要になる。
- より価値の高い機能を実装するため、現在の経済的制約を踏まえた段階的ロールアウトを検討する。
予想
LLM推論コストでは、ムーアの法則に準じる価格低下が起こる可能性がある。
まだコメントはありません。