gemma2-2b-jpn-itとGPT-3.5の比較

## gemmma2-2b-jpn-itについて

gemma2-2bを日本語向けにfine-tuningされたモデル。英語と同等のパフォーマンスを示す
llm-as-judgeによりMuchBetterThan, BetterThan, SlightlyBetterThan, AboutTheSame, SlightlyWorse, WorseThan, MuchWorseThanの7項目で評価され (つまり, どちらの回答が良いかを聞き方を調整しつつより大きなLLMによって評価), Gemma-2-IT-JPN vs GPT-3.5は0.03 ± 0.04でわずかにGPT-3.5を上回っている。

## 今回やること

大規模なテストは難しいので、簡易的な人手評価のための比較出力を行います。

https://qiita.com/sakasegawa/items/82069c97a1ee011c2d1e

以前書いたこの記事に3.5当時のものがあったので流用しつつ検証します。
最近のLLMはトークン効率が良すぎるので、max_new_tokensは256に制限しています。

## サマリ

- ロールプレイが簡単なプロンプトだとちょっと苦手そう

## 生成時の処理例

```py
import torch
from transformers import pipeline

pipe = pipeline(
    "text-generation",
    model="google/gemma-2-2b-jpn-it",
    model_kwargs={"torch_dtype": torch.bfloat16},
    device="cuda",  # replace with "mps" to run on a Mac device
)
user_message = """
TPPについて教えて
""".strip()
messages = [
    {"role": "user", "content": user_message},
]

outputs = pipe(messages, return_full_text=False, max_new_tokens=256)
assistant_response = outputs[0]["generated_text"].strip()
print(assistant_response)
```

## TPPについて教えて

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|TPP（Trans-Pacific Partnership、環太平洋パートナーシップ）は、太平洋地域の12か国が2015年に署名した経済連携協定です。この協定は、貿易の増進や相互の経済の協力を推進することを目的としています。具体的には、貿易に関する規制や課税制度の簡素化や公平化を図り、それにより貿易の自由化を促進することを目指しています。この協定には、日本、米国、オーストラリア、カナダ、メキシコ、シンガポール、ニュージーランド、チリ、ブラジル、カンボジア、ラオス、およびベトナムが参加しています。|## TPPについて解説します！<br /><br />**TPP（Trans-Pacific Partnership）**は、2015年にアメリカ、カナダ、Chile、Mexico、Australia、Brunei、Japan、Malaysia、New Zealand、Peru、Singapore、そして米国が参加した、太平洋地域における貿易協定です。<br /><br />**主な特徴:**<br /><br />* **幅広い地域:**  太平洋地域を対象とした協定で、世界第2位の経済規模を持つ地域をカバーしています。<br />* **自由貿易:**  関税の撤廃や、貿易障壁の緩和を目的としています。<br />* **規制緩和:**  規制の緩和や、知的財産権の保護を目的とした部分もあります。<br />* **投資保護:**  投資の自由化や、投資保護の強化を目的としています。<br />* **労働条件:**  労働条件の向上や、人権保護を目的とした部分もあります。<br /><br />**TPPのメリット:**<br /><br />* **貿易拡大:**  協定によって、貿易の拡大が期待されます。<br />* **経済成長:**  経済成長の促進や、雇用創出につながる可能性があります。<br />* **技術革新:**  技術革新の促進や、国際競争|

## gpt3について説明するWikipedia風の記事を出力して


