paint-brush
書籍の要約のための PrivateGPT: 構成変数のテストとランク付け@cognitivetech
3,153 測定値
3,153 測定値

書籍の要約のための PrivateGPT: 構成変数のテストとランク付け

CognitiveTech15m2024/01/15
Read on Terminal Reader

長すぎる; 読むには

大規模な言語モデルを実装する場合、多くの変数が存在します。 PrivateGPT を融合して書籍を要約するプロセスをテストして改良してみましょう。
featured image - 書籍の要約のための PrivateGPT: 構成変数のテストとランク付け
CognitiveTech HackerNoon profile picture
0-item
1-item

私は数十冊の本を手作業で要約し始めましたが、要約ごとに数週間かかることがわかりました。それから私は、この AI 革命が起こっていることを思い出し、これらの領域に飛び込む予定はとうの昔に過ぎていたと決心しました。


大きなテキストを要約するためにラージ言語モデル (LLM) の使用を検討し始めたとき、その方法について明確な指示が見つかりませんでした

  • いくつかのページでは、要約したい本の内容を魔法のように知ってくれるという考えのもと、GPT4 に与えるためのプロンプトの例が示されています。 (ない)
  • テキスト全体を一度に処理できる大規模なコンテキストを備えたモデルを見つける必要があると提案する人もいます。 (まだ)
  • ドキュメントをデータベースにアップロードし、そのデータベースの内容に基づいて質問に回答できるオープン ソース ツールがいくつかあります。 (近くなってる)
  • 最初に本をいくつかのセクションに分割し、それらを一度に 1 つずつ要約するために LLM に入力する必要があると提案する人もいます。 (今、話しています)
  • その決定を行う以外にも、特定の LLM を実装するときに考慮する必要がある変数が多数あります。
  • 推奨事項やモデルのランキングが利用可能であるにもかかわらず、他の人が得ているものとは異なる結果が得られていることにすぐに気づきました。私のユースケース、モデル形式、量子化、圧縮、プロンプト スタイルなど?わからない。私が知っているのは、独自の作業条件の下で独自のモデルのランキングを行うことだけです。オンラインで読んだグラフをただ信じないでください。


このガイドでは、上記の変数の詳細を決定しテストする私のプロセスについて具体的に説明します。


完全なランキング データ、ウォークスルー、結果の概要は GitHub でご覧ください

背景

重要な用語

これらの用語の一部は、文脈に応じて異なる方法で使用されます (駄洒落ではありません)。

  • 大規模言語モデル (LLM) : (別名モデル) 人間の言語を理解し、生成するために大規模なデータセットに基づいてトレーニングされた人工知能の一種。

    :世界を席巻したOpenAIのGPT3.5とGPT4。 (私たちの場合は、オープンソースまたはHugging Faceにある無料でダウンロード可能なモデルの中から選択しています。)

  • Retrieval Augmented Generation (RAG) : Meta AI によって開発された、LLM が特定のユーザー クエリ (ドキュメント Q/A) に対する回答を見つけるためにドキュメントをデータベースに保存する技術。

  • ユーザー指示: (別名プロンプト、またはコンテキスト) は、ユーザーが提供するクエリです。

    例: 「次のテキストを要約します: { text }

  • システム プロンプト:ユーザー プロンプトの前に与えられる特別な指示。アシスタントの性格を形成するのに役立ちます。

    例: 「あなたは役に立つ AI アシスタントです。」

  • コンテキスト:ユーザーの指示、場合によってはシステム プロンプト、場合によっては以前の質問と回答のペア。 (以前の Q/A ペアは、単にコンテキストとも呼ばれます)。

  • プロンプト スタイル: これらは、ユーザーの指示、システム プロンプト、および前の質問のコンテキストの違いを認識するために LLM がトレーニングされる特殊文字の組み合わせです。

    例: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]

  • 7B:特定のモデル内のパラメーターの数を示します (一般に、大きいほど優れています)。パラメーターは、モデルがトレーニング中に学習し、予測を行うために使用される内部変数です。私の目的では、7B モデルは 12GB VRAM を搭載した GPU に適合する可能性があります。

  • GGUF:これは、コンシューマ ハードウェア (CPU/GPU) 向けに設計された LLM に特有の形式です。興味のあるモデルが何であれ、PrivateGPT で使用するには、その GGUF バージョン (通常はTheBlokeによって作成されています) を見つける必要があります。

  • Q2-Q8 0、K_M または K_S: GGUF リポジトリのファイルを参照すると、同じモデルの異なるバージョンが表示されます。数値が大きいほど、圧縮率が低くなり、品質が高くなります。 K_M の M は「中」を意味し、K_S の S は「小」を意味します。

  • VRAM:これは GPU のメモリ容量です。 GPU に完全にロードするには、利用可能な VRAM よりも小さいサイズのモデルが必要になります。

  • トークン:これは、LLM が言語を評価する指標です。各トークンはおよそ 4 文字で構成されます。

