GPT-3.5世代のオープンな言語モデルを調べてみた


GPT-3.5世代のオープンな言語モデルを調べてみました。

本稿では以下の特徴をもって「GPT-3.5世代」の言語モデルと定義しました。

- ChatGPT等（text-davinci-003、gpt-3.5-turbo）の登場した2022年11月以降に登場
- GPT-3と同様にテキスト生成ができる言語モデル
- GPT-3（text-davinci-003等）を主なベンチマークにしたり、学習に利用したりしている

「オープンな言語モデル」としていますが、本稿では以下いずれかを満たしていればオープンな言語モデルとします。一般的なオープンソース・ソフトウェアの定義等とは少し異なります。

- 学習済モデルが公開されている
- 学習データと学習用ソースコードが公開されており、学習済モデルの再現が可能である

## GPT-3.5世代のオープンな言語モデルの特徴
本稿で紹介するGPT-3.5世代のモデルには、以下のような特徴があります。

- 100億（10B）以上のパラメータを持つモデルが存在
- ライセンス的に商用利用可能である物は少ない
- 日本語に対応しているものは少ない

GPT-3.5世代よりも以前（「GPT-2世代」とも言える）GPT-2のアーキテクチャから派生したモデルには、本稿で紹介する以外にも様々なものがあります。中でも日本語に対応しており商用利用可能な物には、2022年7月に公開された[abeja/gpt\-neox\-japanese\-2\.7b](https://huggingface.co/abeja/gpt-neox-japanese-2.7b)や、2022年1月に公開された[rinna/japanese\-gpt\-1b](https://huggingface.co/rinna/japanese-gpt-1b)などがあります。詳しくは[フリーで使える日本語の主な大規模言語モデル（LLM）まとめ](https://zenn.dev/hellorusk/articles/ddee520a5e4318)などにまとまっています。

## GPT-3.5世代のオープンな言語モデルの系譜
本稿で紹介するモデルを図にまとめると以下のようになります。

```mermaid
flowchart TD
        LLaMA --finetune--> StanfordAlpaca
        StanfordAlpaca --LoRAで再現--> Alpaca-LoRA
        LLaMA  --finetune--> Vicuna
        Cerebras-GPT
        LLaMA --LoRA--> GPT4All
```

## LLaMA
https://ai.facebook.com/blog/large-language-model-llama-meta-ai/

LLaMAは2023年2月にMeta（Facebook）の研究機関がリリースしました。比較的小規模なモデルであり、ファインチューニングなどで特定のタスクに調整することが容易とされています。パラメータ数は70億、130億、330億、650億のモデルが存在し、リクエストするとモデルがダウンロードできるようになります。

LLaMAのライセンスは非商用利用に限定されています。主な理由は[InstructGPT](https://openai.com/research/instruction-following)のように人間のフィードバックによる訓練をされておらず誤った回答や攻撃的なコンテンツを生成するリスクがあるため、とされています。

## Stanford Alpaca
https://crfm.stanford.edu/2023/03/13/alpaca.html

Stanford Alpacaは、MetaのLLaMA をファインチューニングしたものです。学習にはGPT-3のtext-davinci-003で生成したデータを用いているようです。モデルのサイズは小さくてもGPT-3（text-davinci-003）に似た性能を示すとされています。

Alpacaは以下3点の理由から、学術的な研究のみの利用に限定されており商用利用が禁止ということを強調されています。

- LLaMAのライセンスを継承しているため
- OpenAIの利用規約に従うため
- 適切な安全対策が施されていないため

## Alpaca LoRA
https://github.com/tloen/alpaca-lora

Alpaca LoRAは、LLaMAをLoRAでチューニングすることでStanford Alpacaの再現を目指したものです。単一のGPUで学習が可能であり、日本語を含む様々な学習済データが公開されています。

Alpaca LoRA自体はオープンソースライセンスで公開されている事が多いようですが、利用するにはLLaMAの基盤モデルを入手し、そのライセンスにも従う必要があります。

## Vicuna
https://vicuna.lmsys.org/

Vicunaは、MetaのLLaMAをファインチューニングしたモデルです。学習データにはChatGPTの対話を共有できるShareGPTから収集したデータを用いています。独自に提案された評価手法によると性能はLLaMAやAlpacaを超え、ChatGPTの90%ほどの機能を達成できるとされています。

VicunaのモデルについてはLLaMAとの差分にあたるパラメータが[7b](https://huggingface.co/lmsys/vicuna-7b-delta-v0)と[13b](https://huggingface.co/lmsys/vicuna-13b-delta-v0)のふたつHugging Faceで公開されています。LLaMAのライセンスを継承しており、非商用利用に限定されています。

## GPT4All
https://github.com/nomic-ai/gpt4all

GPT4Allは、gpt-3.5-turboを利用して収集したデータを用いてMeta LLaMAをファインチューニングしたものです。モデル自体もダウンロードして試す事ができます。

リポジトリにはライセンスに関する注意事項が乏しく、GitHub上ではデータや学習用コードはMITライセンスのようですが、LLaMAをベースにしているためモデル自体はMITライセンスにはなりません。[Technical Report](https://s3.amazonaws.com/static.nomic.ai/gpt4all/2023_GPT4All_Technical_Report.pdf)には、GPT4Allは研究目的にのみ利用でき商用利用が禁止されている事が明記されています。

## Cerebras-GPT
https://www.cerebras.net/blog/cerebras-gpt-a-family-of-open-compute-efficient-large-language-models/

Cerebras-GPTは、2023年3月に公開された言語モデルです。本稿で紹介したモデルの中では唯一LLaMAではなく独自に事前学習されたモデルです。1億1100万から130億のパラメータを持つモデルが公開されています。
モデルのアーキテクチャ、学習データ、事前学習済モデルすべてがオープンにされており、Apache 2.0ライセンスで公開されています。

[Cerebras-GPTのモデルはHugging Faceでも公開されています](https://huggingface.co/cerebras/Cerebras-GPT-13B)。Google ColabなどのPython環境に`transformers`をインストールし、以下のようなコードで簡単に試すことができます。詳しくは[別の記事にTransformersでGPTの文章生成する方法をまとめている](https://qiita.com/suzuki_sh/items/acf276b55085647bdd75)ので参考にしてください。

```python
from transformers import pipeline

MODEL_NAME = "cerebras/Cerebras-GPT-111M"
text_pipe = pipeline('text-generation', model=MODEL_NAME)
output = text_pipe("昔々あるところに")

output[0]['generated_text']
```

## 参考
- [最近話題になった大規模言語モデルまとめ｜npaka｜note](https://note.com/npaka/n/n00e5c66b6c18)