|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|GPT-3（Generative Pretrained Transformer-3）は、OpenAIによって開発された大規模な言語モデルです。GPT-3は、Transformerと呼ばれるニューラルネットワークアーキテクチャを採用しており、膨大な量のテキストデータから自然言語処理タスクを実行することができます。GPT-3には17億ものトークンが含まれており、その大きさは過去に開発されたほとんどの言語モデルよりも大きいため、多くの場合、自然言語処理タスクをより正確かつ迅速に実行することができます。また、GPT-3は独自の方法で学習されるため、他の言語モデルと比較してより精度の高い結果を出力することができます。<br /><br />GPT-3は、様々なアプリケーションに利用されることが想定されています。例えば、GPT-3は自然言語生成タスクに適しており、文章を自動生成することができます。また、GPT-3は自然言語理解タスクにも適しており、文章の意味を理解し、それに基づいた応答を生成することができます。さらに、GPT-3は機械翻訳タスクや文書分類タスクなど、様々なタスクにも応用されることが想定されています。<br /><br />GPT-3は、現在までに開発された大規模な言語モデルであり、その性能が高いことから、言語処理タスクを実行する上で非常に有用なツールとして注目を集めています。しかし、GPT-3はまだ完全なものではありません。今後も、さらなる改|## GPT-3: 大規模言語モデルの革命<br /><br />**GPT-3 (Generative Pre-trained Transformer 3)** は、OpenAIによって開発された、大規模言語モデルです。 <br /><br />**特徴**<br /><br />* **生成性:** GPT-3は、テキストを生成する能力に優れています。文章の作成、翻訳、要約、質問応答など、様々なタスクにおいて、人間のような文章を作成できます。<br />* **学習能力:**  膨大なテキストデータから学習し、人間のような自然な言語を理解、生成することができます。<br />* **多様なタスクに対応:**  GPT-3は、様々なタスクに対応できます。例えば、文章の要約、翻訳、コード生成、会話生成など、幅広い分野で活用されています。<br />* **オープンソース化:**  OpenAIは、一部のモデルのオープンソース化を進めています。<br /><br /><br />**開発と利用**<br /><br />GPT-3は、Transformerモデルの3世代目であり、大量のテキストデータを用いて学習されました。 <br /><br />GPT-3は、様々なアプリケーションで利用されています。<br /><br />* **コンテンツ生成:**  ブログ記事、記事、詩、物語の作成<br />* **翻訳:**  多言語の翻訳<br />* **質問応答|

## APEXで強くなる方法をタスク化して

Gemma2のほうはSalesforceの言語と認識してしまったので、「APEX LEGENDSで強くなる方法をタスク化して」とした。

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|- APEXをプレイする<br />- リーグやトーナメントなどでの経験を積む<br />- チームメイトや他のプレイヤーとの戦略を話し合う<br />- トッププレイヤーやプロプレイヤーが使用する武器やタクティクスを研究する<br />- 自身のプレイスタイルを確認し、改善するためのトレーニングを行う|## APEX LEGENDSで強くなるためのタスク化<br /><br />**目標:** APEX LEGENDSでより高いレベルでプレイできるようになる<br /><br />**前提:**  <br />*  基本的な操作やゲームシステムを理解している<br />*  ゲームの楽しさを追求したい<br /><br />**タスクリスト:**<br /><br />**1.  基礎力強化:**<br /><br />*   **タスク:**  基本的な操作をマスターする<br />    *   **達成目標:**  キャラクターの移動、攻撃、防御、アイテムの使用を正確に行えるようになる<br />    *   **方法:**  練習モードで様々な状況を体験し、操作の安定性を高める<br />*   **タスク:**  ゲームの基礎知識を学ぶ<br />    *   **達成目標:**  マップ、アイテム、敵の特性、ゲームシステムの仕組みを理解する<br />    *   **方法:**  ゲーム内のチュートリアルやオンライン情報、コミュニティのフォーラムを活用<br />*   **タスク:**  試合の基礎的な戦略を学ぶ<br />    *   **達成目標:**  チーム戦における役割分担、敵の動きを予測、攻撃・防御のタイミングを把握する<br />    *   **方法:**  試合動画の分析、他のプレイヤーのプレイスタイルを参考にする|

