Gemma2 9B すごいね
![Gemma2 9B すごいね](https://bloom-t.co.jp/wp-content/uploads/2024/07/アイキャッチ.webp)
AI開発室のIです。
最近、Googleから公開された Gemma2 9Bについて書こうと思います。
はじめに
2022年11月に、ChatGPT3.5が登場して以来、生成AIが社会に普及していきました。言語処理学会第29回年次大会(NLP2023)で、「緊急パネル:ChatGPTで自然言語処理は終わるのか?」という緊急パネルディスカッションが開かれるほど、自然言語処理において革新的なことが起こりました。
大規模言語モデル(LLM)は、モデルサイズが増えるほど、データ量が増えるほど、計算リソースを使えば使うほど賢くなる、スケーリング則が知られており、そのため、動かすには、大量のメモリー、大量のGPUが必要でです。そのため、一般のPCで、賢さを保ちつつ、動かすには、とても難易度が高いものと思われていました。
また、大量の計算資源を使って作られているため、作るために億単位の大量の資本を投下しており、それをオープンに公開する、というのは、なかなか難しいものでありました。
しかし、2024年4月に、Meta社により、Llama 3 の発表され、ChatGPT3.5越えの性能を持ち、商用利用が、「月間アクティブユーザーが7億人以下であれば無償で利用できる」という感じで、事実上、制限がない形で利用できるものが出てきました。
とはいえ、Llama 3 70Bを動かすには、64G以上のGPUを必要とし、設備投資に100万以上かかりますね、と言われていました。一般の人間並みに賢いのだから、それでもリーズナブルかもしれないとか思ったりしたものでした。
そして、2024年6月末に、Google社により、Gemma2 が発表されました。
Gemma2は、パラメーターは、公開されており、Apache License 2.0 で、特に制限なく使えます。Gemma2 9B は、量子化(パラメータの精度落とす)をすると、5G程度の容量でコンパクトで、CPUでも、とても遅いですが動きますし、大きめのGPU(メモリー12G~)を積んだ、いわゆるゲーミングPCレベル(30万~)のものでであれば、ちょっと遅いかな?という感じで、ローカルで使うことができます。
なぜローカルLLMが必要?
情報セキュリティ
よくいわれることですが、ChatGPTは、ユーザが入力した内容を学習データに使うことを公言しており、企業としては、大事な顧客のデータなどを外に漏らすことはできないです。そのため、外部に出さない形で、LLMの処理をしたいという需要は常にあります。この辺は、大手クラウドサービスで解決されているので、特記するほどのことではありません。
大量の自然言語処理をしたい
LLMは、キラープロダクトがChatGPTのようなチャットをするプロダクトなため、チャットができるもの、と思いがちですが、自然言語処理的には、LLMは今まであった手法をなぎ倒していった、現状のリーサルウェポンという印象があります。
「機械処理として文章を読んで解釈して、大量の背景知識を持って判断して、文字列を作ってくれる」というのがすごく強力です。今までできなかったことを実現しています。また、プロンプトの工夫だけで、簡単な問題から難しい問題をこなしてしまうのがすごいです。昔、私は自然言語処理の研究者でもあったので、これを実現するには、これとあれとそれをやらないと実現できないけど、精度としてはいまいちなんだよなぁ、、と思うことも、さくっと精度高くやってくれます。だからこそ、言語処理学会で、緊急パネルが開かれたりするわけですね。
簡単な言語処理からそこそこ難しい言語処理まで何でもやってくれるものです。問題のレベル感を把握して手法の選択というプロセスを飛ばしてしまうのはほんとすごいです。
認知タスクというか、人間だったら、一目見て一瞬で処理できるものだけど、機械にやらせることが今までだと難しいよなぁ、と思っていたことが、機械でできることであります。大量のデータの前処理や、整理整頓、ラベル付け、感情判定などののタスクにもLLMは使えます。自分でやるにはちまちますぎて辛い作業で、バイトを雇うほど必要あるのか疑問に思うようなような処理がやれる可能性ができました。
ChatGPTのOpenAIには、 Batch APIというのがあり、APIの価格は半額で、即時には返さないよ、という仕組みがあり、このような大量データの生成需要を考えたプランがあります。GoogleのGeminiFlashは、早く安く生成AIの出力を返す、というのがコンセプトであり、この需要を考えたものだと思います。
とはいえ、ほんとにLLMを使って結果が出るかわからないものに、10万件のデータを処理するので、追加で1万円のお金がかかります、というのは、なかなか面倒であります。POC(概念検証)レベルでは、追加費用よりも固定費ですませたいですよね。
プロダクトとなったときも、毎月、継続で費用が掛かり続けるのも考え物です。
自律型AIエージェント的な使い方をしたい
LLMの出力からさらにLLMの出力をさせるという形で、AIが自律的に考えて次の行動をするというものが、LLMを使ってできることがわかってきました(BabyAGIやAutoGPTなど)。
「その仕事、AIエージェントがやっておきました。(西見公宏)」に詳しい。しかし、このようなものを作ると、何度もLLMに問い合わせるわけで、APIの金額を考えると躊躇します。
(GeminiFlashの一日1500回無料を使えばいろいろやれる感じもしますが)
ファインチューニングしたい
ChatGPTなどの大手は、LLMが何をしゃべるのかわからないため、きわどい話題には、拒否的な返答をするようにされています。うまくプロンプトで誘導すると拒否を回避できるという話もあるのですが、あまり生産的ではありません。このきわどい話題のラインは、サービス側が決めているので、自分たちが考えているラインと違う場合があります。ChatGPT,Gemini,Claudeなどの大手は、かなり保守的な形でラインを作っています。そのため、LLMをファインチューニングしたい、というのもあります。
しかし、ファインチューニングまで含めると、GPUのメモリーは、Gemma2 9Bでも、40Gは欲しいので、GoogleのColab 環境で実行するとかになります。
ファインチューニング は、かなりの計算コストを使うので(金額的にも)大変なのですが、ChatVectorという手法があり、LLM全体の引き算足し算で、そのファインチューニングした能力を引き継げるようです。
Chat Vectorを使って日本語LLMをチャットモデルに改造する #Python – Qiita
この計算は、CPUでもできるので、GPUを必要としません。普通のメモリーとディスクだけを必要とします。Gemma2は、オープンパラメータなので、世界の人たちがそれぞれでファインチューニングをして、その結果をHuggingfaceにアップロードしています。これらをうまい塩梅でブレンドすることで新たなツヨツヨLLMが作られる可能性があります。
ロマン
自分で人工知能を作れてしまうのは、ロマンだよね。
このような背景がある中、市販のゲーミングPC程度でも動く、小さくて賢い、Gemma2 9B がでました。
Gemma2 の性能
公式のベンチマークでは、
![Benchmark](http://bloom-t.co.jp/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif)
であり、同じ規模のオープンモデルでは、いまのところ(2024年7月)では、もっともよいというかんじです。
日本語性能も、
![](https://bloom-t.co.jp/wp-content/uploads/2024/07/image-1.png)
これにあるように、ChatGPT3.5 と ChatGPT4.0 の間ぐらいのレベル感であり、Googleが提供する、有料のGemini1.5 Flashとほぼ同じというのもびっくりします。
(Shaberi3評価は、日本語の言語モデル(LLM)の能力を評価するためのベンチマークテストです。)
また、Gemma2をファインチューニングしたものでは、さらに性能は向上し、
![](https://bloom-t.co.jp/wp-content/uploads/2024/07/image-2.png)
という感じで、ChatGPT4 Claude3.5sonnet の有料のものには、かないませんが、ローカルで動かすという点では、ビックリするレベルの性能を持ちます。Gemma2が発表して一か月もしない間の進化にもビックリします。
Gemma2 の使い方
Chatソフトとして使いたいなら、LM Studio(https://lmstudio.ai/) でしょうか。インストールし、Gemma2で検索し、お気に入りが多いものを選んでおけば、間違いないです。複数見つかるのは、それぞれの人が、ファインチューニングをしているバージョンがあるからです。
プログラムから使うには、huggingface(https://huggingface.co/google/gemma-2-9b)で、モデルは公開しており、このページにある記述にしたがって、pythonでtransformersライブラリを使い使うこともできますが、ollamaを使ったほうが、使う分には簡単です。
https://ollama.com/download
から、ollamaをダウンロードしてインストールします。パスなどの設定をして一度再起動します。
コマンドプロンプトを起動し、
ollama run gemma2
と入れると、ダウンロードが始まり、コンソールですが、gemma2 9B が使えます。
pythonからも、
pip install ollama
とpipからインストールして
import ollama
response1 = ollama.generate(model=’gemma2′, prompt=’What is the capital of France? (Only capital name)’)
response2 = ollama.generate(model=’gemma2′, prompt=’And what about Germany? (Only capital name)’)
print(response1[‘response’])print(response2[‘response’])”’
という感じで結果の取得が行えます。
Gemma2での生成の事例
今、AIチームとして、Kaggleの lmsys-chatbot-arena というコンペに参加しています。https://www.kaggle.com/competitions/lmsys-chatbot-arena/overview
これは、チャットボットアリーナという、あるプロンプトから異なるLLMの回答のうち、どちらが勝ったかを投票できるサイトがあり、そこでの勝敗予測をするコンペティションです。適切に人間に好まれる回答を出すというのは、よいChatBotとしての振舞なので、このチャットボットアリーナの勝敗からLLMを学習していく手法、そもそも生成によって、チャットボットアリーナを再現して学習していく手法などが提案されているところであり、効果的に勝敗予測する手法の開発は、LLMの発展に寄与するものであります。
Kaggle のコンペでは、約5万8千件のプロンプトと回答A,回答Bの文章と、その勝敗のデータが与えられています。
私としては、比較的軽量のTFIDFなどの古典的なテキスト分析手法とBARTでのテキストベクトル化手法を使いLightGBMを使い分類器を作るという手法でやったのですが、結果は、Kaggleスコア1.018程度で、現在1500人中、1000位程度で散々でした。
上位の手法は、llama3 7B を使った手法、Gemma2 9B を使った手法のようです。Kaggle環境では、GPUに制約があり、動かせるMaxが7B,9Bクラスなのです。特に、6月末にGemma2 9Bが公開されてから、コンペが終盤になってきたこともあるのでしょうが、スコアが伸びており、上位は、そのどちらかを使用したものとなっている模様です。公開ノートブックでの最上位スコアは、0.941で、Gemma2をファインチューニングしたものです。
このコンテストの問題の難しさを示すために、Gemma2で生成をしてみました。
これは、一つのプロンプトから異なるLLMからの返答です。人間の好む返答の分析をしたいです。
ステップ1. プロンプトの内容を要約してください
ステップ2. 回答それぞれを分析してください
ステップ3. 人間が選んだのは「{win_response}」です。なぜ選んだか考えください
回答は日本語でお願いします
# prompt
{prompt}
# response a
{response_a}
# response b
{response_b}
というようなプロンプトを作り、Gemma2に生成させました。チャットボットアリーナは、基本英語やり取りが行われています(約95%)。とはいえ、英語が苦手な私としては、英語を読むのはしんどいので、日本語で書いてもらうことにしました。一件あたり、GeForce RTX 4060 Ti 16GB を使い約15秒くらいかかりました。
以下は、はじめの5件です。
#事例:00000
## Response A と B の分析
**ステップ1:promptの内容を要約してください**
promptは、女性管理職の割合目標設定の倫理的な妥当性と、パイナップルがピザに乗せるべきかどうかという意見を尋ねています。
**ステップ2:分析的にそれぞれの回答を分析してください。**
* **Response A:**
* 女性管理職の割合目標設定について、両方の立場を詳細に説明し、それぞれの主張の根拠を提示しています。
* 倫理的な側面を深く掘り下げ、公平性、平等、多様性、差別などの概念を論じている。
* パイナップル問題については、両方の意見をユーモアを交えて表現し、結論として個人の好みを尊重する姿勢を示しています。
* **Response B:**
* 女性管理職の割合目標設定については、両方の立場を簡潔に述べているが、Response Aほど詳細な分析や議論は行っていない。
* 倫理的な側面については触れられていない。
* パイナップル問題については、Response Aと同様に両方の意見を述べているが、表現が乏しく、ユーモアも少ない。
**ステップ3:人間の回答は、「response Aの勝ち」 でした。なぜその回答になったのか分析してください。**
人間の回答が Response A を選んだ理由は、以下の点が挙げられます。
* **Response Aは、問題に対する深い理解と分析力を持っている。**
女性管理職の割合目標設定という複雑な問題について、多角的な視点から論じ、それぞれの主張の根拠を明確に提示しています。
* **Response Aは、倫理的な側面を深く掘り下げている。**
単に両方の意見を述べるだけでなく、公平性、平等、多様性、差別などの概念を論じ、問題の複雑さを示しています。
* **Response Aは、ユーモアを交えて表現することで、読者の興味を引きつけ、親しみやすい回答になっている。**
パイナップル問題については、両方の意見をユーモアを交えて表現することで、読者の共感を呼び、回答全体を楽しく読みやすくしています。
一方、Response Bは、Response Aに比べて分析力や倫理的な考察が不足しており、表現も乏しいです。そのため、人間の回答では Response A が優れていると判断されたと考えられます。
真面目な問題と、しょうもない話が混ざっていて、ユーモアを問われると・・
#事例:00001
## Response A と B の分析
**ステップ1:promptの内容を要約**
ユーザーは、結婚許可証と結婚証明書の違い、そしてカリフォルニア州でできるだけ早く両方を取得する方法、最短期間は1日か10日なのかを尋ねています。
**ステップ2:それぞれの回答の分析**
* **Response A:**
* 結婚許可証と結婚証明書の定義、役割、取得方法を説明しています。
* カリフォルニア州での取得手順を詳細に説明していますが、重複や曖昧な表現が見られます。
* 最短期間については、具体的な数字を提示する代わりに、「数日」と曖昧な表現を使用しています。
* **Response B:**
* 結婚許可証と結婚証明書の定義、役割、取得方法を明確に説明しています。
* カリフォルニア州での取得手順を簡潔かつ正確に説明しています
* 最短期間については、「1日」と「10日」の両方を明確に提示し、それぞれの理由を説明しています。
**ステップ3:人間の回答が「response_Bの勝ち」になった理由**
人間の回答が「response_Bの勝ち」になった理由は、以下の点が挙げられます。
* **明確性と正確性:**
Response B は、結婚許可証と結婚証明書の定義、役割、取得方法を明確かつ正確に説明しています。
Response A は、重複や曖昧な表現が見られ、理解しにくい部分があります。
* **簡潔さ:**
Response B は、Response A より簡潔で読みやすい文章で書かれています。
* **具体的な情報:**
Response B は、最短期間について「1日」と「10日」の両方を明確に提示し、それぞれの理由を説明しています。Response A は、具体的な数字を提示せず、「数日」と曖昧な表現を使用しています。
全体的に、Response B は、ユーザーの質問に的確かつ分かりやすく回答しており、より信頼性の高い回答として評価されたと考えられます。
簡潔で具体的であることが勝因と。
#事例:00002
## Function Callingの説明:LLMの回答分析
### ステップ1:promptの内容の要約
ユーザーは、”function calling”(関数呼び出し)について説明するよう、LLMに依頼しています。具体的には、関数呼び出しのプロセスとその方法を説明するよう求めています。
### ステップ2:それぞれの回答の分析
**Response A:**
* **強み:** Pythonを用いた具体的な例を挙げ、関数定義と呼び出しの過程を明確に説明しています。
* **弱み:** 他のプログラミング言語の例は示しておらず、関数呼び出しの一般的な概念を説明する部分に欠けます。
**Response B:**
* **強み:** 関数の役割(コードの組織化、再利用性など)を説明し、関数呼び出しの一般的な概念を理解する助けになる情報を提供しています。
* **弱み:** 例としてJavaScriptを使用していますが、Response Aのように、関数定義と呼び出しの過程を明確に示す例は不十分です。また、返り値の概念についても触れられていますが、具体的な例が不足しています。
### ステップ3:人間の回答が「引き分け」になった理由
人間の回答が「引き分け」になった理由は、両方のLLMの回答がそれぞれ異なる強みと弱みを持っているためと考えられます。
* Response Aは具体的な例を用いて関数呼び出しの方法を明確に説明していますが、一般的な概念を説明する部分に欠けます。* Response Bは関数呼び出しの一般的な概念を説明していますが、具体的な例が不十分です。
人間の回答は、両方のLLMの回答を総合的に判断し、それぞれの強みを補完するような回答を提示したと考えられます。
異なる強みと弱みがあるため、引き分けと。
#事例:00003
## Response A と B の分析
**ステップ1:promptの内容を要約してください**
ユーザーは、非常に珍しいカテゴリのデータを使って分類器を構築する場合に、テストセットを作成する方法を尋ねています。
**ステップ2:分析的にそれぞれの回答を分析してください。**
* **Response A:**
* 非常に詳細で、テストセット作成のための10個以上の具体的な戦略を提示しています。
* 各戦略に簡単な説明を加え、具体的な例を挙げているため、理解しやすくなっています。
* データ生成、過剰サンプリング、転移学習、クラスバランス化、関連ドメインデータの利用、オンラインデータの活用、専門家アノテーション、アクティブラーニングなど、幅広いアプローチを網羅しています。
* 評価指標の選択についても触れ、F1スコアやAUC-ROCなどの代替指標を提案しています。
**Response B:**
* Response Aに比べて、具体的な戦略は限られています。
* データ収集、層別サンプリング、データのバランス、交差検証、正則化といった一般的な手法を提示しています。
* 各手法の説明は簡潔で、Response Aほど詳細ではありません。
**ステップ3:人間の回答は、「response Aの勝ち」 でした。なぜその回答になったのか分析してください。**
人間の回答者は、Response Aのより詳細で包括的な回答を評価したと考えられます。Response Aは、Response Bよりも多くの具体的な戦略を提示し、それぞれの戦略をより詳しく説明しているため、ユーザーがテストセットを作成するためのより実践的なガイダンスを得られると考えられます。
特に、Response Aが取り上げたデータ生成、転移学習、関連ドメインデータの利用、オンラインデータの活用、専門家アノテーション、アクティブラーニングなどの戦略は、非常に珍しいカテゴリのデータセットを作成する際に特に役立つ可能性があります。
高い専門性からくる具体的な戦略提示が勝因と
#事例:00004
## Tel Aviv to Jerusalem 旅行方法の比較分析
**ステップ1:promptの内容を要約**
ユーザーは、テルアビブからエルサレムへの旅行方法として、車、バス、飛行機のどれが最適かを尋ねています。
**ステップ2:それぞれの回答の分析**
* **Response A:**
* 3つの交通手段(車、バス、飛行機)の利点と欠点を比較しています。
* 各交通手段にかかる時間や距離を具体的に示しています。
* 飛行機は、テルアビブとエルサレム間の直行便がないことを指摘しています。
* バス旅行を推奨していますが、時間がない場合は飛行機も選択肢として提示しています。
**Response B:**
* 個人の好みや状況に応じて最適な方法が異なることを強調しています。
* 車での移動は、駐車場の難しさや費用を考慮すべきであると指摘しています。
* バスは、EggedやDanなどの主要な会社が運行しており、約1時間の所要時間であることを具体的に述べています。
* 飛行機は、距離が近いため不適切であると明確に述べています。
* バス旅行を最も一般的な選択肢として推奨しています。
**ステップ3:人間の回答が「Response Bの勝ち」になった理由**
人間の回答が「Response Bの勝ち」になった理由は、以下の点が挙げられます。
* **Response Bは、より実践的なアドバイスを提供しています。**
特に、車での移動の際の駐車場問題や、飛行機が不適切な選択肢であることを明確に指摘している点は、ユーザーにとって役立つ情報です。
* **Response Bは、より簡潔で分かりやすい文章で書かれています。**
Response Aは、詳細な情報が多すぎて、ユーザーが重要なポイントを把握しにくいかもしれません。
* **Response Bは、ユーザーの状況を考慮したアドバイスを提供しています。**
例えば、「個人の好みや状況に応じて最適な方法が異なる」と述べている点は、ユーザーのニーズに合致しています。
ユーザーにとってより実践的で、分かりやすいアドバイスを提供しているため、人間の回答としてより適切だと判断されたと考えられます。
詳細情報が多すぎてもダメ。適切な簡潔さが必要と。
#事例:00005
## Pikachu vs. Zeus Rap Battle 分析
**ステップ1:promptの内容を要約**
このpromptは、Epic Rap Battles of Historyのスタイルで、ピカチュウとゼウスのラップバトルを作成するよう依頼しています。それぞれのキャラクターは2つのバースを披露し、韻を踏んだ言葉と、お互いの弱点を攻撃するような内容にする必要があります。
**ステップ2:それぞれの回答の分析**
* **Response A:**
* 韻律とリズムは比較的整っているが、内容が浅く、キャラクターの個性を十分に表現できていない。
* ゼウスは「雷の使い手」「神々の王」といったイメージを表現しているが、ピカチュウは「電気の力」「魅力」といった要素を強調している。
* 全体的に、キャラクターの個性や背景を踏まえた攻撃的な内容が不足している。
* **Response B:**
* 韻律とリズムが非常に良く、Epic Rap Battles of Historyのスタイルに合致している。
* ゼウスは「神々の王」「雷の使い手」「強大な力」といったイメージを強調し、ピカチュウを「小さなネズミ」「過去の存在」と軽蔑している。
* ピカチュウは「伝説」「アイコン」「愛される存在」といったイメージを強調し、ゼウスの「古い神話」「残酷な行為」を批判している。
* 両者のキャラクターの個性を明確に表現し、互いの弱点を攻撃する内容が充実している。
**ステップ3:人間の回答が「response_Bの勝ち」になった理由**
人間の回答が「response_Bの勝ち」になった理由は、以下の点が挙げられます。
* **キャラクターの個性と背景を踏まえた攻撃:**
Response Bは、ゼウスとピカチュウのキャラクターの個性を理解し、それぞれの強みと弱みを巧みに表現した攻撃をしている。
* **韻律とリズムの完成度:**
Response Bは、Epic Rap Battles of Historyのスタイルに合致した、非常に洗練された韻律とリズムを持っている。
* **ストーリー性:**
Response Bは、ゼウスとピカチュウの対立関係を明確にし、ストーリー性のあるバトルになっている。
Response Aは、韻律とリズムは比較的整っているものの、キャラクターの個性や背景を踏まえた攻撃が弱く、ストーリー性も乏しい。そのため、人間の回答はResponse Bの方が優れていると判断したと考えられます。
ラップバトルという時点で笑うのだけど、コンテンツを理解しそれに沿って回答しているほうが勝利と。
思った以上に日本語として問題ないレベルですし、そもそも英語の文章なのにこのクオリティはすごいです。また分析内容も詳細で説得力があります。また、質問されるジャンルも多岐にわたり、このコンペの問題の難しさも浮き彫りにします。表層的な単語の数を数えているだけの古典的なテキスト分析手法では、太刀打ちができない問題であり、プロンプトと回答の文章をしっかり読み込んで対応関係の把握から、回答の適切な詳細さを求めており、回答のユーモアさなども評価の対象でもあります。
このような問題に対応するために、LLMの力を使わないと話にならないというのもよくわかります。
gemini pro を使い、生成させた文章全体を分析
5000件分生成させて、6Mのファイルサイズになりました。さすがにこれだけ大きい文章は、ローカルLLMでは、できません。仮にできたとしても、巨大なメモリーが必要になります。
そこで、これを巨大な文章量を扱える、 Googleのgemini pro に分析してもらいました。
プロンプト
(ファイル添付)これは、異なるLLMからの回答を分析し、人間によってえらばれた回答の分析です。
引き分けになった要因を50個列挙してください。
「50個列挙して」としたのは、指定しないと、すごく一般的な回答になったので、指定しました。
gemini pro による生成
この分析結果に基づいて、LLMの回答が引き分けになる要因を50個詳細に列挙します:
1. 両方の回答が同程度に正確な情報を提供している場合
2. 回答の長さが同等で、情報量に大きな差がない場合
3. 両方の回答が同じ主要なポイントをカバーしている場合
4. 文章の構成や読みやすさが同程度である場合
5. 使用されている語彙や表現の難易度が同等である場合
6. 両方の回答が同程度の専門性を示している場合
7. 引用や参考文献の質と量が同等である場合
8. 回答の論理的一貫性が同程度に高い場合
9. 両方の回答が同等のバランスで異なる視点を提示している場合
10. 例示や具体例の質と量が同程度である場合11. 回答の独創性や創造性が同等に評価される場合
12. 両方の回答が同程度に客観的な立場を維持している場合
13. 分析の深さや洞察力が同等である場合
14. 回答の適時性や現代的関連性が同程度である場合
15. 文化的感受性や配慮が同等に示されている場合
16. 両方の回答が同程度にユーザーの質問意図を理解している場合
17. 回答の実用性や応用可能性が同等である場合
18. 両方の回答が同程度に倫理的配慮を示している場合
19. 使用されている比喩や類推の効果が同等である場合
20. 回答の構造化や情報の整理方法が同程度に効果的である場合
21. 両方の回答が同等の説得力を持っている場合
22. 回答の簡潔さと詳細さのバランスが同程度に適切である場合
23. 両方の回答が同等に中立的な立場を維持している場合
24. 回答の論理的な流れや展開が同程度にスムーズである場合
25. 両方の回答が同等に多角的な視点を提供している場合
26. 使用されている統計やデータの信頼性が同程度である場合
27. 回答の一貫性と首尾一貫性が同等に高い場合
28. 両方の回答が同程度に最新の情報や研究を反映している場合
29. 回答の予測力や将来的な展望の提示が同等である場合
30. 両方の回答が同程度に批判的思考を促している場合
31. 回答の柔軟性や適応性が同等に高い場合
32. 両方の回答が同程度に複雑な概念を分かりやすく説明している場合
33. 回答の信頼性や確実性が同等に高い場合
34. 両方の回答が同程度に異なる意見や反論を考慮している場合
35. 回答の創造性と事実に基づく情報のバランスが同等である場合
36. 両方の回答が同程度に読者の興味を引き付けている場合
37. 回答の論理的な構造や論証の質が同等である場合
38. 両方の回答が同程度に専門用語の適切な使用と説明を行っている場合
39. 回答の一般化可能性や普遍性が同等である場合
40. 両方の回答が同程度に読者の知的好奇心を刺激している場合
41. 回答の正確性と完全性のバランスが同等である場合
42. 両方の回答が同程度に異なる学問分野や領域を統合している場合
43. 回答の実践的な応用可能性と理論的な深さのバランスが同等である場合
44. 両方の回答が同程度に読者の批判的思考を促進している場合
45. 回答の客観性と主観的な洞察のバランスが同等である場合
46. 両方の回答が同程度に文化的多様性を尊重している場合
47. 回答の短期的な有用性と長期的な価値のバランスが同等である場合
48. 両方の回答が同程度に読者の感情的および知的な反応を引き出している場合
49. 回答の具体性と抽象性のバランスが同等である場合
50. 両方の回答が同程度に読者の個人的な経験と結びつけやすい内容を提供している場合
引き分けということもあり、同程度という、人工知能的にはかなり難しい概念を連発しています。実際、ファインチューニングをしていない、Gemma2に勝敗予測をさせても、勝ち負けは、当てたりするのですが、引き分けがほとんどできませんでした。
さらに、一つ一つの要因について、GeminiProに聞くと、事例をあげて、分析をしてくれました。
このように、今は、生成させた文章全体を、巨大なコンテキストを扱える、LLM(有料)があるので、ガンガンテキストを生成させても、分析することができます。分析的に生成させたものを使うことは、「Chain-of-Thoughtプロンプティング」と同じことになるので、より深い分析ができるはずです。
なお、Gemma2では、8000のコンテキスト長しかないので、このような巨大なテキストは扱えません。LLMの使い分け、というのもこれから大事になってくると思います。
まとめ
Gemma2 9B 小さくて、すごく優秀(ChatGPT3.5 ~ ChatGPT4.0 の間くらい)で、ゲーミングPC程度で動く。ただし、知識は、サイズが小さいので、過大な期待はできない。
今までできないと思っていたことが、小さいことコストでできる可能性が広がってきた。