【GPT】大規模言語モデルまとめ

はじめまして、sonesuke( [https://twitter.com/sonesuke](https://twitter.com/sonesuke) ) です。 LLMのニュースを追っかけ続けたので、これからキャッチアップする人用にまとめておきます。

# これだけは知っとけ用語

各モデル、プロジェクトの説明を読む前に、「これだけは知っとけ用語」を読んでおくと意味がわかります。知っている人は飛ばしてください。


## LLM

大規模言語モデル (Large Language Model)の略。膨大なテキスト言語を使って学習したニューラルネットワークのこと。パラメータの数が性能の指標になっており、〇〇Bみたいな形で表記されています。GPT-3で175B (1750億個)。

基本的には、入力に続く、次の単語を推論して出力しているに過ぎないのですが、応用範囲が広く、世の中的に注目されています。

## 学習データ

学習用のデータセットとも呼ばれます。

## RLHF (Reinforcement Learning from Human Feedback)

人間を強化学習のフィードバックループにいれた学習方法。報酬関数自体の学習につながっているみたいです。

https://arxiv.org/abs/2203.02155

## マルチモーダル

入力が、テキストだけ・・・・みたいのをシングルモーダル。テキストと画像など、複数の入力形式をとれるものをマルチモーダルと呼びます。

## 知識蒸留

別のモデルの結果を学習データとして使って、他のモデルの学習をしていく方法。Alpaca系がこの方法を使って、低次元化・高精度化していっています。ただ、これ自体は、ベースとなるモデルの利用規約等を考慮しないと、モデル自身が汚染されていくので要注意です。

https://arxiv.org/abs/2212.10560

## LoRA

Low-Rank Adaptationの略。 ざっくりいうと、追加学習の際に、パラメータの全部を更新をするのではなく、一部を更新するだけにして、学習を早くしましょうというテクニック。Alpaca系プロジェクトがよく使っているイメージ。

https://arxiv.org/abs/2106.09685

## Hugging Face

Hugging Face社が運営するAIモデルのコミュニティサイト。オレオレモデルは大体ここに公開されます。

https://huggingface.co/

# GPT系

## GPT-3, GPT-3.5, GPT-4

OpenAI社が提供しているLLM。SaaS提供。チャットとAPIで提供されています。RLHF (人間による強化学習)が行われており、性能が飛躍的にあがったことで話題になっている。

GPT-4はマルチモーダル対応といっているが、画像入力はまだ一般提供はされていません。

APIは、OpenAI社と、Microsoft社のAzureから提供されています。

https://openai.com/blog/openai-api

https://azure.microsoft.com/ja-jp/products/cognitive-services/openai-service

# PaLM系

## PaLM, PaLM-E

Google社が提供しようとしているLLM。APIが提供されるみたいなのですが、全くもって、入り口がわからず。

https://developers-jp.googleblog.com/2023/03/announcing-palm-api-and-makersuite.html

PaLM-Eは、テキストだけでなく画像、音声などの入力に対応するらしいです。

https://palm-e.github.io/

# LLaMA系

## LLaMA

Meta社が提供しているLLM。7B, 13B, 33B, 65Bのサイズ展開で、GPT系のシリーズに比べて、パラメータが、1/10以下なのが特徴。これによりローカル環境(市販GPU)で動かすことが、できることで話題になっています。申請することで重みを取得することができます。

https://github.com/facebookresearch/llama

## Alpaca

Stanford Alpaca。スタンフォード大学の橋本先生の研究室で開発。LLaMA 7Bをベースに、Instruction-following (指示に従う) 学習をさせたもの。非商用ライセンス。レポジトリに学習データと学習方法が公開されており、これをベースに学習データの翻訳が行われています。

学習データの正解部分は、Self-Instructで作られており、text-davinci-003 など、GPTを使って生成されています。

https://github.com/tatsu-lab/stanford_alpaca

## Alpaca-LoRA

Alpacaの学習データをLoRAを使って学習したもの。

https://github.com/tloen/alpaca-lora

これの派生としてAlpaca-LoRA-Japaneseなどが作られています。

https://github.com/kunishou/Japanese-Alpaca-LoRA

## GPT4All

Nomic AI社が開発。名前がややこしいですが、GPT-3.5-Truboの応答を使って、LLaMAモデル学習したもの。

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

論文には、使用上の注意ということで、LLaMAは非商用ライセンスだし、OpenAIはGPT-3.5-Turboの利用規約で、OpenAIに商用で競合するモデルを作ってはいけないと記述されていることから、商用利用するなってことでしょう。

https://s3.amazonaws.com/static.nomic.ai/gpt4all/2023_GPT4All_Technical_Report.pdf

## Vicuna

ShareGPTで共有されているGPTとのチャットをベースにLLaMAモデルを追加学習したもの。モデルは、まだ公開されていませんが、いずれ公開するみたいです。

https://github.com/lm-sys/FastChat

## Koala

LLaMA 13Bをベースに、学習データを工夫したもの。ChatGPTレベルのクオリティに達したと主張しています。LLaMA系らしく、用途は学術用途に限られています。

https://bair.berkeley.edu/blog/2023/04/03/koala/

# その他

## Cerebras-GPT

Cerebras社が提供するLLM。Apache 2.0ライセンスで提供されており、商用利用しやすいのが特徴。ちなみに、Cerebras社は主にDeep Learning用の計算リソースを提供している会社。

https://huggingface.co/cerebras

## BLOOM

BigScienceというプロジェクトで作られた完全オープンソースのLLM。残念ながら日本語の学習データは入っていない。

https://arxiv.org/abs/2211.05100

## BloombergGPT

Bloomberg社の金融系のデータで学習したBLOOMベースのLLM。

https://arxiv.org/abs/2303.17564

## RWKV-LM

他のモデルは大体、Transformerというモデルの派生ですが、こちらはRNNベースのモデルになっています。ローカルで動き、動作が軽いことが特徴。

https://github.com/BlinkDL/RWKV-LM

# 軽量化プロジェクト

## Alpaca.cpp

モデルの実行を環境を、コンシューマ向けPC でも動くようにしたもの。PyTorchのモデル(pthファイル)を、ネイティブに近い形まで変換 + ガリガリのチューニングを施すことによって実現しているみたいです。

https://github.com/antimatter15/alpaca.cpp

## llama.cpp

4ビット化することで、大幅に軽量化している。

https://github.com/ggerganov/llama.cpp

## RWKV.cpp

llama.cppをRWKVに改造いたもの。

https://github.com/saharNooby/rwkv.cpp

## FlexGen

LLMをひとつのGPUで動かそうというプロジェクト。一般的にLLMは、GPU側に大量のメモリを必要とするのですが、市販のGPUだと、数十GBぐらいが関の山。なので、CPU側にオフロードしようという作戦。微妙に関係ないですが、Apple Siliconは、CPUとGPUでメモリを共有しているのでアーキテクチャ上有利ですね。今後、NVIDIAなどのGPUベンダーの動き次第で、この辺のアーキテクチャは刷新される可能性があるので、意外に寿命は短いかもしれません。

https://arxiv.org/abs/2303.06865

# トレンドみたいなもの

動きが早過ぎて、どうなっていくか分かりづらいですが、比較的分かりやすいトレンドだけ、まとめておきます。

## 大規模化

計算リソースを投じることで、パラメータの数は大規模化しやすいので、既定路線として大規模化していってます。ただ、学習データによって性能が頭打ちになる可能性があるので、次の紹介するマルチモーダル化をすることで、学習対象のデータを広げていく動きが加速しそうです。

今のところ、パラメータの数を増やせば増やすほど、性能が上がるとされており、各社が札束で殴り合っている状態です。ただ、実際には学習データにも性能は左右されるので、それ次第じゃないかと、思っています。

## マルチモーダル化

すでにGPT-4やPaLM-Eでは、テキスト以外の入力を受け付けることで、よりコンテキストを認識しやすくなるとともに、指示を与える人間側の負荷を低減する方向が模索されています。とくに、ロボット分野への応用が期待されていそうです。

## 計算負荷低減

知識蒸留や、LoRA、学習環境と実行環境を分離するなどを駆使し、より少ないパラメータで同等の性能を出していくモデルが増えていきそうです。計算負荷が低減すると、手元のPCや、スマホなどのローカル環境でモデルを動作させることが可能になり、高レスポンス、低コスト化が望めそうです。

また、ローカルで動くということは、情報漏洩を気にする企業などでの活用が広がりそうです。

## ドメイン特化

モデルのアーキテクチャや、計算コスト面では、それなりに技術力がないと、太刀打ちできませんが、学習データ側で性能・特色をだしていこうという動きが加速していきそうです。大量の非構造のドメイン知識を持っている会社が有利です。
こうなってくると、いわゆる権利関係がうるさくなっていくでしょうね。

# まとめ

短い間に爆発的に、いろんなものが出てきて、まとめるのに躊躇していましたが、ちょっと落ちついてきたのでまとめてみました。大規模言語モデル以外のトピックもまとめていますので、こちらも参考にしていただければ幸いです。