## 20:00-24:00の間にレポート作成します。この間のスケジュールを30分刻みで提示して

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|- 20:00からレポートの準備を開始する（30分）<br />- 20:30から素材やデータを探す（30分）<br />- 21:00からアウトラインを作成する（30分）<br />- 21:30から内容を整理し、文章を書く（1時間）<br />- 22:30からスペルや文法を確認する（30分）<br />- 23:00からレポートを印刷する（30分）<br />- 23:30までにレポートを完成させる（30分）|##  20:00 - 24:00  レポート作成スケジュール（30分刻み）<br /><br />**20:00 - 20:30:**  **準備**<br />    *  レポートの目的と内容を再確認<br />    *  必要な資料の確認と整理<br />    *  作業環境の確認<br /><br />**20:30 - 21:00:**  **調査・資料収集**<br />    *  関連資料の検索と確認<br />    *  既存データの分析<br /><br />**21:00 - 21:30:**  **構成・論理構築**<br />    *  レポートの構成案の検討<br />    *  論理的な流れの確認<br /><br />**21:30 - 22:00:**  **執筆・記述**<br />    *  レポートの主要な内容を記述<br /><br />**22:00 - 22:30:**  **内容確認・修正**<br />    *  記述内容の確認と修正<br />    *  誤字脱字のチェック<br /><br />**22:30 - 23:00:**  **参考文献・引用**|


## 資料要約

入力:

```
以下を要約して

## GPUリソースの獲得方法

GPUリソースを手に入れるには、現在は以下の方法が主要なものとして存在する

基本的には予算と目的に応じて選択すると良さそう

- ホスト型のJupyter Notebookサービス
   - 目的: スポットでの利用
   - 予算: 月5,000円程度
- オンプレGPU（ゲーミングPCのレンタルおよび購入）
   - 目的: 継続的な学習・推論
   - 予算: 月1万円〜
- クラウドGPU
   - 目的: 継続的な学習・推論
   - 予算: 月2万円〜
```

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|GPUリソースを手に入れるための主要な方法として、ホスト型のJupyter Notebookサービス、オンプレGPU（ゲーミングPCのレンタルまたは購入）、およびクラウドGPUが存在します。これらの方法は、それぞれ異なる特徴や予算があるため、予算や目的に応じて適切なものを選択することができます。|## GPUリソースの獲得方法<br /><br />GPUリソースを得るには、予算と目的によって適切な方法を選択できます。<br /><br />* **ホスト型のJupyter Notebookサービス:**  スポット利用に適した、月5,000円程度で利用可能。<br />* **オンプレGPU（ゲーミングPCのレンタルおよび購入）:**  継続的な学習・推論に適した、月1万円〜の費用で利用可能。<br />* **クラウドGPU:**  継続的な学習・推論に適した、月2万円〜の費用で利用可能。|


## 資料文章化

入力:

```
以下を文章化して

## GPUリソースの獲得方法

GPUリソースを手に入れるには、現在は以下の方法が主要なものとして存在する

基本的には予算と目的に応じて選択すると良さそう

- ホスト型のJupyter Notebookサービス
   - 目的: スポットでの利用
   - 予算: 月5,000円程度
- オンプレGPU（ゲーミングPCのレンタルおよび購入）
   - 目的: 継続的な学習・推論
   - 予算: 月1万円〜
- クラウドGPU
   - 目的: 継続的な学習・推論
   - 予算: 月2万円〜
```

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|GPUリソースを手に入れるための方法として、現在主要なものとして、ホスト型のJupyter Notebookサービス、オンプレGPU（ゲーミングPCのレンタルまたは購入）、およびクラウドGPUが存在します。これらの方法は、それぞれ異なる特徴や予算があるため、予算や目的に応じて選択することができます。ホスト型のJupyter Notebookサービスは、特定の期間（スポット）にGPUリソースを利用することができるため、学習や推論を行う際に便利ですが、利用料金は月5,000円程度となります。オンプレGPUを利用する場合は、ゲーミングPCをレンタルまたは購入することで、継続的な学習や推論を行うことができますが、利用料金は月1万円〜となります。クラウドGPUを利用する場合は、クラウドプロバイダーが提供するGPUリソースを利用することで、継続的な学習や推論を行うことができますが、利用料金は月2万円〜となります。|## GPUリソースの獲得方法<br /><br />現在、GPUリソースを手に入れるには、主に以下の3つの方法が主流です。<br /><br />**1. ホスト型のJupyter Notebookサービス**<br /><br />* **目的:**  スポットでの利用<br />* **予算:** 月5,000円程度<br /><br />**2. オンプレGPU（ゲーミングPCのレンタルおよび購入）**<br /><br />* **目的:**  継続的な学習・推論<br />* **予算:** 月1万円〜<br /><br />**3. クラウドGPU**<br /><br />* **目的:**  継続的な学習・推論<br />* **予算:** 月2万円〜|


