OpenAI の各モデルについて

# やりたいこと
Azure OpenAI を使う中で、各モデルの違いがあまり分かっていなかったので整理してまとめます。
特に、GPT-3.5系と4系をまとめます。と言いつつも公式の情報や2次情報をまとめているだけなので参考程度です。
また、一部自分の解釈を含むので誤っている部分もあるかもしれません。ご注意を。


# Models

https://platform.openai.com/docs/models

## GPT (Generative Pre-trained Transformer)
Transformer と呼ばれる深層学習の手法を用いた自己回帰型言語モデル （ある単語の次に出てくる単語を予測するモデル）。膨大なテキストデータを用いて事前学習されている。

### [GPT-3](https://platform.openai.com/docs/models/gpt-3)
まずは GPT-3系。
詳細は以下の通り。GPT-3.5があるので使うことはあまりない (と思う)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1743460/e4247c5b-210b-15b6-2022-2f5f14b545d4.png)

参考
* https://platform.openai.com/docs/models/gpt-3

### [GPT-3.5](https://platform.openai.com/docs/models/gpt-3-5)
自然言語またはコードを理解し、生成できる。最も能力が高く、費用対効果の高いモデルは gpt-3.5-turbo で、チャット用に最適化されているが従来の補完タスクにも適している。

会話型アプリケーション向けに Fine-tuning された GPT-3 の亜種 (GPT-4も同様)。

詳細は以下の通り。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1743460/93d63c35-ef62-efbb-56c3-9dab013ef0bd.png)

* gpt-3.5-turbo
    * チャット向けに最適化されたモデル
    * コストは `text-davinci-003` の1/10
* gpt-3.5-turbo-16k
    * `gpt-3.5-turbo` の4倍のコンテキスト (トークン) を扱えるモデル
    * コストは `gpt-3.5-turbo` の2倍
* gpt-3.5-turbo-0613
    * `gpt-3.5-turbo` の2023/6/13時点のスナップショット
    * 新しいバージョンがリリースされてから3か月後に非推奨になる
* gpt-3.5-turbo-16k-0613
    * `gpt-3.5-turbo-16k` の2023/6/13時点のスナップショット
    * 新しいバージョンがリリースされてから3か月後に非推奨になる
* text-davinci-003
    * 高度な自然言語処理タスクに使用されるモデル
    * (`gpt-3.5-turbo` の方がパフォーマンスは優れているとされる)
    * コストは `gpt-3.5-turbo` より高い
* text-davinci-002
    * `text-davinci-003` の旧バージョン
* code-davinci-002
    * コーディング向けに最適化されたモデル

参考
* https://platform.openai.com/docs/models/gpt-3-5

### [GPT-4](https://platform.openai.com/docs/models/gpt-4)
大規模なマルチモーダル (テキスト以外にも画像や動画からの情報を処理できること) 。ただし、2023/07/03現在はテキスト入力のみ対応している。これまでのどのモデルよりも高い精度で回答できる。`gpt-3.5-turbo` と同様にチャット用に最適化されているが、従来の補完タスクでも問題なく動作する。

詳細は以下の通り。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1743460/13a86b00-1995-a450-fc05-0bd70e90e333.png)

* gpt-4
    * チャット向けに最適化されたモデル
    * GPT-3.5 のどのモデルよりも高性能でより複雑なタスクをこなせる
* gpt-4-0613
    * `gpt-4` の2023/07/03時点のスナップショット
    * 新しいバージョンがリリースされてから3ヶ月度に非推奨になる
* gpt-4-32k
    * `gpt-4` の4倍のコンテキスト (トークン) を扱えるモデル
    * コストは `gpt-4` の2倍
* gpt-4-32k-0613
    * `gpt-4-32k` の2023/06/13時点のスナップショット
    * 新しいバージョンがリリースされてから3ヶ月度に非推奨になる

参考
* https://platform.openai.com/docs/models/gpt-4

## [DALL-E](https://platform.openai.com/docs/models/dall-e)
自然言語から画像を生成できるモデル。CLIP (Contrastive Language-Image Pretraining) と、拡散モデル (Denoising Diffusion Probabilistic Models: DDPM) という技術を応用している。CLIP は、「大量の画像とテキストの組み合わせを学習し、その類似度を算出した上で特定の画像に対して適切なテキストを選択するモデル」。DDPM は「ある画像に対してランダムノイズを徐々に当てていき完全にノイズになったものを逆向きに推定した際にノイズ除去後の画像と元の画像の差分を少なくするように学習したモデル」。
その2つを応用すると、プロンプトとして与えられたテキストからと類似度の高い画像を CLIP で選択し、その画像に対して DDPM でノイズを加えて除去することでテキストの内容に基づく画像を生成が可能になる (と思う)。

参考
* https://toukei-lab.com/dalle
* https://toukei-lab.com/diffusion-model

## [Whisper](https://platform.openai.com/docs/models/whisper)
汎用的な音声認識モデル。多言語に対応している。音声ファイルを入力として与えると、その内容を文字起こししてくれる。今までの文字起こしサービスなどと比較すると精度が高い。
入力音声は30秒単位で区切られ、ログメルスペクトログラムという音声認識における特徴量に使われる指標に変換してインプットされる。学習には合計68万時間もの音声データが使われている。

参考
* https://toukei-lab.com/whisper

## [Embeddings](https://platform.openai.com/docs/models/embeddings)
テキスト間の関連性を測定するためのモデル。検索、クラスタリング、レコメンデーション、異常検知、分類タスクに有用。テキストを数値列に変換することで、コンピュータの扱いやすい形式に変換している。関連性を測るのには、コサイン類似度を使うことが多いが、どの距離関数でも精度がそれほど変わらない場合も多い。

参考
* https://platform.openai.com/docs/models/embeddings

## [Moderation](https://platform.openai.com/docs/models/moderation)
コンテンツが OpenAI の利用ポリシーに準拠しているかどうかをチェックするモデル。憎悪、憎悪/脅迫、自傷、性的、性的/未成年、暴力、暴力/グラフィックといったカテゴリのコンテンツを探す分類機能を提供する。

参考
* https://platform.openai.com/docs/models/moderation