PrivateGPTとは何ですか?

PrivateGPT (pgpt) は、ユーザーが自宅で自分のハードウェアで LLM を使用できるようにするユーザー インターフェイスとプログラム可能な API を提供するオープン ソース プロジェクトです。これにより、RAG がサポートするドキュメント Q/A のドキュメントを独自のローカル データベースにアップロードできます。


PrivateGPT ドキュメント - 概要:

PrivateGPT は、プライベートなコンテキスト認識 AI アプリケーションの構築に必要なすべての構成要素を含むAPIを提供します。この API は OpenAI API 標準に従って拡張しており、通常の応答とストリーミング応答の両方をサポートします。つまり、ツールの 1 つで OpenAI API を使用できる場合、 localモードで privateGPT を実行している場合は、コードを変更することなく、代わりに独自の PrivateGPT API を無料で使用できます。


最初からLLMに問い合わせるべきでした。

概要

  1. 私は、 PrivateGPT UI\RAG を使用して、章を予約するために質問することから始めました。

    次に、要約用のテキストを事前に選択してみました。これは、ラウンド 1 のランキングのインスピレーションであり、私の結果がどれほど大きな違いを示すかを確認するためのものでした。 (事前に選択されたセクションの要約。)

  2. 次に、どのモデルがこのタスクに最も適しているかを調べたかったのですが、これがラウンド 2 のランキングにつながり、 Mistral-7B-Instruct-v0.2が明確な勝者となりました。

  3. 次に、プロンプト スタイルをランク付けし、期待どおりのプロンプト スタイルを取得するコードを作成することで、このモデルから最良の結果を得たいと考えました。

  4. もちろんその後は、さまざまなシステム プロンプトをテストして、どれが最もパフォーマンスが高いかを確認する必要がありました。

  5. 次に、いくつかのユーザー プロンプトを試して、後処理が最小限で済む要約を生成するための正確な最適なプロンプトは何かを判断しました。

  6. 最終的には、この種のテストは LLM ごとに、またプロセスの改良の有効性を判断するために実施する必要があります。私の意見では、各モデルがその最も理想的な条件をターゲットにして初めて、相互に適切にランク付けできるようになります。

ランキング

私がさまざまな LLM バリアントのテストを開始したとき、 mistral-7b-instruct-v0.1.Q4_K_M.ggufは PrivateGPT のデフォルト セットアップ (CPU 上で実行するように作られている) の一部として付属していました。ここでは、Q8_0 バリアントを好みます。


同じタスクに対して 50 以上の異なる LLM を試してきましたが、Mistral-7B-Instruct が依然として最高の部類に入ります。特に v0.2 がリリースされて以来、これより優れたものは見つかりませんでした。


TLDR: Mistral-7B-Instruct-v0.2 - 要約タスクの現在のリーダーです。

ラウンド 1 - Q/A と概要

Q/A を行うときに、小さいデータの塊をデータベースにアップロードし、毎回白紙の状態から開始すると、はるかに良い結果が得られることがすぐにわかりました。そこで、Q/A を目的として PDF を章に分割し始めました。


最初の分析では、次のタスクに対して 5 つの異なる LLM をテストしました。

  1. 70 ページの本の章に対して同じ 30 の質問をします。
  2. 同じ 70 ページの本の章を 30 のチャンクに分割して要約したものです。

質問・回答ランキング

  1. ヘルメス・トリスメギストス・ミストラル 7b - これらのテスト中は私のお気に入りでしたが、実際に要約を編集するときに冗長すぎると判断しました。
  2. SynthIA 7B V2 - このラウンドでテストしたモデルの中で私のお気に入りになりました。
  3. Mistral 7b Instruct v0.1 - 期待したほど良くありません。
  4. CollectiveCognition v1.1 Mistral 7b大量のフィラーがあり、すべての中で最も長い時間がかかりました。品質と有用性の点ではミストラルよりも少し高いスコアを獲得しましたが、つなぎ目の量が多すぎて読むのが楽しくなくなりました。
  5. KAI 7b 指示の回答が短すぎたので、BS をもう少し目立たせました。良いモデルですが、本の詳細な要約には適していません。

