Azure OpenAI Service のレガシーモデルと今後のモデル選択戦略
はじめに
2023 年 7 月 6 日に OpenAI からモデルに関するアップデート情報が公開されました。これに合わせて、Azure OpenAI Service で提供されている一部モデルはレガシーモデルとして位置づけられるようになり、2024 年 7 月 5 日に廃止されることが発表されました。
そこで、本記事では対象になるレガシーモデルの移行先と、今後のモデル選択戦略についてまとめました。
- GPT-4 API general availability and deprecation of older models in the Completions API
- Announcing Updates to Azure OpenAI Service Models
1. レガシーモデル
Azrue OpenAI Service のドキュメントにレガシーモデルについて記載された新たなページが追加され、今後アップデートが行われるメインストリームシリーズとは分けて扱われるようになりました。レガシーモデルは 2024 年 7 月 5 日に廃止されます。
参考
1.1. GPT-3.5
GPT-3.5 シリーズの中で以下のモデルがレガシーモデルとして位置づけられるようになりました。これらは全てシングルターンの Completions API を使用するモデルです。移行先のモデルは新たに追加された gpt-35-turbo-instruct
です。
- text-davinci-002
- text-davinci-003
- code-davinci-002
参考
1.2. GPT-3
GPT-3 シリーズは全てのモデルがレガシーモデルとして位置づけられるようになりました。これらは全てシングルターンの Completions API を使用するモデルです。移行先のモデルは GPT-3.5 シリーズのレガシーモデルの場合と同じく gpt-35-turbo-instruct
です。
- text-ada-001
- text-babbage-001
- text-curie-001
- text-davinci-001
- code-cushman-001
[補足] gpt-35-instruct について
2023 年 9 月 に Azure OpenAI Service にて gpt-35-turbo-instruct
(本家 OpenAI では gpt-3.5-turbo-instruct
) が利用可能になりました。gpt-35-turbo-instruct
は Completions API を使用するレガシーモデルとの互換性を持つモデルです。gpt-35-turbo-instruct
の最大トークンは 4,097 です。エンコーディングは最新のモデルと同じ cl100k_base
を使用するため、レガシーモデルに比べてトークン効率は上がっています。
>>> import tiktoken
>>> print(tiktoken.encoding_for_model('gpt-3.5-turbo-instruct'))
<Encoding 'cl100k_base'>
参考
- Azure OpenAI Service REST API reference
- GPT-3.5 models
- GPT-3.5 (本家 OpenAI のドキュメント)
- OpenAI 言語モデルで日本語を扱う際のトークン数推定指標
1.3. Embeddings
Embeddings シリーズの中で以下のモデルがレガシーモデルとして位置づけられるようになりました。かなり以前から本家 OpenAI のドキュメント内で V1 世代のモデル (末尾が 001 のモデル) は非推奨とされていましたが、この度正式に廃止が発表された形です。代替モデルは V2 世代の text-embedding-ada-002
です。なお、V1 世代の Embeddings シリーズには目的別 (類似性 / テキスト検索 / コード検索、クエリ用/検索対象用) にモデルが存在していましたが、今後は text-embedding-ada-002
がこれら全てを代替します。
1.3.1. Similarity
- text-similarity-ada-001
- text-similarity-babbage-001
- text-similarity-curie-001
- text-similarity-davinci-001
1.3.2. Text search
- text-search-ada-doc-001
- text-search-ada-query-001
- text-search-babbage-doc-001
- text-search-babbage-query-001
- text-search-curie-doc-001
- text-search-curie-query-001
- text-search-davinci-doc-001
- text-search-davinci-query-001
1.3.2. Text search
- code-search-ada-code-001
- code-search-ada-text-001
- code-search-babbage-code-001
- code-search-babbage-text-001
参考
2. 今後のモデル選択戦略
この度の発表によって、今後のモデルの選択肢が大幅にシンプルになりました。汎用人工知能 (AGI) を目指している OpenAI 社のビジョンや、前述の Embeddings モデルの統合 (V1 世代の廃止) からの想像にはなりますが、基本方針として汎用的な基盤モデル (Foundation models) に統合していきたい意図を感じます。
また、目立ちづらいポイントではありますが、メインストリームとして残されたモデルのエンコーディングは全て cl100k_base
ですので、トークン効率はレガシーモデルに比べて良く、トークン数計算の観点でもモデルシリーズごとに分けて考える必要がなくなりました。
なお、各モデルシリーズにはそれぞれ 3 カ月単位のイテレーションでアップデートされるバージョンの概念が存在します。直近の 2023 年 6 月 のモデルアップデートに関しては以前に別の記事でまとめましたので、そちらを参照してください。
2.1. メインストリームモデル一覧
今後選択肢となるメインストリームモデルを一覧でまとめました。執筆時点ではまだ gpt-35-turbo-instruct
の価格情報が公開されていませんでしたので、公開され次第情報を更新します。
モデル | 用途 | 最大トークン | 価格 ($/1K tokens) | エンコーディング | API | 備考 |
---|---|---|---|---|---|---|
gpt-35-turbo | テキスト生成・コード生成 | 4,096 | Prompt: $0.0015 / Completion: $0.002 | cl100k_base | Chat Completions | 旧バージョンの 0301 は Prompt Completion ともに $0.002 per 1K tokens |
gpt-35-turbo-16k | テキスト生成・コード生成 | 16,384 | Prompt: $0.003 / Completion: $0.004 | cl100k_base | Chat Completions | |
gpt-4 | テキスト生成・コード生成 | 8,192 | Prompt: $0.03 / Completion: $0.06 | cl100k_base | Chat Completions | |
gpt-4-32k | テキスト生成・コード生成 | 32,768 | Prompt: $0.06 / Completion: $0.12 | cl100k_base | Chat Completions | |
text-embedding-ada-002 | 埋め込み | 8,191 | $0.0001 | cl100k_base | Embeddings | 出力ベクトルは 1,536 次元 |
gpt-35-turbo-instruct | テキスト生成・コード生成 (レガシーモデルの移行先) | 4,097 | ? | cl100k_base | Completions |
2.2. モデル選択フローチャート
モデル選択をフローチャートにすると以下のようになります。
参考
- Azure OpenAI Service models
- Azure OpenAI Service の価格
- Introducing new and updated models to Azure OpenAI Service
- Azure OpenAI Service で GPT-4 API を使う - GPT-4 と GPT-3.5 どちらを使うべきか?
- OpenAI 言語モデルごとのエンコーディング一覧
- OpenAI 言語モデルで日本語を扱う際のトークン数推定指標
- Azure OpenAI Service REST API reference
おわりに
Azure OpenAI Service を含む大規模言語モデル (LLM) 周辺は現在非常に変化が激しい領域ですので活用するユーザー側の高いアジリティが求められていると感じます。随時情報をキャッチアップして変化に対応するのは大変ではありますが、一方で見方を変えればこれほど巨大なモデルがものの数か月で大きなアップデートが繰り返され、すぐにユーザーが API として利用できる状態になるというパラダイムシフトが起きていると捉えることもできます。ぜひ上手くこの波に乗って LLM を使い倒していきたいと感じます。
以上です。🍵
Discussion