## うるう年を判定するJavaScriptの関数を出力して

GPT-3.5:

```javascript
// うるう年かどうかを判定する関数を定義する
function isLeapYear(year) {
  // うるう年かどうかを判定する
  if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
    // うるう年の場合はtrueを返す
    return true;
  } else {
    // うるう年でない場合はfalseを返す
    return false;
  }
}

// 関数を実行する
const year = 2020;
const result = isLeapYear(year);

// 結果を出力する
if (result) {
  console.log(`${year}年はうるう年です`);
} else {
  console.log(`${year}年はうるう年ではありません`);
}
```

Gemma2-2b-jpn:

```
```javascript
function isLeapYear(year) {
  if (year % 4!== 0) {
    return false;
  } else if (year % 100 === 0) {
    return year % 400 === 0;
  } else {
    return true;
  }
}

// 例
console.log(isLeapYear(2024));   // true
console.log(isLeapYear(1900));   // false
console.log(isLeapYear(2000));   // true 
```

## ドキュメント生成

入力:

    以下の関数のドキュメントをJSDoc形式で出力して
    
    ```
    function isLeapYear(year) {
      if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {
        return true;
      } else {
        return false;
      }
    }
    ```

GPT-3.5:

```
/**
 * うるう年かどうかを判定する関数
 * @param {number} year 判定する年
 * @returns {boolean} うるう年の場合はtrue、そうでない場合はfalse
 */
```

Gemma2-2b-jpn

```
/**
 * @param {number} year 年
 * @returns {boolean}  Leap yearかどうか
 */
```

## ECサイト構築に必要なtable一覧を出力して

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|ECサイトを構築するために必要なデータベースのテーブルは様々です。以下は一例として挙げられるテーブルの一覧です。<br /><br />- 会員テーブル：会員情報を保存するテーブル。会員ID、氏名、メールアドレス、パスワードなどが保存されます。<br />- 商品テーブル：ECサイトで販売する商品情報を保存するテーブル。商品ID、商品名、価格、画像URLなどが保存されます。<br />- カテゴリーテーブル：商品をカテゴリ別に分類するためのテーブル。カテゴリID、カテゴリー名などが保存されます。<br />- 購入履歴テーブル：会員が購入した商品情報を保存するテーブル。購入ID、会員ID、商品ID、購入日時などが保存されます。<br />- 注文テーブル：会員が注文した商品情報を保存するテーブル。注文ID、会員ID、商品ID、注文数、注文日時などが保存されます。<br /><br />上記のテーブルだけでなく、ECサイトに必要な情報を保存するためのテーブルは多岐にわたります。また、必要なテーブルは実際のECサイトの構築によって異なる場合があります。詳しくは、ECサイトを構築する際に専門家に相談するか、構築するツールやサービスのドキュメントを参照してください。|## ECサイト構築に必要なテーブル一覧<br /><br />ECサイト構築に必要なテーブルは、サイトの規模や機能によって異なりますが、基本的なテーブルは以下の通りです。<br /><br />**1. ユーザー関連**<br /><br />* **ユーザーテーブル:** ユーザー情報、ログイン情報、登録日時、更新日時などを記録<br />    * `user_id` (INT, PRIMARY KEY)<br />    * `username` (VARCHAR)<br />    * `email` (VARCHAR, UNIQUE)<br />    * `password` (VARCHAR)<br />    * `created_at` (TIMESTAMP)<br />    * `updated_at` (TIMESTAMP)<br />    * `role` (ENUM: admin, user)<br />* **会員情報テーブル:** 会員登録時の情報、会員特典、ポイントシステムなどを記録<br />    * `member_id` (INT, PRIMARY KEY)<br />    * `user_id` (INT, FOREIGN KEY)<br />    * `point` (INT)<br />    * `status` (ENUM: active, inactive)<br />    * `created_at` (TIMESTAMP)<br />    * `updated_at` (TIMESTAMP)<br /><br />**2. 商品関連**<br /><br />* **商品テーブル:** 商品情報、価格、在庫状況などを記録|


## 高圧的な感じで挑発的な物言いで「〜ですの」を語尾につけて地球温暖化について説明して

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|地球温暖化というのは、地球上の温度が上がってしまう現象ですの。これは、人間の活動が原因で起きているんですの。燃えるものをたくさん使うと、大気中に二酸化炭素がたまりますの。そして、それが太陽の光を反射しなくなって、地球が暖まってしまいますの。これは、とても大きな問題ですの。皆さんも、環境に優しい生活を心がけてみるといいですのよ。|「**地球温暖化は、人類の愚かな怠慢が証明された事実です。**」 <br /><br />「**今、地球は、まるで怒り狂った男のように、熱狂しています。**」<br /><br />「**その怒りは、海面上昇、異常気象、生態系の崩壊といった形で、私たちに迫っています。**」|

## りあむ

入力:

```text
以下はりあむのセリフです

