skip to content
Site header image satoooh.org

GPT-4oの日本語生成速度の検証: GPT-3.5-Turboとの比較

GPT-4oの日本語テキスト生成速度を検証する実験を行ったところ、GPT-3.5-Turboと比べて大きな差がないことがわかりました。

Last Updated:

GPT-4o、結構生成速度早くてびっくりしますよね。もしかしたら GPT-3.5-Turbo よりも速いんじゃないかって最近思っています。 そこで、本記事では日本語生成の速度について、GPT-3.5-Turbo と GPT-4o を比較してみました。

実験

Python の公式 OpenAI パッケージを用いて、以下の条件でリクエストを送り、その応答速度を計測しました。

  • 2024年5月23日17時に実施
  • モデル: gpt-3.5-turbo-0125gpt-4o-2024-05-13
  • 最大生成トークン数 (max_tokens): 100 から 4096 (最大) まで 200 刻みで指定
    • 100, 300, …, 3900 の 20 通り
    • ただし、あくまで最大値のため、実際に生成されるトークン数は異なる
  • 出力形式: OpenAI には JSON Mode の指定ができるので、JSON Mode の On/Off の2通りで計測

出力トークンと生成速度の関係をプロットしますが、入力トークンの量は生成速度にそこまで大きく影響しない(参考: https://platform.openai.com/docs/guides/latency-optimization)ため、今回は出力トークン数のみを考慮しています。

入力プロンプトについて

以下のようなプロンプトで、SF版桃太郎の小説を生成してもらいました。

あなたはプロのSF小説家です。
現代の期待の作家として、老若男女問わず読みやすく味のある魅力的な文章を書く作家として知られています。
ユーザーの指示に従って、小説の原稿を書いてください。

条件:
- できる限り長く詳しく書いてください。具体的には20000字程度の文章を書いてください。
- 説明的な文章となることを避け、エピソードと会話を中心に内容を表現してください。
- 会話は、哲学的な思想を含む多彩な比喩にあふれた深い含蓄のあるものにしてください。
- 情景描写は色彩豊かで、耽美的で、独創的な表現を駆使してください。
- 科学的な知識を踏まえて、舞台となる場所の情景を華麗に描写し、時代の風潮を印象付けるように解説してください。
- 初登場時に、登場人物の容貌、服装、役割と特徴を詳しく描写してください。
- 結末は余韻の残るものにしてください。
システムプロンプト

プロンプトの内容は 長文(5000字以上)の小説をChatGPTで自動生成する方法|IT navi を参考にしています。 また、JSON Mode の際には以下のような指示をシステムプロンプトに追記しています。

出力は以下の例のようなJSON形式で、titleキーに小説のタイトル、contentキーに小説の内容の文章を含みます。
{
    "title": "NEO・桃太郎",
    "content": "「昔々あるところに、おじいさんとおばあさんがいました」というのは昔話であって..."
}

科学が高度に発展し、LLM(大規模言語モデル)のようなAI技術が日常生活に深く溶け込んだ未来に桃太郎が登場する20000字程度の日本語の長編小説を書いてください。
出力には小説の内容の文章のみを含み、そのまま出版することができる質の高い文章が期待されます。
ユーザープロンプト

結果

グラフは赤 (lightcoral) が GPT-3.5-Turbo、緑 (lightseagreen) が GPT-4o を示しています。 横軸 (x) が出力トークン数、縦軸 (y) がレイテンシ (ms) です。 つまり上にいくほど生成にかかる時間が長かった(生成が遅かった)ことを示しています。 グラフには回帰直線を引いています。

テキスト生成(JSON Mode: off)

日本語テキストを生成させた際のgptモデルの応答速度比較
日本語テキストを生成させた際のgptモデルの応答速度比較

上図は普通のテキスト形式で生成させた場合の結果です。例えばこんなテキストが生成されています。

遥か未来、技術と自然が調和した世界に、人々は夢のような生活を送っていた。超高度な科学技術に支えられ、人工知能は日常生活の至る所に溶け込み、人々の思考と行動をサポートしていた。その中心には、LLM(大規模言語モデル)と呼ばれるAIが存在した。この世界では、言葉は形を持ち、触れることのできるものとなり、物語は現実と同じように感じられる体験へと変換されていた。

森が美しく広がる小さな村に、かつての因習と古の物語を胸に秘めた老人が住んでいた。彼の名は山田斉一。白髪混じりの髭が風に揺れ、深いシワが刻まれた顔には長年の知恵がにじみ出ていた。彼は村の歴史を語り継ぐ者として、多くの子供たちに昔話を語り聞かせていた。その日もそうだった。彼のかすれた声が田園風景のなかに木霊する。

「昔々、あるところに…」

斉一老人の言葉がAIに接続されたデバイスを通じて村の中央広場に響き渡ると、その言葉は魔法のように形を成し始める。まるで実体があるかのように、熱烈に語る彼の言葉は一つの生きた物語となり、子供たちの前に現れる。

その物語の中心には、桃太郎という青年がいた。彼は桃から生まれたとされる伝説の勇者で、強力な力と知恵を持ち、鬼退治という崇高な使命を背負っていた。

回帰直線を見ると、GPT-4o が若干遅いようにも見えますが、GPT-4o はいくつか外れ値が見られます。 GPT-4o は応答速度がやや不安定であることが示唆されますが、そこまで大きな差がないように感じますね。 0 ~ 2000 トークンあたりをもう少しズームして見てみます。 この際に、GPT-4o の 1300 token あたりに存在する外れ値を除外して再計算してみます。

日本語テキストを生成させた際のgptモデルの応答速度比較(ズーム&外れ値除外処理済)
日本語テキストを生成させた際のgptモデルの応答速度比較(ズーム&外れ値除外処理済)

GPT-4o の生成速度は GPT-3.5-Turbo と変わらないどころか、回帰直線を見る限りわずかに速いように見えます。1500 トークン以下の日本語テキスト生成の速度に関しては、GPT-4o と GPT-3.5-Turbo の差はほとんどないと考えてよさそうです。

また、回帰直線の傾きはトークンあたりのレイテンシの増加率(つまり単位トークンあたりの生成時間)ですから、1トークンを生成するのに平均で 13.05 ms かかっていると言えます。 ズーム前の元のグラフでは GPT-3.5-Turbo が13.05 ms, GPT-4o が 13.44 ms となっています。

y 切片は TTFT (Time To First Token) 、主に API 通信にかかる時間と解釈できます。 ここには 150 ms ~ 300 ms 程度の差があり、GPT-4o の方が早く応答していると言えます。

Latency の値から TFTT を差し引くことで、トークン生成にかかる時間を計算できます。 ここから TPS (Tokens Per Second) を計算することが出来ます。 TPS は LLM の性能を評価する際に良く用いられるトークン生成速度を表す指標です。

TPS=completion_tokenslatencyTTFT[token/ms]×1000[ms/s]\text{TPS} = \frac{\text{completion\_tokens}}{\text{latency} - \text{TTFT}} [token/ms] \times 1000 [ms/s]

TPS をプロットすると下図のようになります。 平均値は点線で、GPT-3.5-Turbo が 77.77 t/s (トークン/秒)、GPT-4o が 76.45 t/s となります。 TPSの差を見ても、1秒あたり1トークン程度の差なので、よほどの長文を生成させる処理でもない限りは、ほとんど差がないと考えてよいでしょう。

日本語テキストを生成させた際のgptモデルのTPS比較
日本語テキストを生成させた際のgptモデルのTPS比較

以上を表にまとめると以下のようになります。

Model TTFT (ms) TPS (t/s)
gpt-3.5-turbo-0125 608.01 77.77
gpt-4o-2024-05-13 463.87 76.45

JSON生成(JSON Mode: on)

同様に、JSON Mode を用いた場合の結果を見ていきます。OpenAI API を用いて何かを作るときにはこちらを利用するケースが多いと思われるので、JSON の場合も比較しています。

JSON Mode で日本語テキストを生成させた際のgptモデルの応答速度比較
JSON Mode で日本語テキストを生成させた際のgptモデルの応答速度比較

生成例は以下のようなもの。

{
  "title": "NEO桃太郎",
  "content": "遥かなる未来、科学技術が顕著に進化した世界。人々は高度なLLM(Large Language Model)によって生活のあらゆる側面をサポートされていた。そんな中、ある村に桃太郎という青年が暮らしていた。桃太郎は長い黒髪をなびかせ、青い瞳を輝かせる美しい容姿を持つ青年だった。彼は常に明るく元気な性格で、困っている人を助けることを何よりも大切にしていた。桃太郎の手元には、最新のAIスマートデバイスが常に寄り添っており、彼の冒険を支えていた。ある日、村は突如として巨大なトロールに襲われるという異変に見舞われた。村人たちは恐怖におののき、どうすることもできないでいたが、桃太郎だけは勇敢に立ち向かう覚悟を決めた。桃太郎はAIデバイスに訓練された戦闘技術や戦術を駆使し、トロールに立ち向かった。その戦いの中で桃太郎は、AIの力だけでなく、人間の持つ勇気や情熱、そして絆の大切さを改めて知ることとなった。トロールは桃太郎の勇気ある行動に打ち負かされ、村は再び平和を取り戻した。村人たちは桃太郎を称え、その勇気と強さ、そして人々を思う優しさに感謝の念を示した。桃太郎は深く謙虚な笑みを浮かべ、自らを助けてくれたAIデバイスにも感謝の意を示した。そして彼は新たな冒険への準備を始めた。未来の世界で、人とAIが協力し合いながら新たな未知の世界へと挑んでいく。"
}

相変わらず GPT-4o はバラツキが比較的大きく、傾向を見てみると GPT-4o の方が若干遅いように見えます。トークン数が 2000 以下の少ないところでの比較をしてみます。

JSON Mode で日本語テキストを生成させた際のgptモデルの応答速度比較(ズーム)
JSON Mode で日本語テキストを生成させた際のgptモデルの応答速度比較(ズーム)

こちらは2000トークン以下の短いところに絞ってみても、若干 GPT-4o の方が遅いように見えます。TPSを計算し、具体的にどの程度の差が平均して見られるのかを確認します。

JSON Mode で日本語テキストを生成させた際のgptモデルのTPS比較
JSON Mode で日本語テキストを生成させた際のgptモデルのTPS比較
Model TTFT (ms) TPS (t/s)
gpt-3.5-turbo-0125 770.15 79.93
gpt-4o-2024-05-13 646.13 71.55

というように、JSON Mode で日本語テキストを生成させる場合は、TPS 換算で毎秒8トークン程度の差が見られます。 通常のテキスト生成よりも大きな差が見られますが、これが時期や通信環境による誤差の影響の範囲かどうかは不明です。

やはり体感通り、 GPT-4o の生成速度は GPT-3.5-Turbo とそこまで変わらないと捉えてよいと考えています。

まとめ

GPT-4o の生成速度は GPT-3.5-Turbo と比べて大きな差がないことがわかりました。 これまで GPT-4-Turbo をサービスに導入したいが、生成速度が遅いという理由で躊躇していた方には、GPT-4o を使うことでその問題が解決するかもしれません。

さらに、今後数ヶ月以内に日本語特化モデルが出ることも予告されています(Introducing OpenAI Japan | OpenAIもしかして GPT-4o がこれ?じゃないよね…)。 GPT-4-Turbo と比較して3倍速い出力とありますが、これって GPT-4o と比べると大したことないのでは…という話はさておき、今後も GPT モデルの精度向上・高速化は本当に楽しみです。

※ gpt-4-turbo と gpt-4o の比較は?と気になる方もいらっしゃるかもしれませんが、 gpt-4-turbo に同じ条件で実験をするとさすがに高すぎるため私は断念しました。だれかお願いします。

ここまで書いてから見つけたんですが、 OpenAI API and other LLM APIs response time tracker というサイトが継続的に各モデルにリクエストを送り、レスポンスタイムを計測してくれているようです。 こちらのデータを見ても、GPT-4o は GPT-3.5-Turbo と比べて大きな差がないことがわかりますね。実験の結果通りでホッとしました。

OpenAI API and other LLM APIs response time tracker  より
OpenAI API and other LLM APIs response time tracker より