# 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 設定へのアクセスは、著者の注記へのアクセスと同じです:

CFGhamburgermenupng
CFGhamburgermenupng

CFG パネルの外観は次のとおりです:

CFGchatpanelpng
CFGchatpanelpng

CFG パネルには 4 つのドロップダウンがあります:

  • Chat CFG
    • CFG スケールとプロンプトをこのチャットのみにスコープします
  • Character CFG
    • CFG スケールとプロンプトを指定されたキャラクターにスコープします
  • Global CFG
    • CFG スケールとプロンプトをグローバルにオーバーライドします(モデル プリセットもオーバーライドします!)
  • CFG Advanced Settings(以前は CFG Prompt Cascading と呼ばれていました)
    • 前の 3 つのドロップダウンのプロンプトを組み合わせて、挿入深度を設定する場所。

注: ガイダンス スケールが 1 に設定されている場合、それが CFG の「オフ」状態である場合は何も送信されません。

# グループチャット (Group Chats)

グループ チャットでは、CFG スケール パネルは次のようになります:

CFGpanelgcpng
CFGpanelgcpng

主な変更点は、キャラクター 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 ミキシングには使用されません。

stcfgdiagrampng
stcfgdiagrampng

CFG と LLM について詳しく知りたい場合は、Vermifuge のオリジナル ペーパーはここにあります。読む/聞くことをお勧めします:

# 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 の挿入深度も開いています。ただし、応答がどのように見えるかを劇的に変更する可能性があり、プロンプト カスケードをここで使用することは 推奨されていません