#
CFG
このページは以下によって書かれています: kingbri
貢献者: kingbri、Guillaume "Vermeille" Sanchez、AliCat
#
CFGとは? (What is CFG?)
CFG、または classifier-free guidance は、プロンプトの特定の部分をより目立たせたり、目立たなくしたりするのに役立つ方法です。
#
サポートされているバックエンドAPI (Supported Backend APIs)
現在、サポートされているバックエンドは oobabooga の textgen WebUI、NovelAI、および TabbyAPI です。 NovelAI は CFG に関する独自のドキュメント を持っていました。
WARNING: CFG は複数のプロンプトを取り込むため、VRAM 使用量を増加させます!CFG をオンにしてプロンプトを生成しているときに GPU メモリが不足した場合は、コンテキスト サイズを減らすか、より少ないパラメーターのモデルを使用するか、CFG を完全にオフにすることを検討してください。
#
設定 (Configuration)
CFG 設定へのアクセスは、著者の注記へのアクセスと同じです:
CFG パネルの外観は次のとおりです:
CFG パネルには 4 つのドロップダウンがあります:
- Chat CFG
- CFG スケールとプロンプトをこのチャットのみにスコープします
- Character CFG
- CFG スケールとプロンプトを指定されたキャラクターにスコープします
- Global CFG
- CFG スケールとプロンプトをグローバルにオーバーライドします(モデル プリセットもオーバーライドします!)
- CFG Advanced Settings(以前は CFG Prompt Cascading と呼ばれていました)
- 前の 3 つのドロップダウンのプロンプトを組み合わせて、挿入深度を設定する場所。
注: ガイダンス スケールが 1 に設定されている場合、それが CFG の「オフ」状態である場合は何も送信されません。
#
グループチャット (Group Chats)
グループ チャットでは、CFG スケール パネルは次のようになります:
主な変更点は、キャラクター CFG が削除され、チャット CFG ドロップダウンで Use Character CFG Scales というチェックボックスが存在することです。これにより、チャット CFG スケールが設定されているものの代わりに、現在のキャラクターのガイダンス スケールを使用できます。
この機能の主な有用性は、各キャラクターの個々のニーズに基づいてスケールを変更することです。
さらに、プロンプト カスケードで Character Negatives ボックスをチェックすると、独立したキャラクター ネガティブ プロンプトがチャット プロンプトと共に追加されます(有効な場合)。
#
コンセプト (Concepts)
#
これはStable Diffusionにありませんか? (Isn't this in Stable Diffusion?)
はいとも、いいえとも言えます。LLM を使用した CFG は、Stable Diffusion で使い慣れているのとは異なるメカニズムで機能します。LLM ベースの CFG は「プロンプト ミキシング」の原則で機能します。CFG 式は正と負のプロンプトを受け取り、それらの間の 相違 をミックスします。そこから、統合プロンプトが送信され、応答が生成されます!
この概念を視覚化するのに役立つイラストを以下に示します。赤はネガティブ プロンプトを表し、青はニュートラル プロンプトを表し、紫は解釈される混合結果を表します。空白はすべてのプロンプト間で同じなので、CFG ミキシングには使用されません。
CFG と LLM について詳しく知りたい場合は、Vermifuge のオリジナル ペーパーはここにあります。読む/聞くことをお勧めします:
Paper - [2306.17806] Stay on topic with Classifier-Free Guidance (arxiv.org)
Audio version - https://www.youtube.com/watch?v=MGY00YFcyco
#
CFGプロンプトは必要ですか? (Do I need a CFG prompt?)
いいえ!CFG プロンプトはまったくオプションです。ガイダンス スケールを 1 より上に調整するだけでも、応答に効果をもたらすのに役立ち、チャットとキャラクターのインタラクションを強調することができます。
#
良いCFGプロンプトとは? (What makes a good CFG prompt?)
それでは、CFG プロンプトが Stable Diffusion のネガティブ タグと埋め込みと同じではないことが確立されました。プロンプトをどのように作成するか?
警告: これは、PLists と Ali:Chat を使用してキャラクターを作成したことを想定しています。そうしていない場合は、さまざまなプロンプト技術を自由に試してください。
「John」という名前のキャラクターがいるとしましょう。John は、彼の例のダイアログから常に幸せで興奮しているように感じます。ただし、John とチャットするとき、彼は時々悲しくて落ち込んでいます。
これを削除するには、CFG が救いに来ます!単にネガティブ プロンプト [John's feelings: sad, depressed] を作成して、悲しみの部分を削除するのに役立てます。オプションで、ポジティブ プロンプト [John's feelings: happy, joyful] を作成して、John の幸せな部分をさらに引き出すことができます。
#
ポジティブプロンプト (Positive Prompts)
前のセクションでこれについて説明しましたが、これについてもっと詳しく話したいと思います。ポジティブ プロンプトは、キャラクターの特定の部分をさらに強調するために使用されます。もう一度、例として John を使用しましょう。幸せなプロンプト [John's feelings: happy, joyful] で彼を幸せにすることで、ポジティブ プロンプトが含まれていない場合よりも、John は幸せなフィーリングを持つダイアログを出力し始めるはずです。
#
しかし... (But...)
これらはほんの 経験からのものであるいくつかの 1 つの特定の キャラクター形式を伝えるための緩いガイドライン です。プロンプトを作成する他の多くの方法があり、試してみるべきです。他のユーザーと意見を共有することをお勧めします!
#
ガイダンススケール (Guidance Scale)
ここでは経験則を示します。1 のガイダンス スケールは CFG が無効になっていることを意味します。実際に、ガイダンス スケールが 1 の場合、SillyTavern はバックエンドに何も送信しません。>1 のガイダンス スケールは、他のセクションで示されている結果を様々な程度で与えます。
ただし、<1 のガイダンス スケールは、ネガティブ プロンプトがここで主要なプロンプトとして使用されるため、 反対 効果が得られます。
もう一度 John との例を使用してみましょう。ネガティブ プロンプトは [John's feelings: sad, depressed] で、ポジティブ プロンプトは [John's feelings: happy, joyful]、ガイダンス スケールは 0.8 です。
これは代わりに ネガティブ プロンプトをより強調し、John は通常より悲しく行動し始めるでしょう。
tldr;1.5 のガイダンス スケールを使用し、出力に基づいて上下に移動してください。
#
プロンプトカスケーディング (Prompt Cascading)
ネガティブとポジティブは、CFG タイプ間でカスケードできます(タイプはチャット プロンプト、キャラクター ごと、グローバル オーバーライド)。詳細については、Configuration ヘッダーを参照してください。
#
挿入深度 (Insertion Depth)
基本的なルールに従ってください:何かがプロンプト内で低い位置にあるほど、応答に対してより影響力があります。チャットの場合は、デフォルトの深さ 1 を使用することをお勧めします。非常に柔軟です。
ただし、実験したい場合は、0 の挿入深度も開いています。ただし、応答がどのように見えるかを劇的に変更する可能性があり、プロンプト カスケードをここで使用することは 推奨されていません!