モデルごとに表示

  • 答えを生成するのに必要な秒数
  • 主観的な有用性\品質評価の合計
  • 何文字生成されましたか?
  • ターゲット範囲内で見つかったコンテキスト コンテキスト チャンクの合計。
  • 生成されたテキストで見つかった以下の品質の数:
    • フィラー (価値の低い余分な単語)
    • 短い (短すぎるため、作業するには十分ではありません。)
    • BS (この本の内容ではないので役に立ちません。)
    • Good BS (対象セクションからのものではありませんが、有効です。)

モデル

評価

検索精度

キャラクター

BS

フィラー

短い

良いBS

ヘルメス・トリスメギストス・ミストラル-7b

68

56

62141

298

3

4

0

6

シンシア-7b-v2.0

63

59

28087

188

1

7

7

0

ミストラル-7b-命令-v0.1

51

56

21131

144

3

0

17

1

集団認知-v1.1-ミストラル-7b

56

57

59453

377

3

10

0

0

kai-7b-指示

44

56

21480

117

5

0

18

0

まとめランキング

この最初のラウンドでは、章の内容をさまざまなセクションに分割しました。

それぞれ 900 ~ 14000 文字 (または 225 ~ 3500 トークン)。


注: 数多くの大規模なコンテキスト モデルがリリースされているにもかかわらず、今のところ、私は依然としてコンテキストを小さくした方がより良い要約が得られると信じています。私は、要約タスクごとに 2750 トークン (11000 文字) を超えることを好みません。


  1. ヘルメス トリスメギストス ミストラル 7b - まだリードしています。冗長ですが、補足がいくつかあります。これらの結果を使用できます。
  2. SynthIA 7B - かなり良いですが、簡潔すぎます。答えの多くは完璧でしたが、7 つは短すぎて使用するには不完全でした。
  3. ミストラル 7b 命令 v0.1 - 短すぎます。
  4. KAI 7b 指示- 短すぎます。
  5. CollectiveCognition v1.1 Mistral 7b - ゴミがたくさんあります。いくつかの要約は非常に詳細で完璧でしたが、回答の半分以上は要約ではなく、テキストに基づいた一連の質問でした。


驚くことではないが、概要は Q/A よりもパフォーマンスがはるかに優れていましたが、より細かく対象を絞ったコンテキストも含まれていました。

名前

スコア

生成される文字

OG との差異 (%)

生成までの秒数

短い

ごみ

BS

埋める

質問

詳細

ヘルメス・トリスメギストス・ミストラル-7b

74

45870

-61

274

0

1

1

3

0

0

シンシア-7b-v2.0

60

26849

-77

171

7

1

0

0

0

1

ミストラル-7b-命令-v0.1

58

25797

-78

174

7

2

0

0

0

0

kai-7b-指示

59

25057

-79

168

5

1

0

0

0

0

集団認知-v1.1-ミストラル-7b

31

29509

-75

214

0

1

1

2

17

8

完全なデータとランキングについては、 Google ドキュメントまたは GitHub ( QA スコア概要ランキング)でご覧ください。

ラウンド 2: まとめ - モデルのランキング

繰り返しますが、私は 7B モデルの Q8 バージョンの方が好きです。


Mistral 7b Instruct v0.2 がリリースされたことを発見したことは、新たなテスト ラウンドを行う価値がありました。

プロンプトスタイルもテストしてみることにしました。 PrivateGPT は Mistral プロンプトには同梱されておらず、Mistral プロンプトは Llama2 プロンプトに似ていますが、デフォルト (llama-index) プロンプトの方がパフォーマンスが優れているようです。

  • SynthIA-7B-v2.0-GGUF - このモデルは私のお気に入りになっていたので、ベンチマークとして使用しました。
  • Mistral-7B-Instruct-v0.2 (Llama-index プロンプト) ここでのショーの主役、非常に印象的です。
  • Mistral-7B-Instruct-v0.2 (Llama2 プロンプト) まだ良好ですが、llama-index プロンプトを使用するほどはありません
  • Tess-7B-v1.4 - Synthia v2 と同じ作成者による別のバージョン。良いですが、それほど良くはありません。
  • Llama-2-7B-32K-Instruct-GGUF - llama-index プロンプトでは正常に動作しましたが、動作が遅くなりました。 llama2 プロンプトではダメです。 (Llama2 の「命令のみ」スタイルで再度テストする必要があります)

まとめランキング

要約のみ、Q/A は本の要約としては効率が低いだけです。

モデル

% 違い

スコア

コメント

シンシア 7b V2

-64.43790093

28

良い

ミストラル 7b 命令 v0.2 (デフォルトのプロンプト)

-60.81878508

33

Vグッド

