⚖️

LLM APIの選定の観点と比較

2024/05/30に公開

はじめに

最初のChatGPTの登場から時間が経ち、OpenAIのアップデート頻度は高く、他にもたくさんの種類のLLMがサービスとして提供されるようになりました。
特に継続してサービスや自動化ワークフローにLLMのAPIを組み込む場合、用途に応じて適切なモデルを選ぶことがコストや利便性を左右します。
脳死でgpt-4oを使っても問題ないケースが多いかもしれないですが、技術者としてできる限りのこだわりは持ちたいです!
そこで、ソフトウェアエンジニアとしてLLMを比較的に利用した知見を共有し、少しでもお役に立てれば嬉しいです。
※専門家ではありません

前提知識

トークン数

LLMのAPIは全て従量課金制であり、トークン(LLMが認識する単語)数に比例します。
百万トークンあたりXドルと記載されていることが多いです。
Context Window (一回のAPIリクエストで処理できる最大量)もトークン数で決まっています。

Input・Output

すべてのLLM APIの価格は、Input(プロンプトの長さ)とOutput(出力テキストの長さ)で決まっており、基本的にOuputの方に計算コストがかかるため、Outputの方が数倍高い価格設定となっています。
I/Oの比率が用途によって変わってきそうです。

観点

以下の観点を説明する上で、このサイトが一番わかりやすく、重宝しています。
https://artificialanalysis.ai/models

サービスプロバイダー

同じLLMが異なるサービス上で提供されているケースがあります。例として、OpenAIの開発したGPT4は、OpenAIとMicrosoft Azureの2つのサービス上で提供されています。
(インフラはどちらもAzureだと思いますが)

同じLLMでも、サービスの提供レベルが異なり、以下で挙げる要素は異なっています。

コスト

サービスの機能やワークフローとして組み込むなど、大量のリクエストをする場合、一定期間の合計トークン数とコストを算出しておき、費用対効果が許容範囲かどうかが重要です。
使用するモデルによって、トークンあたりのコストは最大数百倍の差があります。

品質

LLMの定量的な品質は、データセットのベンチマークにどれくらいの割合で期待を満たすかで評価されています。
一方で、LLMによって得意不得意が存在し、用途によっては主要なベンチマーク結果が参考にならない可能性があるため、定性的な評価だと考えます。

(余談ですが、特定用途に関して性能の低いモデルでFine Tuningした場合、その用途では高性能なモデルに勝ることができるという研究結果が出ています。LoRA Land: 310 Fine-tuned LLMs that Rival GPT-4, A Technical Report)

生成スピード

スピードには、スループットとレイテンシーがありますが、LLM利用側が差を感じるのが、スループットです。

スループット(LLMのAPIレスポンスにかかる時間)は、サーバー上のLLMの処理速度依存しており、1秒あたりに生成できるトークン数(TPS: token per seconds)で評価されます。

LLMをシステムに同期的に組み込む場合、LLMのレスポンス待ちがいちばんのボトルネックになる可能性が高いです。(ストリーミングなどUI上の見せ方を工夫することはできます。)

リクエストの頻度 (Rate Limit)

LLM APIのRate Limitは上限が厳しく、他のシステムよりも気にしておく必要があります。

具体的なケースとしては、エージェントシステムで非同期リクエストで処理を並列化し、高速化する場合が考えられます。

主要なプロバイダー・モデルごとの比較

品質の数値は、前述したサイトから引用しています。
注意: 記事執筆時点(2024/6/4)の情報のため、最新の情報ではありません。
複数のベンチマーク結果を一つの数値にまとめたもののため、数値が高いほど汎用的な性能が高いという程度の理解です。

Quality: Index represents normalized average relative performance across Chatbot arena, MMLU & MT-Bench.

高価で高性能なモデル

比較的に高い難易度の問いに対する出力を得る用途を想定します。

モデル名 提供 I/Oコスト($/1M token) 品質 速度 (token/s) Rate Limit (token/minute) Context Window (token)
gpt-4o OpenAI 5 / 15 100 70 30K (1st Tier) 128K
gpt-4-turbo OpenAI 10 / 30 94 25 30K (1st Tier) 128K
Claude 3 Opus Anthropic 15 / 75 94 30 20K (1st Tier) 200K
AWS 500K
Gemini 1.5 Pro Google 3.5 / 10.5 88 50 10,000K (5/30 ~) 1,000K (128K以上は価格2倍)

空欄は上記と同じであるため、省略を示しています。

※ Geminiは5月に性能のアップデートがあったため、上記数値よりも向上している可能性があります。

わかること

  • 価格と速度の面から、gpt-4oよりもgpt-4-turboを使うケースはなさそう
  • Gemini 1.5 Pro はRate LimitやContext Windowが大きくリード

※2024/6/4更新 別のリーダボードではGeminiの日本語性能が1位に
https://x.com/shanegJP/status/1797798176344453414

安価で軽量なモデル

モデル名 提供 I/Oコスト($/1M token) 品質 速度 (token/s) Rate Limit (token/minute) Context Window (token)
Llama 3 70B AWS 2.65 / 3.5 88 40 300K 8K
Groq 0.59 / 0.79 300 6K
Fireworks 0.9 / 0.9 150 10K
together.ai 0.9 / 0.9 100 60 RPM (TPMなし)
Gemini 1.5 Flash Google 0.35 / 1.05 79 120 10,000K (5/30 ~) 1,000K(128K以上は価格2倍)
Claude 3 Haiku Anthropic 0.25 / 1.25 72 150 50K 200K
AWS 100 10,000K RPM (TPMなし)
gpt-3.5-turbo OpenAI 0.5 / 1.5 65 50 60K (1st Tier) 16K

空欄は上記と同じであるため、省略を示しています。

※ Groqはプレビュー段階でまだ課金プランが公開されていないため、Rate Limitは抑えられていると思われる
※ Geminiは5月に性能のアップデートがあったため、上記数値よりも向上している可能性があります

わかること

  • オープンソースなモデルの Llama 3 は様々なサービスから提供されており、価格・速度面でGroqなど魅力的なサービスがあります。数字上の性能は明らかに高い一方で、体感的に日本語性能が低いこと・Context Windowが 8,000 tokenと短いことが使用する上でのネックとなっています。
  • Claude 3 と Gemini 1.5 の登場により、gpt-3.5-turboを使う理由は無くなってしまいました。

個人的な結論

  • 高価で高性能なモデルは、OpenAIのGPT-4o or Gemini 1.5 Pro
    • GPT-4oは汎用性が高く、スピードも比較対象の中で一番速い
    • Gemini 1.5 Proは性能と速度以外は明らかにGPT-4oに勝っている
  • 安価で軽量なモデルは、Gemini 1.5 FlashがClaude 3 Haikuを少しリード
     - 最新のGeminiのベンチマーク結果公開以降、Gemini 1.5 Flashの方が性能が高そう
    • Rate Limit が十分
  • AWSはどのモデルでも Rate Limit で大きく優位性がある

Discussion