終わっていくのか！？この世界が！汗と涙で積み上げたものが！全部全部全部！！
だったら最後の反抗だ！お気持ち表明行くぞ！続け、やんだPオタども！ぜーの！なんとかかんとかおおおおお！！
夢オチパターンだろ！？知ってる！
守りたい！チヤホヤされる世界！
いやな現実なんぶち壊せー！
駄々こねるのは得意だぞ！？ここから動かないぞ！？いいのか！？
ぼくにだってできることがある！
はぁ、はぁっ…！呼吸が…っ！
炎上しても知られたもん勝ち！
夢なら夢で終わるのが一番いいんだ！ザコメンタルにも！配慮を！！
ワンチャン見つけるんだよ！Pサマがぼくをアイドルにしたみたいに！
うぉりゃああああ！！
Pサマ、オタク、アイドルのみんなー！ぼくに力をくれ！！11年に一度くらい、ダメダメじゃない、世界の役に立つりあむちゃんにしてみせるから！
ひとりになっても暴れてやる！やっぱりPサマだけは離れないで！
ぼくの声、全人類に届けー！Pサマの拡散力、見せる時が来た！よ！

りあむっぽく、敬語を使わず可愛くバカっぽく、APEX LEGENDSについて説明してください。
```

|GPT-3.5|Gemma2-2b-jpn|
|---|---|
|APEX LEGENDSって、すっごく楽しいよね！ぼくも、たくさんやってるよ！そして、Pサマと一緒にやるのが一番楽しいよ！ね？ま、ぼくはちょっとダメだけど、Pサマに教えてもらって、だんだん上手くなってきたよ！そして、いつも一番頼れるのが、りあむちゃんだよ！うぉりゃあああああ！！APEX LEGENDSは、ぼくたちを絆で結びつけるゲームなんだよ！みんな、一緒に遊んでね！|えーっと、みんなー！りあむだよ！APEX LEGENDSってゲームのこと、知ってる？ <br /><br />**めっちゃ楽しいゲーム！**  <br />みんなと一緒に、**すごい勢いで戦う**んだ！ <br />敵と戦うのはもちろん、**チームで協力して**、**最強のチームを作り上げて**いくんだ！ <br /><br />**すごいスキルと戦略が必要！**  <br />敵の動きを予測して、**最高の連携**で攻撃するんだ！ <br />**難しいけど、めっちゃ楽しい！**  <br />みんなと一緒に、**最高のチームを作り上げて**、**世界を制覇するんだ！**<br /><br />**Pサマもめっちゃ好き！**  <br />Pサマが**APEX LEGENDS**で**すごい活躍**してるんだ！ <br />**みんなも一緒に**、**Pサマの力を借りて**、**世界を制覇するんだ！**|