ミストラル 7b 命令 v0.2 (Llama2 プロンプト)

-64.5871483

28

良い

テス 7b v1.4

-62.12938978

29

あまり構造化されていない

ラマ 2 7b 32k 指示 (デフォルト)

-61.39890553

27

あまり構造化されていない。遅い

完全なデータとランキングについては、 Google ドキュメントまたはGitHubでご覧ください。

ラウンド 3: プロンプト スタイル

前回のラウンドでは、 Mistral 7b Instruct v0.2 がデフォルトのプロンプトで llama2 よりもはるかに優れたパフォーマンスを示していることに気付きました。


実際、mistral プロンプトは llama2 に非常に似ていますが、まったく同じではありません。

  1. ラマ_インデックス (デフォルト)
 system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
  1. ラマ2:
 <s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
  1. ミストラル:
 <s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]


私はdefaultスタイルで出力のテストを開始し、次にllama2プロンプトスタイルでテストしました。次に、ミストラル テンプレートのコーディングに取り掛かりました。


そのランキングの結果により、私は正しくコーディングできたという自信が得られました。

プロンプトスタイル

% 違い

スコア

注記

ミストラル

-50%

51

完璧!

デフォルト (ラマインデックス)

-42%

43

不適切な見出し

ラマ2

-47%

48

構造がありません

完全なデータとランキングについては、 Google ドキュメントまたはGitHubでご覧ください。

ラウンド 4: システム プロンプト

プロンプト スタイルを設定したら、いくつかの異なるシステム プロンプトを試してみましたが、その結果には驚きました。

名前

システムプロンプト

変化

スコア

コメント

なし


-49.8

51

完璧

デフォルトのプロンプト

あなたは親切で、礼儀正しく、誠実なアシスタントです。 \n常にできるだけ親切に回答し、与えられたすべての指示に従ってください。 \n情報を推測したりでっちあげたりしないでください。 \n指定された指示やコンテキストを参照しないでください。」

-58.5

39

あまり良くない

マイプロンプト1

「あなたは愛されています。要約、概要、構造化の専門家として行動してください。\nあなたの文章のスタイルは有益で論理的でなければなりません。」

-54.4

44

あまり良くない

単純

「あなたは役立つ AI アシスタントです。出力の一部としてユーザーの指示やシステム コンテキストを含めないでください。」

-52.5

42

あまり良くない

結局のところ、システム プロンプトを使用せずに要約を作成するには、 Mistral 7b Instruct v0.2が最適であることがわかりました。


おそらく、別のタスクでは異なる結果が得られるか、あるいはより適切なプロンプトが表示されるかもしれませんが、これはうまく機能するので、私はそれをいじりません。


完全なデータとランキングについては、 Google ドキュメントまたはGitHubでご覧ください。

ラウンド 5: ユーザープロンプト

私がすでに疑い始めているのは、プロンプト内の単語を減らすことでより良い結果が得られるということです。 Mistral 7b Instruct v0.2の最適なシステム プロンプトを見つけたので、どのユーザー プロンプトがそれに最も適しているかもテストしました。


プロンプト

vs OG

スコア

注記

Propmt0

次の文章を要約した、簡潔かつ包括的なメモを書きます。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。外部情報を追加せずに、このテキストの重要な知識に焦点を当てます。

43%

11


プロンプト1

次の文章を要約した、簡潔かつ包括的なメモを書きます。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。外部情報を追加せずに、このテキストの重要な知識に焦点を当てます。

46%

11

追加メモ

プロンプト2

次の文章を要約した包括的なメモを書きます。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。

58%

15


プロンプト3

次のテキストの重要な部分を要約した簡潔な箇条書きメモを作成します。ネストされた箇条書きを使用し、見出しの用語と主要な概念を太字にし、読みやすさを確保するために空白を含めます。繰り返しを避けてください。

43%

10


プロンプト4

次の文章を要約した簡潔なメモを書きます。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。

41%

14


プロンプト5

次のテキストを要約した、包括的かつ簡潔なメモを作成します。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。

52%

14

追加メモ

完全なデータとランキングについては、 Google ドキュメントまたはGitHubでご覧ください。


おそらく、11b または 30b モデルをサポートできる強力なハードウェアがあれば、より説明的なプロンプトでより良い結果が得られるでしょう。 Mistral 7b Instruct v0.2 であっても、創造的な命令を試すことに前向きですが、今のところは既存のプロセスを改良することに満足しています。

プロンプト 2: 勝ちます!

次の文章を要約した包括的なメモを書きます。ネストされた箇条書きを使用します。見出し、用語、主要な概念を太字で示します。


