Google【Gemini】自分が理解できるようにまとめてみた。

chatGPTの対抗馬！！
GoogleがAIモデルの最新版[**Gemini**](https://japan.googleblog.com/2023/12/gemini.html)を発表しました。

説明の前に！使ってみると凄さがわかる！

https://bard.google.com/chat

**Geminiには3つのモデルがあります。**
**GPT4**の対抗馬なりゆる**Gemini-Ultra**
GPT3.5を超えるらしい**Gemini-Pro**
モバイルに特化した**Gemini-Nano**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/5e94a3c4-27d5-7333-179f-3b0043976ba2.png)

:::note info
現在利用できるのは**Gemini Pro**まで
googleの言語設定を英語にすると利用できました
:::

# なにがすごいの？
### マルチモーダル性
ChatGPTは主にテキストベースの対話を生成するのに対し、Geminiは画像、オーディオ、ビデオを含む多様な[モーダル](https://wa3.i-3-i.info/word11432.html)に対応している、らしい。

[公式](https://japan.googleblog.com/2023/12/gemini.html)の情報と、実際に試した結果をどうぞ！
あくまで、googleが提供してる情報であることに注意。

:::note warn
Gemini-Ultraはまだ使用できないため、検証に用いたのは**Gemini-Pro**です。
:::

#### テキスト
| ベンチマーク |Gemini Ultra|GPT-4|
| :----: | :----: | :---: |
| MMLU | 90.0% | 86.4%|

Gemini:32パターンを考えてからファイナルアンサーを出す方式
GPT:例題を5問見てから解答する方式

>入力：OpenAIのchat-GPTとGoogleのGeminiどちらが優れていますか？

**Gemini**
![スクリーンショット 0005-12-10 1.32.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/33f44e19-efbf-dd1c-6486-3201bd8b523f.png)

**GPT-4** 
 ![スクリーンショット 0005-12-10 1.35.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/045bb4c1-e4ec-0104-06cc-c6a1485f4959.png)

GPT-4は2023年4月時点でのトレーニングデータなので、Geminiの情報を持ってなさそう。

#### コード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/f1c63341-11fe-960a-888d-89edcd1aadc4.png)


https://note.com/chatgpt_nobdata/n/n2d5769ebb622

こちらの記事を参考に、GPT4とGeminiの比較をしてみた。
<details><summary>入力</summary>

```markdowndown
以下に示すのはプログラミングの問題文とその問題の解説と正解コード例及び判定対象のスキルです。
この問題を解くのに該当のスキルはどの程度必要ですか？
evaluation として0-4で表してください。 基準は以下とします。

0: この問題では必要ない。
1: 解法によっては必要になる場合がある。
2: 簡単に実装できる必要がある。
3: 業務レベルで実装できる必要がある。
4: 応用的に実装できる必要がある。

全て日本語で答えてください。
evaluation を求めるにあたり、以下の手順を踏んでください。
1, 指定された Skill がどんなスキルであり、どのような場面で役立つか把握する。
2, この問題との関連性を考える。この過程での考察を reason として下さい。
3, reason を元に、 evaluation を決定する。

"skill"には Skill を入れてください。
スキル評価とその設定理由は下記形式で出力してください。
{ "skill" : string, "evaluation" : integer, "reason" : string }


Skill : { 推定するスキル名 }
Problem : 0 と 1 の 2 種類の文字からなる文字列 s が与えられます。
s に含まれる 0 を 1 に、1 を 0 に置き換えた文字列を出力してください。Explanation： 
この問題は、
・入力から文字列を読み込む
・文字列の文字を対応する文字に変更する
・変更された文字列を出力する
ことができれば解くことができます。
Correct Code : 
#include <iostream>
#include <string>
using namespace std;

int main() {
    string s;
    cin >> s;
    
    for (char c : s)
        if (c == '0')
            cout << '1';
        else
            cout << '0';

    cout << endl;

    return 0;
}

```

</details>


```:Gemini 
{
  "skill": "文字列操作",
  "evaluation": 2,
  "reason": "文字列の読み込みと文字の置換を行う必要があるため"
}
```

```:GPT-4 
{ 
"skill" : "文字列操作",
"evaluation" : 2, 
"reason" : "この問題は基本的な文字列の読み込みと簡単な文字の置き換えを行うことで解決可能であり、
高度な技術は必要としないが、基礎的な文字列操作の技能は必要です。"
}
```
簡易的なプログラムの理解はどちらも問題ない印象。
より複雑なアルゴリズムについては、Gemini-Ultraがでてから比較して見る必要がありそう。


#### 画像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/68cf433e-b550-b313-5743-916e3c01d23a.png)


[YOLO v5](https://github.com/ultralytics/yolov5)のディレクトリ画像から文字を抽出してみた。

> この画像が示すディレクトリ一覧をテキストで出力してください

![スクリーンショット 0005-12-11 13.42.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/6b432671-66fc-1d22-47e2-9d78f3643273.png)

<details><summary>Gemini</summary>

```:Gemini 
画像に示されているディレクトリ一覧は次のとおりです。

github
classify
data
models
settings
users
libraries
resources
tools
```
</details>

<details><summary>GPT-4</summary>

```:GPT-4 
.github
Update ci-testing.yml (#12404)

classify
Update YouTube URL https://youtu.be/LNwODJXcvt4 (#12106)

data
remove objects with iscrowd=True in Objects365 (#11788)

models
Bump torch>=1.8.0 and torchvision>=0.9.0 (#11970)

segment
Update YouTube URL https://youtu.be/LNwODJXcvt4 (#12106)

utils
[Snyk] Security upgrade ubuntu from 23.04 to mantic-20231011 (#12...

.dockerignore
Add .git to .dockerignore (#8815)

.gitattributes
git attrib

.gitignore
Ignore *_paddle_model/ dir (#10745)

.pre-commit-config.yaml
[pre-commit.ci] pre-commit suggestions (#12335)

CITATION.cff
Update LICENSE to AGPL-3.0 (#11359)

CONTRIBUTING.md
Add links to https://docs.ultralytics.com/help/ (#11462)

LICENSE
Update LICENSE to AGPL-3.0 (#11359)

README.md
Add Hindi फीचर and Arabic ميزة Docs translations (#12394)

README.zh-CN.md
Add Hindi फीचर and Arabic ميزة Docs translations (#12394)

benchmarks.py
Fix the bug that tensorRT batch_size does not take effect (#11672)

detect.py
Update YouTube URL https://youtu.be/LNwODJXcvt4 (#12106)

export.py
ONNX export Path to str() (#12177)

hubconf.py
Update check_requirements() ROOT (#11557)

requirements.txt
[Snyk] Fix for 5 vulnerabilities (#12325)

setup.cfg
Update setup.cfg (#11814)

train.py
Increase NCCL timeout to 3 hours (#12345)

tutorial.ipynb
Created using Colaboratory (#12405)

val.py
add non-fixed path option to coco's instances_val2017.json (#11860)

```
</details>
Gemini-proだと存在しないディレクトリを出力していた。Ultraだとどうなるか期待。
Gemini Ultra ではオブジェクト文字認識 (OCR) システムの支援なしで、以前の最高水準のモデルを上回ったとのこと。


:::note info
**使ってみた感想** 　　Geminiはレスポンスが速い！！
:::

# モデル＆トレーニングデータ
**Gemini開発チームの[論文](https://paperswithcode.com/paper/gemini-a-family-of-highly-capable-multimodal)からの抜粋です**

#### モデル
![スクリーンショット 0005-12-11 14.02.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118679/82119d1a-cd42-b67d-1e06-fd95ad3195bd.png)
- **基盤**: Geminiモデルは、Transformerベースのデコーダを使用している。
これにより、様々なモーダルのデータ処理と統合が可能。
- **モーダル処理**: Geminiは、テキスト、画像、オーディオ、ビデオなど、多様なモーダルのデータを処理できるように設計されている。
- **変換能力**: これらの異なるモーダルのデータは、内部的に一貫した表現に変換され、モデルが処理しやすい形に統合されている。

#### トレーニングデータ
- **ハードウェア**: 
GoogleのTPUv5eとTPUv4を使用。
- **使用データ**: 
ウェブドキュメント、書籍、コードからのデータ
さらに、画像、オーディオ、ビデオデータ
- **パラメータ数**
1.56兆個。
これは、Google AIが開発した大規模言語モデル「LaMDA」のパラメータ数の約11倍
- **データ数**
約1.56兆。

#
Gemini Ultraの性能、気になる。

#
**参考文献**

https://japan.googleblog.com/2023/12/gemini.html

https://www.gizmodo.jp/2023/12/google-gemini-10points.html

https://paperswithcode.com/paper/gemini-a-family-of-highly-capable-multimodal

https://note.com/chatgpt_nobdata/n/n2d5769ebb622

https://github.com/ultralytics/yolov5

https://note.com/atori12345/n/nfecc2f279bc5