この場合、包括的は「簡潔」よりもパフォーマンスが良く、さらには「包括的だが簡潔」よりも優れています。


ただし、これはユースケースによって異なることに注意してください。私が探しているのは、重要な知識を網羅した、非常に凝縮された読みやすいメモです。


基本的に、原作を読んでいなくても、特定の詳細すべてではないにしても、そこからどのような情報が伝えられているかはわかるはずです。原作を読んだとしても、後からはほとんど覚えていないでしょう。これらのメモは、主要なトピックへのクイックリファレンスです。

結果

これらのテストから得た知識を使用して、539 ページの私の最初の完全な本を 5 ~ 6 時間で要約しました。信じられない!

要約ごとに何週間も費やす代わりに、最初の 9 冊の本の要約をわずか 10 日で完了しました。

盗作

ここで、公開されたテキストごとに以下のCopyLeaksの結果を確認できます。

特にこれが営利目的ではなく教育目的であることを考慮すると、この数字は許容範囲であると思います。

モデル

性格の違い

同一

マイナーな変更

言い換え

一致した合計

東洋の身体 西洋の心

シンシア 7Bv2

-75%

3.5%

1.1%

0.8%

5.4%

治癒力 迷走神経

ミストラル-7B-命令-v0.2; SynthIA-7B-v2.0

-81%

1.2%

0.8%

2.5%

4.5%

アーユルヴェーダと心

ミストラル-7B-命令-v0.2; SynthIA-7B-v2.0

-77%

0.5%

0.3%

1.2%

2%

トラウマ生存者の断片化された自己を癒す

ミストラル-7B-命令-v0.2

-75%




2%

安全な基地

ミストラル-7B-命令-v0.2

-84%

0.3%

0.1%

0.3%

0.7%

体がスコアを記録する

ミストラル-7B-命令-v0.2

-74%

0.1%

0.2%

0.3%

0.5%

チャクラの完全な本

ミストラル-7B-命令-v0.2

-70%

0.3%

0.3%

0.4%

1.1%

愛着理論の50年

ミストラル-7B-命令-v0.2

-70%

1.1%

0.4%

2.1%

3.7%

成人の愛着障害

ミストラル-7B-命令-v0.2

-62%

1.1%

1.2%

0.7%

3.1%

心理学専攻の仲間

ミストラル-7B-命令-v0.2

-62%

1.3%

1.2%

0.4%

2.9%

あなたの人生における心理学

ミストラル-7B-命令-v0.2

-74%

0.6%

0.4%

0.5%

1.6%

完成した本の要約

要約ごとに何週間も費やす代わりに、最初の 9 冊の本の要約をわずか 10 日で完了しました。括弧内はオリジナルのページ数です。

  1. イースタン ボディ ウエスタン マインドアノディア ジュディス (436 ページ)
  2. 迷走神経の治癒力 スタンリー・ローゼンバーグ (335 ページ)
  3. アーユルヴェーダと心 デビッド・フローリー博士 (181 ページ)
  4. トラウマ生存者の断片化した自己を癒すジャニナ・フィッシャー (367 ページ)
  5. 安全な基地ジョン・ボウルビー (133 ページ)
  6. 身体はスコアを守るベッセル・ファン・デル・コルク (454 ページ)
  7. ヨガとポリヴェーガル理論、『ポリヴェーガルの安全性』スティーブン・ポージスより(37 ページ)
  8. ルウェリンのチャクラ全書シンシア・デイル (999 ページ)
  9. 愛着理論の 50 年: ドナルド・ウィニコット記念講演(54 ページ)
  10. 成人の愛着障害(477 ページ)
  11. 心理学専攻の仲間ダナ・S・ダン、ジェーン・S・ハロネン (308ページ)
  12. 救いの暴力の神話 ウォルター・ウィンク(5 ページ)
  13. あなたの人生における心理学サラ・ギソンとマイケル・S・ガザニガ (1072 ページ)

ウォークスルー

私の手順を詳しく知りたい場合は、スクリプトと例が含まれているGitHub のウォークスルーを確認してください。

結論

プロセスを改良し、自信を持ってプロンプト形式を使用できるようになったので、さらにテストを実施します。実際、私はすでにさらなるテストとランキングを実施しました (それらは次に公開します) が、もちろん、さらに多くのテストを再度実施し、学習を続けます。


AI を使用して実行するどのようなタスクでも最高の結果を得たい場合は、自分で実験を行って何が最も効果的かを確認する必要があると私は今でも信じています。人気モデルのランキングだけに頼るのではなく、ご自身の調査の参考にしてください。

追加リソース


ここにも登場します。